클라이언트가 네트워크에 접근할 수 있도록 해주는 프로토콜은 다양하다.
그 중 SSH 두 장치간 통신을 하기위해서 shell을 사용하는 프로토콜이다. shell은 OS와 통신을 할 수 있도록 해주기때문에 서버에 원격으로 접속이 가능하다.
SSH의 주요 기능은 많지만 그 중에서 SSH의 가장 큰 이점은 암호화(Encryption)이다. 암호화를 통해서 Host와 Client 간의 데이터 전송의 보안을 보장해줄 수 있다.
Host는 우리가 접근을 할 수 있는 원격 서버를 의미하고 클라이언트는 우리가 사용하는 컴퓨터라고 말할 수 있다.
ssh에 접속하기 위해서 커맨드 창에서 다음 명령어를 입력하면 접속이 가능하다.
ssh {user}@{host}
user는 root가 디폴트로 되어있을것이다. host에는 ip주소 혹은 도메인주소.
SSH의 암호화 방식에는 크게 세가지가 있습니다.
대칭 키 암호는 하나의 비밀키를 클라이언트와 서버가 모두 사용합니다.
해커가 비밀키를 알고 있다면 암호화된 내용을 해독할 수 있어서 보안에 취약할 수 있습니다.
암호화와 복호화에 사용하는 키가 다른 방식이다.
공개키와 비밀키가 있다.
실제로는 복잡한 과정이지만 개념만 설명하자면,
클라이언트가 서버에 메시지를 보낸다고 가정했을때, 클라이언트는 서버의 공개키를 받아 암호화한 뒤 메시지를 보낸다.
서버는 서버의 비밀키를 사용해 메시지를 복호화한다.
+) 실제로 암호화에 쓰이는 알고리즘인 Difiie Hellman Key Exchange 알고리즘이 있습니다. 이 부분은 조금 더 공부를 하도록 하겠습니다.
해시 알고리즘은 패킷의 무결성을 확인하기 위해서 사용이 됩니다.
클라이언트 관점에서 서버 인증을 하는 과정은 다음과 같습니다.