HTTP 와 HTTPS의 차이점
HTTP
HyperText Transfer Protocol 의 줄임말로 서로 다른 시스템들 사이에서 통신을 주고받게 하는 가장 기본적인 프로토콜 이다
- 서버에서 브라우저로 데이터를 전송하는 용도로 가장 많이 사용됨
- 서버에서 브라우저로 보내는 정보가 암호화되지 않아서 데이터가 쉽게 도난당할 수 있다는 문제점을 가지고 있음
HTTPS
HyperText Transfer Protocol over Secure Socket Layer 의 줄임말로 HTTP의 문제를 SSL(보안 소켓 계층)을 활용해 해결 했다
HTTPS는 HTTP자체를 암호화하는 것이 아닌 HTTP를 사용해 운반하는 내용, HTTP Message Body를 암호화 한다
왜 HTTPS를 사용해야 할까?
1. 보안성
HTTP로 데이터를 전송하면 네트워크로 전달되는 데이터는 원본 그 자체이다, 즉 헤커가 중간에서 가로채면 어떤 내용인지 바로 알 수 있다
HTTPS로 데이터를 전송할 땐 데이터를 암호화 해서 전송한다, 즉 헤커가 중간에서 가로채면 어떤 내용인지 알기 어렵다
2. 검색엔진최적화(SEO)
검색엔진하면 대표적으로 구글이 있다, 구글은 HTTPS를 사용하는 웹 사이트에 가산점을 부여한다
3. AMP를 만들 땐 HTTPS를 사용해야만 한다
AMP(Accelerated Mobile Pages)는 구글에서 만든 모바일 전용 빠른 웹페이지를 의미하는데, 이렇게 모바일 친화적 웹사이트를 만들기 위해 HTTPS를 사용해야 한다.
SSL/TLS
SSL의 업그레이드 버전이 TLS이지만, 일반적으로 두 단어를 동일한 의미로 사용한다
SSL
SSL이란 Secure Sockets Layer, 웹 서버와 웹 브라우저간의 보안을 위해 만든 프로토콜이고 Netscape사에서 만들어 졌다
공개키 대칭키 기반으로 사용한다
대칭키
동일한 키로 암호화와 복호화를 수행하는 방법
누구든 암호화에 이용된 키를 가지고 있다면, 해당 데이터를 쉽게 복호화 할 수 있다
암호화할 때 사용하는 키를 원본 그대로 전달하고 있고 해커가 중간에 키를 가로챈다면 암호화된 데이터를 쉽게 해독할 수 있다
공개키
서로 다른 키로 암호화와 복호화를 수행하는 방법, 비대칭키 방식으로도 불린다
암호화 시에는 공개키를 사용, 복호화 시에는 개인키를 사용한다
공개키로 암호화한 데이터는 오직 개인키로만 복호화할 수 있기 때문에 누구든지 공개키를 가져도 상관없다
하지만 대칭키 방식보다 암호화 연산 시간이 더 소용되어 비용이 크다
즉 대칭키와 공개키는 서로의 장점이 서로의 단점이 된다
그래서 SSL에서는 두 방식을 적절히 섞어 사용한다
SSL 통신 과정 (SSL-Handshake)
SSL은 공개키, 대칭키를 적절히 섞어 사용한다 했는데 더 구체적으로 말하면, SSL은 공개키 방식으로 대칭키를 전달한다
두 컴퓨터 A B 가 있다고 할 때 A B 의 SSL 통신 과정을 살펴보면,
- A에서 B로 접속 요청을 보낸다
- B는 A에게 자신의 공개키를 전송해준다
- A는 자신의 대칭키를 B에서 전달받은 B의 공개키로 암호화 한다
- 암호화한 대칭키를 B에게 전달해준다
- B는 A의 대칭키를 자신의 개인키로 복호화 한다
- 복호화 결과로 B는 A의 대칭키를 얻을 수 있다
이렇게 얻은 대칭키를 통해 A와 B는 안전하게 통신한다
이를 활용해 사용자가 접속한 사이트가 유요한 사이트인지 확인하는 방법은
제 3의 인증 기관을 포함해 할 수 있다
사용자가 사이트에 접속하기 전
- 사이트는 사이트 인증서(인증기관에서 발급하는 문서)가 필요
- 사이트는 인증기관에서 사이트 정보와 사이트 공개키를 전달
- 사이트로부터 전달받은 데이터를 검증
- 성공적으로 검증하면 사이트로부터 전달받은 데이터를 자신의 개인키로 서명
- 서명이 되면 사이트 인증서가 생성, 사이트에 전달
- 인증기관은 사용자에게 자신의 공개키를 전달
(사용자 브라우저에 공개키가 자동으로 저장)
사용자가 접속을 요청했을 때
- 사용자가 사이트에 접속 요청
- 사이트는 사용자에게 인증서를 전달
- 사용자에게 저장된 공개키로 전달받은 인증서를 복호화, 검증
- 인증서를 해독하면 사이트정보, 사이트 공개키를 얻을 수 있다
- 해독해 얻은 사이트 공개키로 사용자는 자신의 대칭키를 암호화 한다
- 암호화한 대칭키를 사이트에 전달
- 사이트는 자신의 개인키로 사용자에게 전달된 대칭키를 해독, 사용자의 대칭키를 얻는다
이렇게 얻은 대칭키로 사용자와 사이트는 암호문을 주고받을 수 있다(SSL통신을 하게된다)
SSL은 사이트 외 인증기관과 사용자도 협력하기 때문에 안전한 접속 방법이 된다
출처
https://velog.io/@codingbotpark/HTTPS%EB%9E%80
HTTPS 란?
유튜브 [10분 테코톡] 🍭 다니의 HTTPS를 정리한 HTTP 와 HTTPS 와 SSL/TLS 와 SSL 통신 과정을 포함한 내용입니다
velog.io
https://velog.io/@osk3856/TLS-Handshake
TLS-Handshake (SSL-Handshake) feat.비밀키, 공개키
TCP 의 3-way, 4-way handshake 부터 TLS handshake 까지 다루는 글 입니다.
velog.io
'Computer Science > 네트워크' 카테고리의 다른 글
[네트워크] TCP/IP 4계층 (0) | 2024.09.29 |
---|---|
[네트워크] OSI 7계층 (1) | 2024.09.29 |
[네트워크] HTTP란? (1) | 2024.09.29 |
[네트워크] HTTP 메서드 종류 (0) | 2024.09.29 |
[네트워크] HTTP 멱등성, 안정성, 캐시성 (0) | 2024.09.29 |