본문 바로가기
HTTPS

💿 HTTPS

by frontChoi 2025. 11. 4.
반응형

⌨️ HTTP의 약점

  • 평문(암호화 하지 않는) 통신이기 때문에 도청가능
    • 인터넷은 전세계를 공유하고 있는 네트워크 구성이유때문
  • 통신 상대를 확인하지 않기때문에 위장가능
    • 누가나 리퀘스트 할 수 있다
    • 어디에서 누가 리퀘스트 할 수 있는지는 알 수 가 없다
  • 완전성을 증명할 수 없기 때문에 변조가능
    • 완전성 : 정보의 정확성
    • 리퀘스트나 리스폰스에서 발신한 후에 받는 시점에 정보가 위조 됐다도 하더라도, 이 사실을 알 수 없다

 

🖥️ HTTP + 암호화 + 인증 + 완전성 = HTTPS

  • HTTPS는 SSL의 껍질을 쓴 HTTP 이다 
  • 기존 HTTP 구조

HTTP 구조

  • HTTPS 구조

HTTPS 구조

📠 암화화 방식

SSL를 사용하기 전에 두가지 암호화 방식에 대해 이해를 할 필요가 있습니다.

SSL를 사용하기 위해서는 "공통키","공개키" 방식을 이해해야 합니다

공통키

  • 암호화 / 복호화시에 같은 키를 이용하는 것을 공개키 방식
  • 공개키 암호화의 문제 : 키를 같은것을 공유해야 하는데, 키를 공유하는 과정에서 누군가 탈취가 가능하다

공개키

  • 공개키와 비공개키를 사용하며, 공개키는 외부에 공개되어도 되지만, 비공개키는 외부에 노출이 되면 안되는 키이다.
  • 공개키/비공개키는 한 쌍이며, 공개키를 외부에 전달하여, 공개키를 통해 암호화하고 비밀키를 통해 복호화를 한다

 

 

🎚️ HTTPS 하이브리드 시스템

  • 메세지를 주고 받을때마다 공개키 방식을 사용할 경우, 처리속도가 느려짐 그리하여 공통키를 공개키를 이용하여 암호화하여 전달 , 이후에는 공통키를 통해 암호화/복호화

공통키 + 공개키

🎛️  공개키를 어떻게 “안전하게”전달할 것인가

HTTPS는 공개키를 이용을 하지만, 공개키 조차 중간에 탈취할 가능성이 있다.

그리하여 CA를 통해 공개키를 검증하는 방식을 사용한다

CA : 클라이언트와 서버가 신뢰하는 인증기관

 

아래 그림처럼 서버의 공개키를 인증기관에 전달하고 서버의 공개키를 제출하면 인증기관에서 공개키 + 디지털서명을 전달하며,

공개키 + 디지털서명을 클라이언트에게 전달한다. 디지털서명은 브라우저내의 인증기관의 공개키를 활용하여 검증한다

 

 

HTTPS 통신과정

 

1.HandShake : Client Hello

  • SSL버전지정, 암호화 방식을 전달

2.HandShake : Server Hello

  • SSL버전 지정,암호화방식 전달(여기서는 클라이언트에서 제공한 SSL방식,암호화 방식 선택된것을 전달)

3.HandShake : certificate

  • 공개키 증명서 전달

4.HandShake : Server Hello Done

  • 최초의 SSL 협상 완료

 

5.HandShake : Client Key Exchange

  • 통신을 암호화 하는데 사용하는 Pre Master Secret 전달
    • Pre Master Secret : Master Secret를 계산하기 위한 값이며, Master Secret는 데이터암호화 하는데 사용된다

6.Change Cipher Spec

  • 암호화키를 사용하겠다는 신호

7.HandShake: Finished

 

8.Change Cipher Spec

  • 서버에서 암호화키를 사용하겠다는 신호

 

9.HandShake : Finished

  • 서버에서 부터 Finished 전달

10.HTTP Request

 

11.HTTP Response

 

12.Cloes-notify

  • 클라이언트가 접속을 끊음
반응형

댓글