본문 바로가기
CS

TLS/SSL HandShake

by L_SU 2022. 11. 20.

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 인증

- 핸드셰이크가 완료된 후 대칭 암호화를 사용하기 위해 세션 키 생성

 

단계

  1. 클라이언트 -> 서버 메시지 전송
    (메시지 전송(TLS 버전, 지원되는 암호화 알고리즘 및 임의의 바이트 문자열)과 함께 핸드 셰이크 시작)
  2. 서버 -> 클라이언트 메시지 전송
    (SSL 인증서, 서버에서 선택한 암호 그룹 및 서버에서 생성된 또 다른 임의의 바이트 문자열 전송)
  3. 인증
    (클라이언트가 서버의 SSL 인증서를 인증 발행 기관에 검증)
  4. 예비 마스터 암호
    (클라이언트는 임의의 바이트 문자열을 공개 키로 암호화된 premater secret 키 서버로 전송)
  5. 개인 키 사용
    (서버가 remater secret 키를 개인 키로 복호화함)
  6. 세션 키 생성
    (클라이언트 와 서버는 클라이언트가 생성한 임의의 키, 서버가 생성한 임의의 키, premater secret 키로
    세션 생성, 이 때 양쪽은 같은 키가 생성돼야 함)
  7. 클라이언트 완료 전송
    (세션 키로 암호화된 완료 메시지 전송)
  8. 서버 완료 전송
    (서버도 세션 키로 암호화된 완료 메시지 전송)
  9. 핸드 셰이크 완료
    (핸디 셰이크 종료 및 세션 키를 통해 통신을 진행)

 

 

'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