HTTP와 HTTPS란?
HTTP와 HTTPS는 둘 다 월드 와이드 웹에서 사용되는 프로토콜로 주로 웹 브라우저와 웹 서버 간의 통신에서 사용된다. 둘의 차이를 디테일하게 알아보자.
- 보안: 가장 큰 차이 중 하나는 보안이다.
- HTTP (HyperText Transfer Protocol): HTTP는 데이터를 암호화하지 않고 평문으로 전송하므로 민감한 정보(비밀번호, 개인정보 등)를 전송할 때 보안 위험이 있을 수 있다.
- HTTPS (HyperText Transfer Protocol Secure): HTTPS는 데이터를 암호화하여 전송하기 위해 SSL(Secure Sockets Layer) 또는 TLS(Transport Layer Security) 프로토콜을 사용하여 데이터를 암호화하고, 인증서를 통해 서버의 신원을 확인한다. 이로써 데이터의 기밀성과 무결성을 보장한다.
- 포트 번호:
- HTTP: 기본적으로 80번 포트를 사용한다.
- HTTPS: 기본적으로 443번 포트를 사용한다.
- 암호화:
- HTTP: 데이터를 암호화하지 않기 때문에 해커가 중간에서 데이터를 도청하거나 조작할 수 있다.
- HTTPS: 데이터를 암호화하여 전송하기 때문에 중간에서의 데이터 도청이나 변조를 방지한다.
- 인증서:
- HTTP: 인증서를 사용하지 않는다.
- HTTPS: 웹 서버는 인증서를 사용하여 자신의 신원을 증명하고, 클라이언트는 이를 확인하여 안전한 연결을 보장 받는다.
- SEO(검색 엔진 최적화):
- HTTPS: 구글 등 일부 검색 엔진에서 HTTPS를 사용하는 사이트를 선호하며, HTTPS를 사용하는 사이트는 검색 결과 순위에서 우선순위를 갖는 경우가 있다.
- 브라우저 표시:
- HTTP: 브라우저 주소창에 "http://"로 시작합니다.
- HTTPS: 브라우저 주소창에 "https://"로 시작하며, 대부분의 브라우저에서는 보안을 나타내는 잠금 아이콘이 표시된다.
HTTPS 통신 과정
- 핸드쉐이크(서버의 인증서, 암호화 방식 전달)
- 세션 키 교환(서버의 공개키로 세션키 암호화 및 전송)
- 데이터 암호화 및 무결성 검증(세션키로 데이터 암호화, HMAC 생성 및 전송)
- 데이터 교환(암호화)
- 세션 종료(해제 메세지)
HTTPS에서 사용하는 SSL과 TLS란?
SSL(Secure Sockets Layer)과 TLS(Transport Layer Security)는 네트워크 통신에서 데이터의 보안성과 무결성을 확보하기 위한 암호화 프로토콜이다. 기본적으로 데이터를 전송하는 과정에서 데이터가 도청, 변조, 위조되지 않도록 정보를 암호화 한다.
- SSL (Secure Sockets Layer):
- 최초로 개발된 보안 프로토콜이며, 데이터 전송을 암호화하고 서버의 신원을 인증하는 기능을 제공한다.
- SSL 1.0부터 SSL 3.0까지 여러 버전이 개발되었으나, 보안 취약점이 발견되어 안전성에 문제가 있어 현재는 잘 사용하지 않는다.
- TLS (Transport Layer Security):
- SSL과 마찬가지로 데이터 전송을 암호화하고 서버의 신원을 인증하는 역할을 한다.
- SSL의 개선된 버전으로, SSL 3.0을 기반으로 개발되어, 현재는 취약점에 대한 대응 및 보안 강화가 이루어진 TLS 1.2와 TLS 1.3를 주로 사용된다.
두 프로토콜은 메시지 인증에서 차이가 있는데, SSL은 메시지 인증 코드(MAC: Message Authentication Code)를 사용하여 전송중에 메세지가 변조되지 않도록 하고, TLS는 보호를 위해 인증코드를 사용하지 않고 암호화(HMAC: Hash-based MAC 등의 암호화 알고리즘)와 같은 다른 수단을 사용해 변조를 방지한다.
마지막으로 TLS의 세부 프로토콜에는 Handshake(인증, 연결), Change Cipher Spec(암호화 방식의 변화 여부), Alert(암호화, 인증서 오류 표시), Record(HMAC사용) 등이 있다.
References