TLS(SSL) 암호화 프로토콜

김현송·2023년 9월 22일
0

TLS

TLS(전송 계층 보안)

  • 인터넷 상의 커뮤니케이션을 위한 개인 정보와 데이터 보안을 용이하게 하기 위해 설계된 보안 프로토콜입니다.
  • 웹 브라우저와 서버간의 커뮤니케이션을 암호화하며 이메일, 메시지 등 다른 커뮤니케이션을 암호화 하는데도 사용합니다.
  • 우리가 흔히 알고있는 HTTPS 프로토콜은 HTTP + TLS 암호화 입니다.
💡 가장 최신버전은 2018년 발표된 1.3 입니다.

TLS와 SSL의 차이점

TLS는 SSL 3.1버전으로 개발한 암호화 프로토콜이지만 Netscape와 연관이 없음을 명시하기 위해 프로토콜 명칭이 변경되었습니다.

SSL은 뭔가요?
1995년 Netscape에서 처음 개발된 암호화 기반 인터넷 프로토콜입니다.
작동방법
1. 웹을 통해 전송되는 데이터를 암호화합니다.
2. 핸드셰이크라는 인증 프로세스를 시작하여 두 장치를 확인합니다.
3. 무결성을 검증합니다.
1996년 이후로 업데이트 되지 않으며 현재는 더 이상 사용되지 않는 것으로 간주된다고 합니다.

❗ 3-way-handshake와 다른 개념입니다. TLS(SSL) 핸드셰이크는 TCP 핸드셰이크를 통해 TCP 연결이 열린 후 발생합니다.

TLS의 요소

SSL과 마찬가지로 TLS 프로토콜은 다음 세가지의 요소를 만족합니다.

  1. 암호화 : 제 3자로부터 전송되는 데이터를 숨깁니다.
  2. 인증 : 정보를 교환하는 당사자가 요청된 당사자임을 보장합니다.
  3. 무결성 : 데이터가 위조되거나 변조되지 않았는지 확인합니다.

TLS 핸드셰이크

 1) 클라이언트가 서버에게 접속 요청을 보냅니다. (클라이언트가 지원하는 TSL 버전, 암호화 알고리즘 목록, 랜덤 바이트 문자열)

 2) 서버는 클라이언트가 지원하는 알고리즘 중 하나를 선택하고 서버의 SSL 인증서, 서버에서 생성한 무작위 바이트 문자열을 메시지에 담아 클라이언트로 보냅니다.

 3) 서버의 메시지를 받은 클라이언트는 서버가 인증서에 명시된 서버인지, 실제 해당 도메인의 소유자인지를 확인합니다. 클라이언트는 서버의 SSL 인증서를 CA(발행 기관) 리스트를 통해 검증합니다. 이 과정에서 클라이언트에 내장된 CA 공개키를 이용해서 인증서를 복호화합니다. 또한 SSL 인증서를 통해 서버의 공개키를 알아냅니다.

 4) 클라이언트가 PMS(Pre-Master-Secret)를 생성합니다. 

- PMS = 서버의 무작위 문자열 + 클라이언트의 무작위 문자열

 5) 3에서 알아낸 서버의 공개키를 가지고 PMS를 암호화하여 서버에 보냅니다. 

 6) 서버는 클라이언트로부터 받은 PMS를 서버의 개인키로 복호화합니다. 이제 둘다 PMS를 들고있습다.

 7) 서버와 클라이언트는 PMS를 MS(Master Secret) 값으로 다시 Session Key로 만듭니다. [PMS → MS → Session Key]

 8) 서버와 클라이언트는 세션키로 암호화된 ‘완료’ 메시지를 서로 보냅니다. 

 9) TSL 핸드셰이킹 완료!
profile
안녕하세요

0개의 댓글