- 보안이 취약한 HTTP의 단점을 개선.
- http는 id, pwd를 서버에 전달할 때 암호화되어 전달되지 않기 때문에 보안상의 위협이 따른다.
- 해당 사이트가 안전한 사이트임을 보장한다.
- https는 인증된 기관에서 발급받아 사용하기 때문에 수상한 사이트의 경우 발급되지 않는다.
- 브라우저들은 https발급기관 목록(인증기관)을 가지고 있기 때문에 대조하여 해당 사이트가 인증되지 않은 사이트임을 사용자에게 알리거나 차단한다.
- Certificate Authority(CA) - 인증기관
HTTPS의 보안 방법
- https가 정보를 주고 받을 때 정보가 암호화된다.
- 대칭키와 공개키를 혼합한 방식으로 되어있다.
대칭키와 공개키(비대칭키)
- 대칭키
- 클라이언트와 서버가 같은 키를 통해 암호화된 정보를 해석한다.
- 서로에게 키가 있어야한다는 조건이 있기 때문에 키를 전달할 때 유출될 위험이 있다.
- 속도가 빠르다
- 공개키
- 공개키와 개인키로 암호화된다.
- 공개키를 통해 암호화된 정보는 개인키로만 복호화가 가능하다. (혹은 그 반대)
- 따라서 정보가 유출이 되어도 공개키로는 복호화할 수 없기 때문에 안전하다.
- 속도가 느리다.
방법
- 클라이언트와 서버는 서로의 신뢰 작업을 위해 Handshake작업을 한다.
- 클라이언트에서 랜덤 데이터를 서버에 보냄.
- 서버는 응답으로 마찬가지로 무작위 데이터와 서버의 인증서를 클라이언트에 응답한다.
- 클라이언트는 해당 인증서의 신뢰여부를 브라우저에 내장된 CA목록을 통해 대조하여 확인한다.
- 인증서는 해당 CA의 개인키로 암호화 되어 있다.
- 따라서 인증서는 공개키로 복호화한다. (해당 CA리스트 중 해당되는 인증서가 없다면 Not secure를 표시)
- 복호화된 인증서에는 해당 사이트의 공개키가 포함되어 있다.
- 클라이언트는 처음에 주고 받았던 랜덤 데이터들을 조합하여 임시키를 생성한다.
- 생성된 키는 인증되어 있던 해당 사이트의 공개키로 암호화하여 사이트로 보내게 되고, 일련의 과정을 거쳐 대칭키를 만들어 정보를 주고 받게 된다.
- 비대칭키를 사용한 방법이 안전함에 불구하고 주고받지 않는 이유는 해당 방법이 대칭키에 비해 굉장히 느리기 때문이다.
참조
HTTPS가 뭐고 왜 쓰나요? | 얄코 (yalco.kr)