진정한 성평등이란 무엇인가?

이 책의 핵심은 평범 착한 남성도 성평등의 인식의 필요성을 느끼고, 남녀평등을 위해 모든 남성이 여성에게 책임전가 할 것이 아니라 끊임없이 맨박스를 부수는 삶을 살아야 한다는 것이다.

이 책은 친구의 선물로 인해 읽게 된 책이다. 여행 갈 때 오고 가는 버스안에서 비교적 무난하게 읽을 수 있었던 책이다. 처음 선물 받았을 때는 친구에게 비친 내 모습에서 성평등에 대해 부족해 보이는 부분이 있는가 생각이 들었다. (아무래도 그래 보였으니 선물해주었지 싶다). 읽으며 생각이 조금씩 달라지게 되었는데, 단순히 페미니즘을 남녀평등으로만 알고 있던 내게 조금 더 올바른 인식을 심어주었기 때문이다.

제목인 "맨박스"라고하는 것은 남자다울 것을 요구하는 일종의 외부요인을 통칭하는 것으로 저자는 이 맨박스를 부수는 삶을 살아야 한다고 한다. 저자는 대다수의 남성들이 집단적인 강요를 통해 남자다움의 정의를 인식하고 있다는 것을 꼬집는다. 또한 성평등을 이루고 있지 못한 주된 이유로 크게 두 가지를 꼽았는데, 첫 번째는 남성들이 여성들의 체험에 관심을 갖지 않는 관심 결핍이 여성에 대한 폭력을 용인하는 문화의 주된 원인이며, 두 번째는 여성들의 삶에 수반되는 고통을 공감하려는 남성의 의지가 일정 수준을 넘어서지 못하는 것이라고 한다.

선한의도를 가진 남성이라 해도 많은 여성들의 삶에 영향을 미치는 문제를 무시로 일관할 수 없는데, 이는 궁극적으로 그들이 사랑하는 여성들에게도 영향을 미칠 문제이기 때문이라고 한다. 때문에 남성들이 먼저 여성 폭력 등과 같은 문제에 전적으로 책임을 인정하고 해결에 적극적으로 나서야 한다고 말한다. 그래야만 진정한 성평등이라는 사회적 변화로 접어들수 있기 때문이다.

“여성들은 보호받기를 원하지 않는다. 단지 남성들이 폭력을 쓰지 않기를 바랄 뿐이다." - 토니포터

별점: ⭐⭐⭐

1. 양자역학 개요

양자역학이란 미시계의 현상을 연구하는 물리학의 한 분야이다. 물리학은 크게 고전역학과 양자역학으로 나눌 수 있으며 양자역학은 고전역학으로 해석하지 못하는 현상을 설명한다. 양자역학에서 사용되는 요소적인 개념 중 하나는 이중성이 있다. 이중성의 특징은 입자성을 띠면서 동시에 파동성 또한 띤다는 것이다. 입자의 경우 실체가 있고, 운동량이 있으며 이산적이라는 특징을 가진다. 또한 입자의 총 물리량 = 개별 입자의 물리량 총합이라는 특징을 가진다. 반면 파동의 경우 실체가 없는 것이며 그렇기에 운동량 또한 없으며, 연속적이라는 특징을 가진다. 파동의 총 세기는 개별 파동이 갖는 세기의 단순 합과는 다른데 이는 합성파를 이룰 때 파동에 간섭이 발생하기 때문이다. 간섭은 크게 두 종류로 보강간섭과 상쇄간섭이 있다. 보강간섭은 파동이 간섭에 의해 더욱 커지는 것을 의미하며 상쇄는 파동이 간섭에 의해 축소되는 것을 의미한다. 이러한 이중성에 대한 예시로는 물과 물결, 소리와 음파와 같다. 물과 소리의 경우 매질이 있어, 매질의 진동 모습을 통해 파동의 모양을 관찰 가능하며, 파동 관련 모든 물리량을 측정 가능하다.

 

양자역학이라는 개념을 창시한 사람은 막스 플랑크이다 (용어 창시는 막스 보른). 1899년 플랑크 상수를 발견하였고, 대응원리라고 하여 플랑크 상수에서 0으로 극한을 취할 경우 양자역학에서 고전역학으로 수렴한다는 사실을 알아냈다. 이를 통해 1918년 노벨 물리학상을 받게되었다. 이러한 양자역학의 형성기에는 두 갈래로 나뉘었다. 보어의 원자모형 → 대응원리 → 행렬 역학이 첫 번째였고 두 번째는 아인슈타인의 광자 → 루이 드브로이의 물질파 → 파동역학이다. 하지만 후에 사실은 같은 내용임이 밝혀져 통일되었다.

 

 

2. 양자역학의 대표적인 실험

2.1 이중 슬릿 실험

가장 첫 번째로 유명한 실험으로 알려진 영의 이중슬릿 실험이 있다. 현대 물리학자 리처드 파인만은 이 실험에 양자역학의 모든 것이 들어있다고 하였다. 이중슬릿 실험은 아래와 같다.

