HTTPS는 어떻게 사이트 신뢰성을 보장하는가

Jake·2022년 4월 11일
0
post-thumbnail

1. HTTPS(HyperText Transfer Protocol Secure)란?

HTTP 통신에 SSL(Secure Socket Layer)을 추가하여 서버와 브라우저 사이의 통신을 암호화하는 프로토콜입니다

사진 출처 : https://youngkyonyou.github.io/interview/2021/12/21/Interview-Dangeun-02.html


2. HTTPS를 구성하는 기술

1_ 대칭키:


사진 출처 : LG CNS 블로그

  • 대칭키는 송신자와 수신자가 같은 키로 암호화/복호화를 하는 방식입니다.

장점:

  • 대칭키는 후에 서술할 비대칭키 방식에 비해 짧습니다.
  • 대칭키는 비대칭키 방식에 비해 암호화/복호화 속도가 빠릅니다.

단점:

  • 대칭키 사용하기 위해서는 송신자와 수신자가 대칭키를 공유해야 합니다. 즉, 한 쪽에서 다른 쪽으로 대칭키를 전송하는 것이 불가피합니다.
  • 이 과정에서 대칭키는 탈취의 위험이 높아지게 됩니다.
  • 다대일 통신의 경우, 송신자에 비례하는 수 만큼의 대칭키를 운영해야 합니다.

2_ 비대칭키:


사진 출처 : LG CNS 블로그

  • 대칭키의 단점을 극복하고자 고안된 것이 바로 비대칭키입니다.
  • 공개키로 암호화된 자료는 비밀키로만 복호화 할 수 있으며 반대의 경우도 마찬가지입니다.
  • 공개키와 비밀키는 사실 한 쌍의 키입니다. 공개키도 비밀키가 될 수 있고, 비밀키도 공개키가 될 수 있습니다.
    공개키와 비밀키를 구분하는 기준은 말 그대로 공개를 하느냐, 하지 않느냐의 차이입니다.

장점:

  • 공개키는 공유되지만, 비밀키는 공유되지 않기 때문에 대칭키에 비해 안전합니다.
  • 다대일 방식의 통신에 용이합니다. (공개키 사용자 다수)

단점:

  • 키가 길고, 암호화/복호화 속도가 대칭키에 비해 느립니다.

3_ CA (Certificate Authority)


사진 출처 : 한국일보

  • 위와 같이 위조 사이트를 통해 사용자의 아이디와 비밀번호를 탈취하고자 하는 해커들이 존재합니다.
  • 따라서 신뢰가능한 공개키와 그렇지 않은 공개키를 판별해 낼 수 있는 방법의 필요성이 생겨났습니다.
  • 이를 위해 등장한 것이 CA입니다.

브라우저가 신뢰할 수 있는 사이트를 판별하는 방법

  • 브라우저는 공인 기관에서 발급한 CA에 대한 정보를 내장하고 있습니다
  • 서버로부터 CA(비밀키로 암호화된)와 공개키를 수신하면, 브라우저는 암호화된 CA를 공개키로 복호화하고 내장된 CA에서 이를 찾습니다.
  • 내장된 CA 중에 매치를 찾을 수 있다면, 이 CA는 신뢰할 수 있는 CA입니다

4_ 다시 대칭키

  • 비대칭키는 다량의 데이터를 암호화/복호화하기에 적합하지 않습니다.
  • 따라서 HTTPS는 대칭키와 비대칭키를 혼합하여 사용합니다.

3. 전체 과정


출처 : 브라우저에 URL 입력 후 일어나는 일들

클라이언트와 서버의 Handshake
(3) : 서버의 CA가 확인
(4) : 신뢰할 수 있는 CA임이 판별되면 클라이언트는 난수 바이트를 공개키로 암호화하여 서버에 전송
(5) : 필요한 경우 클라이언트 인증서도 함께 보냅니다
(6) : 서버가 클라이언트 인증서를 확인합니다. 수신한 난수 바이트를 개인키로 복호화해 대칭 마스터키를 생성합니다
(7) : 클라이언트가 완료 메세지를 보내면서 동시에 지금까지의 교환 내역을 해시한 값을 대칭키로 암호화하여 담습니다.
(8) : 서버에서 이것이 자신이 해시한 내용과 일치하는지 확인합니다. 확인이 완료되면 완료 메세지를 보냅니다.
(9) : 이제부터 클라이언트와 서버가 대칭키로 암호화된 HTTP 통신을 시작합니다

profile
Java/Spring Back-End Developer

0개의 댓글