Computer science/네트워크

[네트워크]Https 동작과정 ( SSL, TLS, 대칭키, 공개키,CA)

JiWonSon 2023. 2. 20. 17:58

1.HTTPS?

1-1. 정의

HTTPS는 기존 HTTP레이어에서 SSl 또는 TLS프로토콜을 얹어 평문 데이터를 암호화하고

암호화, 인증, 무결성 보장을 통해 더 안전히 만들어 주는 프로토콜이다.

 

1-2. 목적

SSL이나 TLS와 같은 프로토콜을 사용하여 인증서를 통해 메시지를 암호화하고, 통신하고자 하는 상대방이 맞는 지 인증하는 것이다.

 

2.SSL과 TLS

 SSL(Secure Sockets Layer)는 TLS(Transport Layer Security)의 과거 명칭이다.

즉, TLS는 SSL을 보다 안전하고, 프로토콜을 더 정확하고 안정성 높이도록 하기 위해 고안되었다.

 

구체적으로는 TCP,UDP와 같은 일반적인 인터넷 통신에 안전한 Layer(계층)을 추가하는 것이다. 이 기술을 웹 서버에 적용한 것이 우리가 흔히 부르는 SSL/TLS 인증서 라고 한다. 

 

3. 대칭키, 공개키

1-1. 대칭키

대칭키 암호화 방식은 하나의 키로 평문을 암호화하고 다시 암호문을 원래의 평문으로 복호화할 때 사용하는 방식이다.

명칭 그대로 키를 단 하나만 사용하는 것, 키가 대칭인 것이 특징이다.

 

- 암호화 헀던 키가 노출되면 암호가 해제된다.

 

1-2. 공개키

공개키 암호화 방식은 공개키, 개인키 두 개의 키를 한 쌍으로 각각 암호화/복호화에 사용하는 것이다. 일반적으로 공개키로 암호화한 것을 개인키로 복호화한다. 

 

- 공개키가 노출되어도 개인키가 없으면 암호를 해제할 수 없다.

 

*  공개키 방식은 클라이언트와 서버가 서로 인증하려고 교환하기 위한 키를 암호화하고,

   대칭키 방식은 서로 인증한 후 메시지를 암호화해서 지속적으로 전송한다.

 

4. CA 인증기관 (Certificate authority)

 공개키 방식은 해당 Public Key가 진짜인지 확인 할 수 없다. 따라서 Public Key가 진짜임을 증명해주는 제 3자 기관을 CA라고 한다.

CA는 아무 기업이나 할 수 있는 것이 아니고 신뢰성이 엄격하게 공인된 기업들만이 참여할 수 있다.

SSL을 통해서 암호화된 통신을 제공하려면 CA를 통해서 인증서를 구입해야 한다.

이렇게 CA가 Public Key라고 인증한 인증서를 SSL인증서라 부른다.

 

5. CA 인증과정

 

1. 서버에서 인증 서명 요청서(CSR) 생성

 

1-1) Server에서 Public Key와 Private Key를 쌍으로 생성한다.

1-2) Server에서 인증 서명 요청서(CRS)를 만든다. (SHA256 같은 해쉬 알고리즘으로 해쉬 수행한다.)

 

 

2. CA - SSL 인증서 발급

 

3. 서버 - SSL 인증서 받음

 

4. 클라이언트 - SSL Handshake 첫번째 요청

 

4-1) Client가 요청을 하게 되면, 가장 먼저 Server에 3-Way Handshake를 통해 연결을 시도한다.

 

→ ex) 브라우저 주소창에서 http://.naver.com을 치면, HTTP는 TCP의 일종이니 TCP 연결을 위한 3-Way Handshake를 먼저 수행한다.

 

4-2) 3-Way Handshake를 연결이 완료되면, 클라이언트가 Client Hello 단계를 수행

 

HTTPS를 사용하는 것을 알게 된 클라이언트는 Client Hello 단계에서 밑의 정보를 보낸다.

 

5. 서버 - SSL HandShake 두번째 요청

 

5-1) Client가 보내온 Client Hello 패킷을 받아, 밑의 정보를 Client에게 응답한다.

- 브라우저가 지원하는 암호화 방식중에서 하나를 선택해 클라이언트로 전달- 서버가 자신의 ssl인증서를 클라이언트로 전달

 

 

6. 클라이언트 - SSL HandShake의 세 번째 단계 : Premaster Secret 생성

 

6-1) 클라이언트는 서버의 SSL 인증서가 믿을만한지 확인한다.

 

Client가 SSL 인증서(CA의 Private_key로 해쉬(서버정보))를 CA의 Public Key로 디코딩해본다. 그러면 해쉬(서버정보)의 값을 얻을 수 있다. 그리고 서버에 대한 정보를 Hash화 해서 서로 일치하는 지 체크한다. 이를 통해 SSL 인증서가 위조 됐는 지 여부를 체크할 수 있다.

브라우저 내부에 CA의 Public Key가 저장되어 있다.

 

7. 서버/클라이언트 - SSL HandShake 종료 & HTTPS 통신 시작한다.

 

 

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

[네트워크] 동기화 예제  (0) 2023.03.22
[네트워크] Streaming service  (0) 2023.02.04