전자총을 통해 전자를 쏘게 되면 기존의 입자성을 띤다고 알려진 전자는 이중슬릿을 통과하면서 전자들이 파동처럼 간섭을 일으키며 결과적으로 스크린에 간섭무늬가 만들어진다. 입자는 파동이 아니기에 간섭을 일으킬 수 없다. 하지만 위의 실험은 명백히 전자는 파동성을 띤다는 것을 의미하는 것을 알 수 있었다. 그렇다면 과연 어떻게하여 스크린에 간섭무늬를 생기게 하는가를 확인하기 위해 이중슬릿에 전자 검출기를 달고 확인하였다.

 

하지만 결과는 이전과 달리 간섭무늬가 사라졌다는 것을 확인할 수 있다. 이는 단순히 관측을 하거나 관찰자가 있다는 이유만으로 전자는 다시 입자성을 띠게 된다는 것이다. 다시 말해 관측 여부를 기준으로 전자는 파동성을 띠기도 하며 입자성을 띠기도 한다는 것이다. 경이로운 실험이 아닐수가 없다.

 

2.2 콤프턴 산란 실험

두 번째는 콤프턴 산란 실험이 있다. 이는 빛의 입자성을 지지할 수 있는 실험이다. 결과적으로 빛이 다른 입자를 쳐서 튕겨낸다는 현상을 확인하였고, 빛 자신도 튕겨남을 확인하였다.

 

 

위 그림을 그대로 풀어쓰자면, 충돌이 발생하기전에는 입사하는 광자와 충돌전 정지된 전자가 있다. 이 때 입사하는 광자가 충돌전 정지된 전자에게 충돌할 경우 정지했던 전자는 충돌로 인해 산란하는 전자가 될 것이며, 입사하던 광자는 정지된 전자와 충돌하여 산란하는 광자가 될 것이다. 여기서 콤프턴이 밝힌 것은 빛의 입자성이다. 이는 입사하는 광자와 산란하는 광자의 파장의 크기의 차이를 보면 알 수 있다. 에너지는 파장과 일종의 반비례 관계($E = {hc\over \lambda}$)를 가진다.

($h$ = 플랑크 상수, $c$ = 빛의 속도, $\lambda$ = 빛의 파장)

 

결과적으로 광자는 전자와의 충돌로 인해 파장이 늘어났다. 즉, 충돌로 인해 에너지가 줄었다는 것이다. 만약 이것이 빛이 파동성을 띠었다면 산란하기 전과 후에 파장에는 아무런 변화가 없어야 한다. 하지만 콤프턴 실험은 이를 역설하며 위를 콤프턴 효과라고 부르기도 한다.

 

2.3 데이비슨-거머 실험

데이비슨-거머의 실험은 드브로이의 가설을 기반으로 한다. 즉, 만약 입자와 파동의 이중성이 있다면, 전자도 파동성을 가진다는 것이다. 실험은 크게 2가지 제약 조건을 줌으로써 실행이 되었다. 첫 번째는 슬릿 스위칭이라는 것을 두어 하나의 슬릿만 열고 위와 같이 전자를 쏜 뒤 결과를 확인하였다. 결과는 $P1 + P2 = P12$ 분포 곡선이 나타났다. 이 분포 곡선은 단순히 개별 입자의 물리량의 합이라는 의미를 가진다. 즉 전자는 입자성을 띤다는 것이다. 두 번째는 슬릿 스위칭 대신 슬릿 두 개를 모두 열어보았다. 그 결과 스크린에 간섭무늬가 나타났으며, 분포 곡선이 $P1 + P2 \neq P12$임을 확인하였다. 이는 전자는 파동의 형태를 띤다는 것으로 분포가 불규칙하다는 것을 의미한다.

 

데이비슨-거머의 실험은 입자와 파동의 이중성이 자연의 본질이라는 것을 의미한다. 또한 실험을 통해 모든 소립자와 원자는 입자와 파동의 이중성이라는 특징을 가진다는 것을 알아내었다. 더불어 자연 현상을 기술하기 위해 파동과 입자라는 논리적으로 양립 불가능한 개념이 필요로 하다는 것이다. 논리적 모순인 입자와 파동을 동시에 볼 수 없고, 사물의 실체는 논리적으로 양립할 수 없는 두가지 성질을 갖고 있다는 것이다. 이외의 실험으로 원자뿐만 아니라 50,000배 큰 풀러렌도 파동성을 가짐을 확인이 되었다. 최근에는 생채 분자에서도 파동과 입자의 이중성을 띤다는 것을 밝혀지기도 했다.

 

3. 양자역학의 특징

3.1 관찰(상호작용)과 창조

