HTTPS

Bin2·2022년 7월 14일
0
post-custom-banner

HTTPS

HTTPSHyper Text Transfer Protocol Secure Socket layer의 약자이다.
HTTPSHTTP 요청을 SSL 혹은 TLS 라는 알고리즘을 이용해, HTTP 통신을 하는 과정에서 데이터를 암호화하여 전송하는 방법이다. HTTPS 는 다음을 목적으로 사용한다.

암호화

첫번째는 제 3자가 서버와 클라이언트가 주고받는 정보를 탈취할 수 없도록 하는 것이다.
이를 위해 서버와 클라이언트는 서로가 합의한 방법으로 데이터를 암호화하여 주고받는다. 따라서 중간에 제 3자에게 데이터가 탈취되더라도 그 내용을 알아볼 수 없다. HTTP 는 요청 및 응답이 탈취된다면 아래와 같이 전달되는 데이터의 내용을 제 3자가 그대로 확인할 수 있다.

아래의 사진은 데이터를 전송하는 요청을 wireshark 라는 패킷 분석 프로그램을 이용하여 캡처한 사진이다.

하지만 데이터를 암호화하여 전송하는 HTTPS를 사용한다면 비밀번호와 같은 중요한 데이터가 유출될 가능성이 HTTP 보다 현저히 적어진다.

아래의 사진은 위 사진과 동일한 요청을 프로토콜만 HTTPS로 변경했을 때의 데이터를 캡처한 사진이다.

요청이 암호화되어 전송되기 때문에 정확한 키로 복호화하기 전까지는 어떤 내용인지 알 수 없다.

HTTPS에서는 클라이언트와 서버가 데이터를 암호화하여 주고받기 위해 비대칭키 방식과 대칭키 방식을 혼용하여 사용한다. 서버와 클라리언트가 통신할 때, 대칭키 방식은 양쪽이 공통의 비밀 키를 공유하여 데이터를 암호화 및 복호화하는 것, 비대칭키 방식은 각각 공개키와 비밀키를 가지고 상대가 나의 공개키로 암호화한 데이터를 개인이 가진 비밀키로 복호화하는 것을 의미한다.

클라이언트와 서버가 데이터를 주고받을 때는 대칭키를 사용한다. 비대칭키 알고리즘은 대칭키 알고리즘보다 훨씬 복잡하기 때문에 대칭키를 사용하여 데이터를 암호화 및 복호화하는 것이 훨씬 컴퓨터에 부담을 덜 주기 때문이다. 하지만 대칭키를 서로 주고 받는 과정에서부터 정보가 탈취된다면 모든 데이터가 복호화가 가능하게 될 것이다.

그래서 HTTPS는 이러한 대칭키를 주고받을 때는 비대칭키 방식으로 주고 받도록 한다. 비대칭키는 공개키로 암호화한 정보는 개인이 가진 비밀키로만 풀 수 있기 때문에 중간에 대칭키가 탈취되더라도 개인키가 없이는 이를 복호화할 수 없기 때문이다.

인증서

HTTPS의 또다른 특징 중 하나는 브라우저가 서버의 응답과 함께 전달된 인증서를 확인할 수 있다는 점이다.
이러한 인증서는 서버의 신원을 보증하여 우리가 접속한 플랫폼이 해커가 정교하게 따라한 가짜 플랫폼이 아님을 보장해주는 역할을 한다.

이때 이를 보증할 수 있는 제 3자를 Certificate Authority, CA 라고 부른다.
CA는 인증서를 발급해주는 엄격하게 공인된 기관들을 말한다. 이러한 CA들은 서버의 공개키와 정보를
CA의 비밀키로 암호화하여 인증서를 발급한다.

서버가 클라이언트에게 CA에서 발급받은 인증서를 전달하면 클라이언트는 OS 또는 브라우저에 미리 내장되어 있던 CA리스트를 통해 브라우저에서 인증된 CA에서 발급받은 인증서인지 먼저 확인한다. 만약 인증된 CA에서 발급한 인증서가 아니라면 아래와 같이 화면에 경고창을 띄워 서버와 연결이 안전하지 않다는 화면을 보여준다.

그 후 인증서가 확인되었다면 브라우저에 제공된 해당 CA 기관의 공개키로 서버 인증서를 복호화한다.
이렇게 복호화해 얻은 공개키로 클라이언트는 서버를 믿을만한 대상인지 신뢰할 수 있다.

따라서 브라우저는 인증서의 도메인과 데이터를 제공하는 서버의 도메인을 비교할 수 있기 때문에 '중간자 공격'을 감지하여 보안 위협으로부터 사용자 및 사용자의 데이터를 보호할 수 있다. 또한 위와 같은 경고를 직접 보여줌으로써 브라우저들은 인증된 CA가 발급한 인증서를 이용하여 데이터를 제공하는 안전한 서버를 사용자가 사용하도록 유도한다.

profile
Developer
post-custom-banner

0개의 댓글