개요
- HTTPS는 무엇인가?
웹은 안전한 통신을 위해 정보를 암호화하는데, 여기서 말하는 암호화는 일반적인 평문을 알아볼 수 없도록 암호화하여 암호문으로 만드는 과정이다.
그 중에 대표적인 기술이 HTTPS이다. HTTPS의 원천 기술로는 SSL(Secure Socket Layer)과 TLS(Transport Layer Security) 전송 기술이 있다.
이 기술을 사용하기 위해 웹 서버에 설치하는 것이 SSL/TLS 인증서이다. TLS는 SSL의 개선 버전으로, 최신 인증서는 대부분 TLS를 사용하지만, 편의적으로 SSL 인증서라고 말한다.
- SSL 인증서와 SSL 핸드셰이크에 탑재된 기술
대칭키 암호화 방식: 잠그고 여는 것 모두가 하나의 열쇠를 사용, so 도난 당하면 끝
비대칭키(공개키) 암호화 방식: 개인키를 먼저 만들고, 여기서 공개키를 파생하여 한 쌍의 키를 만들기 때문에 키페어라고 부르며 같은 쌍이 아닌 다른 키를 사용하려 한다면 암호화/복호화 불가능
통신 대상을 서로가 확인하는 신분 확인
믿을 수 있는 SSL 인증서를 위한 디지털 서명
디지털 서명을 해주는 인증 기관의 확인
공개키를 안전하게 전달하고 공유하기 위한 프로토콜
암호화된 메시지의 변조 여부를 확인하는 메시지 무결성 알고리즘
- SSL 핸드셰이크 과정
1) 클라이언트: 클라이언트에 해당하는 브라우저가 먼저 웹 서버에 접속 (Client Hello)
2) 서버: 웹 서버는 1)에 응답하면서 관련 정보를 클라이언트에게 제공 (Server Hello)
3) 클라이언트: 브라우저는 서버의 SSL 인증서가 올바른지 확인
4) 클라이언트: 브라우저는 자신이 생성한 난수와 서버의 난수를 사용하여 premaster secret을 만듦
5) 서버: 서버는 사이트의 비밀키로, 브라우저가 보낸 premaster secret 값을 복호화함
6) 서버/클라이언트: SSL 핸드셰이크를 종료하고 HTTPS 통신을 시작함
-> so, SSL 핸드셰이크 단계까지는 공개키 방식, 그 이후의 HTTPS 통신은 대칭키 방식을 사용함
- 정리
HTTPS는 HTTP에 인증서를 적용하여 보안을 강화한 것이다. But, HTTPS가 보안을 강화하긴 했지만 100% 안전하진 않다.
HTTPS는 전달 구간에 대한 보안 기술로, 전달 구간 중간에 해커가 중간자 공격을 수행할 수 있는 취약점이 있다면 HTTPS는 유지되나 전달 내용은 고스란히 노출될 수 있다.
그렇기 때문에 보안 상 중요한 전달 내용에는 HTTPS를 적용하면서도, 종단 간 암호화 기술을 추가로 적용하여 HTTPS가 무력화되어도 노출된 데이터는 암호화를 유지해, 외부로 노출되지 않도록 하는 방법이 일반적으로 쓰인다.