세션 키란? 세션 키와 TLS 핸드셰이크

TLS(이전에는 "SSL"이라고 불렀음) 프로토콜은 비대칭/공개 키 및 대칭 암호화를 모두 사용하며, 각 통신 세션마다 대칭 암호화를 위한 새로운 키를 생성해야 합니다. 이러한 키를 "세션 키"라고 합니다.

학습 목표

이 글을 읽은 후에 다음을 할 수 있습니다:

  • 세션의 정의, 키의 정의, 새 세션 키를 만들어야 하는 시기 알아보기
  • 비대칭 암호화와 대칭 암호화의 차이점 이해하기
  • SSL/TLS 암호화 프로토콜에서 두 종류의 암호화를 모두 사용하는 방법 알아보기

관련 콘텐츠


계속 알아보시겠어요?

인터넷에서 가장 인기 있는 인사이트를 한 달에 한 번 정리하는 Cloudflare의 월간 요약본 theNET를 구독하세요!

Cloudflare가 개인 데이터를 수집하고 처리하는 방법은 Cloudflare의 개인정보 취급방침을 참조하세요.

글 링크 복사

세션 키란?

세션 키는 하나의 통신 세션만 암호화하는 데 사용되는 대칭형 암호화 키입니다.다시 말하자면, 세션 키는 두 당사자 간에 전송된 데이터를 암호화하고 해독하는 데 한 번만 사용되는 임시 키이며, 이후 두 당사자 간의 대화는 다른 세션 키로 암호화됩니다.세션 키는 로그인할 때마다 재설정하는 비밀번호와 같습니다.

TLS(과거에는 "SSL"이라고 불렀음)에서 두 통신 당사자(클라이언트와 서버)는 통신 세션이 시작될 때 TLS 핸드셰이크 중에 세션 키를 생성합니다.공식 TLS용 RFC에서는 실제로 이 키를 "세션 키" 라고 부르지 않지만, 기능적으로는 정확히 세션 키입니다.

세션이란?

한 세션은 기본적으로 두 당사자 간의 한 번의 대화입니다. 세션은 네트워크를 통해 이루어지며, 두 장치에서 서로를 인식하고 가상 연결을 하면 시작됩니다. 두 장치에서 서로 필요한 정보를 얻은 후 두 사람이 서로 문자를 주고받는 것처럼 "close_notify" 메시지를 보내면 연결이 종료되고, "나중에 다시 얘기하자"고 말하며 대화가 종료됩니다. 두 사람이 문자를 주고받다가 서로 응답하지 않는 경우와 같이 비활성 상태로 인해 연결이 시간 초과될 수도 있습니다.

세션 키 - 각각 새 키가 있는 세 개의 세션

세션은 정해진 기간일 수도 있고, 두 당사자가 소통하는 동안 지속되는 기간일 수도 있습니다. 전자의 경우 일정 시간이 지나면 세션이 만료되며, TLS 암호화의 경우 두 장치가 정보를 교환하고 연결을 다시 열기 위해 새 세션 키를 생성해야 합니다.

암호화 키란?

암호화에서는 암호화 알고리즘의 특수 입력을 (일반적으로 짧은 데이터 조각)라고 이야기하는 것이 일반적입니다. 가장 일반적인 키는 데이터 암호화에 사용되는 키이지만, 다른 유형의 키도 다양한 용도로 존재합니다.

데이터 암호화 알고리즘에서는 (비밀) 키를 사용하여 메시지를 암호 텍스트, 즉 변환되어 읽을 수 없는 버전의 메시지로 변환합니다. 암호 해독 키를 사용하여 암호 텍스트에서 원본 메시지를 복구할 수 있습니다.

대칭 암호화 알고리즘에서는 암호화 키와 해독 키가 모두 동일합니다. 따라서 비밀 키를 가지고 있으면 누구나 데이터를 암호화하고 해독할 수 있으며, 이것이 대칭 키라는 용어가 자주 사용되는 이유입니다.

이와는 반대로, 공개 키 암호화라고도 하는 비대칭 암호화 알고리즘에서는 두 개의 키가 존재합니다. 하나는 공개 키로, 데이터를 암호화하는 데만 사용할 수 있고, 다른 하나는 비공개로 유지되며 암호 텍스트를 해독하는 데만 사용됩니다.

HTTPS에서는 대칭형, 비대칭형 중 어떤 암호화를 사용할까요?

HTTPS에서는 HTTP와 TLS 프로토콜을 결합하여 두 가지 유형의 암호화를 모두 사용합니다.TLS를 통한 모든 통신은 TLS 핸드셰이크로 시작됩니다.비대칭 암호화는 TLS 핸드셰이크가 작동하도록 하는 데 아주 중요합니다.

TLS 핸드셰이크가 진행되는 동안 두 통신 장치에서는 세션 키가 설정되고, 이 키는 나머지 세션 동안 대칭 암호화에 사용됩니다(세션 중에 장치에서 키를 업데이트하도록 선택하지 않는 한). 일반적으로 두 통신 장치는 클라이언트 또는 노트북이나 스마트폰과 같은 사용자 장치와 서버로, 이 서버는 웹 사이트를 호스팅하는 모든 웹 서버일 수 있습니다. (자세한 내용은 클라이언트-서버 모델이란?을 참조하세요)

TLS 핸드셰이크에서는 클라이언트와 서버도 다음을 수행합니다.

  • 사용할 암호화 알고리즘을 협상합니다(비대칭 암호화를 통해 협상을 안전하게 수행)
  • 서버의 TLS 인증서에 대해 서버의 신원을 인증합니다(비대칭 암호화를 사용하여)

TLS 핸드셰이크의 '마스터 암호'란? 마스터 암호는 세션 키와 어떤 관련이 있을까요?

마스터 암호는 클라이언트가 전송한 임의의 데이터 문자열, 서버가 전송한 임의의 데이터, "예비 마스터 암호"라는 또 다른 데이터 문자열을 알고리즘을 통해 결합한 결과입니다. 클라이언트와 서버는 각각 이 세 가지 메시지를 가지고 있으므로 마스터 암호에 대해 동일한 결과에 도달해야 합니다.

그런 다음 클라이언트와 서버는 마스터 암호를 사용하여 해당 세션에서만 사용할 여러 세션 키를 계산합니다. 클라이언트와 서버는 동일한 세션 키를 사용해야 합니다.

TLS 작동 방식에 대해 자세히 알아보기: TLS 핸드셰이크에서는 어떤 일이 발생할까요?