HTTP? HTTPS?

김재현·2024년 1월 26일
1

TIL

목록 보기
76/88
post-thumbnail

웹사이트를 만들었고 AWS를 통해 배포하였다.

그런데 HTTPS를 사용하여 보안을 강화하라는 요구사항이 생겼다!
HTTPS? 익숙하게 들어보긴 했는데 둘이 무슨 차이가 있는 것일까?

HTTP란?

'Hypertext Transfer Protocol' 의 약자로, 웹 서버와 웹 클라이언트 간에 데이터를 전송하는 데 사용되는 텍스트 기반의 프로토콜이다.
주로 웹 브라우저와 웹 서버 간에 HTML 페이지, 이미지, 동영상 등을 전송하는 데 사용되며 기본적으로 보안이 없으며, 데이터가 암호화되지 않기 때문에 제3자가 정보를 쉽게 볼 수 있다.

HTTPS란?

'Hypertext Transfer Protocol Secure' 의 약자로, HTTP의 보안 버전으로, 보안 소켓 계층(SSL) 또는 전송 계층 보안(TLS) 프로토콜을 사용하여 데이터를 암호화한다.
인증서를 사용하여 서버와 클라이언트 간의 통신을 안전하게 보호하며, 이를 통해 데이터가 도청되거나 조작되는 것을 방지한다.

S가 Secure Socket, 보안 통신망을 의미한다.

  • 한마디로 HTTPS는 암호화를 사용하는 HTTP의 보안 강화 버전이라는 것!

좀 더 자세히 들여다 보자면...

HTTP와 HTTPS의 구조

HTTP의 구조

HTTP는 애플리케이션 레벨의 프로토콜(통신 규약을 의미한다)로 TCP/IP 위에서 작동한다. HTTP는 상태를 가지고 있지 않는 Stateless 프로토콜이며 Method, Path, Version, Headers, Body 등으로 구성된다.

HTTPS의 구조

HTTPS는 HTTP 프로토콜을 기반으로, SSL(Secure Sockets Layer) 또는 최신 버전의 TLS(Transport Layer Security) 프로토콜을 사용한다.
HTTPS는 대칭키 암호화 방식과 비대칭키 암호화 방식을 모두 사용한다.

대칭키 암호화 / 비대칭키 암호화

대칭키 암호화는 클라이언트와 서버가 동일한 키를 사용해 암호화/복호화를 진행하기에 키가 노출되면 매우 위험하지만 연산 속도가 빠르다.
비대칭키 암호화는 1개의 쌍으로 구성된 공개키와 개인키를 암호화/복호화 하는데 사용하며, 키가 노출되어도 비교적 안전하지만 연산 속도가 느리다는 단점이 있다.

따라서 HTTPS는 처음에 대칭키를 주고받을 때만 비대칭키로 암호화해서 주고받고, 그 이후에는 대칭키로 암호화한 데이터를 주고받는 것이다!

HTTPS의 통신 구조

  1. 클라이언트 요청
    클라이언트(웹 브라우저)가 HTTPS로 액세스하려는 서버의 URL을 입력

  2. 서버 인증
    클라이언트는 서버에 연결하여 서버의 공개 인증서를 요청
    서버는 공개 인증서를 클라이언트에게 제공

  3. 대칭키(=세션키) 교환
    클라이언트는 서버가 제공한 공개 인증서를 사용하여 서버의 공개 키를 확인
    클라이언트는 자체적으로 임시의 대칭키(=세션키)를 생성

    클라이언트는 자신이 갖고 있는 이 대칭키를 공개키로 암호화하여 서버에 전달
    (서버는 개인키를 사용하여 암호화된 대칭키를 복호화하여 사용 할 수 있게 됨)
    (해커는 개인키가 없기 때문에 암호화된 대칭키를 복호화해서 사용 할 수 없음!)

  4. 암호화된 통신
    클라이언트는 생성한 임시 대칭 키를 사용하여 서버에게 메시지를 암호화하여 전송
    서버는 자신의 개인 키(=비대칭키)를 사용하여 메시지를 해독하고 클라이언트에게 응답을 암호화하여 전송

  5. 세션 종료
    통신이 끝나면 세션 키 폐기


인증기관이 하는 일

아래 세가지를 확인하여 해당 서버를 신뢰 할 수 있는지를 판단한다.

  1. 인증서 발급
  2. 인증서 소유자 신원 확인
  3. 인증서 유효성 검증

그렇기 때문에 클라이언트는 공개 인증서를 전달받은 후,

  1. 신뢰할 수 있는 CA에 의해 발급되었는지,
  2. 유효 기간 내에 있는지,
  3. 인증서의 도메인 이름이 클라이언트가 접속하려는 서버의 도메인 이름과 일치하는지

등을 확인할 수 있는 것이다.


HTTP와 HTTPS가 무엇인지, 그리고 그 구조에 대해 알아봤다.
HTTPS를 적용하는 것은 검색을 통해 따라서 진행했으며 큰 어려움은 없었다!

출처

관련 포스팅

profile
I live in Seoul, Korea, Handsome

0개의 댓글