network

https란

aeongsseu 2023. 1. 18. 17:27

HTTP는 요청과 응답이 plain text즉 사람이 봐도 이해할 수 있는 글로 이루어져 있습니다. 이에 따라 중간에 누가 요청이나 응답을 가로채갈시 내용이 그냥 노출되어 버립니다.

이에 따라 hyper text transfer protocol secure socker layer라는 것이 나오게 됐다.

HTTPS는 인터넷 상에서 정보를 암호화하는 SSL(=TSL)프로토콜을 이용해 HTTP통신을 하는 통신규약이다.

암호화 방식에는 대칭키와 비대칭키 방식(공개키 방식)이 있는데, 대칭키는 키 하나로만 복호화, 암호화 둘다 할 수 있는거고

비대칭키는 키a로 암호화하면 키b로만 복호화 할 수 있고

키b로 암호화하면 키a로만 복호화 할 수 있는 방식이다.

HTTPS에서는 이 둘을 적절히 섞어 사용한다. 아래 사진은 비대칭키 방식이다.

 

위 사진의 방식에 문제점은 응답은 공개키로 복호화할 수 있으니 보안적으론 별의미가 없다는 것이다. 하지만 해당 응답이 공개키로 복호화될 시 내가 요청을 보낸 서버로부터 온 응답이란것을 알 수 있다.

 

HTTPS 방식에 대해 본격적으로 알아보면 먼저 서버를 개발한 쪽에서 CA(certificate authority)에 돈을 내고 본인들에게 인증서를 발급해달라한다. 

현재 서버(사이트)에 공개키, 개인키가 있고 인증기관또한 인증기관의 공개키와 개인키가 있다.

그럼 서버가 사이트정보와 본인들의 공개키를 주면 인증기관이 해당정보들과 공개키를 본인들 개인키로 암호화하여 서버에게 준다.

그럼 해당 인증서는 인증기관의 공개키로 복호화가 가능할 것이다.

사용자가 사이트 접속시 사이트에게 아무 요청을 보낸다.

그럼 서버는 해당 요청이 암호화 돼있지 않는걸 확인하고 사용자에게 인증서를 보낸다.

그럼 사용자는 인터넷상에 떠도는 서버주소 - 인증기관의 공개키의 집합에서 서버주소를 매핑해 인증서를 인증기관의 공개키로 복호화한다.

위 절차는 해당 서버로부터 온 응답임을 확신할 수 있게 해준다. 인증기관의 개인키로 암호환된것은 인증기관의 공개키로밖에 복호화되지 않으므로

그럼 사용자는 대칭키를 생성해 해당 키를 인증서에 들어있는 서버의 공개키로 암호화에 사이트에 보낸다.

그럼 서버는 개인키로 암호문을 복호화에 대칭키를 얻게 되고, 이후에는 해당 대칭키를 이용해 데이터를 주고 받는다.

그럼 해커는 데이터를 가로채도 대칭키를 모르니 아무런 정보도 얻을 수 없다.

이후 세션이 종료될 시 대칭키를 폐기한다.

 

  • HTTPS를 지원한다고 해서 무조건 안전한 것은 아니다. 신뢰할 수 있는 CA 기업이 아니라 자체적으로 인증서를 발급할 수도 있고, 신뢰할 수 없는 CA 기업을 통해서 인증서를 발급받을 수도 있기 때문이다.
  • 모든 사이트에서 텍스트를 암호화해서 주고 받으면 과부하가 걸려 속도가 느려질 수 있다. 중요한 사이트는 HTTPS로 관리하고, 그렇지 않은 사이트는 HTTP를 사용한다.

'network' 카테고리의 다른 글

http란  (0) 2023.01.18