HTTPS란?
HTTPS는 웹 브라우저와 서버간의 데이터를 전송하는데 사용되는 기본 프로토콜인 HTTP의 보안버전이다. HTTP의 데이터 전송기능에 보안 기능이 추가된 것이다. 금융 서비스, 개인정보 서비스 등의 중요한 데이터를 전송하는데 꼭 필요한 기능이다.
최신 웹 사이트들에서는 대부분 HTTPS를 사용하고 최신 웹 브라우저에서도 HTTPS 사용을 권장하고 있다. 만약 HTTPS를 사용하지 않는 웹 사이트에 접근할 경우 다음과 같이 경고 메시지를 띄운다.
HTTPS의 동작원리
HTTPS는 SSL이라는 보안 프로토콜을 사용한다. 이 프로토콜은 네트워크 계층 구조에서 어플리케이션 레이어와 TCP 레이어 사이에 위치한다고 보면 된다.
출처: https://coding-start.tistory.com/208
SSL의 동작원리를 최대한 간단하게 묘사하자면 다음과 같은 절차를 따른다.
- 클라이언트에서 서버로 클라이언트의 정보(SSL 버전, 지원하는 암호화 방식 등등)을 서버로 보낸다.
- 서버에서 암호화 방식 등을 선택하고, 자신의 SSL 인증서와 공개키를 함께 이를 응답한다.
- 클라이언트에서 SSL 인증서를 CA를 통해 확인한다.
- 신뢰할 수 있는 인증서일 경우 클라이언트에서는 서버의 공개키를 통해 암호화한 비밀키를 전달한다.
- 인증과정이 완료되고 암호화 통신이 시작된다.
주목해볼 점은 클라이언트와 서버간의 신뢰를 보장하기 위해 SSL 인증서를 사용한다는 것이다. 하지만 금방 이런 의문이 들 수 있다. 이 인증서에 문제가 있다면 어떻게 되냐는 것이다. 인증서에 대한 검증이 없다면 해커가 조작된 인증서를 보내줄 수도 있고, 이는 클라이언트와 서버간의 신뢰관계를 보장하지 못하게 한다. 그래서 등장한 개념이 CA이다.
CA(Certificate Authority)
SSL 인증서는 클라이언트가 통신하고자 하는 서버가 제대로 된 서버가 맞는지 보증하는 역할을 한다. 그때 사용되는 인증서의 신뢰성을 보증하는 곳이 CA이다. CA는 인증서의 무결성을 보증해주는 민간기업들로 신뢰성이 엄격하게 공인된 소수의 기업들이 참여한다. 사업자는 SSL을 통해서 HTTPS를 사용하기 위해서는 이 CA들에게 돈을 지불하고 인증서를 구입해야 한다. CA를 통해 서버는 인증서를 발급받을 수 있고, 클라이언트는 서버를 신뢰할 수 있게 된다.
만약 HTTPS가 없다면?
HTTPS는 HTTP와 다른 프로토콜이 아니라는 것을 알 수 있었다. 그저 HTTP에 보안 프로토콜이 추가된 것 뿐이다. HTTP는 오랫동안 널리 쓰였지만 취약점들이 몇가지 있다.
- 평문 통신이기때문에 다른 누군가가 훔쳐볼 수 있다.
- 또한 변조도 가능하다는 문제점이 있다.
HTTPS는 보안 프로토콜을 추가해 이러한 문제점들을 해결하였다. 내용을 암호화 시키고 이 암호화 덕분에 위조도 방지할 수 있다. HTTPS가 없다면 우리가 지금 많이들 사용하고 있는 인터넷 뱅킹, 쇼핑몰 등의 서비스를 이용하는데 어려움을 겪을 것이다. 그렇다고 HTTPS가 장점만 있지는 않다. HTTPS의 단점은 다음과 같다.
- 암호화 처리를 사용하기 때문에 속도가 느려진다.
- 인증기관을 통해 인증서를 발급받는데 비용이 든다.