양자역학의 현상은 예외 없이 입자는 위치를 확인하지 않으면 동시에 여러 곳에 존재한다는 것이다. 위치를 확인하면 반드시 꼭 한 곳에만 존재하게 된다. 입자는 관찰 이전에 입자로 존재하는 것이 아니라 관찰하는 순간 입자의 형태가 된다. 다르게 말해 입자를 관측하기 이전에는 어떤 공간에 입자가 위치할 확률을 표현하는 파동함수로 있다가 관측(상호작용)하는 순간, 계가 교란되고 파동함수가 붕괴되어 한 곳에 위치하는 입자를 관측하게 되는 것이다. 관찰과 무관하게 독립적으로 실재하는 물리량은 없다. 소립자의 위치도 측정 과정에서 만들어진다. 따라서 관찰 이전에는 위치 속성도 없다.

 

3.2 슈뢰딩거의 파동 방정식

이러한 양자역학은 슈뢰딩거의 파동 방정식에 따라 행동한다. 또한 슈뢰딩거의 파동 방정식을 근사시킨다면 뉴턴의 방정식이 된다. 이를 두고 고전역학이 수렴하면 양자역학이 된다고 표현하며, 둘은 근사이론 관계에 있다고도 표현할 수 있다. 슈뢰딩거의 방정식을 풀면 물리계의 성질을 완전하게 알 수 있다는 특징을 가진다. 슈뢰딩거의 방정식을 풀게 되면 파동함수의 정보를 알 수 있고, 파동함수를 알면 주어진 물리계에 관한 모든 물리적 정보를 얻을 수 있다. 하지만 시간적으로 불변인 물리계가 아닐 경우 임의의 물리계를 기술하는 파동함수를 얻기 어렵다.

 

3.3 상보성의 원리와 불확정성의 원리

양자역학의 기본원리로는 크게 상보성의 원리와 불확정성 원리가 있다. 먼저 상보성의 원리는 보어가 창시한 개념으로, 자연현상은 반드시 짝이되는, 대립되는 개념을 함께 사용해야만 사물을 제대로 기술할 수 있다는 것이다. 빛의 이중성과 같은 개념을 자연의 관점에서 바라보는 것이다. 상보성의 원리에 의하면 자연을 이해하기 위해서는 대립되는 개념을 함께 사용해야만 사물을 제대로 기술 할 수 있다. 즉, 미시세계를 이해하기 위해서는 거시세계를 함께 알아야만 사물을 올바르게 기술할 수 있다. 질량이나 에너지, 위치, 운동량과 같은 개념은 거시적인 세계를 기술하는데 적합한 용어다. 미시적인 세계를 기술하는데 적합한 용어와 개념은 현재 부재한 상태다. 따라서 거시 개념을 통해 미시 개념을 이해하기에는 인식의 부재가 따른다고 볼 수 있다.

 

상보성의 원리는 불확정성원리를 일반화시킨 것이다. 불확정성원리는 위치와 운동량의 관계에서 전자가 움직이는 위치를 알고자 한다면 운동량을 알 수 없고, 전자의 운동량을 알고자 한다면 위치를 알 수 없는 것을 의미한다. 상보성의 원리는 보다 깊은 철학적 의미를 지녔으며, 앞서 언급한 인식의 한계에 대한 인식론적 고찰이 담긴 것이 특징이다. 즉, 상보성의 원리는 불학정성원리에 철학적 의미를 부여한 것이며, 불확정성 원리를 이해하는 인식론적 틀을 마련했다 볼 수 있다. 

 

3.4 상태의 중첩과 관찰

상태의 중첩이란 관찰이 있기 전, 미시세계의 존재는 모든 가능한 모든 상태에 '동시에' 존재한다는 것이다. 관찰시 파동함수가 붕괴되면서 관찰자는 단 하나의 고유상태를 확인할 수 있다. 양자이론은 이런 상태의 중첩을 단지 확률적으로만 말할 수 있다. 따라서 객관적 실재는 없다. 

 

4. 코펜하겐 해석

코펜하겐의 핵심 사상은 크게 3가지를 기반으로 하며 이는 확률파의 개념, 불확정성 원리, 상보성의 원리이다. 이 3가지는 양자역학의 철학적 기반을 마련했다 볼 수 있다. 코펜하겐해석은 막스보른이 슈뢰딩거의 방정식의 해를 확률파로 해석하자고 제안한 것을 기반으로 하였고, 보어가 이 코펜하겐해석을 주도하였다.

 

4.1 확률파

확률파란 수학적인 표현으로, 파동함수를 의미한다. 파동함수는 복소수가 포함되어 있다. 복소수는 실수와 허수로 구성되어 있고 특징은 추상적인 의미를 가진다. 확률파의 의미적 표현으로는 "관찰자가 입자를 발견할 확률"이 공간상에 파동의 형태로 퍼져있다는 것이다. 일반적으로 잘못알려진 부분은 입자가 존재할 확률이 파동의 성질을 가지고 널리 퍼져 있다는 것인데 이는 올바르지 않은 표현이다. 이런 확률파의 문제점은 물리량을 측정하는 관찰자가 무엇인가?와 같은 문제점이 제기된다. 직접적으로 관찰이 불가능한데 이는 매질이 진동하지 않기 때문이다. 따라서 확률파는 추상적인 존재로서 앞서 언급한, "관찰자가 입자를 발견할 확률"을 나타낸다. 이런 확률파는 슈뢰딩거의 방정식의 해를 해석하는데 사용된다.

 

