7.1 HTTP 의 약점

지금까지 HTTP 의 좋은 점이나 편리한 점만을 다루어 왔지만, HTTP 에는 좋은 점만 있는 것은 아니다. HTTP 에도 약점이 있다.

이 약점은 HTTP 만이 아닌, 다른 암호화하지 않은 프로토콜에도 공통되는 문제이다. 또, 특정 웹 서버나 특정 웹 클라이언트의 구현상의 약점(취약성 또는 시큐리티 홀이라고 함), Java나 PHP 등으로 구축한 웹 어플리케이션 취약성 등이 있다.

7.1.1 평문이기 때문에 도청 가능

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

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

왜 암호화되어 있지 않은 통신이 위험한가 하면, TCP/IP 의 구조 통신 내용은 전부 통신 경로의 도중에 엿볼 수 있기 때문 이다. 인터넷은 전 세계를 경유하는 네트워크로 되어 있다. 어느 서버와 클라이언트가 통신을 할 때, 통신 경로 상에 있는 네트워크 기기나 케이블이나 컴퓨터 등을 전부 자기 자신이 소유하고 있는 일은 없다. 그래서 악의를 가진 누군가가 엿볼 수도 있다.

통신 내용을 엿볼 수 있다는 것은, 암호화된 통신에서도 암호화되지 않은 통신에서도 모두 같다. 암호화 통신은 메시지 속의 의미를 간파할 수 없을 수도 있지만 암호화된 메시지 자체는 엿볼 수 있다.

같은 세그먼트의 통신을 도청하는 것은 어려운 일이 아니다. 네트워크 상에 흐르고 있는 패킷을 수집하는 것만으로도 도청할 수 있게 된다. 패킷을 수집하려면 패킷을 해석하는 패킷 캡처나 스니퍼라는 툴을 사용한다.

암호화로 도청을 피하다

도청으로부터 정보를 지키기 위한 방법이 몇 가지 연구되고 있다. 그 중에서 가장 보급되어 있는 기술은 암호화 이다. 암호화에는 몇 가지의 대상이 있다.

1) 통신 암호화

통신을 암호화하는 방법이다. HTTP 에는 암호화 구조는 없지만 SSL(Secure Socket Layer) 이나 TLS(Transport Layer Security) 라는 다른 프로토콜을 조합함으로써 HTTP 의 통신 내용을 암호화할 수 있다.

SSL 등을 이용해 안전한 통신로를 확립하고 나서 그 통신로를 사용해 HTTP 통신을 한다. SSL 을 조합한 HTTP 를 HTTPS(HTTP Secure) 나 HTTP over SSL 이라 부른다.

2) 콘텐츠 암호화

통신하고 있는 콘텐츠의 내용 자체를 암호화 해버리는 방법이다. HTTP 에 암호화하는 기능은 없기 때문에 HTTP 메시지에 포함되는 콘텐츠만 암호화 한다.

이 경우, 클라이언트에서 HTTP 메시지를 암호화해서 출력하는 처리가 필요하다. 물론, 콘텐츠의 암호화를 유효하게 하기 위해서는 클라이언트와 서버가 콘텐츠의 암호화나 복호화 구조를 가지고 있는 것이 전제가 되므로, 평상시에 유저가 사용하는 브라우저와 웹 서버에서는 이용하는 것이 어렵다. 주로 웹 서비스 등에서 이용한다.