본문 바로가기
CS/네트워크

[네트워크] HTTP vs HTTPS

by 루시킴 2021. 8. 30.

HTTP (HyperText Transfer Protocol) 

인터넷 상에서 클라이언트와 서버가 자원을 주고 받을 때 쓰는 통신 규약으로 비연결성 프로토콜이다. REQUEST에 대한 RESPONSE만 전달이 되고 연결을 유지하지 않는다. 

이러한 비연결성을 해결하기 위해 Cookie에 클라이언트에 대한 정보를 저장해뒀다가 사용하거나 Session을 등록해서 유지하는 방식으로 많이쓴다.

 

HTTP 문제점

텍스트 교환으로 누군가 네트워크에서 신호를 가로채면 내용이 노출되는 보안 이슈가 존재한다.

 

HTTPS (HyperText Transfer Protocol) 

HTTP + SSL 방식으로 HTTP로 통신하는 소켓을 SSL로 대체한 것이다. HTTP는 TCP와 직접 통신하지만, HTTPS에서는 SSL or TLS과 통신하고, SSL이 TCP와 통신한다.SSL 프로토콜을 통해 데이터 전송을 암호화하여 HTTP의 보안문제를 해결한다.

 

암호화 원리

  • 대칭키 : 암복호화에 사용되는 키가 동일한 암호화 방식으로 비대칭키보다 빠른속도로 암복호화하는 하는 장점이 있지만 다른 사람들에게 내가 정한 비밀키가 무엇인지 알려줘야하는 키교환 문제가있고 알려주다보면 키가 노출되어 보안문제가 생길수도 있다. 
  • 공개키(비대칭키) : 대칭키의 키교환 문제를 해결하기 위한 방법으로 암복호화에 사용되는 키가 다르다. 이름 그대로 키가 공개되어 있어 키교환이 필요없으며 개인키를 가진 사용자만 해당 키를 복호화하여 볼 수 있다. 

SSL (Secure Socket Layer) = TLS

443포트를 사용하는 보안 프로토콜공개키/개인키 대칭키 기반으로 사용한다. 공개키로 암호화하고 공개키와 매칭되는 개인키로만 복화할 수 있다. 따라서 공개키는 누구든지 알아도 상관없고 개인키는 복호화해야 하는 대상만 알 수 있도록 잘 보관해야 한다.

 

공개키/개인키는 계산하는데 복잡하고 시간복잡도가 높으므로 보통 모든 전송을 공개키/개인키 암호화기법을 이용하여 전송하는것이 아니라, 전송할것들은 대칭키를 이용하여 암호화하고, 대칭키만을 공개키/개인키로 암호화하여 전송한다.

 

이런 과정을 통해 암호화한다해도 대상 사이트가 만약에 가짜사이트 또는 대상이 해커라면 사용자의 정보가 노출될수 있다. 이 때문에 SSL 인증서라는것이 있다.

 

SSL 인증서는 신뢰할수 있는 제3자 인증기관에서 발급받을 수 있으며 이 인증서에는 인증서의 해당 사이트의 공개키와 사이트의 정보들이 있다. 인증서가 전송될떄는 인증기관의 제공하는 개인키로 암호화하여 전송된다.

 

References

https://donghwi-kim.github.io/jekyll/update/2015/02/21/SSL.html

https://medium.com/@icehongssii/%EA%B9%9C%EC%B0%8D%ED%95%9C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EB%93%A4%EC%9D%84-%EC%9C%84%ED%95%9C-%EA%B0%84%EB%8B%A8%ED%95%9C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%83%81%EC%8B%9D-4-https-%EC%99%80-ssl-%EA%B2%89%ED%95%A5%EA%B8%B0-78ff41071720

'CS > 네트워크' 카테고리의 다른 글

[네트워크] DNS란?  (0) 2021.08.31
[네트워크] REST API란?  (0) 2021.08.31
[네트워크] HTTP 메서드  (0) 2021.08.30
[네트워크] TCP vs UDP  (0) 2021.08.30
[네트워크] OSI 7계층 및 TCP/IP 프로토콜  (2) 2021.08.30

댓글