TLS(Transport Layer Security)
- 인터넷에서 정보를 암호화해 송수시하는 프로토콜
- 암호화, 인증, 무결성 등 담당함
- 암호화 : 3자로부터 전송되는 데이터를 숨김
- 인증 : 정보를 교환하는 당사자가 요청된 당사자임을 보증
- 무결성 : 데이터가 위조 및 변조되지 않았는지 확인
TLS VS SSL
- TLS는 Netscape가 개발한 SSL 이라 불리는 이전의 암호화 프로토콜에서 발전한 것
HTTPS 와의 차이점
HTTPS는 HTTP 프로토콜 상위에서 TLS 암호화를 구현한 것
모든 웹사이트 및 다른 웹 서비스에 사용됨
-> HTTPS 를 사용하는 웹 사이트는 TLS 암호화를 이용하는 것
TLS Handshake
- TLS를 사용하는 통신 세션을 시작하는 프로세스
- TLS 핸드셰이크 중 통신하는 두 측은 메시지를 교환하여 서로 승인,
확인 및 사용할 암호화 알고리즘을 설정, 세셴 키에 동의함
(HTTPS 작동 방식의 기본 부분)
발생하는 시기
- 사용자가 HTTPS를 통해 웹 사이트로 이동하고,
브라우저가 먼저 웹 사이트의 원본 서버를 쿼리하기 시작할 때마다 발생
(API 호출, HTTPS 쿼리를 통한 DNS 등 다른 통신에서 HTTPS 사용할때마다 발생)
핸드셰이크 과정에서의 클라이언트와 서버
- 사용할 TLS 버전 지정
- 사용할 암호 그룹 결정
- 서버의 공개 키와 SSL 인증 기관의 디지털 서명을 통해 서버의 ID 인증
- 핸드셰이크가 완료된 후 대칭 암호화를 사용하기 위해 세션 키 생성
단계
- 클라이언트 -> 서버 메시지 전송
(메시지 전송(TLS 버전, 지원되는 암호화 알고리즘 및 임의의 바이트 문자열)과 함께 핸드 셰이크 시작) - 서버 -> 클라이언트 메시지 전송
(SSL 인증서, 서버에서 선택한 암호 그룹 및 서버에서 생성된 또 다른 임의의 바이트 문자열 전송) - 인증
(클라이언트가 서버의 SSL 인증서를 인증 발행 기관에 검증) - 예비 마스터 암호
(클라이언트는 임의의 바이트 문자열을 공개 키로 암호화된 premater secret 키 서버로 전송) - 개인 키 사용
(서버가 remater secret 키를 개인 키로 복호화함) - 세션 키 생성
(클라이언트 와 서버는 클라이언트가 생성한 임의의 키, 서버가 생성한 임의의 키, premater secret 키로
세션 생성, 이 때 양쪽은 같은 키가 생성돼야 함) - 클라이언트 완료 전송
(세션 키로 암호화된 완료 메시지 전송) - 서버 완료 전송
(서버도 세션 키로 암호화된 완료 메시지 전송) - 핸드 셰이크 완료
(핸디 셰이크 종료 및 세션 키를 통해 통신을 진행)
'CS' 카테고리의 다른 글
ep 04. Blocking/Non-blocking (0) | 2022.11.28 |
---|---|
로드 밸런싱 (0) | 2022.11.20 |
HTTP GET vs. POST (0) | 2022.11.13 |
ep 02-2. HTTP vs. HTTPS (0) | 2022.11.13 |
ep 02-1. 대칭키와 공개키 (0) | 2022.11.13 |