ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [HTTP] HTTP의 약점과 HTTPS
    HTTP 2021. 7. 27. 20:48

    HTTP의 약점

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

     

    1. 평문이기 때문에 도청 가능

    HTTP를 사용한 리퀘스트, 리스폰스 통신은 HTTP 자신을 암호화하는 기능은 없기 때문에 통신 전체가 암호화 되지는 않는다. 즉, 평문으로

    HTTP메시지를 보내게 된다.

     

    TCP/IP는 도청이 가능한 네트워크

    TCP/IP의 구조의 통신 내용은 전부 통신 경로 도중에 엿볼 수 있다. 그렇기 때문에 악의를 가진 누군가가 악용할 수 있다. 암호화된 통신에서도 암호화된 메시지 자체는 엿볼 수 있다.

     

    도청을 피하는 법

    • 통신 암호화 : HTTP에는 암호화 구조는 없지만 SSL이나 TLS라는 다른 프로토콜과 조합 함으로써 HTTP의 통신 내용을 암호화 할 수 있다.
    • 콘텐츠 암호화 :  통신하고 있는 콘텐츠의 내용 자체를 암호화해 버리는 방법이다. HTTP의 메시지에 포함되는 콘텐츠만 암호화 한다.

     

    2. 통신 상대를 확인하지 않기 때문에 위장 가능

    HTTP를 사용한 리퀘스트, 리스폰스는 통신 상대를 확인하지 않는다. 리퀘스트를 보낸 서버가 URI에서 지정된 호스트인지 아닌지, 리스폰스를 반환한 클라이언트가 리퀘스트를 출력한 클라이언트인지 아닌지 알 수 없다.

     

    누구나 리퀘스트가 가능

    HTTP에 의한 통신은 상대가 누구인지 확인하는 처리가 없다. 따라서 누구든지 리퀘스트를 보낼 수 있다. 또한 해당 리퀘스트에 대하여 서버는 어떤 리스폰스던지 무엇인가의 리스폰스는 반환한다.

     

    이로 인한 약점

    • 리퀘스트를 보낸 곳의 웹 서버가 의도한 리스폰스를 보내야 하는 웹 서버인지 확인할 수 없다.
    • 리스폰스를 반환한 곳의 클라이언트가 의도한 리퀘스트를 보낸 클라이언트인지 확인할 수 없다.
    • 통신하고 있는 상대가 접근이 허가된 상태인지 아닌지를 확인할 수 없다.
    • 어디의 누가 리퀘스트 한 것인지 확인할 수 없다.
    • 의미없는 리퀘스트라도 수신하게 된다. (DoS 공격이 가능한 이유)

     

    상대를 증명하는 증명서

    HTTP에서는 통신 상대가 누구인지 확인할 수 없지만 SSL로 상대를 확인할 수 있다. SSL은 상대를 확인하는 수단으로 증명서를 제공하고 있는데, 증명서는 신뢰할 수 있는 제3자 기관에 의해 발행되기 때문에 서버 또는 클라이언트가 실재하는 사실임을 증명할 수 있다.

     

    3. 완전성을 증명할 수 없기 때문에 변조 가능

    완전성이란 정보의 정확성을 가리킨다.

     

    수신한 내용이 다를 수 있다.

    HTTP가 완전성을 증명할 수 없으면 리퀘스트나 리스폰스가 발신된 후에 그 사이에 변조가 일어나도 알 수 없다는 뜻이다.

     

    HTTP + 암호화 + 인증 + 완전성 보호 = HTTPS

    HTTPS는 HTTP 통신을 하는 소켓 부분을 SSL이나 TSL이라는 프로토콜로 대체하는 것이다. 보통 HTTP는 직접 TCP와 통신하지만 SSL을 사용하는 경우에는 HTTP는 SSL과 통신하고 SSL이 TCP와 통신하게 된다. 즉, SSL이라는 껍데기를 덮어 쓴 HTTP가 HTTPS이다.

     

    항상 HTTPS를 사용하지는 않는 이유?

    이유 중 하나는 평문 통신에 비해 암호화 통신은 리소스를 많이 필요로 하기 때문이다. 또한 HTTPS를 사용하기 위해서는 증명서가 필요한데, 이를 사용하기 위해서는 많은 비용이 필요하다.

     

     

    참고자료

    • 우에노 센, 「그림으로 배우는 HTTP & Network Basic」, 영진닷컴 (2015)

    댓글