본문 바로가기

기록/TIL

HTTPS :

HTTPS란?

HTTPS는 웹 브라우저와 웹 사이트 간에 데이터를 전송하는 데 사용되는 기본 프로토콜인 HTTP의 보안 버전이다. HTTPS는 데이터 전송의 보안을 강화하기 위해 암호화된다. 이는 사용자가 은행 계좌, 이메일 서비스, 의료 보험 공급자에 로그인하는 등 중요한 데이터를 전송할 때 특히 중요하다. 

 

HTTPS가 왜 사용될까?

https는 http의 보안 문제를 해결하기 위해 만들어졌다. http는 데이터를 암호화하지 않기 때문에, 데이터가 도중에 가로채질 수 있다. https는 데이터를 암호화하여, 데이터가 도중에 가로채져도 데이터를 해독할 수 없도록 한다.

 

그럼 HTTPS의 S는 뭐지?

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

HTTPS에서 S는 SSL(Secure Sockets Layer)로 보안 프로토콜이다.

 

SSL 인증서?

SSL 인증서는 제3자(인증기관,CA )가 클라이언트와 서버간의 통신을 보중해주는 전자문서이다. 클라이언트는 이 인증서가 유효한지를 판단하고, 유요하다면 작업을 수행하게 된다.

 

 

핸드셰이크(HandShake)란?

그 전에 SSL과 TLS는 동일하다는걸 알고 가자.
SSL은 TLS의 구버전 이름이지만, SSL이 워낙 유명하여 TLS보단 SSL로 불리는 일이 많다.

https://www.cloudflare.com/ko-kr/learning/ssl/what-happens-in-a-tls-handshake/

TLS 핸드셰이크는 클라이언트와 서버가 교환하는 일련의 데이터그램, 즉 메시지이다.

 

SSL/TLS Handshake의 정확한 단계는 사용되는 키 교환 알고리즘의 유형과 양측에서 지원한는 암호 제품군 유형에 따라 다르나 대부분 RSA 키 교환 알고리즘을 사용하므로, 그를 기준으로 한다.

 

  1. client hello : 클라이언트가 서버로 hello 메세지를 전송하면서 핸드셰이크를 시작한다. 이 메세지에는 클라이언트가 지원하는 TLS(SSL) 버전, 지원되는 암호 제품군, 그리고 "client random"이라고 하는 무작위 바이트 문자열이 포함된다.
  2. Server hello : 클라이언트 hello 메시지에 대한 응답으로 서버가 서버의 SSL 인증서, 서버에서 선택한 암호 제품군, 그리고 서버에서 생성한 또 다른 무작위 바이트 문자열인 "server random"를 포함하는 메시지를 전송한다.
  3. Verify server certificate : 클라이언트가 서버의 SSL 인증서를 인증서 발행 기관(CA)을 통해 검증한다. 이를 통해 서버가 인증서에 명시된 서버인지, 클라이언트가 상호작용 중인 서버가 실제 해당 도메인의 소유자인지를 확인한다.
  4. Client key exchange : 확인이 완료되면 클라이언트는 "The premaster secret"라고 하는 무작위 바이트 문자열을 공개 키로 암호화하여 전송한다. (클라이언트는 서버의 SSL 인증서에서 공개 키를 받는다.)
  5. Send client certificate : 만약 서버가 클라이언트의 인증서를 요구한다면 서버의 인증서와 같은 방식으로 암호화를 진행하여 함께 전송한다.
  6. Verify client certificate : 서버가 클라이언트로부터 받은 The premaster secret을 개인키를 통해 해독한다.
  7. Client finished : 클라이언트가 "client random", "server random", "The premaster secret"를 이용해 대칭키로 활용할 "세션 키"를 생성한다. 클라이언트가 세션 키로 암호화된 "finished" 메시지를 전송한다.
  8. Server finished : 서버가 "client random", "server random", "The premaster secret"를 이용해 대칭키로 활용할 "세션 키"를 생성한다. 서버가 세션 키로 암호화된 "finished" 메시지를 전송한다.
  9. Exchange messages : 핸드셰이크가 완료되고, 세션 키를 이용해 메세지를 주고 받는다.

 

HTTPS의 작동방식

1. 클라이언트와 서버 간의 핸드셰이크

클라이언트(일반적으로 웹 브라우저)가 서버에 연결 요청을 보내고, 서버는 자신의 공개키와 함께 응답한다.

2. ssl 정보 확인

클라이언트는 받은 인증서를 확인하고, 서버의 신원을 검증한다.

3. 공개키를 사용한 암호화

클라이언트는 받은 공개키를 사용해 정보를 암호화하고, 이 암호화된 정보를 서버에 전송한다.

4. 비공개키를 사용한 복호화

서버는 자신만이 가지고 있는 비공개키를 사용해 정보를 복호화한다.

5. 보안된 세션 유지

클라이언트와 서버는 안전하게 데이터를 교환할 수 있다.

 


-

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

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