HTTPS
HTTP
- 서로 다른 시스템들 사이에서 통신을 주고 받게 하는 가장 기본적인 프로토콜
- 서버와 브라우저 간 데이터 전송 용도로 가장 많이 사용
HTTPS
- HTTP + SSL (보안 소켓 계층) 사용
- SSL은 서버와 브라우저 사이에 암호화된 연결을 만들 수 있게 도와주고, 정보가 도난 당하는 것을 막아준다.
SSL
전송 계층 보안 (Transport Layer Security, TLS, 과거 명칭 | 보안 소켓 레이어: Secure Sockets Layer, SSL)은 컴퓨터 네트워크에서 통신 보안을 제공하기 위해 설계된 암호 규약이다. 이 규약은 TCP/IP 네트워크를 사용하는 통신에 적용되며, 통신 과정에서 전송 계층 종단간 보안과 데이터 무결성을 확보해준다.
참고: 위키백과
대칭 키 암호
- 암호화와 복호화에 같은 암호 키를 쓰는 알고리즘
- 암호화를 하는 측과 복호화를 하는 측이 같은 암호 키를 공유해야 한다.
- 계산 속도는 빠르다.
- 같은 비밀 키를 이용하기 때문에 해커가 키를 획득하면 내용을 해독 가능하다.
공개 키 암호
- 암호화와 복호화에 이용하는 키가 다른 방식
- 공개되어 있는 공개키와 노출해서는 안되는 개인키의 쌍으로 암호화 및 복호화를 한다.
- 개인키로 암호화한 정보는 공개키로만 복호화 가능하고, 반대로 공개키로 암호화한 정보는 개인키로만 복호화 가능하다.
- 두 키 중 무엇으로 암호화를 하는 가에 따라 사용 의도가 달라진다.
- 공개키로 암호화하면 데이터 보안에 중점을 둔다.
- 공개되지 않는 개인키로만 복호화할 수 있기 때문
- 개인키로 암호화하면 인증 과정에 중점을 둔다.
- 공개된 공개키로 복호화를 할 수 있어서 보안에 강한 것은 아니지만, 공개키로 복호화할 수 있다는 시점에서 이 데이터를 보낸 송신자 측을 믿을 수 있게 된다.
- 대칭 키 암호에 비해 속도가 느리다.
SSL 통신 과정
- 클라이언트와 서버가 통신하는 상황
- 클라이언트가 서버에게 접속을 요청한다.
- 서버는 개인키를 가지고 있고 개인키와 쌍을 이루는 공개키를 클라이언트에게 전달한다.
- 클라이언트는 자신의 대칭키를 받은 공개키로 암호화하여 서버에게 전달한다.
- 서버는 받은 대칭키를 자신의 개인키로 복호화한다.
- 클라이언트와 서버는 같은 대칭키를 가지게 되었고 이 대칭키로 암호화된 데이터를 주고 받는다.
제 3의 인증 기관을 통한 SSL 통신
- HTTPS 적용을 위해 사이트는 인증 기관을 통해 사이트 인증서를 받아야 한다.
- 사이트는 사이트 정보와 사이트 공개키를 인증 기관에게 전달한다.
- 인증 기관은 받은 데이터를 검증한 후 사이트 인증서를 자신의 개인키로 서명하여 생성한다.
- 인증 기관은 사이트에게 인증서를 전달하고 사용자에게 자신의 공개키를 전달 한다.
- 사용자 브라우저에 인증 기관 공개키를 저장한다.
- 사용자가 사이트에게 접속 요청을 한다.
- 사이트는 사이트 인증서를 사용자에게 전달하여 자신이 신뢰할 수 있는 사이트임을 증명한다.
- 사용자는 브라우저에 있던 인증 기관 공개키로 사이트 인증서를 복호화하여 사이트 정보와 사이트 공개키를 얻게 된다.
- 이렇게 얻은 사이트 공개키로 사용자의 대칭키를 암호화해 사이트에 전송한다.
- 사이트는 자신의 사이트 개인키로 사용자 대칭키를 복화화해 얻는다.
- 서로 같은 대칭키를 갖게 된 사용자와 사이트는 통신한다.
참고
https://youtu.be/wPdH7lJ8jf0