HTTPS와 SSL/TLS

이창윤·2022년 9월 18일
0
post-custom-banner

HTTPS란

우리가 흔히 알고있는 HTTP (HyperText Transfer protocol)는 OSI 7계층 중 응용계층에 위치하고 있는 인터넷에서 데이터를 주고 받을 수 있는 프로토콜이다.

HTTP는 데이터가 전송될 때 암호화되지 않기 때문에 내용이 그대로 노출돼서 보안에 취약하다는 단점이 있다. 이를 해결하기 위해 기존의 HTTP에 SSL을 추가해 보안이 강화된 프로토콜이 HTTPS이다.

SSL (Secure Socket Layer)

SSL은 인터넷 암호화 통신 프로토콜이다. SSL/TLS는 응용계층과 전송계층 사이에서 동작하는 독립적인 프로토콜이다.

응용계층의 HTTP 프로토콜에서 사용자의 데이터를 받고 전송계층으로 캡슐화되기 이전에 SSL 프로토콜에 의해 데이터가 암호화된다. 반대 과정도 마찬가지로 복호화를 하고 응용계층으로 보낸다.

즉, SSL 프로토콜만 적용하면 기존 통신과정에 영향을 미치지 않고 데이터의 암호화/복호화를 통해 보안 과정만 강화가 된다.

SSL에서는 암호화와 복호화를 두가지 방식을 혼합하여 사용한다.

  • 암호화: 공개키, 복호화: 비공개키 → 데이터를 암호화하여 보호하기 위한 목적
  • 암호화: 비공개키, 복호화: 공개키 → 인증을 위한 목적, 서버에서 비공개키로 데이터를 암호화해서 보내고 클라이언트에서 공개키로 복호화가 된다면 해당 서버는 신뢰할 수 있다는 인증과정을 거치게 된 것이다.

CA(Certificate Authority)

위 그림의 3번은 클라이언트가 서버에 접속을 요청하면 SSL 인증서를 응답으로 하는 과정이다.

SSL 인증서는 클라이언트가 접속한 서버가 신뢰할 수 있는 서버임을 보장하고 SSL 통신에 사용할 공개키를 클라이언트에게 제공한다.
이 인증서는 민간기업들 중 CA 기업이 제공하는데, SSL을 통해서 암호화된 통신을 제공하려는 서비스는 CA를 통해서 인증서를 구입해야 한다.

SSL 통신 과정

1. 클라이언트가 접속한 서버가 신뢰할 수 있는 서버임을 보장한다.

  1. 클라이언트는 서버에 접속해 CA의 SSL 인증서를 응답으로 받는다.
  2. 브라우저는 SSL인증서가 신뢰할 수 있는 CA기관의 인증서인지 확인한다. (복호화를 CA의 공개키를 사용 → 인증 목적)

2. SSL 통신에 사용할 공개키를 클라이언트에게 제공한다.

  1. 클라이언트와 서버의 3-way handshake 과정에서 클라이언트와 서버가 생성한 랜덤 데이터를 이용해 대칭키를 만든다.

    대칭키: 데이터의 암호화와 복호화를 하나의 키로 진행

  2. 클라이언트는 대칭키로 서버에 보낼 데이터를 암호화하고 SSL 인증서의 공개키를 이용하여 대칭키를 암호화한다.
  3. 암호화한 데이터와 암호화한 대칭키를 서버로 전송한다.
  4. 서버는 자신의 비밀키로 암호화된 대칭키를 복호화하고 해당 대칭키로 클라이언트가 보낸 암호화된 데이터를 복호화한다.

출처 및 참고

https://coding-start.tistory.com/208

post-custom-banner

0개의 댓글