1. HTTP의 약점
1) 평문이기 때문에 도청 가능
- 같은 세그먼트의 통신을 도청하는 것은 어려운 일이 아님. 패킷을 수집하기만 하면 됨.
- 암호화를 해야 됨.
- 통신 암호화 : SSL이나 TLS을 조합하면 됨.
- 콘텐츠 암호화 : HTTP 메시지에 담기는 콘텐츠를 암호화.
2) 통신 상대를 확인하지 않기 때문에 위장 가능
- 누구나 리퀘스트할 수 있음. 상대가 누구이건 리스폰스를 반환함.
- SSL 인증서를 쓰면 됨.
3) 완전성을 증명할 수 없기 때문에 변조 가능
- Man-in-the-Middle Attack이 가능.
- 수/발신 결과가 같은지 확인할 수가 없다는 뜻.
2. HTTP + 암호화 + 인증 + 완전성 보호 = HTTPS
1) HTTPS는 SSL의 껍질을 덮어쓴 HTTP
- HTTP는 TCP와 직접 통신하지만 HTTPS는 사이에 SSL 레이어 넣음.
2) 상호간에 키를 교환하는 공개키 암호화 방식
- 공통키는 암호화와 복호화에 공통의 키를 사용하는 방식. 그런데 안전하게 공통키를 네트워크를 통해 넘겨주는 게 어려운 일.
- 공개키 암호는 비밀키/공개키 2개를 쓴다.
- HTTPS는 하이브리드 암호 시스템. 키를 교환할 때는 공개키 암호를 사용하고, 그 이후의 통신에서는 공통키 암호 사용.
- 공개키가 진짜인지 증명하기 위해 CA가 필요함.