Http & Https
HTTP & HTTPS
[toc]
1. HTTP 정의
영어 약자, 규약
HyperText Transfer Protocol
인터넷 상에서 + 클라이언트와 서버가 + 자원을 주고 받을 때 + 쓰는 통신 규약
2. HTTP 특징
텍스트 교환, 보안 이슈
HTTP는 텍스트 교환이므로, 누군가 네트워크에서 신호를 가로채면 내용이 노출되는 보안 이슈가 존재한다.
이런 보안 문제를 해결해주는 프로토콜이 'HTTPS'
3. HTTP 문제점
3가지 : 평문 통신 - 도청, 통신 상대 - 위장, 완전성 - 변조
- HTTP 는 평문(aka 암호화되지 않은) 통신이기 때문에 도청이 가능하다.
- 통신 상대를 확인하지 않기 때문에 위장이 가능하다.
- 완전성을 증명할 수 없기 때문에 변조가 가능하다.
위 세 가지는 다른 암호화하지 않은 프로토콜에도 공통되는 문제점들이다.
3-1. TCP/IP 는 도청 가능한 네트워크이다.
설명, 보안 방법 2가지 - 통신 암호화, 콘텐츠 암호화
설명 :
TCP/IP 구조의 통신은 전부 통신 경로 상에서 엿볼 수 있다. 패킷을 수집하는 것만으로 도청할 수 있다. 평문으로 통신을 할 경우 메시지의 의미를 파악할 수 있기 때문에 암호화하여 통신해야 한다.
보안 방법
- 통신. 자체를 암호화
SSL(Secure Socket Layer)
orTLS(Transport Layer Security)
라는 다른 프로토콜을. 조합함으로써 HTTP 의 통신 내용을 암호화할 수 있다. SSL 을 조합한 HTTP 를HTTPS(HTTP Secure)
orHTTP over SSL
이라고 부른다. - 콘텐츠를 암호화 말 그대로 HTTP 를 사용해서 운반하는 내용인, HTTP 메시지에 포함되는 콘텐츠만 암호화하는 것이다. 암호화해서 전송하면 받은 측에서는 그 암호를 해독하여 출력하는 처리가 필요하다.
- 통신. 자체를 암호화
3-2. 통신 상대를 확인하지 않기 때문에 위장이 가능하다.
설명, 문제 발생, 보완 방법
설명 :
HTTP 에 의한 통신에는 상대가 누구인지 확인하는 처리는 없기 때문에 누구든지 리퀘스트를 보낼 수 있다. IP 주소나 포트 등에서 그 웹 서버에 액세스 제한이 없는 경우, 리퀘스트가 오면 상대가 누구든지 무언가의 리스폰스를 반환한다. 이러한 특징은 여러 문제점을 유발한다.
문제 발생
- 리퀘스트를 보낸 곳의 웹 서버가 원래 의도한 리스폰스를 보내야 하는 웹 서버인지를 확인할 수 없다.
- 리스폰스를 반환한 곳의 클라이언트가 원래 의도한 리퀘스트를 보낸 클라이언트인지를 확인할 수 없다.
- 통신하고 있는 상대가 접근이 허가된 상대인지를 확인할 수 없다.
- 어디에서 누가 리퀘스트 했는지 확인할 수 없다.
- 의미없는 리퀘스트도 수신한다. —> DoS 공격을 방지할 수 없다.
보완 방법
위 암호화 방법으로 언급된
SSL
로 상대를 확인할 수 있다. SSL 은 상대를 확인하는 수단으로 증명서 를 제공하고 있다. 증명서는 신뢰할 수 있는 제 3 자 기관에 의해 발행되는 것이기 때문에 서버나 클라이언트가 실재하는 사실을 증명한다. 이 증명서를 이용함으로써 통신 상대가 내가 통신하고자 하는 서버임을 나타내고 이용자는 개인 정보 누설 등의 위험성이 줄어들게 된다. 한 가지 이점을 더 꼽자면 클라이언트는 이 증명서로 본인 확인을 하고 웹 사이트 인증에서도 이용할 수 있다.
3-3. 완전성을 증명할 수 없기 때문에 변조가 가능하다.
설명 - 완전성, 중간자 공격(man in the middle) , 보완 방법 - HTTPS
설명 :
여기서 완전성이란 정보의 정확성 을 의미한다. 서버 또는 클라이언트에서 수신한 내용이 송신측에서 보낸 내용과 일치한다라는 것을 보장할 수 없는 것이다. 리퀘스트나 리스폰스가 발신된 후에 상대가 수신하는 사이에 누군가에 의해 변조되더라도 이 사실을 알 수 없다. 이와 같이 공격자가 도중에 리퀘스트나 리스폰스를 빼앗아 변조하는 공격을 중간자 공격(Man-in-the-Middle)이라고 부른다.
보완 방법
MD5
,SHA-1
등의 해시 값을 확인하는 방법과 파일의 디지털 서명을 확인하는 방법이 존재하지만 확실히 확인할 수 있는 것은 아니다. 확실히 방지하기에는HTTPS
를 사용해야 한다. SSL 에는 인증이나 암호화, 그리고 다이제스트 기능을 제공하고 있다.