[F-Lab 멘토링 학습]

HTTPS 암호화 작동원리-2

everydeveloper 2023. 11. 11. 16:09

HTTPS 암호화 작동원리

HTTPS는 웹 통신을 보호하기 위해 사용되는 프로토콜로, HTTP에 Secure Socket Layer(SSL) 또는 Transport Layer Security(TLS) 암호화 프로토콜을 추가한 것입니다. 간단하게 설명드리면, HTTPS는 데이터를 안전하게 주고받을 수 있게 하는 방식입니다. 여기서 '안전하게'라는 것은 데이터가 제3자에게 읽히거나 수정되는 것을 막는 것을 말합니다.

작동 원리를 쉽게 설명하자면 다음과 같습니다:

  1. 암호화: 데이터를 암호화하여, 타인이 데이터를 가로채더라도 그 내용을 이해할 수 없도록 만듭니다.
  2. 인증: 클라이언트가 서버에 접속할 때, 해당 서버가 신뢰할 수 있는 서버임을 증명하는 과정입니다. 이를 위해 서버는 SSL/TLS 인증서를 제공합니다.
  3. 데이터 무결성: 데이터가 전송 중에 변경되지 않았음을 보증합니다.

자세한 과정은 다음과 같습니다:

  1. 클라이언트(예: 웹 브라우저)가 서버에 연결을 요청합니다.
  2. 서버는 인증서와 함께 공개 키를 클라이언트에 전송합니다.
  3. 클라이언트는 인증서가 신뢰할 수 있는 기관에 의해 발급되었는지 확인합니다.
  4. 클라이언트는 서버와 공유할 대칭 키를 생성하고, 서버의 공개 키로 암호화하여 서버에 전송합니다.
  5. 서버는 자신의 비밀 키로 대칭 키를 복호화합니다.
  6. 이제 클라이언트와 서버는 이 대칭 키를 사용하여 통신 중인 데이터를 암호화하고 복호화합니다.

이 과정을 통해 데이터는 안전하게 암호화되어 전송되고, 클라이언트와 서버만이 그 내용을 알 수 있습니다. 이러한 방식으로 HTTPS는 데이터의 안전성을 확보합니다.

클라가 서버와 공유할 대칭키를 생성한다고 했는데 그 원리는??

대칭 키 생성과 공유의 원리를 이해하기 위해, 먼저 대칭 키 암호화와 비대칭 키 암호화의 개념을 알아야 합니다.

대칭 키 암호화에서는 같은 키를 데이터를 암호화하고 복호화하는 데 사용합니다. 반면에 비대칭 키 암호화는 두 개의 키, 즉 공개 키와 개인(비밀) 키를 사용합니다. 공개 키는 누구에게나 공개될 수 있지만, 개인 키는 오직 소유자만이 가지고 있습니다.

HTTPS에서 대칭 키를 생성하고 공유하는 과정은 다음과 같습니다:

  1. 클라이언트는 랜덤하게 대칭 키(이를 세션 키라고도 함)를 생성합니다.
  2. 클라이언트는 서버의 공개 키를 사용하여 이 대칭 키를 암호화합니다. 공개 키는 서버의 인증서에 포함되어 있고, 인증서는 신뢰할 수 있는 인증 기관(Certificate Authority, CA)에 의해 발급됩니다.
  3. 암호화된 대칭 키는 서버에 안전하게 전송됩니다.
  4. 서버는 자신의 개인 키를 사용하여 받은 대칭 키를 복호화합니다.

이 과정을 통해 대칭 키는 안전하게 클라이언트와 서버 사이에 공유됩니다. 그리고 나서, 이 대칭 키는 세션 동안 데이터를 암호화하고 복호화하는 데 사용됩니다. 대칭 키 암호화는 비대칭 키 암호화보다 훨씬 계산이 빠르기 때문에, 실제 데이터 전송에 있어서는 대칭 키 암호화가 선호됩니다.

클라는 받은 인증서의 서버의 키로 세션 키를 만들고 그걸 서버로 보내고 서버는 보낸 인증서의 키와 대칭되는 키로 받은 세션 키를 복호화 해서 복호화가 되면 그 브라우저랑 통신을 인가해주는 거지??내가 아는 것이 맞나??

네, 맞습니다. 클라이언트가 서버로부터 받은 인증서 안에 있는 서버의 공개 키로 세션 키(대칭 키)를 암호화해서 서버에 전송하면, 서버는 그것을 자신의 개인 키로 복호화하여 세션 키를 얻습니다. 이렇게 양쪽이 동일한 세션 키를 갖게 되고, 이후 통신은 이 세션 키를 사용하여 암호화하여 진행하게 됩니다.

정리하자면:

  1. 클라이언트는 서버의 공개 키로 세션 키를 암호화합니다.
  2. 서버는 자신의 비공개 키로 세션 키를 복호화합니다.
  3. 세션 키를 사용하여 클라이언트와 서버간의 통신 내용은 대칭 키 암호화 방식으로 암호화되어 보안을 유지합니다.

이 과정은 SSL/TLS 핸드셰이크 과정의 일부이며, 이를 통해 안전한 연결이 이루어집니다.

'[F-Lab 멘토링 학습]' 카테고리의 다른 글

Mutex vs Monitor vs Semaphore  (0) 2023.11.11
TCP와 HTTP의 차이, OSI 7계층  (1) 2023.11.11
Public IP vs Private IP  (0) 2023.11.11
프로세스와 스레드의 차이  (0) 2023.11.11
Call-by-value vs Call-by-reference  (0) 2023.11.11