| 작성자 | 김성민 |
|---|---|
| 작성 일자 | 2024년 7월 26일 |
SSL(Secure Sockets Layer)은 암호화 기반 인터넷 보안 프로토콜이다. 인터넷 통신의 개인정보 보호, 인증, 데이터 무결성을 보장하기 위해 Netscape가 1995년 처음으로 개발했다. SSL은 현재 사용 중인 TLS 암호화의 전신이다.
쉽게 풀어서, 고객 웹 브라우저(Client)와 웹 서버 간의 개인정보, 데이터를 안전하게 주고 받기 위해 암호화 하여 통신하는 프로토콜이다.
SSL/TLS를 사용하는 웹사이트의 URL에는 “HTTP” 대신 “HTTPS”가 있다. HTTP 뒤에 붙는 S가 Secure을 나타낸다.
다음이 포함된다.
- 인증서가 발급된 대상 도메인 이름
- 발급받은 사람, 조직, 장치
- 발급한 인증 기관
- 인증 기관의 디지털 서명
- 관련 하위 도메인
- 인증서 발급 날짜
- 인증서 만료 날짜
- 공개 키(개인 키는 비밀로 유지됨)
SSL에 사용되는 공개 키와 개인 키는 기본적으로 데이터를 암호화하고 서명하는 데 사용되는 긴 문자열이다. 공개 키로 암호화된 데이터는 개인 키로만 해독할 수 있다.
Untitled
예전엔 SSL 핸드셰이크라고 불리고 SSL이라는 이름이 아직도 사용되지만, 이제는 TSL 핸드셰이크라고 불린다.
TSL HandShake는 TLS 암호화를 사용하는 통신 세션을 실행하는 프로세스다.

TLS 핸드셰이크는 클라이언트와 서버가 교환하는 일련의 데이터그램, 즉 메시지입니다. TLS 핸드셰이크는 여러 단계로 이루어집니다. 그 과정에서 클라이언트와 서버는 핸드셰이크를 완료하고 추가 대화를 가능하게 하는 데 필요한 정보를 교환합니다.
TLS 핸드셰이크의 정확한 단계는 사용되는 키 교환 알고리즘의 종류와 양측에서 지원하는 암호 모음에 따라 달라집니다. RSA 키 교환 알고리즘은 지금은 안전하지 않은 것으로 간주되지만, 1.3 이전 버전의 TLS에서 사용되었습니다. 이 알고리즘은 대략 다음과 같이 진행됩니다.
- ‘클라이언트 헬로’ 메시지: 클라이언트가 서버로 “헬로” 메시지를 전송하면서 핸드셰이크를 개시합니다. 이 메시지에는 클라이언트가 지원하는 TLS 버전, 지원되는 암호 제품군, 그리고 “클라이언트 무작위”라고 하는 무작위 바이트 문자열이 포함됩니다.
- ‘서버 헬로’ 메시지: 클라이언트 헬로 메시지에 대한 응답으로 서버가 서버의 SSL 인증서, 서버에서 선택한 암호 제품군, 그리고 서버에서 생성한 또 다른 무작위 바이트 문자열인 “서버 무작위”를 포함하는 메시지를 전송합니다.
- 인증: 클라이언트가 서버의 SSL 인증서를 인증서 발행 기관을 통해 검증합니다. 이를 통해 서버가 인증서에 명시된 서버인지, 그리고 클라이언트가 상호작용 중인 서버가 실제 해당 도메인의 소유자인지를 확인합니다.
- 예비 마스터 암호: 클라이언트가 “예비 마스터 암호”라고 하는 무작위 바이트 문자열을 하나 더 전송합니다. 예비 마스터 암호는 공개 키로 암호화되어 있으며, 서버가 개인 키로만 해독할 수 있습니다. (클라이언트는 서버의 SSL 인증서를 통해 공개 키를 받습니다.)
- 개인 키 사용: 서버가 예비 마스터 암호를 해독합니다.
- 세션 키 생성: 클라이언트와 서버가 모두 클라이언트 무작위, 서버 무작위, 예비 마스터 암호를 이용해 세션 키를 생성합니다. 모두 같은 결과가 나와야 합니다.
- 클라이언트 준비 완료: 클라이언트가 세션 키로 암호화된 “완료” 메시지를 전송합니다.
- 서버 준비 완료: 서버가 세션 키로 암호화된 “완료” 메시지를 전송합니다.
- 안전한 대칭 암호화 성공: 핸드셰이크가 완료되고, 세션 키를 이용해 통신이 계속 진행됩니다.