Hypertext Transfer Protocol로, 인터넷에서 데이터를 주고 받기 위한 규약. 개발 시 정해진 HTTP 규약을 통해 통신할 수 있다.
HTTP over Secure Socket Layer로, SSL 위에서 동작하는 HTTP라는 의미. HTTP는 데이터를 주고 받을 때 평문을 주고 받기 때문에 도청 공격에 매우 취약하고, 올바른 사용자로 위장하여 서버의 리소스를 탈취할 수 있음. 그렇기 때문에 통신 시 Application Layer와 Transport Layer 사이에 존재하는 SSL을 통해 암호화하여 HTTP 통신하는 HTTPS가 나오게 됨.
client hello (client → server) 🙆♂️
무작위 데이터
, 가능한 암호화 방식의 리스트
전달server hello (server → client) 🙆♂️
무작위 데이터
, 클라이언트의 가능한 암호화 방식 중 하나를 선택하여 해당 암호화 방식
을 전달.인증서
전달CA check ✅
브라우저에 존재하는 CA리스트
중 서버의 CA가 존재하는 지 검사.공개키
를 이용하여 인증서 복호화.key change 🔑
pre master secret
을 생성.CA의 공개키
로 암호화 하여 서버로 전달.HTTPS를 통해 데이터를 주고 받고 세션을 해제하는 데 걸리는 시간은 매우 짧으므로, 대칭키를 탈취당했다고 해도 매우 짧은 시간이기 때문에 대칭키를 바로 폐기할 수 있음.
공개키로 암호화하는 작업은 비용이 많이 들어감. 대칭키를 통해 데이터를 암호화하고, 공개키를 통해 대칭키를 교환하는 방식이 더 효율적.