http와 https의 차이

2024. 9. 16. 02:19머리속에 궁금했던 것들

HTTP(Hypertext Transper Protocol)

HTTP는 Application 계층에서 요청을 서버에 보내고 응답을 받는 프로토콜이다. 하지만 HTTP를 사용하기에 문제가 있는 점이 있는데 요청 및 응답이 평문으로 전송되어 중간에서 데이터 패킷 제 3자가 가로채고 읽을 수 있습니다.

 

HTTP의 보안 이슈를 해결하기 위해서 만든 것이 HTTPS(Hypertext Transper Protocol Secure)입니다.

 

HTTPS는 어떻게 작동하는가?

HTTPS는 요청 및 응답을 SSL와 TLS와 결합합니다. 이 과정을 아래에 설명합니다.

 

  1. 독립된 인증 기관에서 SSL/TLS 인증서를 획득합니다.
    여기서 말하는 독립기관은 SSL/TLS 인증서를 발급해주는 회사를 의미힙니다. 

    찾아보면 여러 회사가 존재하는데 배상금 금액, 발급 편의성등을 판단해 선택하면 됩니다. 

    https://www.sslcert.co.kr/guides/kb/28?page=4
  2. 브라우저와 SSL/TLS 인증서 교환
    브라우저는 서버에 요청을 보내어 SSL 인증서와 Public Key를 받게 됩니다. 받은 후 인증된 CA인지 유효일은 valid한지 확인 후 응답합니다. 
  3. 세션키 응답하기
    인증 완료 후 Client에서 Session키를 만들어서 Public Key로 암호화 해 서버에 응답합니다. 
  4. 웹서버는 Pirviate Key를 사용하여 메세지를 해독해 Session 키를 획득합니다. 
    이 세션키는 클라이언트 - 서버 통신에서 메세지 암호, 복호화에 사용됩니다. 
  5. 승인 메세지를 받으면 서버와 브라우저는 동일한 세션키를 사용해 암호화된 데이터를 송수신할 수 있습니다.
  6. 데이터 송수신에 세션키를 활용해서 데이터 암복호화가 됩니다. 

 

SSL과 TLS의 차이점

TLS는 SSL의 취약점을 개선하고 더 강력한 보안을 제공하는 프로토콜입니다. 

 

주요 차이점

 

1. SSL은 더 이상 사용되고 있지 않는 프로토콜이며 TLS는 더 강력한 암호화 방식을 제공하고 있음.

2. TLS는 최신 암호화 알고리즘과 키교환 방식을 제공합니다 

  무결성 확인 알고리즘: HMAC

  키 교환방식: Diffie-Hellman 키 교환 및 ECC(Elliptic Curve Cryptography)

 

3. 핸드쉐이크 과정

데이터 무결성을 확인하는데 HMAC 알고리즘을 사용해 더 신뢰성있게 과정을 완료할 수 있게 됐습니다.

 

4. 사용되는 버전

SSL 3.0은 취약점으로 인해 Drown 공격과 같은 것이 문제가 되며 더 이상 사용되지 않으며 TLS 또한 1.0, 1.1은 보안상의 이슈로 사용되고 있지 않고 1.2, 1.3 채택해 사용되고 있습니다. 

 

 

  • SSL 3.0: POODLE 공격다운그레이드 공격 등 여러 취약점이 발견되었으며, 더 이상 사용되지 않습니다.
  • TLS 1.0: BEAST 공격, 취약한 해시 함수, 레거시 암호화 방식 등으로 인해 현재는 안전하지 않은 프로토콜로 간주됩니다.
  • TLS 1.1: RC4 스트림 암호의 취약성, SHA-1 등의 취약한 해시 함수 사용, CBC 모드 문제 등이 남아 있어 더 이상 사용되지 않습니다.

5. 세션키 교환 방식 차이

 

RSA 교환 방식: 

클라이언트에서 세션키를 만든 후 public 키를 활용해 암호화해서 전달 후 private key를 통해 복호화해서 사용하는 방식

 

Diffie-Hellman 방식:

각자 private key를 가지고 있는 입장에서 public key만 교환해서 동일한 session key를 만드는 방식입니다. 

 

이 방식으로 인해 각각 세션키를 네트워크 상으로 교환이 필요없어 안전하다고 할 수 있다.

 

Elliptic Curve Diffie-Hellman Ephemeral (ECDHE):

타원 곡선 암호화를 사용해 더 작은 리소스로 높은 보안성을 제공한다. 성능이 뛰어나고 Perfect Forward Secrecy(PFS)를 보장한다. 

 

PFS: 세션이 종료 후 세션키가 노출되지 않는 것을 보장함.

 

결론

보안적인 이유로 HTTPS의 탄생 이유 및 작동 방식에 대해서 알아보았다. 또한 SSL/TLS의 차이를 이해하며 SSL은 더 이상 사용되지 않고 있고 TLS는 1.2 이상의 버전을 사용하는 것을 권장함을 알았다. 

 

키 교환 방식에서 RSA는 더 이상 사용되지 않고 있고 Diffie-Hellman 방식 및 ECDHE 방식이 지원되고 있고 데이터 무결성을 HMAC을 통해 지원되는 것을 알았다.

 

따라서 HTTPS를 통해 웹서비스를 개발해서 안정적인 서비스를 만들자

 

물론 자세하게 다루지 않은 부분이 있는데 이는 너무 보안적인 애기라 다음편에 작성하도록 하겠다.

 

그럼 2만

 

 

 

'머리속에 궁금했던 것들' 카테고리의 다른 글

Clean Architecture(DDD?)  (1) 2024.09.17
L4, L7 Loadbalancer 차이  (0) 2024.09.10
서버 성능 테스트(1)  (0) 2021.11.18
Go, Java Garbage Collector  (0) 2021.06.08