← 질문 목록
#261깊이 0
TLS 핸드셰이크의 핵심 목적은 무엇인가?
서버가 진짜인지 확인하고 양쪽이 같은 대칭키를 갖는 것이다. 클라이언트 쪽 신원 확인은 기본이 아니다.
- 1. 클라이언트에서 서버로: Client Hello. 지원 버전과 암호화 방식 제안
- 2. 서버에서 클라이언트로: Server Hello. 암호화 방식 선택 및 인증서 전달
- 3. 클라이언트에서 서버로: 인증서를 검증하고 자기 몫의 키 재료를 보낸다
- 4. 서버에서 클라이언트로: 같은 값을 만들었는지 맞춰 보고 끝낸다
믿을 만한 기관(CA)이 서명한 인증서를 확인해 중간자를 막는다. 공개키는 데이터를 잠그는 데 쓰는 것이 아니다. 서버가 그 인증서의 주인이 맞다는 것을 서명으로 보이는 데 쓴다.
최종적으로 생성된 세션 키는 대칭키 암호화 방식을 사용한다. 비대칭키 연산은 비싸므로 실제 데이터는 연산 비용이 낮은 대칭키로 암호화한다.
TLS 1.3은 이 과정을 1-RTT로 줄였다. 쓸 방식을 미리 좁혀 두고 첫 왕복에 키 재료까지 함께 보내는 덕이다. 한 번 붙었던 서버에는 0-RTT로 더 줄일 수도 있다.