|
| 1 | +# HTTP HTTPS |
| 2 | + |
| 3 | +## HTTP(HyperText Transfer Protocol) |
| 4 | +- http는 **서로 다른 시스템 사이에서 통신을 주고 받게 해주는 가장 기초적인 프로토콜**이며 웹 서핑을 할 때 **서버에서 자신의 브라우저로 데이터를 전송해주는 용도**로 가장 많이 사용된다. |
| 5 | +- 인터넷 초기에 모든 웹 사이트에서 기본적으로 사용되었던 프로토콜이기도 하다. |
| 6 | +- http는 애플리 케이션 레벨의 프로토콜로 TCP/IP 위에서 작동한다. |
| 7 | +- Http는 상태를 가지고 있지 않은 stateless 프로토콜이며 method, path, version, Headers, body등으로 구성된다. |
| 8 | + |
| 9 | +> 프로토콜은 규칙이라고 생각하면 된다. |
| 10 | +
|
| 11 | +## HTTP의 문제점 |
| 12 | +- Http는 **평문 통신**이기 때문에 **도청**이 가능하다. |
| 13 | + - 평문이라 함은 암호화 되지 않은 문자를 그대로 보여주는 거라고 생각하면 된다. |
| 14 | + - TCP/IP구조 통신은 전부 통신 경로 상에서 엿볼 수 있다. |
| 15 | + - 패킷을 수집하는 것만으로 도청할 수 있다. |
| 16 | + - 평문으로 통신을 할 경우 메시지의 의미를 파악할 수 있기 때문에 암호화하여 통신해야 한다. |
| 17 | +- **통신 상대를 확인하지 않기** 때문에 위장이 가능히다. |
| 18 | + - HTTP에 의한 통신에는 상대가 누구인지 확인하는 처리가 없기 때문에 누구든지 리퀘스트를 보낼 수 있다. |
| 19 | + - IP주소나 포트 등에서 그 웹 서버에 액세스 제한이 없는 경우 리퀘스트가 오면 상대가 누구든지 무언가의 리스폰스를 반환한다. |
| 20 | +- 완전성을 증명할 수 없기 때문에 변조가 가능하다. |
| 21 | + - 완정성이란 정보의 정확성을 의미한다. |
| 22 | + - 서버 또는 클라이언트에서 수신한 내용이 송신측에서 보낸 내용과 일치한다라는 것을 보장할 수 없는 것이다. |
| 23 | + - 리퀘스트나 리스폰스가 발신된 후에 상대가 수신하는 사이에 누군가에 의해 변조되더라도 이 사실을 알 수 없다. |
| 24 | + - 이와 같이 공격자가 도중에 리퀘스트나 리스폰스를 뺴앗아 변조하는 공격을 중간자 공격이라고 부른다. |
| 25 | + |
| 26 | +### Http 단점을 해결하려면 |
| 27 | +1. SSL(Secure Socket Layer)이나 TLS(Transport Layer Security)를 사용하여 다른 프로토콜과 조합하여 HTTP 통신 내용을 암호화 한다. 즉 SSL을 사용해 안전한 통신로를 확립하고 나서 그 통신로를 사용해 HTTP 통신을 하는 것이다.(1) => (HTTPS) |
| 28 | +2. HTTP를 사용해서 운반하는 내용만을 암호화하는 것이다. HTTP 자체를 암호화 하는 것이 아닌 컨텐츠만 암호화하는 것인데 다만 이경우는 클라이언트에서 HTTP 메시지를 암호화해서 출력하는 추가 처리가 필요하다.(1) |
| 29 | +3. 위 암호화 방법으로 언급된 SSL로 상대를 확인할 수 있다. SSL은 상대를 확인하는 수단으로 증명서를 제공하고 있다.(2) |
| 30 | +4. MD5, SHA-SUM, 등의 해시 값을 확인하는 방법과 파일의 디지털 서명을 확인하는 방법이 존재하지만 확실히 확인 할 수 잇는 것은 아니다. 확실히 방지하기위해서는 HTTPS를 사용해야한다. SSL은 인증이나 암호화 그리고 다이제스트 기능이 있다.(3) |
| 31 | + |
| 32 | +## HTTPS |
| 33 | +- HTTPS는 **HTTP + SSL/TLS**이다. |
| 34 | +- http의 소켓 부분을 SSL(Secure Socket Layer)과 TLS(Transport Layer Secure)로 대체하는 것이 HTTPS이다. |
| 35 | +- TLS는 SSL을 바탕으로 한 프로토콜로 이 프로토콜을 통칭해서 SSL이라고 부르기도 한다. |
| 36 | +- 기존의 HTTP는 원래 TCP와 통신을 직접했지만, HTTPS는 HTTP는 SSL과 통신하고 SSL이 TCP와 통신하게된다. |
| 37 | +- HTTPS의 SSL에서는 공통키 암호화 방식과 공개키 암호화 방식을 혼합한 하이브리드 암호 시스템을 사용한다. |
0 commit comments