본문 바로가기
Etc

HTTPS

by NJ94 2024. 2. 23.

출처: https://www.globalsign.com/en/blog/the-difference-between-http-and-https

1. HTTP

  • Hypertext Transfer Protocol
  • 클라이언트와 서버 간 데이터를 전송하기 위한 통신 규약 
  • 텍스트 기반 프로토콜 
    • TCP/IP 프로토콜을 기반으로 작동
    • Stateless (무상태), 즉 각각 요청이 서로 독립적이며 이전 요청의 상태를 기억하지 않음
  • 웹 브라우저가 URL을 입력하여 웹 페이지를 요청하면 웹 서버는 해당 페이지의 HTML 파일과 필요한 이미지, 자바스크립트 파일 등 응답으로 보낸다. 이러한 요청과 응답은 HTTP 메세지 형태로 이뤄진다

 

2.  SSL

  • Secure Sockets Layer, 보안 소켓 계층
  • 네트워크 통신에서 데이터의 보안 및 안정성을 제공하기 위한 프로토콜
    • 즉, 데이터를 암호화하고 안전하게 전송하기 위해 사용됨

 

3. TSL

  • Transport Layer Security, 전송 계층 보안
  • SSL 후속 버전 
    • SSL의 보안 취약점을 보완하고 확장
  • TSL 현재 인터넷 통신에서 가장 널리 사용되는 보안 프로토콜 중 하나
    • SSL과 TSL은 혼용되어 사용되기도 하지만, TSL가 SSL을 대체하고있는 추세

 

4. HTTPS

  • Hypertext Transfer Protocol Secure
  • HTTPS는 웹 브라우저와 웹 서버 간의 통신을 암호화하여 보호하는 데 사용됨
  • HTTP 통신은 데이터가 평문으로 전송되기 때문에 중간에 가로채거나 도청당할 수 있는 보안상의 취약점이 있음
    • 이에 반해 HTTPS는 SSL/TLS을 사용하여 통신 내용을 암호화 한다

 

4.1 HTTPS 필요성

  • 개인 정보 보호
    • 통신 과정에서 전송되는 데이터를 암호화하여 제3자가 데이터를 해킹하는 것을 방지
    • ex) 로그인, 신용 카드, 개인 정보 등
  • 무결성
    • 데이터가 전송되는 동안에는 데이터가 변조되지 않음을 보장
  • 식별
    • 클라이언트와 서버간의 신원을 인증하는데 사용

 

4.2  두 가지 유형의 암호화 알고리즘

4.2.1 대칭키 알고리즘

  • 하나의 키를 사용하여 데이터를 암호화하고 복호화하는 방식
  • 암호화된 데이터를 복호화하려면 동일한 키 필요 
  • ex) AES
  • 단점으로는 키를 관리하기 어렵고, 키를 가진 모든 사용자가 데이터를 암복호화 가능

 

4.2.2 비대칭키 알고리즘

  • 두 개의 키 쌍을 사용하여 데이터를 암호화하고 복호화 함
  • 데이터를 암호화할 떄는 공개키를 사용 복호화할 때는 비공개키를 사용
  • ex) RSA 
  • 대칭키 알고리즘에 비해 보안성이 뛰어나지만, 계산 비용이 더 많이 들거나 처리 속도가 느릴 수 있음 

 

5. SSL/TSL 핸드셰이크 과정 

출처: https://brunch.co.kr/@growthminder/79

 

 

  • Client Hello
    • 클라이언트는 서버에게 SSL/TLS 연결을 시작하겠다는 메세지를 보낸다. 이 메세지에는 클라이언트가 지원하는 SSL/TLS 버전과 암호화 알고리즘 목록 그리고 클라이언트가 생성한 랜덤 값을 포함한다
  • Server Hello
    • 서버는 클라이언트의 요청을 받으면, 클라이언트에게 SSL/TLS 연결에 필요한 정보를 제공하는 메세지를 보낸다. 이 메세지에는 클라이언트와서버가 사용할 SSL/TLS 버전, 선택된 암호화 알고리즘, 그리고 서버가 생성한 랜덤한 값을 포함한다
      • 선택된 암호화 알고리즘은, 클라이언트가 전송한 SSL/TLS 버전과 암호화 알고리즘 목록의 정보에서 서버가 선택한다 
  • Certificate
    • 서버는 클라이언트에게 자신을 인증하기 위한 서버 인증서, 인증기관(CA)으로부터 발급 받은 디지털 서명도 함께 포함해서 전달한다
    • 클라이언트는 공개된 Root CA의 퍼블릭 키를 통해 디지털 서명을 복호화 하여 인증서의 유효성을 확인한다
  • Server Hello Done
    • 서버는 핸드셰이크 과정에서 필요한 모든 정보를 전달했음을 클라이언트에게 알리는 메세지를 전달한다 
  • Client Key Exchange
    • Change Cipher Spec
      • 클라이언트는 Pre Master Secret을 생성하여 이를 서버의 공개키로 암호화 하여 서버에게 전송한다 
      • 서버는 자신의 개인키를 사용하여 Pre Master Secret을 복호화 한다. 
      • 클라이언트와 서버는 공통의 비밀키를 생성할 수 있게 된다.
    • Finish
      • 클라이언트와 서버는 핸드셰이크 과정이 완료되었음을 알리기 위해 Finsh 메세지를 전송한다
  • Encrypted SSL/TLS Connection
    • Master Secret 생성
      • 클라이언트와 서버는 Pre Master secret, Client random, Server random 값을  가지고 Master Secret 키를 생성한다 
    • Session 키와 MAC키 생성
      • Master Secret 키를 사용하여 클라이언트와 서버는 각각 Session키와 MAC(Message Authentication Code) 키를 생성한다. Session 키는 암호화된 통신에 사용되며, MAC 키는 데이터의 무결성을 확인하는데 사용된다.
    • 암호화 통신 시작
      • 클라이언트는 패킷을 보낼 때 이전에 생성된 Session 키와 MAC 키를 사용하여 데이터를 암호화 한다. 암호화된 데이터는 서버에게 전송된다
    • 데이터 무결성 확인
      • 서버는 클라이언트로부터 받은 암호화 데이터를 Session 키를 통해 복호화하고, 복호화된 클라이언트 MAC키와 서버 MAC키를 비교하여 데이터의 무결성을 확인한다. 데이터의 무결성이 확인되면 서버는 해당 데이터를 처리하고 클라이언트에게 응답을 보낸다

 

 

https://brunch.co.kr/@growthminder/79

 

HTTPS 원리 이해하기

https의 원리를 정확히 알고 계시나요? | 최근 대부분의 웹사이트는 HTTPS를 사용한다. 간단한 이벤트 페이지조차 예외가 아니다. 그만큼 보편적으로 사용되고 있는 것이 바로 HTTPS이다. 하지만 면

brunch.co.kr

 

https://howhttps.works/

 

How HTTPS Works

🙀 A cat explains how HTTPS works...in a comic! 😻

howhttps.works

 

'Etc' 카테고리의 다른 글

[WebRTC] Guide  (0) 2023.09.09