SSL 이란 ? TLS 이란 ?

SSL (Secure Sockey Layer) 이란 ?

SSL과 TLS는 "보안계층" 이라는 계층을 만들어 응용계층과 전송계층의 사이에 존재한다.

HTTPS에 사용되는 “클라이언트와 웹 서버버간의 통신 암호화 프로토콜.”입니다.

SSL은 HTTPS와 같이 443 포트를 사용하며 통신 데이터가 암호화되어, 중간에 정보를 가르채려는 3자가 나타나도 데이터를 지킬 수 있습니다.

하지만 데이터 송/수신 과정에서 암호화, 복호화가 발생하므로 속도가 느리다는 단점이 있습니다.

 

 

  • SSL이 적용되지 않은 경우

아래 그림과 같이 "High Value Information" 이라는 평문 (Plain Text)가 그대로 전송됩니다.

이렇게 되면 제 3자가 통신 패킷을 탈취할 경우, 그 내용을 쉽게 확인할 수 있는 문제점이 있습니다.

  • SSL이 적용된 경우

요청을 암호화해서 보내므로 통신 패킷이 탈취되어도 복호화 키가 없으면, 내용을 알 수가 없습니다.

SSL의 보안 적용 과정

  1. handshake를 통해 데이터를 주고 받기 위해 어떤 방법을 사용해야 하는지 서로 상태를 파악한다.
  2. SSL은 80포트를 사용하는 HTTP와 달리 443번 포트를 기본으로 사용하는 TCP기반의 프로토콜이다.
  3. TCP 기반이기 때문에 handshake전에 TCP 3-way handshake 또한 수행한다.
  4. 서로 간 협상이 완료되면, SSL 세션이 생성되고 클라이언트와 서버는 원하는 데이터를 주고 받게 된다.
  5. 그리고 데이터 전송의 끝을 서로에게 알리며 세션을 종료 한다.

출처 : SK infosec

  • 3-way handshake 에 대한 내용은 아래 포스팅에서 확인할 수 있습니다.
 

TCP와 UDP의 차이, 개념에 대해 쉽게 알아보자

TCP(Transport Control Protocol) 란 ? 연결형 서비스를 지원하는 전송 계층 프로토콜로써, 인터넷 환경에서 기본으로 사용합니다. 호스트간 신뢰성 있는 데이터 전달과 흐름제어를 합니다. 즉, 인터넷상

hstory0208.tistory.com

 

handshake 단계에서 협상하게 되는 내용

출처 : SK infosec

# Ciper Suite : 보안 통신을 협상하기 위해 사용되는 인증, 암호화, MAC 및 키 교환 알고리즘 등의 조합.

 

1. Client Hello

클라이언트가 서버에게 연락합니다. ( 브라우저 검색창에서 도메인을 입력하는 것 ) 

이때 클라이언트는 자기 자신의 브라우저가 지원할 수 있는 암호화 방식 ( Cipher Suite)을 먼저 제시합니다.

그리고 랜덤 데이터를 생성하여 추가로 전송합니다.

 

2. Server Hello

서버가 클라이언트에게 연락합니다.

서버는 클라이언트가 제시한 암호화 방식 중 하나를 선정하여 알려줍니다. 또한, 서버 자신의 인증서를 전달합니다.

이 인증서에는 서버의 공개 키가 포함되어 있습니다.

클라이언트와 마찬가지로 서버 측에서 생성한 랜덤 데이터 또한 전달합니다.

 

3. Client key exchange

클라이언트는 미리 주고받은 자신과 서버의 랜덤 데이터를 참고하여 서버와 암호화 통신을 할 때 사용할 키를 생성한 후 서버에게 전달합니다.

이때 키는 서버로부터 받은 공캐키로 암호화되어 보내집니다.

 

4. Finished

마지막으로 handshake 과정이 정상적으로 마무리되면, 클라이언트와 서버 모두 "Finished" 메시지를 보냅니다.

그 후 부턴 클라이언트가 생성한 키를 이용하여 암호화된 데이터를 주고 받게 됩니다.

 

 


TLS ( Transport Layer Security ) 란 ?

TLS는 "SSL의 보안취약점을 보완한 통신 보완 프로토콜"입니다.

SSL은 1996년에 3.0버전까지 출시되었으며, 2015년이 마지막으로 보안 취약점으로 퇴출된 상태라고합니다.

그런데 아직도 SSL이란 용어가 많이 보이는 이유는 인터넷에 적용되는 통신 보안 프로토콜을 통틀어 SSL이라 부르기 때문입니다.

보안 프로토콜을 SSL이라고 부르지만 현재 사용 중인 통신 보안 프로토콜은 모두 TLS라고 합니다.

 


참고자료
https://blog.naver.com/PostView.naver?blogId=skinfosec2000&logNo=222135874222&redirect=Dlog&widgetTypeCall=true&directAccess=false
https://blog.itcode.dev/posts/2021/08/18/about-ssl