HTTPS는 Hypertext Transfer Protocol Secure의 약자입니다.
HTTP에서 보안이 추가된 버전으로 이해하면 됩니다.
HTTPS는 서버와 클라이언트간의 데이터 전송에서 보안을 강화하기 위해 암호화를 합니다.
HTTPS의 암호화는 민감한 정보를 전달하는데 있어서 중요합니다.
브라우저에서 HTTPS를 사용중인지 아닌지 확인하는 방법은 주소창 왼쪽을 확인하는 것입니다.
만약 HTTPS를 사용하지 않다면 아래와 같이 경고 표시가 뜹니다.
사용자가 웹 서버에 접속합니다.
사용자가 서버의 TLS/SSL 인증서를 받고 퍼블릭 키를 받습니다.
클라이언트가 프리 마스터 시크릿을 생성하고 퍼블릭 키로 암호화하여 서버에 보냅니다.
서버가 프리 마스터 시크릿을 자신의 개인키로 복호화합니다. 이를 통해 클라이언트와 서버는 동일한 프리 마스터 시크릿을 공유하게 됩니다.
클라이언트와 서버가 프리 마스터 시크릿을 기반으로 세션 키를 생성하고 통신을 시작합니다.
HTTPS는 위에서 설명했듯이 클라이언트와 서버 사이에서 주고 받는 메세지를 암호화합니다.
만약 메세지를 암호화하지 않고 보내게 되면 중간에 있는 다른 사람들이 해당 메세지를 볼 수 있습니다.
그러나 암호화를 한다면 해당 메세지를 본 다 해도 무슨 내용인지 알 수 없습니다.
아래는 HTTP를 이용한 메세지와 HTTPS를 이용한 메세지를 보여줍니다.
HTTP:
This is a string of text that is completely readable
HTTPS:
ITM0IRyiEhVpa6VnKyExMiEgNveroyWBPlgGyfkflYjDaaFf/Kn3bo3OfghBPDWo6AfSHlNtL8N7ITEwIXc1gU5X73xMsJormzzXlwOyrCs+9XCPk63Y+z0=
또한 HTTP는 메세지를 보는 것만이 아닌 메세지에 개입도 할 수 있는데 이 방식을 이용해 HTTP메세지에 광고를 끼워 이득을 취하는 사람도 있습니다.
이런 것을 막기 위해 HTTPS를 사용합니다.
아래는 HTTP 메세지에 광고 끼워 넣은 것입니다.
443이 HTTPS의 포트 번호입니다.
기술적으로 HTTPS는 HTTP에 보안만 추가한 것입니다.
서로 크게 차이가 나지 않습니다.