HTTP의 문제점
- HTTP이란? 클라이언트와 서버가 정보를 교환할 때 사용하는 프로토콜
- HTTP는 평문(암호화 하지 않은) 통신이기 때문에 도청이 가능하다.
- 통신 상대를 확인하지 않기 때문에 위장 가능
- 정보의 정확성(완전성)을 증명할 수 없기 때문에 변조 가능
- 위 세 가지 문제점은 다른 암호화하지 않은 프로토콜에도 공통되는 문제점
1. TCP/IP 는 도청 가능한 네트워크이다.
- TCP/IP 구조 통신은 전부 통신 경로 상에서 엿볼 수 있으며, 패킷을 수집하는 것 만으로 도청 가능
보완 방법
- 통신 자체를 암호화
SSL (Secure Socket Layer) 또는 TLS(Transport Layer Security) 프로토콜을 조합
- SSL을 조합한 HTTP를
HTTPS(HTTP Secure) 또는 HTTP over SSL 이라고 부른다.
- 콘텐츠를 암호화
- HTTP를 사용해서 운반하는 내용인, HTTP Message에 포함되는 콘텐츠만 암호화
- 암호화해서 전송하면 받은 측에서는 그 암호를 해독하여 출력하는 처리 필요
2. 통신 상대를 확인하지 않기 때문에 위장이 가능
- HTTP에 의한 통신에는 상대가 누구인지 확인하는 처리는 없기 때문에 누구든지 요청을 보낼 수 있으며, IP주소나 Port 등에서 그 웹 서버에 액세스 제한이 없는 경우 요청이 오면 누구든지 응답을 받을 수 있다.
- 요청을 보낸 웹 서버가 원래 의도한 응답을 보내야 하는 웹 서버인지 확인 불가
- 응답을 받는 클라이언트가 원래 의도한 요청을 보낸 클라이언트인지 확인 불가
- 통신하고 있는 상대가 접근이 허가된 상대 인지를 확인 불가
- 어디에서 누가 요청했는지 확인 불가
- 의미 없는 요청도 수신함 → Dos 공격 방지 불가
보완 방법
SSL (Secure Socket Layer) 은 상대를 확인하는 수단으로 증명서를 제공
- 증명서는 신뢰할 수 있는 제 3자 기관에 의해 발행되는 것이기 때문에 서버나 클라이언트가 실재하는 사실을 증명
- 클라이언트는 이 증명서로 본인 확인을 하고 웹 사이트 인증에서도 이용 가능
3. 데이터의 정확성을 증명할 수 없기 때문에 변조가 가능