HTTP

- Hypertext Transfer Protocol

- 클라이언트와 서버 사이에 이루어지는 요청/응답 프로토콜

- 암호화되지 않은 방법으로 데이터를 전송하여 안전하지 않다. 

 

HTTPS

- Hypertext Transfer Protocol Over Secure Socket Layer

- 요청과 응답 데이터는 네트워크로 보내지기 전에 암호화된다.

- HTTPS 는 HTTP 하부에 SSL 같은 보안 계층을 제공한다.

 

SSL (Secure Sockets Layer)

- 암호화 기반 인터넷 보안 프로토콜- 인터넷 통신의 암호화, 인증, 데이터 무결성을 보장하기 위해 개발됨.- 웹에서 전송되는 데이터를 암호화한다. - TLS 암호화의 전신이다.- 1996년 SSL 3.0 이후 업데이트 되지 않았으며, 앞으로 사라지게될 것으로 여겨지고 있다. SSL 프로토콜에는 알려진 취약성이 여러가지 있으며 보안 전문가들은 SSL 사용을 중단하라고 권장한다. 실제로 최신 웹 브라우저는 대부분 이제 SSL을 지원하지 않으며, SSL을 제공하는 업체는 사실상 TLS보호를 제공하는 것이다. 

 

암호화 : 제 3자로부터 전송되는 데이터를 숨김

인증 : 정보를 교환하는 당사자가 요청된 당사자임을 보장

무결성 : 데이터가 위조되거나 변조되지 않았는지 확인

 

암호화 방식

대칭키

  • 암호화 · 복호화할 때 사용하는 키가 동일한 방식
  • 키가 한 개 뿐이므로 유출되어선 안됨
  • 비대칭키보다 속도가 빠르다. 

비대칭키(공개키)

  • 암호화 · 복호화할 때 사용하는 키가 서로 다른 방식
  • Private Key와 Public Key가 함께 존재한다.
  • Private Key로 암호화한 데이터는 Public Key로 복호화할 수 있고, Public Key로 암호화한 데이터는 Private키로 복호화할 수 있다.

CA 기관 (Certificate Authority, 인증기관)

브라우저가 접속하고자 하는 서버의 SSL 인증서를 받으면 이것이 진짜인지 가짜인지 검증해주는 기관이다. 

클라이언트와 서버 둘 다 신뢰하는 기관.

 

SSL 인증서(TLS 인증서)

인증서는 개인이 만드는 사설 인증서와 CA기관에서 발급한 공인 인증서가 있다. 

  1. 웹브라우저는 CA 기관들의 Public Key를 이미 알고 있다. 
  2. 서버에서 CA 기관에 서버 정보와 자신의 Public Key를 담아 SSL 인증서 발급 요청을 한다.
  3. CA 기관은 서버의 SSL 인증서를 발급한다. 
    1. SSL 인증서에 서버의 도메인을 비롯한 서버를 인증해주는 정보들을 담고
    2. Private Key와 Public Key 한쌍을 새로 생성하여 담아준다.
    3. 인증기관의 Private Key로 암호화하여 서버에 전달한다. 
  4. 서버와 브라우저가 통신하려고 하면 서버는 브라우저에게 SSL 인증서를 전달한다. 
  5. 브라우저는 SSL 인증서를 검증하기 위해 CA 기관의 Public Key로 SSL 인증서를 복호화한다.
  6. 복호화에 성공하면 SSL 인증서가 진짜라는 것이고, 복호화에 실패하면 진짜가 아니거나 CA기관에서 발급한 인증서가 아니라는 뜻이다. (주소창에 빨간색으로 신뢰할 수 없는 사이트라고 뜨는 경우)
  7. 복호화한 SSL 인증서에서 서버의 Public Key를 얻었고, 웹브라우저는 이제 서버를 신뢰한다. 이제 서버의 공개키로 실제 데이터 암호화에 사용할 대칭키를 암호화하여 서버에게 전송한다. 
  8. 서버는 웹브라우저가 자신의 Public Key로 암호화하여 전달한 대칭키를 자신의 Private Key로 복호화한다. 
  9. 이제부터 서버와 브라우저는 대칭키 방식으로 암호화 통신을 할 수 있다.

HTTPS를 써도 성능이 떨어지지 않는 이유는 최종적으로 대칭키 방식으로 동작하기 때문이다. 

 

 

Reference

https://www.cloudflare.com/ko-kr/learning/ssl/what-is-ssl/

https://aws-hyoh.tistory.com/59

 

HTTPS 통신과정 쉽게 이해하기 #5(CA, 인증기관)

지난 #1, #2, #3, #4 문서에서 서버가 보유한 SSL 인증서를 인증기관(CA)이 발급한다고 설명했습니다. 그렇다면 도대체 이 인증기관(CA)은 무엇일까요? 그리고 내가 사용하는 브라우저는 접속하는 웹

aws-hyoh.tistory.com

 

'백엔드' 카테고리의 다른 글

JPA 개념  (2) 2023.04.29
JAR 와 WAR  (2) 2022.06.20
리액티브 프로그래밍 (Reactive Programming)  (1) 2022.06.13
도커(docker)에 톰캣(tomcat) 설치하기  (0) 2022.06.08

+ Recent posts