HTTP vs HTTPS

Engineer Edlin·2022년 10월 19일
1

Network

목록 보기
3/3
post-thumbnail

1. HTTP (Hyper Text Transfer Protocol)

  • 데이터를 주고 받기 위한 프로토콜
  • Stateless : 상태 정보를 저장하지 않는다.
  • 요청에 대한 응답을 받으면 연결이 끊긴다.
  • 매번 새로 연결(인증)을 해주어야 하기 때문에 번거롭다.

2. HTTPS

How Https Works 를 참고하여 정리한 내용입니다.

  • HTTP는 평문을 전송하기 때문에 보안에 취약하다는 단점이 있다.
  • 이때 보안에 취약하다는 것은 정보가 제 3자에 의해 조회되거나 탈취될 수 있다는 것이다.
  • HTTPS에서 HTTP는 SSL과 통신하고 SSL이 TCP와 통신하도록 데이터를 암호화함으로써, 안전성을 확보할 수 있도록 하였다.

    SSL(Secure Socket Layer): 데이터 보호를 위한 개발 통신 규약


1) 왜 HTTPS를 사용하는 것일까?

① 프라이버시

  • HTTPS에서 프라이버시란 누구에게도 데이터가 조회될 수 없는, 엿들을 수 없는 것을 의미한다.

② 무결성 (Integrity)

  • 데이터가 훼손되거나 변경되지 않았음을 보장한다.
  • 즉, man-in-the-middle-attack이라는 중간자 공격이 없다.

③ 인증 (Identification)

  • 메시지가 컴퓨터로부터 왔음을 증명한다.
  • 디지털 서명 (합법적 기관에서 발행한 SSL) 이 메시지와 함께 동봉되어 전달되면서 메시지가 컴퓨터로 왔음을 보장한다.


2) Encryption 알고리즘 2가지

  • 프라이버시, 무결성, 인증을 제공하기 위해 HTTPS는 Encryption이 필요하다.

① 대칭키

  • 메시지를 암호화하고 복호화하는데 하나의 키만 필요하다.
  • 브라우저에 메시지를 암호화하여 보낸다고 할 때, 복호화하는 쪽에서 암호화한 키의 복제본을 가지고 있어야 한다.
  • 키를 가진 누구든 메시지를 복호화할 수 있다는 단점이 있다.
  • 단점을 극복하기 위해 몇 번의 암호화 과정을 거치면 되지만 키 보관을 어떻게 할 것인가 하는 문제가 존재한다.

② ✔ 비대칭키

  • 두 개의 키를 가지고 있다.
  • 한 키는 public, 다른 키는 private 이다.
  • public 키는 누구와도 공유 가능하지만, private 키는 공유되어서는 안된다.
  • 암호화 시, public key를 사용한다.
  • 복호화 시, private key를 사용한다.
  • 보안 측면에서 좋을 뿐만 아니라, private key를 가진 사람이 인증받은 사용자만이 암호를 해석할 수 있기 때문에 Identification 역할을 한다.


3. HandShake

  • 브라우저와 서버 사이 연결을 위한 합의를 거치는 과정

1) 과정

  • Client에서 AKA를 서버에 보낸다.
    • 브라우저는 자신이 지원 가능한 SSL/TLS 버전과 어떤 알고리즘 리스트를 전송한다.
  • Server에서 응답한다.
    • Server에서 최적의 SSL/TLS 버전과 알고리즘을 골라 certificate (인증서)를 응답하고 이 때, 데이터를 암호화하기 위한 공개키를 함께 전송한다.
  • Client는 Server로 부터 받은 공개키를 이용하여 자신이 생성한 pre-master key를 암호화한 뒤 Server에 다시 보낸다.
  • Server는 자신이 가진 개인키로 복호화한 뒤, pre-master key를 획득하여 가지고 있는다.

    • 이 때, Client와 Server 사이 신뢰있는 연결은 형성되었지만, 어떤 메시지도 암호화되지 않았다.
  • Client는 메시지를 pre-master key(대칭키)를 사용해 암호화하여 Server로 전송한다.



4. HTTPS, SSL, TLS와 다른점

윗부분에서 살펴본 HTTPS와 HTTP의 차이점에 대해 다시 정리하고 SSL과 TLS가 무엇인지 서술합니다.

  • HTTPS: HTTP의 암호화된(보호된) 버전
  • HTTP: 웹 브라우저와 웹 서버 사이 정보를 교환하고 대화하기 위해 사용되는 규약
  • HTTP로 전송되어지는 데이터를 SSL/TLS로 암호화하는 것을 HTTPS라고 한다.

1) 그렇다면, SSL과 TLS란 뭘까?

  • SSL : Secure Sockets Layer
    • Netscape에서 만들어진 규약(Protocol)

      최초 버전은 release되지 않았고, version2부터 1995년 브라우저 Netscape 1.1과 함께 배포되었다.

  • TLS: SSL의 새로운 이름으로 Transport(전송) 계층 보안을 위한 규약 (SSL 3.1)
    • SSL과의 혼란을 피하기 위해 2015년 SSL3.0 은 폐지되었다.


5. Certificate Authority (CA)

  • 3가지 목적을 가진 제 3 조직: 인증서 발행과 인증에 관여
  • 인증서(certificate)를 발행한다.
  • 인증서 소유자의 ID를 확인한다.
  • 인증서의 증명을 제공한다.

    애플, 윈도우, 모질라는 자신의 root stores를 가지고 있어 컴퓨터에 미리 관련 내용이 설치되어있다. root stores를 통한 인증서만이 신뢰받을 수 있다. 브라우저에서 다운로드 받아진 인증서는 인증서로서의 효력을 발휘하지 못한다.

1) 인증을 위한 3가지 방법

  • 인증서는 도메인 이름을 검증한다.
  • 조직을 검증한다.
  • 확장된 유효성 검사 : 인증서는 사업에 대한 철저한 검증을 진행한다.
profile
담대하게 도전하고 기꺼이 실패를 받아들이는 개발자

0개의 댓글