SSL(Secure Sockets Layer)이란 무엇인가?
온라인 상태에서 HTTP 대신 HTTPS로 시작하는 웹 주소를 본 적이 있다면 SSL이 작동하는 것을 본 것이다. HTTPS 끝에 있는 "S"는 웹사이트가 귀하(귀하가 웹사이트에 액세스 할 가능성이 가장 높은 방법인 브라우저)와 자체 간의 통신을 유지하기 위해 추가 보안 계층을 채택했음을 의미한다.
SSL은 Secure Sockets Layer의 약자이며 암호화 기반 인터넷 보안 프로토콜을 의미한다.
(SSL 443번 포트를 사용한다.)
웹 주소에 가장 중요한 "S"를 지정하는데 사용되는 기술은 해당 웹사이트와의 통신이 암호화되어 다른 사용자의 눈에 띄지 않도록 안전하게 보호해 줄 것이다.
SSL과 SSL 인증서 획득의 중요성에 대해 자주 듣게 되지만 조금 더 깊게 파고들면 SSL 대신 TLS 또는 Transport Layer Security라는 것을 사용하고 있음을 알게 될 것이다. TLS는 프로토콜의 최신 버전이며, 한동안 사용되었지만 사람들 이미 SSL에 너무 익숙해서 해당 용어에 고착화되었다. 기껏해야 SSL/TLS에 대한 언급을 찾을 수 있을 것이다.
여기서 중요한 점은 SSL이 네트워크에서 안전한 통신을 가능하게 하고 전송된 데이터를 보호하는 데 사용된다는 것이다.
SSH(Secure Shell)이란 무엇인가?
SSH는 서버에 원격으로 연결하고 제어하는데 사용되는 원격 프로토콜 유형인 Secure Shell의 약자이다.
(SSH 22번 포트를 사용한다.)
SSH는 일반 웹브라우징 중에는 작동하지 않는다. 명령을 실행하고 파일을 전송할 목적으로 원격으로 서버에 접속하는 사람에게만 영향을 미치는 보안 프로토콜 유형이다. 그리고 해당 접속은 보통 웹사이트 관리자가 이용한다.
(AWS에서 제공하는 EC2에 접근할때 SSH 보안 인증을 통해서 접근이 가능하다.)
SSH 작동 방식
SSH를 구성하는 가장 핵심 키워드는 Key(열쇠)이다. 사용자(클라이언트)와 호스트(서버)는 각각의 키를 보유하고 있으며, 이 키를 이용해 연결 상대를 인증하고 안전하게 데이터를 주고받는다. 여기서 키를 생성하는 방식이 두 가지가 있다.
바로 대칭키와 비대칭키(공개 키) 방식이다.
비대칭키(Asymmetric Key)
비대칭키 방식에서는 서버 또는 사용자가 Key pair(키 쌍)을 생성한다. 키 페어는 공개 키와 개인 키 두 가지로 이루어진다. 공개 키와 개인 키는 서로 다른 키로 서로 페어인 키들로만 암호화한 메세지를 복호화 가능하다.
쉽게 예시를 가지고 생각해보자.
사용자가 키 페어를 생성했고, 서버에게 공개 키를 주었다.
공개 키는 말 그대로 '공개'키 이므로 누구나 가질 수 있다.
개인 키는 말 그대로 개인이 소장해야 하며 누구한테도 보여주면 안 되는 중요한 키(파일)이다.
서버의 공개 키를 사용해 암호화된 인증 메시지를 사용자에게 보낸다.
공개키를 사용해 암호화된 메시지는 오직 페어인 개인 키를 사용해 복호화할 수 있다.
이런 논리를 사용해 서버와 클라이언트 간 사이를 증명할 수 있다.
암호화된 메시지를 받으면 사용자는 개인 키를 이용해 그것을 풀고 서버에게 제출한다. 서버는 사용자에게 전송받은 값을 자신이 암호화하기 전 원본 메세지와 비교한다. 만약 두 값이 맞다면, 서버는 사용자를 페어 키의 주인으로 인지하고 접속을 허용한다.
이렇게 최초 접속 시 사용자와 서버 간의 인증 절차가 비대칭키 방식을 이용해 완료되었다.
대칭키(Symmetric Key)
사용자 또는 서버는 하나의 대칭 키를 만들어 서로 공유한다. 공유된 대칭 키를 이용해 보낼 메세지를 암호화하면, 받는 쪽에서도 동일한 대칭 키로 메세지 복호화를 진행해 정보를 습득한다.
결론 적으로 암호화, 복호화할 때 사용하는 키가 동일하기 때문에 대칭 키라고 하는 것이다.
이 키를 안전하게 전달하는 것이 제일 중요한 포인트라고 볼 수 있다.
보통 정보 교환이 완료되면 교환 당시 썼던 대칭 키는 폐기되고, 나중에 다시 접속할 때마다 새로운 대칭 키를 생성해서 사용한다. 또한 비대칭키 방식으로 서로를 인증하면 대칭 키 방식을 사용해 정보를 주고받는다.
이러한 방식들을 이용해 원격 접속 과정이 SSH를 통해 안전하게 이루어진다.
출처
'프로그래밍 > 네트워크' 카테고리의 다른 글
간이 망 관리 프로토콜(Simple Network Management Protocol, SNMP)에 대해서 (2) | 2023.10.30 |
---|---|
랜선(LAN Cable, Ethernet Cable)에 대해서 (0) | 2023.10.27 |
네트워크 토폴로지란? (0) | 2023.10.25 |
와이어샤크(Wireshark) 설치하기 (1) | 2023.10.04 |
이더넷(Ethernet)이란 무엇인가? (2) | 2023.08.23 |
댓글