TLS handshake가 일어나는 과정

Suntory·2022년 5월 10일
0
post-thumbnail

업로드중..

웹에서 https 연결을 지원하기 위해서는 http 연결에 필요한 TCP 연결 외에 TLS handshake라는 과정이 추가로 필요합니다. TLS란 무엇이고 handshake는 어떻게 일어나는지 간단히 알아보겠습니다.

TLS란?

TLS는 Transport Layer Security로 TCP handshake(3-way handshake)가 일어나고 난 뒤, TLS handshake를 통해 연결됩니다.

TLS는 인터넷 상의 커뮤니케이션을 위한 개인 정보와 데이터 보안을 용이하게 하기 위해 설계된 보안 프로토콜입니다. 주요 사례는 웹 사이트를 로드하는 웹 브라우저와 같이 웹 응용 프로그램과 서버 간의 커뮤니케이션을 암호화하는 것입니다.

TLS는 SSL(Secure Socket Layer)라고 불리는 이전의 암호화 프로토콜에서 발전한 것입니다.

HTTPS는 HTTP 프로토콜 상위에서 TLS 암호화를 구현한 것으로 모든 웹 사이트와 다른 웹 서비스에서 사용됩니다.

TLS는 무엇을 합니까?

TLS 프로토콜은 암호화, 인증, 무결성이라는 세 가지 주요 요소를 달성합니다.

  • 암호화: 제 3자로부터 전송되는 데이터를 숨긴다.
  • 인증: 정보를 교환하는 당사자가 요청된 당사자임을 보장한다.
  • 무결성: 데이터가 위조되거나 변조되지 않았는지 확인한다.

TLS는 어떻게 작동합니까?

웹 사이트나 응용 프로그램이 TLS를 사용하려면, 원본 서버에 TLS 인증서가 설치되어 있어야 한다.

인증 기관이 도메인을 소유한 사람 혹은 비즈니스에 TLS 인증서를 발행한다.

인증서는 서버의 공개 키와 더불어 누가 도메인 소유자인지에 대한 중요한 정보를 포함한다.

이 두가지는 모두 서버의 신원을 확인하는 데 중요합니다.

그리고 TLS는 TLS handshake로 알려진 일련의 순서를 통해 초기화된다.

  • 사용할 TLS 버전을 지정한다.
  • 사용할 암호 제품군을 결정한다.
  • 서버의 TLS 인증서를 사용하여 서버의 신원을 인증한다.
  • handshake가 완료된 후 키 간의 메시지를 암호화하기 위한 세션 키를 생성한다.

TLS 핸드셰이크가 이루어지는 단계는 어떻게 될까요?

TLS 핸드셰이크의 정확한 단계는 사용되는 키 교환 알고리즘의 유형과 커뮤니케이션 양측에서 모두 지원하는 암호 제품군의 유형에 따라 달라진다. 대부분 RSA 키 교환 알고리즘이 사용된다.

  1. Client Hello: 클라이언트가 서버로 Hello 메시지를 전송하면서 핸드셰이크를 개시합니다. 이 메시지에는 클라이언트가 지원하는 TLS 버전, 지원되는 암호 제품군, 그리고 클라이언트 무작위라고 하는 무작위 바이트 문자열이 포함된다.
  2. Server Hello: Client Hello 메시지에 대한 응답으로 서버가 서버의 TLS(SSL) 인증서, 서버에서 선택한 암호 제품군, 그리고 서버에서 생성한 또 다른 무작위 바이트 문자열인 서버 무작위를 포함하는 메시지를 전송한다.
  3. 인증: 클라이언트가 서버의 SSL 인증서를 인증서 발행 기관을 통해 검증합니다. 이를 통해 서버가 인증서에 명시된 서버가 맞는지 확인합니다.
  4. 예비 마스터 암호: 클라이언트가 예비 마스터 암호라고 하는 무작위 바이트 문자열을 하나 더 전송합니다. 예비 마스터 암호는 공개 키로 암호화되어 있으며, 서버가 개인 키로만 해독할 수 있습니다.
  5. 개인 키 사용: 서버가 예비 마스터 암호를 해독합니다.
  6. 세션 키 생성: 클라이언트과 서버 모두 클라이언트 무작위, 서버 무작위, 예비 마스터 암호를 이용해 세션 키를 생성합니다. 모두 같은 결과가 나와야 합니다.
  7. 클라이언트 준비 완료: 클라이언트가 세션 키로 암호화된 완료메시지를 전송합니다.
  8. 서버 준비 완료: 서버가 세션 키로 암호화된 완료메시지를 전송합니다.
  9. 안전한 대칭 암호화 성공: 핸드셰이크가 완료되고, 세션 키를 이용해 통신이 계속 진행됩니다.

모든 TLS handshake는 비대칭 암호화(공개 키와 개인 키)를 사용하지만, 세션 키를 생성하는 과정에서 모두가 개인 키를 사용하는 것은 아닙니다. (임시 Diffie-Hellman 핸드셰이크의 경우처럼)


내용 출처

TLS 핸드셰이크의 원리는 무엇일까요?

profile
천천히, 하지만 꾸준히 그리고 열심히

0개의 댓글