[CKS] 1-5. TLS Basic

인증서를 통해 서버 신원 확인과 데이터 암호화로 정보 유출 및 사이트 위변조를 방지하여 신뢰를 구축합니다.

[CKS] 1-5. TLS Basic
Photo by Lewis Keegan / Unsplash

개요

TLS 인증서가 무엇인지, 필요한 이유, 어떻게 구성하는지와 관련한 기본을 살펴봅니다.

인증서란?

인증서는 기본적으로 두 당사자간의 신뢰를 보장하는데 사용합니다.

사용자가 웹서버 요청을 보낼 때 TLS 인증서는 사용자 - 서버 간의 통신을 암호화하고 서버가 실제로 자신이 주장하는 서버임을 보장합니다.

이를 수행하기 위한 암호화 방법이 필요합니다.

대칭키

서버와 클라이언트간 같은 암호화 키를 사용합니다.

데이터 암호화를 수행하더라도 키가 네트워크를 통해 이동한다면 결국 유출되어 복호화를 수행할 수 있기 때문에 사용하지 않습니다.

비대칭키

앞선 대칭키 문제를 방지하기 위해 private key와 public key라는 이름의 키 쌍을 사용합니다.

  • 클라이언트는 서버가 보낸 퍼블릭 키를 확인합니다. (프라이빗 키는 서버만 가짐)
  • 확인되었다면 클라이언트는 해당 퍼블릭키를 통해 자신의 대칭키를 암호화하여 서버에게 전달합니다.
    • 혹은 인증 후, 클라이언트와 서버는 안전한 방식으로 정보를 교환하여 동일한 세션 키(대칭 키)를 각자 생성합니다.
    • 세션 키 자체는 네트워크로 전송되지 않습니다.
  • 생성 및 전송된 키를 사용하여 이후 모든 데이터를 암호화하여 통신합니다.
Notion Image

하지만 과정 중 서버는 키 뿐만 아니라 키가 포함된 인증서를 같이 전달합니다. 인증서는 사이트의 위변조를 방지하는 방법 중 하나로 신뢰할 수 있는 인증 기관에서 클라이언트(예: 웹 브라우저)가 접속하려는 서버가 위조되거나 사칭된 가짜 서버가 아니라, 본인이 소유한 도메인 즉 신뢰할 수 있는 올바른 서버임을 증명하기 위해 수행됩니다.

즉 도메인의 실제 소유자를 확인하기 위한 기술이라고 이해할 수 있으며 이를 위해 인증서 내부에는 인증 기관의 전자 서명이 포함됩니다.

Notion Image

따라서 클라이언트 브라우저에는 CA 인증을 위한 Public key가 내장되어있으며, 해당 인증이 완료된다면 대칭키를 퍼블릭키로 암호화 생성하여 전달합니다. 이후 서버와 암호화 통신을 진행하는 프로세스로 구성됩니다.