본문 바로가기
Web/backend

HTTP vs HTTPS

by yongmin.Lee 2020. 11. 7.

HTTP,  HyperText Tranfer Protocol

- HTTP는 웹브라우저(Client)와 서버(Server)간의 웹페이지(html)같은 자원을 주고 받을 때 쓰는 통신 규약
- 클라이언트인 웹브라우저가 서버에 HTTP를 통해 웹페이지나 이미지 정보를 요청하면 서버는 이 요청에 응답하여 요구하는 정보를 제공한다.

HTTPS, HyperText Tranfer Protocol Secure

- HTTPS는 SSL 프로토콜 위에서 돌아가는 프로토콜

- HTTP에 보안기능을 적용하여 내가 어떤 웹사이트에 보내는 정보를 제 3자로부터 정보보호하고, 기관으로부터 인증 받은 사이트만 https 주소를 사용가능하므로 내가 접속하려는 웹사이트가 신뢰할 수 있는 사이트인지 알수 있다

SSL, Secure Socket Layer

- 네트워크 계층에서 '보안계층' 이라는 독립적인 프로토콜 계층을 만들어 application layer와 transport layer사이에 위치한다.

- 정보를 암호화, 복호화하기 위해 대칭키와 비대칭키를 이용한다.

- 대칭키 : 암호화할 때와 복호화할 때 쓰이는 키. 클라이언트와 서버가 동일한 키 (=대칭키) 를 가지고 있어야 한다. 동일한 키를 양쪽 다 가지려면 어느 한쪽에서 다른 한 쪽으로 키를 전달해야하는데 이 과정에서 키가 노출되는 위험이 존재한다. 이 문제를 해결하기위해 쓰이는 방식이 비대칭키이다.

- 비대칭키 : 암호화, 복호화 시 서로다른 두개의 키 A,B (개인키, 공개키)가 필요한 방법. A키로 암호화한 정보는 B키로만 복호화할 수 있고 B키로 암호화한 정보는 A키로만 복호화 할 수 있다. 서버는 개인키(A)를 가지고 클라이언트들에게 공개키(B)를 제공한다. 클라이언트는 서버에게 보내는 정보를 공개키로 암호화하여 보내도 제3자가 공개키로는 복호화할 수 없기 때문에 개인정보 보안성을 보장할 수 있다. 또한 어떤 서버로부터 받은 공개키가 신뢰할 수 있는 기관으로부터 인증 받은 공개키이면 해당 서버가 신뢰할 수 있는 사이트인 것을 알 수 있다.

- 매번 데이터를 비대칭키로 암호화 복호화하여 주고 받는 것은 고비용작업이므로, 서버와 비대칭키로 handshaking한 이후에는 handshaking에서 사용된 데이터를 공개키로 만들어서 서버와 클라이언트만 가지고 있는 공개키를 가지고 암호화 복호화하여 http message를 주고 받는다

'Web > backend' 카테고리의 다른 글

Node.js event-driven  (0) 2020.11.08
쿠키, 세션, 캐시  (0) 2020.11.07
MVC 패턴  (0) 2020.10.30
express (2) : 요청과 응답, 쿠키와 세션, REST API와 라우팅  (0) 2020.10.24
express (1) : 웹서버 생성, 미들웨어, 라우팅  (0) 2020.10.24