HTTP와 HTTPS의 차이점은 뭔가요? 라고 물으면 대부분은
"HTTP에 암호화를 추가한게 HTTPS 입니다" 정도로 대답합니다. 이에 대해서 오늘 HTTP와 HTTPS의 차이에 대해서
자세히 분석해보고, 차이를 확실히 알아가려 합니다.
HTTP (Hypertext Transfer Protocol)는 웹에서 클라이언트와 서버 간의 통신을 위한 통신 규약입니다.
하지만
1. HTTP는 암호화 되지 않는 평문 데이터를 전송하기 때문에, 제 3자가 정보를 조회할 수 있다는 위험이 있습니다.
2. HTTP는 중간에 메세지가 변경되도 알 수가 없가 없으며,
3. HTTP는 올바른 상대와 통신하고 있는지 알 수 없습니다.
즉 데이터의 기밀성, 데이터 완정성, 통신 상대 인증에서 보안적으로 취약한 문제가 발생할 수 있습니다.
이를 해결하기 위해서 HTTPS가 등장했습니다.
HTTPS는 SSL/TLS가 추가된 프로토콜로, 암호화된 데이터를 전송하기 때문에 제 3자가 볼 수 없도록 할 수 있습니다.
전송 레벨 암호 보안계층이 추가 되면서, SSL/TLS이라는 다른 프로토콜을 조합하여, 안전한 통신로를 확립합니다.
즉 HTTPS = HTTP with SSL 입니다.
SSL/TLS 둘다 웹 서버와 웹 브라우저 간의 보안을 위해 만든 프로토콜로 거의 같고, TLS가 최신버전 입니다.
그럼 SSL은 어떻게 안전하게 송수신 할 수 있게 만들까요?
1. 대칭키 방식 ( 송신자와 수신자는 같은 키를 공유 )
-> 공통키를 가지기 위해서 키를 공유하는 과정이 필요한데, 이 과정에서 탈취당하게 된다면 보안이 뚫릴 수 있습니다.
2. 비대칭키 (한 쌍의 키로 암호화와 복호화. 공개키/비밀키)
-> 공개키로 평문을 암호화하고, 공개키로 암호화된 것을 비밀키를 가진 자만 복호화 할 수 있습니다.
즉 비밀키를 통신으로 보낼 필요가 없어지고, 키 노출 문제점이 극복 됩니다.
보안이 제일 중요하다라고 생각이 되면, 비대칭키로 하는것이 맞지만
모든 통신을 다 비대칭키로 하면 비효율적 입니다.
HTTPS는 대칭키와 비대칭키를 적절히 섞어서 통신하게 됩니다.
그럼 공개키가 진짜인지 아닌지 어떻게 증명할 수 있을까요?
그 공개키가 진짜 "민을 만한"인지 보장해주는 것이 CA 입니다.
1. 서버는 인증 기관에 서버의 공개키와 사이트 정보를 전송합니다.
2. 인증 기관은 사이트를 검증한 후 인증 기관의 개인키로 서명합니다.
3. 인증 기관은 사이트 인증서 (SSL 인증서)를 서버에게 보내주고,
4. 서버는 클라이언트에게 사이트 인증서(SSL 인증서)를 전송합니다. (사용자의 브라우저 안에 CA목록 저장)
HTTPS 통신흐름
1. 클라이언트가 서버에 암호화에 필요한 정보를 보내고, 인증서를 요구한다.
2. 서버는 선택된 암호 정보와 인증서를 전송한다.
3. 클라이언트는 서버가 신뢰할 수 있는 사이트임을 확인했다면, 공통 키로 사용할 pre-master secret을 생성한다.
4. 클라이언트는 서버의 공개키로 비밀키를 암호화하여 전송한다.
5. 서버는 개인키로 복호화하여 공통키를 획득한다.
6. SSL에 의해서 접속이 확립되었으며, 통신은 SSL에 의해서 보호된다.
7. 이제부터 애플리케이션 계층의 HTTP로 송수신한다.
'CS > Computer Network' 카테고리의 다른 글
[매일매일 CS] WAS와 웹 서버의 차이점은 무엇인가요? (0) | 2025.09.15 |
---|---|
Nework Application Layer (4) | 2025.08.27 |
Network 기본 (2) | 2025.08.27 |
Application Layer (3) | 2025.08.04 |