TLS 핸드셰이크 프로토콜
TLS( 전송 계층 보안 ) 핸드셰이크 프로토콜은 보안 세션을 설정하거나 다시 시작하는 데 필요한 인증 및 키 교환을 담당합니다. 보안 세션을 설정할 때 핸드셰이크 프로토콜은 다음을 관리합니다.
- 암호화 도구 모음 협상
- 서버 및 필요에 따라 클라이언트의 인증
- 세션 키 정보 교환.
암호 그룹 협상
클라이언트와 서버가 연결하고 메시지 교환 전체에서 사용할 암호 그룹을 선택합니다.
인증
TLS에서 서버는 클라이언트에 대한 ID를 증명합니다. 클라이언트는 서버에 대한 ID를 증명해야 할 수도 있습니다. 퍼블릭/프라이빗 키 쌍을 사용하는 PKI는 이 인증의 기초입니다. 인증에 사용되는 정확한 방법은 협상된 암호 그룹에 의해 결정됩니다.
키 교환
클라이언트와 서버는 난수와 마스터 전 비밀이라는 특수 번호를 교환합니다. 이러한 숫자는 클라이언트와 서버가 마스터 비밀이라는 공유 비밀을 만들 수 있도록 허용하는 추가 데이터와 결합됩니다. 마스터 암호는 클라이언트와 서버에서 해시에 사용되는 세션 키인 쓰기 MAC 비밀과 암호화에 사용되는 세션 키 인 쓰기 키를 생성하는 데 사용됩니다.
TLS를 사용하여 보안 세션 설정
TLS 핸드셰이크 프로토콜에는 다음 단계가 포함됩니다.
- 클라이언트는 클라이언트의 임의 값 및 지원되는 암호 도구 모음과 함께 "클라이언트 hello" 메시지를 서버에 보냅니다.
- 서버는 서버의 임의 값과 함께 클라이언트에 "Server hello" 메시지를 전송하여 응답합니다.
- 서버는 인증을 위해 해당 인증서를 클라이언트에 보내고 클라이언트에서 인증서를 요청할 수 있습니다. 서버에서 "Server hello done" 메시지를 보냅니다.
- 서버가 클라이언트에서 인증서를 요청한 경우 클라이언트는 인증서를 보냅니다.
- 클라이언트는 임의의 마스터 전 비밀을 만들고 서버 인증서의 공개 키 로 암호화하여 암호화된 마스터 전 비밀을 서버로 보냅니다.
- 서버는 마스터 전 비밀을 받습니다. 서버와 클라이언트는 각각 마스터 이전 비밀을 기반으로 마스터 비밀 및 세션 키를 생성합니다.
- 클라이언트는 "암호 사양 변경" 알림을 서버에 보내 클라이언트가 메시지를 해시하고 암호화하기 위해 새 세션 키를 사용하기 시작함을 나타냅니다. 클라이언트는 "클라이언트 완료" 메시지도 보냅니다.
- 서버는 "암호 사양 변경"을 수신하고 세션 키를 사용하여 레코드 계층 보안 상태를 대칭 암호화로 전환합니다. 서버는 클라이언트에 "서버 완료" 메시지를 보냅니다.
- 이제 클라이언트와 서버는 설정한 보안 채널을 통해 애플리케이션 데이터를 교환할 수 있습니다. 클라이언트에서 서버로, 서버에서 클라이언트로 전송되는 모든 메시지는 세션 키를 사용하여 암호화됩니다.
TLS를 사용하여 보안 세션 다시 시작
클라이언트는 다시 시작할 세션의 세션 ID를 사용하여 "클라이언트 hello" 메시지를 보냅니다.
서버는 해당 세션 캐시에서 일치하는 세션 ID를 확인합니다. 일치 항목이 발견되고 서버가 세션을 다시 시작할 수 있는 경우 세션 ID가 포함된 "서버 hello" 메시지를 보냅니다.
참고
세션 ID 일치를 찾을 수 없는 경우 서버는 새 세션 ID를 생성하고 TLS 클라이언트와 서버는 전체 핸드셰이크를 수행합니다.
클라이언트와 서버는 "암호 사양 변경" 메시지를 교환하고 "클라이언트 완료" 및 "서버 완료" 메시지를 보내야 합니다.
이제 클라이언트와 서버가 보안 채널을 통해 애플리케이션 데이터 교환을 다시 시작할 수 있습니다.