HTTPS 암호화

DY·2022년 9월 8일
0

CS

목록 보기
2/10

Hyper Text Transfer Protocol Secure

  • HTTP 보다 안전함

    • HTTP 요청과 응답으로 오가는 내용을 암호화 하기 때문
  • 'wireshark'라는 패킷 분석 프로그램 으로 패킷을 분석하면, HTTP로 주고받는 데이터는 원본 그대로 볼 수 있고 HTTPS는 같은 요청이더라도 데이터가 암호화 되어있는걸 알 수 있다.

암호화 원리

  • 암호화에는 두가지 키가 필요하다. 암호화할 때 사용하는 키, 복호화 할때 사용하는 키
    • 암호화, 복호화가 같은 키라면 '대칭 키' 암호화 방식, 다르면 두개의 키가 존재하므로 '비대칭키' 암호화 방식 또는 공개키 암호화 방식이라고 한다.

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

  • 두개의키가 필요하고 각각 공개키, 비밀키라고 부른다
    • 공개키는 누구나 접근가능한 키로 공개키를 이용해서 암호화한 데이터를 보내면 비밀키를 가진 사람만 복호화 할수 있다.
      • 보통 보내는쪽이 클라이언트 받는 쪽이 서버가 되고 서버를 해킹해서 비밀키를 가져가지 않는이상 노출될일은 없다.
  • 대칭키방식은 암호화한데이터를 탈취하면 같은 대칭키로 복호화할수 있으므로 비대칭키 방식은 대칭키 방식보다 보안성이 좋다. 하지만 복잡한 연산이 필요하므로 처리시간이 더필요하다.

HTTPS 암호화 방식

TLS

  • HTTPS는 SSL 또는 TLS프로토콜을 사용하여 서버인증과 데이터 암호화를 진행한다.
    • CA를 통한 인증서 사용
    • 대칭키, 공개키 암호화 방식을 모두 사용

CA ( Certificate Authority )

  • 인증서를 발급해주는 공인된 기관들을 CA라고 한다.
  • HTTPS를 사용하는 브라우저는 서버의 응답 + 인증서를 확인한다.
    • 인증서는 서버의 신원을 보증해 준다.

인증서 발급 절차

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

클라이언트의 인증서 복호화 과정

  1. 클라이언트가 서버에 인증서 요청
  2. 서버는 CA에게 발급받은 인증서 전송
  3. 클라이언트 브라우저에 내장된 CA리스트로 CA가 발급한 인증서인지 확인한다.
  4. 검증된 인증서라면 브라우저에 내장된 CA공개키로 인증서를 복호화 한다.
  5. 복호화가 성공하면 신뢰할 수 있는 서버고 실패하면 인증서는 신뢰할수 없는 인증서 이다.

대칭 키 전달 과정

  • 공개키(비대칭키)로 데이터를 주고받으면 복잡한 연산으로 인해 시간이 많이 소비된다 따라서 공개키를 이용하여 대칭키를 주고 받을 때 사용하고 실질적인 통신은 대칭키를 이용하여 한다.
  1. 클라이언트가 공개키로 대칭키를 암호화하여 서버에 전송한다.
  2. 서버는 서버의 비밀키로 클라이언트가준 대칭키를 복호화하고 이제 대칭키로 통신한다.
  3. 클라이언트가 공개키로 암호화한 대칭키를 중간에 가로채도 서버의 비밀키가 없으면 복호화를 할 수 없으므로 안전한다.
  4. 또한 대칭키 자체는 오고가지 않기 때문에 중간에 가로챌 수 없다.

이미지 출처 : https://www.stevenjlee.net/2020/11/01/%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-http-vs-https-%EA%B7%B8%EB%A6%AC%EA%B3%A0-ssl-secure-socket-layer/

정리

서버와 클라이언트간의 CA를 통해 서버를 인증하는 과정과 데이터를 암호화하는 과정을 아우른 프로토콜을 SSL 또는 TLS이라고 말하고, HTTP에 SSL/TLS 프로토콜을 더한 것HTTPS라고 한다.

사설 인증서

  • mkcert 프로그램으로 사설인증서를 만들 수 있다.
  • ngrok을 이용하여 HTTPS로 터널링 할 수 있다.(HTTP로 만들어진 서버를 HTTPS로)
profile
화면에 보이는 모든것에 관심이 있습니다. 개발하면서 고민했던것들, 공부했던걸 기록하는 저장소입니다.

0개의 댓글