OpenSSH의 구조와 동작

반응형

[OpenSSH]

SSH 서버는 서버의 identity를 위한 host key를 가지고 클라이언트는 user identity를 위한 user key를 가지는데 이 key들은 public key, private key 의 2개 key로 구성이 되어 있다. OpenSSH를 통해 안전한 connection을 맺기 전에 클라이언트는 자신의 user public key를 host public key 의 인증을 거쳐 서버에 복사를 하면 서버에는 클라이언트에 대한 private key를 생성하게 됩니다. 그리고 user key 파일들을 생성 할 때의 user private key는 인증되지 않은 사용자가 이것을 함부로 사용하는 것을 막기 위해 passphrase(일종의 로긴 password)로 암호화 하도록 권장되고 있다. 이렇게 host key, user key에 암호, 인증을 통해 connection이 맺어지면 별도의 session key가 만들어 지면서 이를 통해 통신의 암호화

를 하게 되어 spoofing을 통한 정보 유출은 방지할 수 있습니다.


[서버와 클라이언트의 동작]

(1) OpenSSH 클라이언트가 OpenSSH 서버에 connection을 요청
(2) OpenSSH 클라이언트와 서버는 서로의 지원되는 프로토콜의 버전을 확인
(3) 서버는 클라이언트에 서버의 host public key와 challenge(sequence of random bytes)를 보냄. 즉 클라이언트는 서버의 host public key, 암호 알고리즘 등을 확인함.
(4) 클라이언트는 새로운 session key(통신 암호화를 위한 key)와 challenge를 생성한 다음 서버로부터 받은 host public key로 자신이 만든 session key와 challenge를 암호화. 그리고는 서버에게 이 새로운 session key와 challenge를 보냄.
(5) 서버는 자체 host private key를 사용하여 클라이언트로 받은 session key와 그 challenge의 암호를 해독.
(6) 해독이 성공적으로 되면 안전한 connection이 이뤄지게 됨.


반응형