BackEnd

HTTPS

Hyeonni 2022. 11. 17. 11:35

HTTP에 보안이 추가된 프로토콜이라고 간략하게 알고 있던 HTTPS에 대해서 조금 더 자세히 정리해보려고 한다.

 

HTTPS(Hyper Text Transfer Protocol Secure Socket layer)

HTTP over SSL(TLS), HTTP over Secure라고 불리기도 하는 HTTPS는 HTTP 요청을 SSL이나 TSL이라는 알고리즘을 이용해, HTTP 통신을 하는 과정에서 데이터를 암호화하여 전송하는 방법이다. 암호화를 통해 제 3자가 서버와 클라이언트가 주고받는 데이터를 서로 합의한 방법으로 암호화하여 데이터가 탈취되더라도 내용을 알아볼 수 없도록 한다.

 

HTTPS에서는 클라이언트와 서버가 데이터를 암호화하여 주고받기 위해 대칭키 방식과 비대칭키 방식을 혼용하여 사용한다.

대칭키 방식은 양쪽은 공통의 비밀키를 공유하여 데이터를 암호화, 복호화하는 것이다. 

비대칭키 방식은 각각 공개키와 비밀키를 가지고 상대가 나의 공개키로 암호화한 데이터를 개인이 가진 비밀키로 복호화하는 것이다. 

 

비대칭키 알고리즘이 대칭키 알고리즘보다 훨씬 복잡하기 때문에 클라이언트와 서버가 데이터를 주고받을 때는 대칭키를 사용한다. 하지만 대칭키가 유출이 된다면 모든 데이터가 복호화가 가능해진다는 문제가 있으므로 이때 비대칭키를 사용하여 대칭키를 암호화하여 주고받는다.

 

또한 브라우저가 서버의 응답과 함께 전달된 인증서를 확인할 수 있도록 하여 서버의 신원도 보증해준다. 이러한 인증서를 발급해주어 신원을 보증해주는 공인된 기관을 CA(Certificate Authority)이라고 한다. CA는 서버의 공개키와 정보를 CA의 비밀키로 암호화하여 인증서를 발급한다.

 

출처 : https://tech.ssut.me/https-is-faster-than-http/

 

서버와 클라이언트 간의 인증서 확인 과정은 아래와 같다.

1. 서버가 클라이언트에게 CA에서 발급받은 인증서를 전달하면 클라이언트는 OS나 브라우저에 미리 내장되어 있던 CA리스트를 통해 브라우저에서 인증된 CA에서 발급받은 인증서인지 확인한다.

2. 인증서가 확인되었다면 브라우저에 제공된 해당 CA 기관의 공개키로 서버 인증서를 복호화한다. 


이 과정을 통해 브라우저는 인증서의 도메인과 데이터를 제공하는 서버의 도메인을 비교할 수 있으므로 중간자 공격을 감지하여 보안 위협으로부터 사용자와 사용자 데이터를 보호할 수 있다.

중간자 공격(Man in the middle attack, MITM)이란? 공격자(중간자)가 서버와 클라이언트 두 당사자 사이에 위치해 비밀리에 중계하고 가능하면 데이터를 변경하기도 하는 사이버 공격을 말한다.

 

이렇게 서버와 클라이언트 간의 CA를 통해 서버를 인증하는 과정과 데이터를 암호화하는 과정을 아우른 프로토콜을 SSL 또는 TLS라고 한다. TLS는 SSL이 표준화되며 바뀐 이름이다.

'BackEnd' 카테고리의 다른 글

REST API, URI 설계 규칙, Richardson 성숙도 모델(RMM)  (0) 2022.10.04