[Network] HTTPS(HyperText Transfer Protocol Secure)

2025. 6. 15. 08:32·Computer Science/네트워크

오늘은 웹에서 데이터를 안전하게 주고받을 수 있는 보안 프로토콜인 HTTPS에 대해 알아보려 한다.

HTTP에 대해서 알아보고 싶다면

2025.06.08 - [CS/네트워크] - Http(Hypertext Transfer Protocol)을 참고하면 된다.

 

HTTP(Hypertext Transfer Protocol)

HTTP(Hypertext Transfer Protocol)란?웹에서 데이터를 주고받기 위한 서버-클라이언트의 프로토콜 HTTP의 특징1. 상태가 없는(Stateless) 프로토콜 서버는 클라이언트의 상태나 정보를 따로 저장하지 않고,

jjangsudiary.tistory.com

 

HTTPS란?

HTTPS는 HTTP에 암호화 기술(SSL/TLS)을 추가한 보안 프로토콜이다.

HTTP와 HTTPS

 

클라이언트는 데이터를 전송하기 전, SSL/TLS 인증서를 전달받아 인증서의 진위를 검증한 후에 데이터를 암호화하여 전송한다.

그렇다면, SSL/TLS에 대해서 먼저 알아보자.

 


SSL/TLS

 

SSL(Secure Socket Layer)은 암호화 기반 인터넷 보안 프로토콜이다.

TLS(Transport Layer Security)는 통신에서 주고받는 개인정보와 데이터 보안의 안전을 위해 설계된
보안 프로토콜이다.

또한 TLS는 데이터의 기밀성(Privacy), 무결성(Integrity), 인증(Authentication)을 보장한다.

 

SSL과 TLS의 차이는 무엇일까요 ❓

라고 하면 사실 다르지 않다. 버전이 진화됨에 따라 SSL이 TLS라는 이름으로 바뀐 것!

다만 SSL은 오래된 기술이므로 보안상 더 이상 사용을 권장하지 않으며, TLS는 현재 보안 통신 표준으로 사용되고 있다.

 

클라이언트는 서버로 받은 SSL/TLS 인증서의 진위를 검증하고 handshake를 하여 데이터를 송수신하게 되는데,
handshake를 하는 과정에서는 비대칭키 암호화를
데이터 송수신 과정에서는 대칭키 암호화를 사용한다.

두 암호화 방식에 대해서 간단히 짚고 넘어가자!

 

 


대칭키 암호화 / 비대칭키 암호화

대칭키 암호화(Symmetric key cryptography)

출처: https://velog.io/@gs0351/%EB%8C%80%EC%B9%AD%ED%82%A4-vs-%EA%B3%B5%EA%B0%9C%ED%82%A4%EB%B9%84%EB%8C%80%EC%B9%AD%ED%82%A4

 

- 대칭키 암호화는 송신자와 수신자가 같은 키를 공유하는 것이다. 즉 암호화와 복호화할 때 같은 키를 사용한다.

- 처리 속도가 빠르지만, 키가 노출될 경우 보안이 위험해질 수 있다.

- 대칭키 암호화에 쓰이는 알고리즘으로는 DES, AES 등이 있다.

 

 

비대칭키 암호화(Asymmetric key cryptography)

출처: https://velog.io/@gs0351/%EB%8C%80%EC%B9%AD%ED%82%A4-vs-%EA%B3%B5%EA%B0%9C%ED%82%A4%EB%B9%84%EB%8C%80%EC%B9%AD%ED%82%A4

 

- 비대칭키(공개키) 암호화는 송신자와 수신자가 키를 공유하지 않고 다른 키를 사용하는 것이다.

  1. 송신자는 수신자에게 메시지를 보내야 하므로, 수신자의 공개키를 확인한다.
  2. 송신자는 수신자의 공개키로 메시지를 암호화하여 송신한다.

  3. 수신자는 자신의 개인키로 암호문을 복호화한다.

- 보안성이 높지만, 대칭키 암호화에 비해 처리 속도가 느리다.

- 대표적으로 RSA 알고리즘을 사용하며, 이는 HTTPS에서도 공개키 알고리즘으로 사용된다! (추후 설명)

 


HTTPS의 통신 과정

설명해왔듯이, 데이터를 송수신하려면 가장 먼저 서버의 SSL/TLS 인증서를 검증해야 한다.

