HTTP를 공부한 뒤 주위를 둘러보니 웬만한 사이트는 전부 https를 사용하고 있다. HTTPS는 무엇이고 왜 탄생하게 되었을까?
HTTP는 입력한 텍스트 그대로 누구나 알아볼 수 있게 전송되어 정보 노출의 위험이 있다. HTTPS는 전송되는 정보를 외부에서 알아볼 수 없는 형태로 암호화시켜준다.
검증되지 않은 사이트는 신뢰할 수 없는 사이트라 표시된다.
보안에 취약한 HTTP에 보안 프로토콜을 조합한 것이다.
소켓 통신에서 일반 텍스트를 이용하는 대신에, 웹 상에서 정보를 암호화하는 SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화한다.
전송된 데이터를 암호화하여 인터넷 연결을 보안을 유지하는 표준 기술이다. 이는 해커가 개인 정보 및 금융 정보를 포함한 전송되는 모든 정보를 열람하거나 훔치는 것을 방지한다.
➕ 하나 더 : SSL이 발전하여 TLS(Transport Layer Security)라는 더 강력한 버전이 사용되고 있지만 SSL이 일반적으로 사용되는 용어이기에 여전히 보안 인증서는 SSL이라 불린다.
아래 사진과 같은 절차로 진행되며 각 단계를 더 세부적으로 접근하면 비대칭키, 대칭키, CA라는 개념이 사용된다.
출처 : https://www.digicert.com/kr/what-is-ssl-tls-https/
클라이언트에 공유된 공개키 - 서버가 보유한 개인키로 서로 다른 키를 이용하는 암호화 방식
클라이언트와 서버가 동일한 키를 사용하는 암호화 방식
서버가 믿을 수 있는 서버인지 보증할 수 있는 공인된 기관
➕ 하나 더 : 브라우저는 신뢰할 수 있는 CA 목록을 보유하고 있다가 CA기관에서 발급한 SSL이 맞는 지를 확인하여 사이트를 검증한다.
기술 발전으로 속도 차이가 줄어들긴 했으나 보안에 필요한 암호화를 거치는 만큼 HTTPS는 HTTP에 비하면 속도가 느리다. 설치 및 인증서를 유지하는데 추가 비용도 발생한다.
또한 인터넷 연결이 끊긴 경우 HTTP는 비연결형으로 웹 페이지를 보는 중 연결이 끊겼다가 다시 연결되어도 페이지를 계속 볼 수 있지만 HTTPS는 소켓 자체 인증을 다시 거쳐야 하여 재인증 시간이 소요된다.
각 장단점이 존재하므로 다루려는 데이터에 따라 적합한 것을 사용하면 되겠다.
금융 정보나 메일 등 중요한 정보를 주고받는 것은 HTTPS를,
불특정 다수에게 공개해도 되는 페이지는 HTTP를 사용해도 된다.