HTTP (Hypertext Transfer Protocal)
- 서로 다른 시스템들 사이에서 통신을 주고받게 하는 가장 기본적인 프로토콜
- 서버에서 브라우저로 데이터를 전송하는 용도
- 데이터가 암호화되지 않음 → 데이터가 쉽게 도난당할 수있다.
HTTPS (Hypertext Transfer Protocal Secure)
- HTTP + SSL
- SSL(보안 소켓 계층) 사용
- HTTP message body를 암호화 But Header는 암호화하지 않음
왜 HTTPS 사용?
- 보안성
- 데이터를 암호화해서 전송한다.
- 검색엔진 최적화
- 구글은 HTTPS를 사용하면 검색엔진에 가산점을 준다. → 더 노출이 많이된다.
- AMP(가속화된 모바일 페이지)를 만들 때 HTTPS를 사용해야만 한다.
SSL/TLS
TLS = SSL의 업그레이드 버전
SSL (Secure Sockets Layer)
- 웹 서버와 웹 브라우저간의 보안을 위해 만든 프로토콜
- 공개키/개인키 & 대칭키 방식을 혼합해서 사용
- 공개키의 단점을 대칭키로 보완, 대칭키의 단점을 공개키로 보완
대칭키
- 동일한 키로 암호화와 복호화 수행
- 누구든지 암호화에 이용된 키를 가지고 있다면 해당 데이터 쉽게 복호화 → 암호화와 복호화가 쉽다.
- 키를 배송할 때 문제가 된다.
공개키(비대칭키)
- 암호화할 때는 공개키 사용, 복호화할 때는 개인키 사용 → 누구든지 공개키를 가져도 상관없다.
- 암호화 연산시간이 더 오래걸려 비용이 크다.
SSL 통신 과정
- 공개키 방식으로 대칭키를 전달
- 대칭키를 활용해서 암호화와 복호화를 하고, 서버와 브라우저간 통신을 진행
예제)
- A가 B에게 접속요청
- B는 A에게 자신의 공개키 전송
- A는 자신의 대칭키를 B에서 전달받은 B의 공개키로 암호화한다.
- 암호화한 자신의 대칭키를 B에게 전달
- B는 A의 대칭키를 자신의 개인키로 복호화 → 복호화 결과로 A의 대칭키를 얻는다.
- 안전한 통신
참고
https://www.youtube.com/watch?v=wPdH7lJ8jf0
와 SSL 통신 어려웠는데 감사합니다 ㅎㅎ