(편의상 SSL 인증서라고 하겠다.)

그렇다면 서버는 검증된 SSL 인증서를 가지고 있어야 한다!

 

1. 서버의 검증된 SSL 인증서 발급

    1-1. 먼저 서버 관리자는 공개키/개인키 쌍을 생성하고, 공개키와 서버 정보를 CA(인증 기관)에 제출한다.

    1-2. CA는 서버의 정보를 검증한 뒤, 서버의 공개키에 CA의 개인키로 전자 서명을 하여 SSL 인증서를 만든다.

    1-3. 서명된 SSL 인증서는 서버에 전달된다.

 

다음은 클라이언트가 서버로 접속을 시도한 후의 과정들이다.

 

2. 클라이언트가 서버의 SSL 인증서를 검증

    2-1. 클라이언트가 서버로 접속을 시도하면 서버는 CA의 공개키와 SSL 인증서를 전달한다.

    2-2. 클라이언트는 CA 공개키로 SSL 인증서의 서명을 복호화한다.

    2-3. 복호화에 성공하면 SSL 인증서도 CA로부터 발급된 것임을 검증한 것이고, 서버의 공개키도 진짜임을 확인한다.

    2-4. SSL 인증서에서 서버의 공개키를 추출한다.

 

3. Handshake(세션키 교환)

    3-1. 클라이언트(송신자)는 세션키(혹은 premaster secret)를 임의로 생성한다.

    3-2. 클라이언트는 서버의 공개키로 세션키를 암호화(RSA 비대칭키 암호화)한다.

    3-3. 클라이언트는 암호화된 세션키를 서버로 전송한다.

    3-4. 서버는 자신의 개인키로 암호화된 세션키를 복호화한다.

    3-5. 클라이언트와 서버는 동일한 세션키(대칭키)를 공유하게 된다.

 

4. 데이터 송수신

    4-1. 클라이언트와 서버는 세션키로 데이터를 암호화해서 송신할 수 있다.

    4-2. 클라이언트와 서버는 같은 세션키로 암호화된 데이터를 복호화하여 확인할 수 있다.

 

:)

 

출처

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

https://www.cloudflare.com/ko-kr/learning/ssl/transport-layer-security-tls/

https://kdeon.tistory.com/132

https://velog.io/@ajm0718/HTTPS%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

'Computer Science > 네트워크' 카테고리의 다른 글

[Network] CORS(Cross-Origin Resource Sharing, 교차 출처 리소스 공유)  (0) 2025.08.10
[Network] REST / REST API / RESTful 이란?  (1) 2025.07.18
[Network] OSI 7계층, TCP/IP 4계층  (1) 2025.06.09
[Network] HTTP(Hypertext Transfer Protocol)  (0) 2025.06.08
[Network] 로드밸런싱(Load Balancing)  (0) 2025.05.30
'Computer Science/네트워크' 카테고리의 다른 글
  • [Network] CORS(Cross-Origin Resource Sharing, 교차 출처 리소스 공유)
  • [Network] REST / REST API / RESTful 이란?
  • [Network] OSI 7계층, TCP/IP 4계층
  • [Network] HTTP(Hypertext Transfer Protocol)
jjangsudiary
jjangsudiary
jjangsudiary 님의 블로그 입니다.
  • jjangsudiary
    jjangsudiary 님의 블로그
    jjangsudiary
  • 전체
    오늘
    어제
    • 분류 전체보기 (81) N
      • 이모저모 (0)
        • 회고 (0)
      • Development (17) N
        • 개발 공부 (14) N
        • 프로젝트 (2)
      • Android (10)
        • Compose (1)
      • AI (15)
      • Computer Science (25)
        • 네트워크 (8)
        • 데이터베이스 (10)
        • 운영체제 (6)
        • 자료구조 (0)
        • 컴퓨터구조 (1)
      • Java (9)
        • 디자인패턴 (2)
      • Spring (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    android
    머신러닝
    자바
    db
    TensorFlow
    인공지능
    os
    java
    baekjoon
    코딩 테스트
    Ai
    Python
    운영체제
    CS
    database
    안드로이드
    딥러닝
    파이썬
    백준
    프로그래머스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
jjangsudiary
[Network] HTTPS(HyperText Transfer Protocol Secure)
상단으로

티스토리툴바