Recent Posts
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
관리 메뉴

개발자 박가나

[241128 TIL] 본캠프 42일차 (HTTP와 HTTPS) 본문

내일배움캠프

[241128 TIL] 본캠프 42일차 (HTTP와 HTTPS)

gnchoco97 2024. 11. 28. 20:22

HTTP (Hyper Text Transfer Protocol)

서버/클라이언트 모델에서 데이터를 주고받기 위한 프로토콜이다.

 

데이터를 암호화되지 않은 텍스트 형태로 주고 받기 때문에 중간에서 누군가 데이터를 탈취해서 악용할 위험성이 있다.

 

동일한 아이디와 비밀번호를 여러 개의 사이트에서 사용을 하는 경우가 많은데, 이 중 HTTP 방식으로 통신을 하는 사이트가 있다면 개인 정보 유출로 인한 피해를 입을 수 있을 것이다.

 

 

HTTPS (HTTP + Secure)

이름 그대로 HTTP에 암호화가 추가된 프로토콜이다.

 

한 쪽에서 데이터를 암호화해서 보내고, 다른 한 쪽에서 해당 데이터를 복호화해서 사용한다.

 

 

대칭키

클라이언트와 서버가 동일한 키를 가지고 암호화 및 복호화를 진행한다.

 

특정 키로 암호화된 데이터는 해당 키와 동일한 키로만 복호화가 가능한 원리이다.

 

하지만 클라이언트와 서버 양 쪽이 동일한 키를 가지기 위해서는 한 쪽에서 다른 한 쪽으로 키를 전송하는 최소 1번의 과정이 필요한데, 이 때 누군가 키 값을 탈취할 가능성이 존재한다.

 

 

비대칭키 (공개키)

클라이언트와 서버가 서로 다른 키를 가지고 암호화 및 복호화를 진행한다.

 

A 키로 암호화된 데이터는 B 키로만 복호화가 가능하고, 반대로 B 키로 암호화된 데이터는 A 키로만 복호화가 가능한 원리이다.

 

서버는 외부에 공개되지 않은 개인키를 가지고 있고 나머지 키를 공개키로서 외부에 공개하게 되는데, 누군가가 클라이언트와 동일한 공개키를 가지고 있다고 하더라도 클라이언트 측에서 전송한 정보는 서버가 가지고 있는 개인키로만 복호화가 가능하기 때문에 보안적으로 안전하다.

 

 

HTTPS의 동작 과정

공개키 검증

인증 기관인 CA가 서버에서 제공하는 공개키가 신뢰할 수 있는 키인지 확인한다.

 

클라이언트-서버 간의 Handshake

클라이언트가 랜덤 데이터를 생성해서 서버로 전송하고 서버도 그에 대한 응답으로 랜덤 데이터를 생성해서 클라이언트로 전송을 하게 되는데, 이 과정에서 서버는 개인키로 암호화된 인증서를 함께 보낸다.

 

인증서 검증

클라이언트는 공개키를 이용해서 해당 인증서를 검증하게 되고, 인증이 완료되면 Handshake 과정에서 주고받은 랜덤 데이터를 혼합해서 임시 키를 생성한다.

 

대칭키 생성

클라이언트는 임시 키를 공개키로 암호화해서 서버로 전송하고, 서버는 전달받은 임시 키를 개인키로 복호화한다. 이러한 과정을 거쳐서 최종적으로 클라이언트와 서버는 외부에 공개되지 않은 대칭키를 가지게 되고 이후 발생하는 통신에서는 대칭키 방식을 사용한다.