4.2 불확정성 원리

만약 관찰자가 관찰(측정)을 하게 된다면, 필연적으로 관찰대상을 교란시키게 된다. 이는 미시세계의 물리량을 측정하는 정밀성의 한계에 기반한다. 이러한 한계를 해결하기 위해 도입한 것이 불확정성 원리이다. 불확정성 원리는 측정이 계에 미치는 영향을 정량적으로 분석하며, 간단한 부등식으로 나타낸다. ($\Delta x \Delta p \geq {h \over 2}$)

 

수식이 의미하는 바는 $\Delta x$는 위치의 불확정도, $\Delta p$는 운동량의 불확정도를 나타내며, $h$는 플랑크 상수이다. ($h$= $6.63 * 10^{-34}$ joul sec) 

 

간단한 해석을 하자면 정밀하게 측정하여 입자의 위치의 불확정도와 운동량의 불확정도를 아무리 작게 만든다 하더라도 둘을 곱한 값인 $h\over 2$보다 작게 만들 수 없다는 것이다. 또 다르게 해석하면 입자의 위치를 정밀하게 측정하여 그 불확정도를 0으로 만든다면 입자가 가진 운동량의 불확정도가 무한대로 커진다는 것을 의미한다. 

 

불확정성 원리는 위치와 운동량에서만 위와 같은 관계가 성립하는 것이 아니라 에너지와 시간에서도 동일한 관계가 성립한다. 따라서 정밀한 시간을 측정하여 시간의 불확정도가 0이 된다면 에너지는 무한으로 발산하게 된다. 에너지가 무한으로 발산한 다는 것은 무엇을 내포하고 있을까? 바로 무에서 유가 탄생하는 과정이다. 에너지가 발산하게 되면 $E=mc^2$에 의해 질량으로 바뀌게 된다. 에너지가 무한에 발산하니 질량인 $m$또한 마찬가지 일것이다. 

