HTTPS와 SSL/TLS 프로토콜

hzn·2022년 11월 12일
0

HTTP / 네트워크

목록 보기
3/9
post-thumbnail

HTTPS

  • HTTP Secure의 약자
  • 기존의 HTTP 프로토콜을 더 안전하게(Secure) 사용할 수 있음을 의미
  • HTTPS는 HTTP 요청과 응답으로 오가는 내용을 암호화.
  • HTTPS 요청 및 응답은 중간에 제 3자에게 데이터가 탈취되더라도 그 내용을 알아볼 수 없다.
  • SSL/TLS 프로토콜을 사용해 서버 인증과 데이터 암호화를 진행
  • HTTPS = HTTP + SSL/TLS 프로토콜
  • 패킷 분석 프로그램 wireshark를 이용해 확인한 HTTP 요청
    👉🏽 email, password 등의 값을 그대로 볼 수 있다.
  • 동일한 요청을 HTTPS 프로토콜로 보냈을 때
    👉🏽 데이터 암호화됨

참고: 암호화 방식

  • 데이터를 암호화 할 때에는 암호화할 때 사용할 키, 복호화(암호화한 키를 해석)할 때 사용할 키가 필요.
  • 암호화와 복호화할 때 사용하는 키가 동일하다면 대칭 키 암호화 방식, 다르다면 공개 키(비대칭 키) 암호화 방식이라고 한다.

대칭 키 암호화 방식

  • 하나의 키만 사용 (동일한 키로 암호화, 복호화)
  • 장점 : 연산 속도가 빠르다
  • 단점 : 키를 주고 받는 과정에서 탈취당했을 경우 암호화가 소용없어짐.

공개 키(비대칭 키) 암호화 방식

  • 두 개의 키 사용 (공개 키, 비밀 키)
  • 암호화 할 때 공개 키, 복호화 할 때 비밀 키 사용
    (SSL/TLS에서 CA 인증서는 반대ㅠ)
  • 보통 클라이언트가 공개 키, 서버가 비밀 키 가짐
  • 장점 : 보안성이 좋음 (공개 키가 탈취 당해도 비밀 키가 없으면 복호화할 수 없음)
  • 단점 : 대칭 키 방식보다 더 복잡한 연산이 필요. 더 많은 시간 소모


SSL/TLS 프로토콜

  • HTTPS가 서버 인증과 데이터 암호화에 사용하는 프로토콜
  • 서버와 클라이언트간의 CA를 통해 서버를 인증하는 과정과 데이터를 암호화하는 과정을 아우른 프로토콜
  • HTTP 통신을 하는 소켓 부분에서 SSL 혹은 TLS라는 프로토콜을 사용
    (TLS는 SSL이 표준화되며 바뀐 이름. 사실상 같은 프로토콜)

SSL/TLS의 특징

  • CA를 통한 인증서 사용
  • (대칭 키, 공개 키) 두 가지 암호화 방식을 모두 사용

인증서와 CA(Certificate Authority)

  • HTTPS를 사용하면 브라우저는 서버의 응답과 함께 전달된 인증서를 확인할 수 있다.
  • 인증서는 서버의 신원을 보증해준다.
  • CA(Certificate Authority) : 인증서를 발급해주는 공인된 기관

1. 인증서 발급 받기

1) 서버는 CA로 서버의 정보공개 키 전달.
2) CA는 서버의 공개 키와 정보를 CA의 비밀 키로 암호화하여 인증서 발급

👉🏽 서버는 암호화된 인증서(CA 공개 키로 복호화 가능) 가지게 됨

2. 클라이언트의 인증서 확인

3) 서버는 클라이언트에게 요청 받으면 암호화된 인증서 보내줌
(🌈 클라이언트(브라우저)는 CA들의 리스트CA 공개 키를 기본으로 내장하고 있음)
4) 클라이언트는 인증서가 리스트에 있는 CA가 발급한 것인지 확인하고 CA 공개 키를 이용해서 인증서 복호화
5) 클라이언트는 해당 서버가 신뢰할 수 있는 서버임을 알게 되고, 서버의 정보서버 공개 키를 가지게 된다.

👉🏽 클라이언트가 서버의 정보와 서버 공개 키(이후 대칭 키 암호화 하는데 사용)를 가지게 됨

3. 서버 공개 키를 이용한 대칭 키 전달

6) 클라이언트는 서버 공개 키를 이용해 데이터를 주고 받을 때 사용할 대칭 키를 암호화해서 서버에 전달
7) 서버는 전달받은 암호화된 대칭 키서버 비밀키로 복호화

👉🏽 클라이언트와 서버가 동일한 대칭 키(이후 데이터 암호화/복호화 하는데 사용)를 갖게 됨

4. 대칭 키 사용해 데이터 암호화/복호화

8) HTTP 요청과 응답을 주고 받을 때 대칭 키를 사용해 데이터를 암호화해서 전달하고 복호화함.

  • 대칭 키 자체는 오고가지 않기 때문에 키가 유출될 위험이 없음.
  • 요청과 응답이 중간에 탈취되어도 복호화 할 수 없다.

0개의 댓글