TIL-37. HTTP와 HTTPS의 차이점

solarrrrr·2022년 1월 6일
0

Today I Learned

목록 보기
37/74

HTTP와 HTTPS가 무엇인가?

HTTP

  • HTTP(Hyper Text Transper Protocol)는 하이퍼 텍스트 전송 프로토콜의 약자이다.
  • 서로 다른 시스템 사이에 데이터를 주고받을 수 있게 해 주는 가장 기초적인 프로토콜을 말한다.
  • 주로 TCP를 사용하며 HTTP/3부터는 UDP를 사용하며 80번 포트를 사용한다.

HTTPS

  • HTTPS(Hyper Text Transper Protocol Secure)는 HTTP에 Secure가 붙었는데, 바로 보안이 추가된 걸 말한다.
  • 기존 HTTP는 서버로부터 브라우저로 전송되는 데이터가 암호화되지 않았었다. 이 보안 이슈 해결을 위해 나온 것이 바로 HTTPS이다.
  • SSL(보안 소켓 계층), SSL을 기초로 해 만든 TLS(전송 계층 보안)를 사용해 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있도록 도와주며 민감한 정보를 주고받을 때 도난당하지 않도록 도와준다.
  • TCP/IP 443포트를 사용한다.

HTTPS의 동작 과정

HTTPS는 암호화-복호화를 기반으로 전송되는 데이터를 보호한다.
이를 위해 공개키와 개인키가 사용되는데 이 둘은 한 쌍으로 움직인다.
이를 비대칭키 통신이라고 한다.

공개키는 다수가 가질 수 있지만 개인키는 특정 개인만 가질 수 있다.
공개키로 암호화한 데이터를 개인키로 복호화하면 개인키 소유자만이
해당 정보를 취득할 수 있다.

반대로 개인키로 암호화를 한다면 공개키로 복호화가 가능한데
이 경우는 공개키를 가진 사람 모두가 복호화 가능하다.

동작 과정은 아래와 같은 방식으로 이루어진다.

1. 서버

  • 비대칭키 방식의 통신을 위한 개인키, 공개키를 쌍으로 생성
  • 인증 서명 요청(CSR) 생성
    해시 알고리즘으로 해싱
    여러 데이터 담기(국가코드, 도시, 회사명, 이메일, 도메인 주소, 공개키 등)
    CA에 전달

2. CA(공인인증기관)

  • 서버로부터 받은 CSR에 CA의 개인키를 통해 전자서명한 SSL 인증서 발급 후 서버로 전송

3. 클라이언트

  • 클라이언트로부터 요청이 시작될 때 3-Way Handshake를 통해 연결을 시도한다.

SYN - SYN ACK - ACK의 과정으로
클라이언트와 서버 간에 TCP 연결을 위한 사전 시도를 의미한다.
클라이언트가 신호를 보내면 서버는 해당 신호를 잘 받았다고 응답하고
응답을 받은 클라이언트가 확인 응답을 해 주는 과정이다.

  • 3-Way Handshake 단계가 완료되면 그림의 노란색 단계인
    Client Hello 단계가 진행된다.
    클라이언트는 아래의 정보들을 서버로 보내게 된다.
    - 브라우저가 지원하는 암호화 방식 모음
    - 브라우저가 생성한 임의의 난수
    - 만약 SSL Handshake가 완료돼 생성된 세션 ID가 있다면 이것도 포함
    - 브라우저가 사용하는 SSL or TLS의 버전 정보

4. 서버

  • 서버는 클라이언트로부터 받은 정보를 바탕으로 아래 정보를 응답한다.
    - 브라우저가 지원하는 암호화 방식 중 하나 선택
    - CA로부터 받은 SSL 인증서
    - 서버가 생성한 임의의 난수

5. 클라이언트

  • 서버의 난수와 브라우저의 난수를 이용해 세션키를 생성하고 서버의 공개키로 암호화한 후 서버로 전송
    - 세션키를 통해 다음 통신부터는 SSL Handshake 과정을 거치지 않고 세션 ID만 서버로 보내 통신을 할 수 있으며 이 방식을 대칭키 방식이라고 한다.

3~5번 과정을 SSL Handshake라고 한다.

6. SSL Handshake 종료 및 HTTPS 통신 시작

HTTPS를 써야 하는 이유

HTTPS는 위에서 언급한 것처럼 데이터의 기밀성을 가지고 있으면서도
변조되지 않은 정보로 목적지에 도달하게 하는 무결성도 갖추고 있다.
또 웹사이트의 진위 여부를 인증을 통해 확인하기도 한다.

이 같은 보안 안전성 외에도 검색 우선순위를 제공하기도 한다.
우리가 대표적으로 사용하는 검색 포털 사이트들인 구글, 네이버, 다음 모두
검색 엔진 최적화(SEO: Search Engine Optimization)가 적용되어 있는데
이를 통해 https를 상위에 노출하고 있다.

profile
몰입

0개의 댓글