[네트워크] HTTPS 프로토콜

2025. 5. 18. 17:55·⚙️ CS/네트워크
반응형

🔗 Before: HTTP

https://dev-heyjin.tistory.com/entry/Network-HTTP-Protocol

 

[네트워크] HTTP 프로토콜

✅ HTTP(HyperText Transfer Protocol)란?: 애플리케이션 계층의 프로토콜로, 웹 서비스 통신에 사용 웹 브라우저와 서버 간에 텍스트, 이미지, 영상, JSON 등의 데이터를 주고받을 때 사용된다.기본적으로 8

dev-heyjin.tistory.com

 


 

✅ HTTPS(Hypertext Transfer Protocol Secure)란?

: 인터넷상의 정보를 암호화하기 위해 SSL 프로토콜을 이용해 데이터를 전송

 

  • HTTP는 평문 텍스트, 즉 암호화되지 않은 텍스트를 전송하는 TCP 프로토콜의 일종이다. 여기에 S(Secure)를 더한 것이 HTTPS
  • HTTP 통신하는 소켓 부분을 SSL/TLS라는 프로토콜로 대체한 것이다.
  • HTTP는 직접 TCP와 통신했지만, HTTPS에서 HTTP는 SSL/TLS와 통신하고 이 SSL/TLS가 TCP와 통신하게 된다.
  • 단점은 암호화 과정으로 인해 속도 저하가 발생한다.

 


 

📍 SSL/TLS(Secure Socket Layer/Transport Layer Security) 프로토콜

: SSL(Secure Socket Layer)과 TLS(Transport Layer Security)는 데이터 전송을 안전하게 하기 위한 프로토콜

 

  • TLS는 SSL의 후속 버전으로, 보안성과 성능이 개선된 형태
  • 정보를 암호화시키며, 대칭키와 비대칭키 암호화 방식 두 가지를 이용
  • Handshake과정에는 비대칭키 방식을 사용하고, 그 이후의 HTTPS 통신은 대칭키 방식을 사용한다.

 


 

📍 대칭키 암호화 방식

: 암호화 키와 복호화 키가 같은 알고리즘

 

  • 송신자와 수신자가 같은 키를 공유해야만 통신이 가능
  • 같은 키를 쓰기 때문에, 속도가 빠르고 연산 비용이 낮음
  • 키가 유출되면 누구나 내용을 복호화할 수 있기 때문에, 키를 안전하게 공유하는 방법이 매우 중요
  • 대표적: AES

 


 

📍 비대칭키(공개키) 암호화 방식

: 암호화 키(공개키)와 복호화 키(비공개키)가 다른 알고리즘

 

[통신 과정]

  1. 송신자가 메시지 m을 공개키(Kb+)로 암호화한다. → (Kb+) m
  2. 수신자가 받은 암호문을 자신의 비밀키(Kb-)로 복호화한다. → m = (Kb-)((Kb+) m))
  3. 다시 수신자가 답변을 보내고 싶으면 동일한 공개키로 암호화하면 된다.

 


📍 전자 서명

: 누가 데이터를 보냈는지 확인하는 방법

 

비대칭키 암호는 지정된 사람만 정보를 확인할 수 있도록 한다. 누가 데이터를 보냈는지 알고 싶으면 전자서명을 활용하면 된다.

 

다음과 같이 3가지 알고리즘으로 구성된다.

  1. 키 생성 알고리즘: 서명자의 키 쌍(공개키, 개인키)을 생성
  2. 서명 생성 알고리즘: 서명자는 메시지와 개인키를 통해 서명 생성
  3. 서명 검증 알고리즘: 수신자는 메시지, 공개키, 서명을 통해 인증 여부를 판별

 


📍 HTTPS 암호화 과정

  1. TCP 연결: 클라이언트와 서버 간에 TCP 연결을 설정한다.
  2. 클라이언트 헬로우: 클라이언트가 SSL/TLS 버전, 지원하는 암호화 방식, 랜덤 데이터를 포함한 메시지를 서버에 보낸다.
  3. 서버 헬로우: 서버는 클라이언트의 요청에 대한 응답으로 SSL/TLS 버전, 선택된 암호화 방식, 랜덤 데이터를 포함한 메시지를 보낸다.
  4. 서버 인증서 전송: 서버는 자신의 공개키가 포함된 인증서를 클라이언트에 전송한다. 클라이언트는 이 인증서를 CA(Certificate Authority)와 비교하여 유효성을 검증한다.
  5. 클라이언트 키 생성: 클라이언트는 비밀키를 생성하고, 이를 서버의 공개키로 암호화하여 서버에 전송한다.
  6. 세션 키 생성: 서버는 자신의 개인키로 암호화된 비밀키를 복호화하여 세션 키를 생성한다.
  7. 암호화된 통신 시작: 이후의 데이터 전송은 대칭키 암호화를 사용하여 진행된다.

CA(Certificate Authority): 공개키를 저장해 주는 신뢰성이 검증된 민간기업

 


 

📍 HTTP vs HTTPS 차이

  • HTTP의 동작 순서는 TCP → HTTP (평문 텍스트 전송)
  • HTTPS의 동작 순서는 TCP → TLS/SSL → HTTSP

⇒ TLS/SSL를 쓰느냐 안 쓰냐의 차이

⇒ 암호화 처리 유무의 차이

 

 


✨ 추가 질문

 


[ 왜 HTTPS Handshake 과정에서는 인증서를 사용하는 것일까요? ]


1. 서버의 신원을 검증하기 위해
클라이언트는 서버가 진짜 접속하려는 대상인지 확인해야 한다. 서버는 CA가 발급한 인증서를 보내고, 클라이언트는 이를 검증해 신뢰 여부를 판단한다.

2. 중간자 공격을 방지하기 위해
인증서를 통해 위조된 서버나 중간자의 개입을 막을 수 있다. 검증된 인증서 없이는 연결이 불가능하다.

3. 대칭키를 안전하게 교환하기 위해
HTTPS는 실제 통신에 대칭키를 사용한다. 이 대칭키를 서버의 공개키로 암호화해 전달하는데, 공개키는 인증서에 포함돼 있어 키 교환의 출발점이 된다.

 

[ SSL과 TLS의 차이는 무엇인가요? ]

TLS는 SSL의 후속 버전으로, 더 안전하고 최신 기술을 반영한 프로토콜이다.
현재는 TLS만이 표준으로 사용되고 SSL은 더 이상 사용되지 않습니다.

 

반응형

'⚙️ CS > 네트워크' 카테고리의 다른 글

[네트워크] DHCP  (1) 2025.05.20
[네트워크] SOP와 CORS & REST  (3) 2025.05.20
[네트워크] 소켓  (0) 2025.05.14
[네트워크] IP 주소 & 서브넷  (1) 2025.04.10
'⚙️ CS/네트워크' 카테고리의 다른 글
  • [네트워크] DHCP
  • [네트워크] SOP와 CORS & REST
  • [네트워크] 소켓
  • [네트워크] IP 주소 & 서브넷
dev-heyjin
dev-heyjin
  • dev-heyjin
    개발 기록
    dev-heyjin
  • 전체
    오늘
    어제
    • 분류 전체보기 (56)
      • 🎯 Programming (8)
      • 💪 Algorithm (16)
      • ⚙️ CS (31)
        • 네트워크 (15)
        • 운영체제 (15)
        • 데이터베이스 (0)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    DB
    데이터베이스
    해킹
    RDS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dev-heyjin
[네트워크] HTTPS 프로토콜
상단으로

티스토리툴바