Search

HTTPS란

Status
UPLOADING
Date
2024/01/03
Tags
Network

개요

오늘은 HTTPS에 대해 알아보도록 하겠습니다.

1. HTTP란

우선 HTTP에 대해 알아봅시다.
HTTP는 인터넷상의 커뮤니케이션에 사용되는 형식 중 하나입니다.
이를 이해할 때는 택배 송장을 생각하는 것이 편합니다. 즉, 웹 사이트에 요청하는 정보들을 하나의 정해진 형식으로 서버에 전송하는 것입니다.
서버에 요청을 보낼 때 마다 명시적으로 http:// ... 를 붙여줌으로써 서버는 해당 메세지가 HTTP 메세지 형식인 것을 인지하고, HTTP 형식으로 받아드린 다음 응답을 보냅니다.
클라이언트는 서버가 보낸 HTTP 형식의 정보를 응답받고 원하는 정보를 얻을 수 있습니다.
그렇다면 HTTPS는…
HTTP에서 Secure을 더한 것이죠. 어떤 면에서 Secure 즉, 안전하다고 하는 걸까요?

1-1. 사용자가 웹 사이트에 보내는 정보를 다른 누군가가 훔쳐볼 수 없다

예를 들어, 네이버에 아이디, 비밀번호를 입력해서 로그인 한다고 가정해봅시다.. 해당 정보는 인터넷을 타고 네이버 서버로 전송됩니다.
만약 HTTP 로 이 정보를 보내게 되면 누군가가 알아볼 수 있는 정보로 보내집니다. 즉, 아이디와 비밀번호가 유출되는 것입니다.
하지만 HTTPS로 보내게 되면 다른 사람이 봐도 알 수 없도록 변환되어 보내집니다.

1-2. 접속한 웹 사이트가 신뢰할 수 있는 사이트인지 확인한다

에를 들어, 똑같이 UI를 구상한 피싱 웹 사이트에 접속했다고 가정해봅시다. 해당 사이트에서 아이디와 비밀번호를 입력하게 되면 정보가 유출되는 것이나 마찬가지입니다.
HTTPS는 이러한 수상한 사이트를 거를 수 있게 해줍니다. 기관으로 부터 검증된 사이트만 주소에 HTTPS 사용이 허가되기 때문입니다.

2. HTTPS 구현 원리

2-1. 대칭 키

다른 사람이 봐도 알 수 없도록 암호화된 메세지를 보내야 하지만 서버는 그 내용을 이해할 수 있어야 됩니다. 즉, 클라이언트와 서버 두 명은 서로의 메세지를 이해할 수 있도록 하는 것이 대칭 키와 비대칭 키입니다.
그 동안은 대칭 키 방식이 많이 사용되어 왔습니다. 암호화, 복호화 방식이 동일한 것이죠.
대칭 키는 표만 노출되지 않는다면 서로 암호화 복호화가 가능합니다. 대칭 키는 이름에서 알 수 있듯, 클라이언트와 서버 모두 동일한 키를 가지고 있는 것입니다.
어떻게 동일한 키를 공유하는가? 적어도 한 번은 키를 전송해 주어야 하는데, 이 과정에서 해커가 악의적으로 키를 탈취할 수 있습니다. 그리고 이것이 대칭 키의 한계입니다.

2-2. 비대칭 키

우선 대칭 키와 다르게 서로 다르기 때문에 비대칭 키라고 불립니다. A키와 B키가 있다고 가정했을 때, A 키로 암호화된 메세지는 B 키로만 해독할 수 있고, B 키로 암호화된 메세지는 A 키로만 해독할 수 있습니다.
이 때, 비대칭 키는 공개 키와 개인 키로 나눠 집니다. 예를 들어, 네이버 서버가 개인 키를 가지고 있고 클라이언트가 공개 키로 암호화 하여 메세지를 보내면 이는 오로지 서버가 가지고 있는 개인 키로만 해독이 가능합니다.
또한, 네이버 서버의 개인 키로 암호화된 메세지만 공개 키로 풀 수 있기 때문에 피싱 사이트에서 보내는 메세지를 거를 수 있습니다.
따라서 네이버의 공개 키임을 인증만 해준다면 안전하게 네이버를 이용할 수 있을 것입니다.

3. 공개 키를 어떻게 판별하는가

안전한 공개 키임을 인증해주는 공인된 민간 기업들이 존재합니다. 이를 Certificate Authoritiy, 줄여서 CA라고 불립니다.
대부분의 브라우저는 CA들의 목록이 내장되어 있습니다.
그러면 브라우저에서 네이버로 접속할 때 어떤 과정을 거치는지 살펴보겠습니다.
1.
클라이언트는 랜덤한 데이터를 서버에게 보냅니다
2.
서버 또한 생성한 랜덤 데이터, 그리고 해당 서버의 인증서를 실어 보냅니다
3.
클라이언트는 인증서가 진짜인지 브라우저에 내장된 CA들의 정보를 통해 확인합니다
a.
이 때, 비대칭 키를 사용합니다
b.
CA의 인증을 받은 인증서들은 CA의 개인키로 암호화 되어 있습니다.
c.
따라서 인증서가 진짜라면 브라우저에 저장된 CA의 공개 키로 복호화 할 수 있습니다
4.
복호화된 인증서에는 서버의 공개 키가 포함되어 있습니다.
a.
하지만 공개 키로 암호화 해서 개인 키로 주고 받지는 않습니다.
b.
혼합되어 사용됩니다.
c.
비대칭 키 방식으로 암호화/복호화 하는 것은 대칭 키로 하는 것 보다 훨씬 더 많은 자원을 소비합니다
5.
데이터를 대칭 키로 암호화 합니다.
a.
대칭 키를 공유할 때 비 대칭 키를 사용합니다
b.
클라이언트는 악수할 때 생성 됐던 클라이언트와 서버의 두 무작위 데이터를 혼합하여 임시 키를 만듭니다.
c.
임시 키는 서버의 공개 키로 암호화 되어서 서버로 보내진 다음 일련의 대칭 키로 만들어집니다.
6.
해당 대칭 키는 서버와 클라이언트 둘만 가지고 있으니 더욱 안전해집니다.