SSL/TLS란?
- HTTP를 이용하여 데이터를 전송할 때, 우리가 주고받는 데이터는 암호화 되어있지 않다.
- HTTP 통신 방식에 암호화를 추가한 방식이 HTTPS이다.
- HTTPS에서 사용하는 암호화를 위해 사용하는 프로토콜이 SSL/TLS이다.
SSL, TLS
SSL(Secure Sockets Layer)은 TLS(Transport Layer Security)의 전신으로 시대를 거쳐 1.0, 2.0 그리고 1996년에 3.0이 출시되었다.
이후 1999년 SSL 3.0을 기초로 한 TLS 1.0이 출시되었고 1.1, 1.2 버전을 거쳐 2018년에 TLS 1.3이 출시되었다.
SSL은 현재는 거의 사용하지 않지만, TLS와 같은 의미로 사용되고 있다.
(이하로 SSL이라고 쓰겠다.)
SSL 인증서
- SSL은 SSL인증서가 있는 웹사이트만 실행할 수 있다.
- SSL 인증서는 신뢰할 수 있는 기관(CA)에서 발급한다.
- SSL인증서에는 웹사이트의 공개 키가 포함되어있다.
- SSL인증서는 공개 키 암호화 방식(RSA)을 통해 데이터를 암호화한다.
- 웹 서버에 비밀 키가 존재한다.
SSL 원리
- 서버의 공개 키/ 비밀 키를 생성한다.
- CA(인증된 기관)에 공개 키와 기타 정보를 전달하여 SSL인증서를 생성한다.
- SSL인증서는 CA의 비밀 키로 암호화 된다.
- 서버에 인증서를 저장하고 내 서버에 접속한 클라이언트에게 인증서를 보내준다.
- 클라이언트(브라우저)는 인증서를 CA의 공개 키로 복호화한다.
- 브라우저에는 CA들의 공개 키가 내장되어 있다.
- 복호화 성공 여부를 통해 CA에서 발급한 인증서인지 확인한다.
- 복호화 한 인증서에 들어있는 서버의 공개 키를 이용해서 통신한다.
SSL Handshake
- TCP Handshaking
- 3-way-handshake를 한다.
- SSL 통신을 하기위해 TCP연결이 수립 되어야 한다.
- SSL Handshaking
- Client Hello (Client → Server)
- 클라이언트가 생성한 랜덤 데이터와 클라이언트가 사용가능한 암호화 방식을 서버로 전송한다.
- 세션 키를 전송한다
- Server Hello (Server → Client)
- 서버가 생성한 랜덤 데이터와 선택한 암호화 방식을 전송한다.
- SSL 인증서를 전송한다.
- 클라이언트 확인
- SSL 인증서를 CA의 공개 키를 이용해서 복호화한다.
- 복호화가 성공했다면 해당 인증서는 CA에서 발급한 인증서라 신뢰할 수 있다는 뜻이다.
- 복호화하여 서버의 공개 키를 얻을 수 있다.
- 대칭 키 암호화를 위한 pre master secret key 생성 (Client → Server)
- 클라이언트가 생성한 랜덤 데이터 + 서버 랜덤 데이터를 통해 특정값 생성
- 이 값을 서버의 공개키로 암호화
- 서버로 전송
- session key 생성
- pre master secret key를 받아 서버 비밀 키로 복호화
- 이를 통해 session key를 생성하여 클라이언트와 공유
- session key를 사용하여 데이터를 대칭 키 암호화 방식으로 주고받음
- Client Hello (Client → Server)
TLS 1.3
SNI 란?
SNI 차단이 뭐야? TLS 1.3은 해결책이 될 수 있을까.
인증서 체인
154. [Security] SSL과 인증서 구조 이해하기 : CA (Certificate Authority) 를 중심으로
'CS > 네트워크' 카테고리의 다른 글
HTTP 버전 (0) | 2023.10.22 |
---|---|
쿠키와 세션 (0) | 2021.12.26 |
HTTP의 Stateless (0) | 2021.12.26 |
네트워크의 구성요소 (0) | 2021.07.19 |
컴퓨터 네트워크 첫 걸음 (0) | 2021.07.19 |