HTTP와 HTTPS

갱두·2021년 10월 12일
0

📚 네트워크

목록 보기
2/15

HTTP

HTTP의 문제점

  • 평문 통신이기 때문에 도청이 가능하다
  • 통신 상대를 확인하지 않기 때문에 위장이 가능하다
  • 완전성을 증명할 수 없기 때문에 변조가 가능하다.

1. 도청이 가능하다?!

TCP/IP는 도청이 가능하다.

TCP/IP 구조의 통신은 전부 통신 경로 상에서 엿볼 수 있고, 패킷을 수집하는 것만으로 도청할 수 있다.
평문으로 통신할 경우 메세지의 의미를 파악할 수 있기 때문에 암호화하여 통신해야 함

보안 방법

  1. 통신 자체를 암호화 SSL(Secure Socket Layer) or TLS(Transport Layer Security)라는 다른 프로토콜을 조합함으로써 HTTP의 통신 내용을 암호화할 수 있다. 즉, SSL + HTTP = HTTPS

✅ HTTPS와 SSL은 다름

✔️ SSL과 TLS는 보안 계층이라는 독립적인 프로토콜 계층을 만들어, 응용 계층과 전송 계층 사이에 속하게 됨.
✔️ HTTPS는 SSL 또는 TLS 위에 HTTP 프로토콜을 얹어 보안된 HTTP 통신을 하는 프로토콜

즉, SSL과 TLS는 HTTP뿐 아니라 FTP, SMTP와 같은 다른 프로토콜에도 적용할 수 있고, HTTPS는 TLS와 HTTP가 조합된 프로토콜만을 가리킴.
SSL과 TLS는 같은 의미의 단어임. TLS가 SSL의 후속 버전이지만, SSL이 일반적으로 더 많이 사용되는 언어임.

  1. 콘텐츠를 암호화한다. 말 그대로 HTTP를 사용해서 운반하는 내용인 HTTP 메시지에 포함되는 컨텐츠만 암호화하는 것이다. 암호화해서 전송하면 받는 측에서 해독해야 함

2. 위장이 가능하다?!

HTTP에 의한 통신에는 상대가 누구인지 확인하는 처리가 없기 때문에 누구든지 리퀘스트를 보낼 수 있음. IP 주소나 포트 등에서 그 웹 서버에 액세스 제한이 없는 경우 리퀘스트가 오면 상대가 누구든지 어떤 리스폰스를 반환함.
이러한 특징은 여러 문제점을 유발함

  • 리퀘스트를 보낸 곳의 웹 서버가 원래 의도한 리스폰스를 보내야 하는 웹 서버인지를 확인할 수 없다.
  • 리스폰스를 반환한 곳의 클라이언트가 원래 의도한 리퀘스트를 보낸 클라이언트인지를 확인할 수 없다.
  • 통신하고 있는 상대가 접근이 허가된 상대인지를 확인할 수 없다.
  • 어디에서 누가 리퀘스트 했는지 확인할 수 없다.
  • 의미없는 리퀘스트도 수신한다. -> Dos 공격 방지 ❌

보완 방법

SSL로 상대를 확인할 수 있음
SSL은 상대를 확인하는 수단으로 증명서를 제공하는데, 증명서는 신뢰할 수 있는 제 3자인 기관에 의해 발행되는 것이기 때문에 서버나 클라이언트가 실재한다는 것을 증명할 수 있음.
이 증명서를 이용함으로써 통신 상대가 내가 통신하고자 하는 서버임을 나타내고 이용자는 개인 정보 누설 등의 위험성이 줄어들게 된다. 그리고 이 증명서로 본인 확인이랑 웹 사이트 인증에도 사용 가능

3. 변조가 가능하다?!

✅ 완전성 : 정보의 정확성
즉, 서버 또는 클라이언트에서 수신한 내용이 송신측에서 보낸 내용과 일치한다라는 것을 보장할 수 없는 것임. 리퀘스트나 리스폰스가 발신된 후에 상대가 수신하는 사이에 누군가에 의해 변조되더라도 이 사실을 알 수 없음
🔒 Man-in-the-middle : 공격자가 도중에 리퀘스트나 리스폰스를 빼앗아 변조하는 공격

보완 방법

MD5, SHA-1 등의 해시 값을 확인하는 방법, 디지털 서명을 확인하는 방법
근데 확실하게 방지하려면 HTTPS !

HTTPS

HTTP에 암호화와 인증 그리고 완전성 보호까지 더한 것

✔️ HTTP는 원래 TCP와 직접 통신했지만, HTTPS에서 HTTP는 SSL과 통신하고 SSL이 TCP와 통신하게 됨

✔️ HTTPS의 SSL에서는 공통키 암호화 방식과 공개키 암호화 방식을 혼합한 하이브리드 암호 시스템을 사용함. 공통키를 공개키 암호화 방식으로 교환한 다음에 다음부터의 통신은 공통키 암호를 사용

그렇다면 모든 웹 페이지에서 HTTPS를 사용해도 될까? 🤷🏻‍♀️

평문 통신에 비해 암호화 통신은 리소스를 더 많이 요구하지만, 최근에는 하드웨어의 발달로 인해 속도 저하 ❌, 오히려 더 빨라짐
현재 모든 웹 페이지에서 HTTPS를 적용하는 방향으로 바뀌어가는 중

출처 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=skinfosec2000&logNo=222135874222
https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Network

profile
👩🏻‍💻🔥

0개의 댓글