카테고리 없음

HTTPS 정리

코드냠냠꿀꺽 2022. 4. 11. 10:26

HTTPS란??

http 프로토콜에 SSL(Secure Sockets Layer) 기술을 더한 것

HTTPS 사용 이유

  1. 내가 사이트에 보내는 정보를 다른 누군가가 훔쳐보지 못함
  2. 접속한 사이트가 진품인지, 신뢰할 수 있는 사이트인지 판별

→ 기관으로부터 검증된 사이트만 주소에 https 사용이 허가됨

대칭키

메세지를 보내는 쪽(암호화하는 쪽)과 받는쪽(복호화하는 쪽)이 같은 키를 사용

→ 대칭키가 노출되면 보안의 의미가 없다.

비대칭키(공개키)

메세지를 보내는 쪽(암호화하는 쪽)과 받는쪽(복호화하는 쪽)이 다른 키를 사용

💡 개인키로 암호화 하면 공개키로 복호화 가능
    공개키로 암호화 하면 개인키로 복호화 가능

⇒ 신뢰할 수 있는 기관에서 공개키만 검증해준다면 만약 신뢰할 수 없는 사이트에서 접근 해 올 경우 해당 공개키로 열어보려 하면 오류가 난다.

💡 네이버의 공개키를 가지고 있고, 네이버로 가장한 신뢰할 수 없는 사이트에서 정보를 보내 올 경우 네이버 공개키로 풀려고 할 때 오류가 나기 때문에 검증된 사이트인지 판별할 수 있다.

여기서!!

검증해주는 기관을 CA(Certificate Authority)라고 부름

브라우저에는 CA들의 목록이 내장되어 있다.

HTTPS 통신 과정

  1. Handshake 과정
    1. 클라이언트는 서버로 랜덤 데이터를 서버로 보냄
    2. 서버 또한 랜덤 데이터와 함께 해당 서버의 인증서를 보냄
  2. 서버의 인증서 확인 과정
    1. 브라우저에 저장된 CA의 공개키로 인증서를 복호화 함
    2. → CA에 인증 받은 인증서들은 CA의 개인키로 암호화 되어 있다 .
    3. 복호화 된 인증서에는 서버의 공개키가 포함되어 있다
  3. 클라이언트는 Handshake 과정 시 주고받은 데이터를 혼합해서 임시키를 생성
  4. 임시키는 서버의 공개키로 암호화 돼서 서버로 보내짐
💡 비대칭키와 대칭키 둘 다 사용하여 데이터를 주고 받음
      → 비대칭키 사용은 대칭키 보다 컴퓨터에 큰 부담을 주기 때문

     -  데이터를 암호화 할 땐 대칭키 사용
     -  대칭키를 공유할 때 비대칭키 사용