HTTPS
HTTP vs HTTPS
먼저 HTTP (Hypertext Transfer Protocol) 는 OSI 7계층에서 가장 위 계층인 Application 7계층에서 사용되는 대표적인 프로토컬이다.
OSI 7계층에 대한 내용은 아래 글을 첨부한다. https://xoxoxoxox.tistory.com/298
[네트워크] OSI 7계층 모델
OSI 7계층 모델 배경OSI 7계층 모델은 ISO 국제 표준화 기구에서 1984년 제정한 네트워크 표준 규격이다. 옛날에는 회사에서 각각의 컴퓨터들이 통신하는 자신만의 프로토컬을 가지고 있었기 때문
xoxoxoxox.tistory.com
클라이언트와 서버가 통신을 하기 위해서는 어떻게 통신할 것인지 세계적인 규칙(프로토컬)을 만든 것이 HTTP이다. 따라서 사용자가 인터넷을 사용하기 위해서는 웹 서버에 HTTP 요청을 할 것이고, 서버는 우리에게 HTTP 응답을 보내줄 것이기 때문에 HTTP는 네트워크 통신을 할 수 있게 하는 정말 중요한 기술이다.
HTTPS는 이러한 HTTP에 + Secure(보안)을 합친 HTTP의 확장되고 안전한 버전이다.
먼저 HTTP와 HTTPS의 차이를 표로 나타내면 다음과 같다.
HTTP | HTTPS | |
이름 | Hypertext Transfer Protocol | Hypertext Transfer Protocol Secure |
사용하는 프로토컬 | HTTP/1, HTTP/2 : TCP/IP HTTP/3 : QUIC (UDP 기반, 빠름) |
HTTP/2 (TCP/IP) + SSL/TLS (암호화) |
Port | 80 | 443 |
보안 | x | 퍼블릭키 암호화, SSL 인증서 사용 |
그렇다면 HTTPS은 어떻게 보안을 지켜냈을까. 이것은 HTTPS 작동 방식을 살펴 보면 알 수 있다.
HTTPS 작동 방식
HTTP는 암호화가 되지 않은 데이터를 전송한다. 즉 제 3자가 패킷을 가로채게 되면 HTTP 요청의 payload 부분에 들어있던 데이터가 유출될 수 있는 것이다. 따라서 이것을 방지하기 위해 SSL/TLS 기술을 추가해서 모든 데이터를 암호화된 형태로 전송해서 통신하는 당사자들만 볼 수 있도록 하는 통신 방식이 HTTPS이다.
그렇다면 SSL/TLS 기술은 뭘까?
SSL/TLS
일단 SSL과 TLS는 같은 뜻으로, SSL의 최신 버전이 TLS이다. 하지만 SSL이라는 이름이 많이 사용되고 있기 때문에 SSL/TLS로 같이 부르고 있다.
그래서 SSL은 Secure Sockets Layer의 약자로 클라이언트/서버 프로그램이 네트워크로 통신하는 과정에서 도청/간섭을 방지하기 위해서 설계된 계층이다.
OSI 7계층은 각각 독립된 계층으로 구현되어 있기 때문에 유연하게 HTTP와 SSL/TLS와 함께 조합해서 유연하게 사용할 수 있다.
SSL/TLS 계층에서는 대칭키(공개키)를 통해서 정보를 암호화한다. SSL/TLS 핸드셰이크 과정은 다음과 같다.
1. 클라이언트가 서버에게 연결 요청
클라이언트가 랜덤한 데이터와 자신이 지원할 수 있는 암호화 방식을 서버에게 전달한다. 자신의 능력치를 알려주고, 서버는 그거에 맞게 암호화 방식을 선택할 수 있도록 한다.
2. 서버 응답
서버는 클라이언트가 보낸 데이터들 + CA 인증서, 서버가 선택한 암호화 방식을 응답으로 보내주게 된다. 인증서는 CA에서 발급받은 문서로, 서버가 신뢰할 수 있는지 보장한다.
3. 인증서확인, 인증서 복호화, 임시 대칭키 생성
CA가 발급한 인증서 목록 중에서 서버가 전달한 인증서가 있는 지 확인한다.
있다면, CA에서 공유하는 공개키로 인증서를 복호화한다.
복호화가 되면, 서버가 자신의 비밀키로 암호화를 했다는 것이 검증이 됐으니 서버를 신뢰할 수 있음을 알게 된다.
4. 서버에게 임시 대칭키 전달
실제 데이터 통신에서 사용할 대칭키를 임시로 만들고, 서버의 공개키로 암호화되어 서버에게 전달한다.
5. 서버는 비밀키를 통해 해독
서버는 자신의 비밀키를 사용하여 클라이언트가 보낸 임시 대칭키를 복호화한다.
이제 클라이언트와 서버가 같은 키를 갖게 된다.
6. 클라이언트& 서버의 임시 키를 세션 키로 바꿈
이제 클라이언트와 서버가 통신이 가능해진다!
요약
- 클라이언트와 서버가 핸드셰이크 과정에서 동일한 임시 대칭키를 공유한다.
- 이 임시 대칭키를 기반으로 최종 세션 키가 생성된다.
- 세션 키는 이후의 모든 데이터 통신을 암호화하는 데 사용된다.
Reference
https://aws.amazon.com/ko/compare/the-difference-between-https-and-http/
HTTP와 HTTPS 비교 - 전송 프로토콜 간의 차이점 - AWS
HTTP와 HTTPS의 차이점은 무엇인가요? HTTP(Hypertext Transfer Protocol)는 클라이언트와 서버 간 통신을 위한 통신 규칙 세트 또는 프로토콜입니다. 사용자가 웹 사이트를 방문하면 사용자 브라우저가 웹
aws.amazon.com
https://brunch.co.kr/@swimjiy/47
그림으로 쉽게 보는 HTTPS, SSL, TLS
SSL과 TLS는 무슨 차이일까 | 지난 포스팅에서 웹 브라우저와 웹 서버 간에 데이터를 주고받기 위해 사용하는 인터넷 프로토콜인 HTTP에 대해 알아봤습니다. 1996년에 탄생한 이후부터 지금까지 HTTP
brunch.co.kr
'‡Computer Science ‡ > º 네트워크' 카테고리의 다른 글
[네트워크] DNS(Domain Name System) (0) | 2024.07.15 |
---|---|
[네트워크] TCP 연결 과정 (0) | 2024.07.12 |
[네트워크] OSI 7계층 모델 (0) | 2024.07.12 |
[네트워크] 대역폭(Bandwidth)이란? (0) | 2024.07.12 |