서버와 클라이언트의 https 통신방법

봉춘·2021년 10월 29일
0
  • 보안이 취약한 HTTP의 단점을 개선.
    • http는 id, pwd를 서버에 전달할 때 암호화되어 전달되지 않기 때문에 보안상의 위협이 따른다.
    • 해당 사이트가 안전한 사이트임을 보장한다.
      • https는 인증된 기관에서 발급받아 사용하기 때문에 수상한 사이트의 경우 발급되지 않는다.
      • 브라우저들은 https발급기관 목록(인증기관)을 가지고 있기 때문에 대조하여 해당 사이트가 인증되지 않은 사이트임을 사용자에게 알리거나 차단한다.
  • Certificate Authority(CA) - 인증기관

HTTPS의 보안 방법

  • https가 정보를 주고 받을 때 정보가 암호화된다.
  • 대칭키와 공개키를 혼합한 방식으로 되어있다.

대칭키와 공개키(비대칭키)

  • 대칭키
    • 클라이언트와 서버가 같은 키를 통해 암호화된 정보를 해석한다.
    • 서로에게 키가 있어야한다는 조건이 있기 때문에 키를 전달할 때 유출될 위험이 있다.
    • 속도가 빠르다
  • 공개키
    • 공개키와 개인키로 암호화된다.
    • 공개키를 통해 암호화된 정보는 개인키로만 복호화가 가능하다. (혹은 그 반대)
      • 따라서 정보가 유출이 되어도 공개키로는 복호화할 수 없기 때문에 안전하다.
    • 속도가 느리다.

방법

  • 브라우저 안에는 CA의 목록이 있다.
  1. 클라이언트와 서버는 서로의 신뢰 작업을 위해 Handshake작업을 한다.
    1. 클라이언트에서 랜덤 데이터를 서버에 보냄.
    2. 서버는 응답으로 마찬가지로 무작위 데이터와 서버의 인증서를 클라이언트에 응답한다.
  2. 클라이언트는 해당 인증서의 신뢰여부를 브라우저에 내장된 CA목록을 통해 대조하여 확인한다.
    1. 인증서는 해당 CA의 개인키로 암호화 되어 있다.
    2. 따라서 인증서는 공개키로 복호화한다. (해당 CA리스트 중 해당되는 인증서가 없다면 Not secure를 표시)
  3. 복호화된 인증서에는 해당 사이트의 공개키가 포함되어 있다.
  4. 클라이언트는 처음에 주고 받았던 랜덤 데이터들을 조합하여 임시키를 생성한다.
  5. 생성된 키는 인증되어 있던 해당 사이트의 공개키로 암호화하여 사이트로 보내게 되고, 일련의 과정을 거쳐 대칭키를 만들어 정보를 주고 받게 된다.
  • 비대칭키를 사용한 방법이 안전함에 불구하고 주고받지 않는 이유는 해당 방법이 대칭키에 비해 굉장히 느리기 때문이다.

참조

HTTPS가 뭐고 왜 쓰나요? | 얄코 (yalco.kr)

profile
길찾기

0개의 댓글