SSH는 암호화 기법을 사용하기 때문에, 통신이 노출된다고 하더라도 이해할 수 없는 암호화된 문자로 보인다.
wiki
ssh를 통한 작업들을 종종하면 ssh-keygen을 통해서 2개의 키를 생성하고 하나의 키를 리모트 머신에 넘긴 후 연결을 하곤 한다.
어떠한 암호방식이 동작하기 때문에 두개의 키가 생성되고 하나의 키를 넘겨주는 것일까?
최초의 암호
최초의 암호는 Password이다. 통칭 1세대 암호이다. Password는 특정 문자열을 특정 방식을 통해 순서를 바꾸거나 하는 방식으로 사용되었다.
대칭형 암호
2차대때 무선통신의 발전에 따라 장거리 통신에 요구되는 암호방식이 요구되었고 대칭형 암호가 발족했다. 통칭 2세대 암호. 대칭형 암호는 암호를 암호화히는 키와 복호화하는 키가 동일한 암호이다. 키하나로 모든 작업을 진행하므로 복호화키는 암호화키의 역산 동작이다. 이 경우는 이 암호와 관련된 모든 곳에 해당 키를 보관해야 하므로 누군가 한명만 키를 탈취당해도 모든 보안이 뚫리게 된다. 대표적으로 비밀키 암호방식이 있다. 뒤이어 설명할 비대칭형에 비해 속도는 빠르다.
비대칭형 암호
대칭형 암호의 보안 문제를 개선하기 위해 대칭형 암호가 개발되었다. 통칭 3세대 암호. 비대칭형 암호는 암호화키, 복호화키가 다른 암호방식이다. 대표적인 공개키 암호화 방식을 살펴보면 공개키라고 하는 암호화를 진행하는 키가 있고 비밀키(혹은 개인키)라고 하는 복호화를 진행하는 키가 있다. 따라서 로컬에서만 가지고 있는(이동할 필요가 없는) 비밀키가 유출되지 않는 이상 보안이 뚫릴 일이 없다.
SSH의 동작
그럼 ssh가 어떻게 동작하는지 생각해보자. 먼저 클라이언트가 서버측에 공개키를 전송하고 서버는 공개키를 가지고 있는다. 이 후 클라이언트가 접속을 요청하면 서버는 공개키를 통해 암호화된 난수를 보내고 클라이언트는 해당 난수를 비밀키로 복호화하여 서버로 보내고 이를 인증의 근거로 삼아 통신을 연결한다.
ssh는 이외에도 몇가지 인증방식을 제공하비만 가장 많이 사용하는 방식은 해당 방식이다.
동형암호
데이터를 매번 암호화 - 복호화하는 상황에서 오는 리소스 소모를 줄이고자 등장한 것이 동형암호이다. 통칭 4세대 암호. 동형암호의 가장 큰 패러다임은 암호화 상태에서도 연산이 가능하다는 점이다. 이를 튜링 완전성(turing completeness)이라 한다. 따라서 동형암호는 아예 실행 환경에 키를 줄 필요조차 없으며 오직 데이터를 가지고 있는 환경만 키를 가지고 있다.