선릉역 1번 출구

HTTPS 본문

Computer/Network

HTTPS

choideu 2023. 2. 14. 22:34

HTTPS(hypertext transfer protocol secure) = http over tls

 

SSL 인증서

: 서버의 공개키와 비밀키를 생성

: 서버는 인증서를 발급받기 위해 CA(인증기관)에 서버의 공개키와 서버의 각종 정보를 보냄

: 인증기관은 서버로부터 받은 정보를 담아 SSL 인증서를 발급함

: 인증서를 암호화하기 위해 인증기관의 공개키와 비밀키를 생성하고, 비밀키를 이용해 SSL 인증서를 암호화함

 

Handshake 과정

  • 서버와 클라이언트가 통신을 연결할 때, 서로 악수를 통해 정보를 주고 받는 과정
  • 신뢰할 수 있는 서버인가?
  • 통신할 때 사용할 암호화 방식 교환

-> 궁극적인 목표(데이터의 암호화 알고리즘 결정, 주고 받을 암호화를 위해 동일한 대칭키를 얻음)

 

1. client hello

클라이언트에서 통신하고 싶은 서버로 연결을 시도하는 패킷 전송

  • 자신이 사용 가능한 cipher suite 목록을 보냄
  • session id
  • ssl protocol version

2. server hello

client hello 패킷에 대해 서버가 응답을 함

  • 클라이언트가 보낸 cipher suite 중 선택한 1개의 cipher suite
  • ssl protocol version
  • etc

3. server -> client로 보내는 certificate(Certificate, Server Key Exchange, Server Hello Done)

server hello이외에 클라이언트에 certificate라는 내용의 패킷을 보냄

  • server의 ssl 인증서 내용이 들어 있음
  • *server key exchange: 인증서에 서버의 공개키가 없다면 서버가 직접 전달함을 의미

4. client에서 ssl 인증서 검증

인증 기관은 ssl 인증서를 인증 기관의 개인키로 암호화함 -> 인증 기관의 공개키를 이용해서만 복호화 가능

*인증기관 공개키는 브라우저에 이미 내장되어 있음

 

5. client -> server 대칭키 전달

ssl 인증서를 통해 서버의 공개키를 획득

  • 공개키를 가지고 대칭키를 암호화해서 서버로 전달(=client key exchange)

6. server / client ssl handshake finished

서버와 클라이언트 모두 동일한 대칭키를 갖고 있어 통신할 준비가 완료된 상태

 

Q&A(chatgpt 활용)
1. 클라이언트가 서버 인증서를 검증하는 과정은 어떻게 이뤄지는가?
- 클라이언트는 서버로부터 받은 인증서에서 발급 기관의 이름을 추출합니다. 발급 기관은 해당 인증서를 발급한 신뢰할 수 있는 기관을 말합니다.
- 클라이언트는 자신이 가지고 있는 루트 인증 기관(Root CA)의 목록 중에서, 해당 발급 기관이 신뢰할 수 있는 기관인지를 확인합니다. 만약 신뢰할 수 있는 기관이 아니라면, 인증서 검증이 실패하고 연결이 종료됩니다.
- 클라이언트는 발급 기관의 공개키를 사용하여 서버 인증서에 서명된 디지털 서명을 검증합니다. 이를 통해, 서버 인증서가 발급 기관에 의해 발급되었으며, 그 내용이 변조되지 않았음을 확인할 수 있습니다.
- 클라이언트는 서버 인증서에 포함된 정보와, 서버와 연결된 도메인 이름이 일치하는지 확인합니다. 이를 통해, 인증서가 해당 웹 사이트를 나타내는 것인지를 확인할 수 있습니다.

2. 클라이언트는 루트 인증 기관의 목록을 가지고 있다고 했는데 이건 브라우저가 기본으로 가지고 있나?
- 대부분의 웹 브라우저는 미리 설치된 루트 인증 기관 목록을 가지고 있습니다. 이 목록에는 전 세계적으로 신뢰할 수 있는 루트 인증 기관들의 인증서가 포함되어 있으며, 브라우저는 이를 사용하여 HTTPS 통신 시 서버 인증서의 유효성을 검증합니다.
- 브라우저는 이러한 루트 인증 기관 목록을 주기적으로 업데이트하여, 새로운 루트 인증 기관을 추가하거나 만료된 인증서를 제거합니다. 이를 통해, 브라우저는 최신 보안 기술을 사용하여 웹 사이트와 안전하게 통신할 수 있도록 보장합니다.
- 물론, 사용자가 직접 루트 인증 기관을 추가하거나 제거할 수도 있습니다. 하지만 이는 보안 위험성이 있으므로, 신중하게 고려해야 합니다.
*클라이언트는 인증 기관의 공개키를 가지고 있음

3. client hello 과정에서 client는 cipher suite를 보내는데 어떤 형식인지 예시를 들어줘
- cipher suite: 대칭키 암호화, 비대칭키 암호화 및 메시지 인증 등 TLS 통신에 사용되는 다양한 보안 알고리즘의 조합으로 2바이트로 구성되어 있으며, 각각의 2바이트 값은 하나의 cipher suite임

*첫 번째 바이트는 cipher suite의 유형을, 두 번째 바이트는 해당 cipher suite에 사용되는 암호화 알고리즘의 조합
예를 들어, 0x00 0x35는 TLS_RSA_WITH_AES_256_CBC_SHA cipher suite를 나타냄 -> 여기서 0x00은 RSA 인증 방식을, 0x35는 AES 256 CBC 대칭키 암호화와 SHA-1 메시지 인증임

4. tls에서 서버의 공개키는 언제 얻나요?
- TLS에서 클라이언트는 서버의 공개키를 서버 인증서를 통해 얻음
- 클라이언트는 서버가 보내고 인증기관으로부터 인증된 인증서에서 서버의 공개키를 추출하여 사용

 

 

 

참고 사이트

https://nuritech.tistory.com/25

 

HTTPS 통신 원리 쉽게 이해하기 (Feat. SSL Handshake, SSL 인증서)

이 글을 쓰게 된 이유는,, 나의 평소 HTTPS 에 대한 지식은 HTTPS 가 암호화된 네트워크 통신 프로토콜이고 HTTPS 를 사용한 네트워크 통신에서는 주고받는 패킷을 까도 데이터가 암호화되어 있어 안

nuritech.tistory.com

 

'Computer > Network' 카테고리의 다른 글

HTTP에서 socket이 사용되는가?  (0) 2023.04.11
SSL VPN  (0) 2023.03.15
GET과 POST의 차이  (0) 2023.02.06
network 수업 정리(3) - end  (0) 2023.02.01
network 수업 정리(2)  (0) 2023.02.01
Comments