HTTPS

2024. 4. 30. 21:43

HTTPS?

- HTTPS(Hypertext Transfer Protocol Secure)는 HTTP의 확장이며, 컴퓨터 네트워크 상에서 안전한 통신을 위해 암호화를 사용

- 통신 프로토콜이 TLS 또는 SSL (최근에는 TLS)을 사용하여 암호화함

- 즉, HTTP에 TLS를 적용한 것이 HTTPS라고 볼 수 있음

- 간단히 말하면 HTTP 프로토콜에 SSL/TLS 보안 프로토콜을 추가하여 데이터의 암호화, 무결성, 인증을 보장

왜 HTTPS를 써야하는가?

 

1. HTTPS를 사용하는 웹 사이트는 사용자가 더 신뢰할 수 있음

- 접근하는 웹사이트의 인증과 데이터의 프라이버시 및 무결성 보호

- 특히, 전자상거래 사이트를 구축한다고 치면, 보안은 최우선적 요소

 

2. SEO 혜택

- Google, Bing, Yahoo같은 검색 엔진은 웹 사이트의 검색 결과의 위치를 지정할 때 200개 이상의 요소를 고려하는데, 그 중 하나가 바로 사이트가 HTTPS로 보호되는 지도 있음

 

3. 사용자와 웹 사이트 소유자 모두에게 HTTPS가 더 안전

- HTTPS는 SSL/TLS 프로토콜을 사용하여 통신을 암호화하므로, 공격자가 데이터를 탈취할 수 없음

- 원본 서버로 전송되는 데이터와 원본 서버에서 수신되는 데이터의 양방향 전송이 모두 암호화

- MITM(Man-In-The-Middle) 방지 가능

 

 

대칭키/비대칭키

HTTPS는 대칭키 암호화 방식과 비대칭키 암호화 방식의 장점만을 사용, 따라서 두 암호화 방식을 사용

 

대칭키 암호화 :

- 클라이언트 및 서버가 동일한 키를 사용해 암호화/복호화를 진행함

- 키가 노출되면 위험하지만, 연산속도가 매우 빠름

 

비대칭키 암호화:

- 1개의 쌍으로 구성된 공개키와 개인키를 암호화/복호화 하는데에 사용

- 공개키는 누구나 볼 수 있고 키가 노출되어도 비교적 안전하지만, 연산 속도가 느림

 

HTTPS의 경우, 대칭키가 노출되면 위험한 부분을 비대칭키를 활용하여 보완하고, 연산속도가 느린 부분을 연산 속도가 빠른 대칭키로 보완

 

동작 원리

SSL/TLS 핸드셰이크

 

(1) ClientHello

: 클라이언트는 서버에게 SSL/TLS 버전, 지원하는 암호화 알고리즘, 세션 ID 등을 전송하며, 핸드셰이크를 개시

 

(2) ServerHello

: 서버는 클라이언트의 제안 중 하나를 선택하여 응답함

 

(3) Certificate

: 서버는 자신의 인증서를 Client에게 보냄, 인증서에는 공개 키, 인증서 발급 기관(CA), 유효기간 등이 있음

클라이언트는 인증서의 유효성을 확인하고, 필요에따라 키 교환 메시지를 서버에 보냄

 

SSL 인증서?
- SSL 인증서는 클라이언트와 서버간의 통신을 제3자가 보증해주는 전자화된 문서
- 클라이언트가 서버에 접속한 직후에 서버는 클라이언트에게 이 인증서 정보를 전달
- 클라이언트는 이 인증서 정보가 신뢰할 수 있는 것인지를 검증 한 후에 다음 절차를 수행

 

(4) ServerHelloDone

: 서버는 핸드셰이크 메시지의 끝을 클라이언트에 알림

 

(5) Premaster Secret

: 클라이언트가 Premaster Secret(예비 마스터 암호)라고 하는 무작위 바이트 문자열을 하나 더 전송함. 예비 마스터는 공개 키로 암호화되어 있으며, 서버가 개인키로만 복호화 가능함. 클라이언트는 서버의 SSL 인증서를 통해 공개 키를 받음

 

(6) ClientKeyExchange

: 서버는 핸드셰이크 메시지의 끝을 클라이언트에 알림

 

(7) ClientKeyExchange

: 클라이언트는 세션 키를 생성하고 이를 서버의 공개키로 암호화하여 서버에 전송

 

(8) 핸드셰이크 완료

: 클라이언트와 서버는 모든 필요한 정보를 교환하고, 세션 키를 사용하여 세션 데이터를 암호화 및 복호화

 

 

 

 

 

https://www.cloudflare.com/ko-kr/learning/ssl/what-happens-in-a-tls-handshake/

https://www.cloudflare.com/ko-kr/learning/ssl/why-use-https/

https://rushax.com/3-reasons-why-your-website-needs-https/

'공부 > Web' 카테고리의 다른 글

HTTP의 특성과 Cookie, 간략히  (0) 2024.04.30
웹 성능 개선과 HTTP Cache  (0) 2024.04.30
Proxy  (0) 2024.04.30
CORS(Cross-Origin Resource Sharing)와 동작 시나리오  (0) 2024.04.28
Load Balancer와 Auto Scaling  (1) 2024.04.26

BELATED ARTICLES

more