본문 바로가기
CS(Computer Science)/네트워크

[네트워크] HTTPS 통신방법: 대칭키와 비대칭키

by whdgus928 2023. 5. 20.

HTTPS는 HTTP에 보안 기능을 추가해 어떤 웹사이트에 보내는 정보를 다른 누군가 훔쳐보지 못한다는 점에서 안전하다. 이것을 가능하게 하는 기술에는 대칭키와 비대칭키 방식이 있다.

 

대칭키 방식은 메시지를 보내는 쪽과 메시지를 받는 쪽이 메시지를 암호화하고, 이를 다시 메시지로 바꾸는 즉 복호화하는 같은 방식으로 공유한다. 둘다 동일한 키를 가지고 암호화 복호화를 하는 것이다

 

여기서 한 가지 문제가 발생한다

 

대칭키는 중간에 누가 정보를 가르채도 못 알아보게 하는게 목적인데 한 번은 키를 전송해야한다. 이 때 중간에서 키를 가로 챌 수 있는것이다. 그러면 대칭키가 말짱 도루묵이 된다

 

그래서 사용하는게 비대칭키 방식이다

 

공개키라고도 하는 이 방식은 a,b의 키를 가지고 a키로 암호화하면 b키로만 복호화 할 수 있다. 1개의 개인키와 1개의 공개키로 구성된다. 비대칭키 방식은 컴퓨터에 부담이 많이 가서 대칭키와 혼합해서 사용한다

 

통신방법

1. A는 B의 공개키로 암호화 통신에 사용할 대칭키를 암호화해서 B에게 보낸다.

2. B는 암호문을 받고 자신의 비밀키로 복호화한다.

3. B는 A로부터 얻은 대칭키로 A에게 보낼 평문을 암호화하여 A에게 보낸다.

4. A는 자신의 대칭키로 암호문을 복호화한다.

5. 앞으로 해당 대칭키로 계속 통신한다.

 

HTTP 실제 구현 과정

네이버의 공개키가 정품인지 확인해야한다. 이걸 인증해주는 기업을 CA라고 부른다. 

 

클라이언트가 서버를 신뢰하지 못할 때 탐색하는 과정

1. 클라이언트에서 랜덤 데이터를 생성해 서버에 전송한다

2. 답변으로 서버에서도 랜덤 데이터를 생성해 해당 서버의 인증서와 함께 전송한다

3. 이 과정을 handshake라고 하고 대칭키를 만드는 과정이다

4. 클라이언트는 브라우저에 내장된 CA를 통해 인증서가 진짜인지 확인한다

5. CA 인증 받은 인증서들을 해당 CA의 개인키로 암호화돼있다. 이게 진짜라면 브라우저에 저장된 ca공개키로 복호화 할 수있다

반응형

댓글