(관련 내용: https://roytravel.tistory.com/120?category=1006769) 

 

4.3 상보성 원리

상보성의 원리에 대한 내용은 3.3에서 언급한 내용으로 갈음한다.

 

코펜하겐 해석 특징

코펜하겐 해석의 특징은 객관적 실재를 부정한다는 것이다. 이유는 물리량은 측정 과정에서 만들어지기 때문에 어떤 물리량을 얻을지는 확률론적으로 결정된다. 관찰과 무관하게 독립적으로 실재하는 물리량은 없다. 이러한 특징을 적용하면 만약 두 사람이 같은 물리계를 관찰하더라도 미시세계에서는 같은 상태를 보는 것이 아니게 된다. 참으로 신기하지 않을 수 없다. 같을 것을 바라본다 하여도 같은 것이 아니라고 하니. 코펜하겐 해석은 결정론과 확률론의 조화로 세상을 설명한다. 그 이유는 슈뢰딩거의 방정식에 대한 이론은 결정론을 따르지만 실험 결과는 확률론을 따르기 때문이다. 이러한 특성 때문에 코펜하겐 해석은 불교의 중도와도 닮아 있다고하여 불교 철학과 조화를 이루는 면이 있다고 한다.

 

5. 파동함수 붕괴

파동함수가 붕괴된다는 것은 입자가 발견되면 존재 확률이 즉각적으로 1이 된다는 것이며 나머지 공간에 존재 확률이 0이 되는 것이다. 측정 전에는 입자의 위치를 말할 수 없다. 그 이유는 관찰이 없으면 물리 속성을 갖지 않기 때문이다. 관찰 대상이 없으면 관찰 대상도 없다. 다시 말해 관찰 전에는 단지 존재할 확률만 가질 뿐 실재하지 않는 다는 것이다. 이러한 파동함수의 특징은 비국소성을 띤다는 것이다. 비국소성이랑 시공간의 제약을 무시하는 것으로 극단적인 예로 우주의 양 끝에서 일종의 정보(정확히는 정보 전달X)를 주고받을 수 있다는 것이다. 하지만 문제점은 정보는 빛보다 빠를 수가 없다는 데 있다. 

 

6. 고유 상태

고유상태란 물리계의 상태를 나타내는 측정 값이, 측정 전후를 통해 변하지 않는 상태를 의미한다. 즉, 영원히 변하지 않는 어떤 상태를 말한다. 하지만 고유 상태의 한계는 세상에 이런 상태가 없다는 것이다. 고유상태는 우주가 '존재하는 어떤 것'들로 구성되어 있다고 착각하게 만든다. 때문에 우주의 참모습을 기술하기에 적합한 개념이라 볼 수 없다. 하지만 사람의 사물 인식 방식에 꼭 들어 맞는 기술 방식이라는 것이다. 세상에 무언가 존재하고, 존재하는 것은 고유의 특성이 있다는 믿음을 갖고 세상을 보기 때문이다. 이를 수학적으로 표현한 것이 고유벡터, 고유함수, 고유값이다. 슈뢰딩거의 방정식에 의거하면 사물이 A라는 고유상태와 B라는 고유상태를 가질 수 있다면 A+B의 결합된 중첩 상태도 가질 수 있는 것이 특징이다.

 

7. Reference

[1] https://www.ibs.re.kr/scc/lounge/malangScienceView.do?scienceLoungeNo=18043&dtaTy=004

[2] https://news.samsungdisplay.com/28429/
[3] https://www.dongascience.com/news.php?idx=32280

[4] https://allgo77.tistory.com/11 

[5] https://news.samsungdisplay.com/18698/

'Science > 물리학' 카테고리의 다른 글

[물리학] 무에서 유가 창조 되는 과정  (0) 2021.09.30

 

About SSH

AWS나 GCP와 같은 클라우드 플랫폼을 사용하다보면 주로 SSH를 통해 접속하고 작업을 진행하게 된다. SSH 사용에 대한 이해는 암호학에서 나오는 공개키와 비밀키의 관계를 이해하는 것이 핵심이다. 본 포스팅에서는 Windows 10과 Windows Server 2016간의 예시를 통해 이러한 SSH의 공개키와 비밀키가 어떻게 사용되는지를 설명하고자한다.

 

 

SSH 설치

Windows Server 2016의 경우 Windows 10과 달리 기본적으로 내장되어 있는 ssh가 없어서 별도의 OpenSSH와 같은 어플리케이션을 설치해주어야 한다. Winodws 10의 경우에도 빌드 버전에 따라 내장된 ssh가 없을 수 있으나 만약 없을 경우 설정 > 앱 > 선택적 기능 > 기능 추가 > OpenSSH 서버를 선택하여 설치하면 된다. OpenSSH에 대한 설치 과정과 환경 설정은 본 포스팅에서는 언급하지 않는다.

 

 

 

키 생성

Windows 10 : Client
Windows Server 2016 : Server

만약 Local인 Windows 10에서 Remote인 Windows Server 2016에 SSH를 접속하고 싶을 경우 접속을 위해 키 페어를 생성해야한다.

키 페어를 생성하여 SSH 통신을 하기 위해서는 실제로 작업을 진행하는 Local에서 공개키/비밀키 쌍을 생성하여 공개키를 Remote에 두어야 한다.

키 페어를 생성하기 위해 아래와 같이 ssh-keygen -t rsa 명령을 사용하면 어떠한 이름의 키 페어를 생성할 것인지를 확인하며 입력 없이 Enter를 누르게되면 default 이름인 id_rsa로 설정된다. (-t 옵션은 type을 의미하고 추가적으로 -C 옵션은 comment, -b 옵션은 bit 수를 지정이 가능. default bit수는 2048임)

 

 

이후 비밀키를 특정 passphrase로 암호화 할 것인지에 대해 확인하며 입력 없이 Enter를 누르게 되면 키 페어가 생성된다.

 

 

생성된 키 페어는 사용자 폴더 하위의 .ssh 폴더에 생성되며 아래와 같이 비밀키인 id_rsa와 공개키인 id_rsa.pub이 생성된다.

 

 

생성된 키 페어 중 공개키인 id_rsa.pub을 remote로 작업할 Windows Server 2016의 .ssh 폴더 하위에 아래와 같이 authorized_keys에 추가해주어야 한다.

 

 

authorized_keys가 없을 경우 파일을 생성하고 id_rsa.pub의 데이터를 동일하게 복붙해주면 된다.

 

SSH 사용

SSH를 사용하기 위해서는 3가지 파일이 필요하다.
Local : id_rsa, config
Remote : authorized_keys

이 중 id_rsa와 authorized_keys의 경우 키 페어 생성을 통해 얻을 수 있는 파일이며, 마지막으로 config 파일이 필요한데 별도로 존재하지 않을 경우 아래와 같이 작성해주어야 한다.

 

 

Host 명의 경우 추후 ssh 명령을 사용할 때 축약하여 사용할 수 있는 것으로 임의 설정이 가능하다. HostName의 경우 접속하고자 하는 remote의 IP이며, User의 경우 remote 환경의 사용자 계정 이름을 의미한다. 여기서는 Windows Server 2016의 사용자 계정인 Administrator라 볼 수 있다.

이후 중요한 것은 config 파일의 사용 권한 설정이다. 일반적으로는 아래와 같이 3개의 보안 주체가 있는 것을 확인할 수 있을 것이다.

 

 

여기에서 모든 보안 주체에 대해 상속을 사용하지 않음을 설정해주고 아래와 같이 모두 제거를 진행하여야 한다.

 

 

이후 아래와 같이 ssh [User]@[IP]와 같은 명령어를 작성할 경우 비밀번호 입력창이 뜨는 것을 확인할 수 있다.

 

 

이후 remote로 접속하는 비밀번호를 입력해주면 아래와 같이 접속이 완료된 것을 확인할 수 있다.

 

 

만약 비밀번호 없이 바로 접속하고 싶다면 아래와 같이 -i 옵션을 통해 비밀키인 id_rsa를 입력해주면 비밀번호 없이 remote로 접속이 가능하다.

 

 

다만 비밀번호 없이 바로 접속하기 위해서는 remote 측에서도 아래와 같이 OpenSSH가 설치된 C:\ProgramData\SSH의 폴더에서 authorized_keys 파일을 추가해주어야 비밀번호 없이 client에서 -i 옵션을 사용하여 접속이 가능하며, authorized_keys 파일은 sshd_config 파일의 맨 아래에서 경로를 설정해줄 수 있다.

 

 

만약 remote에 있는 파일을 실행하고 싶을 경우 아래와 같은 명령을 통해 파이썬 파일을 실행할 수 있다.

 

 

또한 scp 명령을 통해 remote와 local간의 데이터를 주고 받을 수 있는데 remote로부터 local로 데이터를 가져오는 명령은 다음과 같다.

 

 

아래와 같이 파이썬 스크립트를 통해서도 SSH 통신으로 명령을 내리고 결과를 받아오는 것이 가능하다.

 

 

사용한 파이썬 코드는 다음과 같다.

 

# -*- coding:utf-8 -*-
import paramiko as paramiko
from paramiko import AutoAddPolicy

server=""
username="Administrator"
password = ""
cmd_to_execute = "cd C:\\Users\Administrator\\Desktop\\test\\ & python test.py & dir"

ssh = paramiko.SSHClient()
ssh.load_system_host_keys()
ssh.set_missing_host_key_policy(AutoAddPolicy())

ssh.connect(server, username=username, password=password, sock=None, port=22)
ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command(cmd_to_execute)

err = ''.join(ssh_stderr.readlines())
out = ''.join(ssh_stdout.readlines())
final_output = str(out)+str(err)
print(final_output)

 

Reference

[1] How to Use SSH in Windows: 5 Easy Ways

 

소프트웨어 개발 주기는 요구사항 분석, 설계, 구현, 배포, 유지보수 등과 같은 일련의 과정이 존재한다. 이러한 소프트웨어 개발에 있어 사용하는 방법은 크게 두 가지를 사용한다.

 

1. 폭포수 모델

Waterfall Model

(개념) 요구사항을 완벽하게 취합하여 계획을 잘 세우고 그 계획대로 진행하는 방법론

 

(배경) 1970년대 창안된 첫 번째 소프트웨어 개발 방법론

 

(아키텍처) 요구사항 → 분석 → 디자인 → 코딩 → 테스트 → 릴리즈 단계를 지님

 

(특징) 미리 모든 요구사항을 수집하고 전체적으로 분석과 디자인을 한 뒤 한번에 완성

 

(단점-1) 느린 단계별 접근법으로, 중복 프로세스가 발생하고 릴리즈 간 긴 시간차가 발생

 

(단점-2) 과도한 문서 업무가 존재함

 

(보완 방안) 애자일 방법론을 고안

 

 

1. 애자일 방법론

 

Agile Methodology

(개념) 요구사항을 초기에 완벽하게 도출하는 것이 불가능하기에 개발 주기를 반복하고 고객과 소통하면서 소프트웨어의 품질을 발전시키는 방법론

 

(전제) 모든 요구사항을 결코 알 수 없다.

 

(배경) 폭포수 모델의 과도한 문서업무로 인해 비효율을 줄이고자 1990년대 고안된 방법론

 

(특징) 빠르고 모듈식의 주기적인 방식을 통해 개발 전 단계에 걸쳐 요구사항을 지속적으로 분석하고 반영하여 릴리즈 간 시간차를 최소화함

 

 

3. 폭포수와 애자일 방법론의 10가지 주요 차이점

  • 요구사항 : 폭포수 = 미리 도출 / 애자일 = 지속적으로 도출
  • 릴리즈 : 폭포수 = 자주하지 않음 / 애자일 = 고객 니즈 충족을 목표로 지속적으로 릴리즈
  • 지향 : 폭포수 = 계획 중심 / 애자일 = 학습 중심
  • 의사소통 : 폭포수 = 고객과의 드문 의사소통 / 애자일 = 고객과의 지속적인 의사소통
  • 현황 공유 : 폭포수 = 계획중심이라, 단계별 진척 사항을 프로젝트 단계별 점검 / 애자일 = 특정 기능이 완성되지 않은 소프트웨어더라도 프로젝트 초기부터 전체적으로 통합되기까지 지속적으로 진행사항 공유
  • 수직/수평 : 폭포수 = 수평적 단계별 개발 / 애자일 = 기능별 수직 개발
  • 관점 : 폭포수 = 프로그래밍은 단순 공사 / 애자일 = 프로그래밍은 디자인의 확장(분리불가)
  • 통합 : 폭포수 = 마지막에 통합 / 애자일 = 초기와 이후 지속적인 통합
  • 테스트 : 폭포수 = 마지막 단계에 테스트 / 애자일 = 초기와 이후 지속적인 테스트
  • 진단방법 : 폭포수 = 계획에 따른 진척사항 진단 / 애자일 = 소프트웨어를 만들지 소프트웨어 만드는 방법을 문서화하는 것이 아니기에 소프트웨어가 얼마나 회사 비즈니스에 부합하나로 진단

4. Reference

 

디피헬만 키 교환 프로토콜의 경우 간단한 형태이다. 예시를 들자면 A, B가 있을 때 A는 B에게 3을 보내고 B는 6에게 보냈다고 할 경우 서로 3과 6을 곱한 값인 18을 세션키로 사용하는 것과 같다.

 

세션키를 만들기 위해 각자의 개인키를 g의 승수로 취해 모듈러 연산을 한 다음 보낸다. Bob는 세션키를 생성하기 위해 Alice로부터 받은 $R_1$에 자신의 개인키인 $y$를 곱해주고,  Alice는 세션키를 생성하기 위해 해 Bob으로부터 받은 $R_2$에 자신의 개인키인 $x$를 곱하여 같은 세션키를 사용한다.

블록체인에서도 주로 언급되는 영지식 증명의 경우 아래 3가지 조건을 충족시켜야 한다.

 

Completeness(완전성): 어떤 문장이 참이면 정직한 증명자는 정직한 검증자에게 이 사실을 납득시킬 수 있어야 한다.

 

Soundness(건전성): 어떤 문장이 거짓이면 부정직한 증명자는 정직한 검증자에게 이 문장이 사실이라고 납득시킬 수 없어야 한다.

 

zero-knowledgeness(영지식성): 어떤 문장이 참이면, 검증자는 문장의 참거짓 이외에는 아무것도 알 수 없어야 한다.

암호학적으로 해시를 안전하게 설계하기 위해서는 크게 3가지 조건이 필요하다.

 

이를 해시의 3가지 성질이라 한다.

 

제 1역상 저항성(pre-image resistance)

  • 주어진 output 값으로 원래의 input을 알아내기 어려워야 한다.
  • 주어진 해시값 y로부터 $h(x)=y$를 만족하는 x를 찾는 것이 어려워야 함을 의미한다.

 

제 2역상 저항성(second pre-image resistance)

  • 동일한 output을 가지는 input이외의 input'을 찾기 어려워야 한다.
  • 해시함수 h와 x값이 주어졌을 때 동일한 y값을 내는 x`을 찾기 어려워야 한다.

 

 

충돌 저항성(collision resistance)

  • 서로 다른 입력 값을 해시했을 때 같은 output이 나오기 어려워야 한다.
  • 해시함수 h가 주어졌을 때 동일한 y값을 내는 $(x, x')$ 쌍을 찾기 어려워야 한다.

 

한마디로 말해 차례대로 $x, x', (x,x')$을 찾기 어려워야 한다.

1. Elgamal 암호 알고리즘 개요

Elgamal 암호는 공개키암호시스템으로서 디피헬만의 키교환과 같은 원리를 사용하는 것이 특징이다. Elgamal 암호는 이산대수 문제의 어려움에 기반하고 있다. 예를 들어 (x,g,p)가 주어졌을 때 y=g^x mod p는 계산하기 쉽지만, (y,g,p)가 주어졌을 때 x를 찾기 쉽지 않다는 것이다. Elgamal 암호는 Textbook-RSA보다 암호문의 길이가 2배나 길다. 하지만 동일한 평문에 대해 동일 암호문을 출력하는 Textbook-RSA와 달리 동일 평문에 대해 매번 다른 암호문을 출력하는 probabilistic한 성질을 가진다.

 

 

키생성

1. 큰 소수 $p$를 선택한다.

2. $1\leq d\leq p-2$의 범위에서 임의의 d를 선택한다.

3. $Z_p^*$에서 임의의 원시근 $e_1$을 선택한다.

4. $e_2=e_1^d\ mod\ p$를 계산한다.

 

암호화

1. 메시지 $m$과 랜덤 $r$을 선택

2. $c_1=e_1^r\ mod\ p$를 계산

3. $c_2=e_2^rm\ mod\ p$를 계산

4. $(c1, c2)$를 수신자에게 전송

 

복호화

개인키 d를 이용해 $c_2(c_1^d)^{-1}\ mod\ p$를 계산 → M 도출 가능

$c_2(c_1^d)^{-1}\ mod\ p$

= $c_2e_1^{-rd}\ mod\ p$

= $e_2^rm*e_1^{-rd}\ mod\ p$

= $e_1^{rd}me_1^{-rd}\ mod\ p$

= $m\ mod\ p$

 

 

2. Elgamal 암호 알고리즘과 KPA 공격

random number를 사용하지 않으면 Elgamal 암호는 KPA 공격에 취약하다. KPA 공격은 알려진평문공격으로 공격자가 평문에 대응하는 암호문 쌍 일부를 알고 있을 때다. 공격자는 이를 통해 새로운 평문에 대해 평문과 키를 알아내는 것을 목표로 한다.

 

방법 1

공격자는 자신이 알고 있는 평문 m과 $(c_1,c_2)$를 이용해 아래와 같이 계산가능하다.

$c_2=e_2^rm\ mod\ p$

$e_2^r=c_2m^{-1}\ mod\ p$

이때 공격자는 자신이 원하는 $m^*$에 대해 아래와 같은 과정을 통해 알 수 있다.

$c_1^*= e_1^r\ mod\ p$

$c_2^*=e_2^rm^*\ mod\ p$

일 때 이미 계산해둔 정보를 통해 아래와 같이 계산하여 $m^*$를 얻을 수 있다.

$(e_2^r)^{-1}c_2^ = m^*\ mod\ p$

 

방법 2

$[m]$
1) $C_1=e_1^r\ mod\ p$

2) $C_2 = e_2^r*m\ mod\ p$

$[m']$
1) $C_1'=e_1^r\ mod\ p$

2) $C_2'=e_2^r*m'\ mod\ p$

$\therefore {C_2\over C_2`}={{e_2^rm\ mod\ p}\over {e_2^rm'\ mod\ p}}$

attacker가 m를 알고 동일한 r값이 쓰였다면 m'을 알게 되는 것과 같아지기 때문에 Elgamal은 KPA 공격에 안전하지 않다.

 

1. RSA 알고리즘 개요

공개키 암호에는 대표적으로 RSA 암호가 일반적으로 사용된다. 하지만 RSA 알고리즘의 경우 수학적으로 안정성이 검증되지 않았고, 취약점이 나올 경우 거기에 맞춰 알고리즘을 수정하는 방식을 사용한다고 한다. 기본적으로 RSA 알고리즘은 같은 메시지에 대해서 같은 암호문을 생성하는 결정적인 특징을 가진다. 이를 방지하고자 확률적인 특징을 가지도록 하기 위해 고정패딩과 랜덤패딩을 붙이는 RSA-OAEP 방식을 사용한다. RSA-OAEP는 RSA 알고리즘의 취약점 중 하나인 CCA(선택암호문공격)에 안전하다는 것이 특징이다. RSA 암호이외에도 레빈 암호 시스템이 있다. 이는 수학적으로 안정성이 검증되었고 RSA보다 뛰어난 것으로 판단되었지만 RSA 암호보다 유명세를 타지 못해 별로 사용되지 않는 것이라 한다.

 

2. RSA 알고리즘

 

절차

(1) 서로 다른 두 소수 $p, q$를 선택
(2) $p$와 $q$를 곱하여 $n=p*q$를 계산
(3) $\phi(n) = (p-1)(q-1)$을 계산
(4) $1<e<\phi(n)-1$의 범위에서 공개키 $e$를 선택
(5) $d=e^{-1}\ mod\ \phi(n)$을 통해 비밀키 $d$를 계산
——————————
public key = $(n, e)$
private key = $(d)$
검증키 = $(n,e)$
서명키 = $(d)$

 

암호화 (Encryption)

$C \equiv m^e\ mod\ n$

 

복호화 (Decryption)

$m \equiv C^d\ mod\ n$

 

서명 (Signing)

$S \equiv H(m)^d\ mod\ n$ // $H()$ is hash function

 

검증 (Verification)

check if $S^e \equiv H(m)\ mod\ n$

$S^e \equiv (H(m)^d)^e\equiv H(m)$

 

= $m$과 $s$가, 검증키 $(e,n)$을 이용하여 $s^e\ mod\ n = m$이 되는지 확인.

 

3. RSA 알고리즘에 대한 선택암호문공격

1. $c = m^e\ mod\ n$이 주어짐.

2. 공격자는 $gcd(r,n)=1$이면서 $r\in(0,n-1)$을 선택

3. 공격자는 공개키 r을 이용하여 암호화하여 $c^*\equiv\ r^ec\ mod\ n$을 생성

4. 복호화 오라클로 전송하여 $c^{*d}\equiv\ ({r^ec})^d\ mod\ n$을 받음

5. $c^{*d}\equiv\ rc^d\ mod\ n$

6. $c^{*d}\equiv r(m^c)^d\ mod\ n$

7. $c^{*d} \equiv\ rm\ mod\ n$

8. $c^{*d}r^{-1} \equiv m\ mod\ n$을 통해 m을 구할 수 있음. 공격자는 자신이 선택한 r에 대응하는 역원
을 곱하면 됨.

+ Recent posts