HTTP(Hypertext Transfer Protocol)와 HTTPS(Hypertext Transfer Protocol Secure)는 인터넷에서 데이터를 전송하는데 사용되는 프로토콜이다. 하지만 두 프로토콜 간에는 중요한 차이점이 있다.
HTTP는 텍스트 기반의 프로토콜로, 데이터를 평문1)으로 전송한다. 평문은 변형이 없는 데이터이고 누구나 데이터를 볼 수 있기 때문에 보안 문제가 발생할 수 있다. 그래서 크롬에서 HTTP로 통신하는 웹사이트에 접근할 경우 아래와 같이 경고창이 뜬다.
HTTP의 취약점은 여러 가지가 있지만 대표적으로 다음과 같다.
등등 다양한 보안 문제가 발생한다. 이를 보완하기 위해서 HTTPS와 같은 보안 프로토콜을 사용한다.
HTTPS는 SSL(Secure Sockets Layer)과 TLS(Transport Layer Security)라는 프로토콜을 함께 사용해서, 클라이언트와 서버 간의 통신을 암호화하고, 인증서를 이용해서 서버의 신원을 확인한다. 이 때문에 개인정보나 금융정보 등을 다루는 웹 사이트에서는 HTTPS를 사용하는 것이 안전하다.
SSL과 TLS는 공개키 암호화 방식과 대칭키 암호화 방식을 사용하여 데이터를 암호화한다.
공개키 암호화 방식은 암호화와 복호화에 사용되는 키가 서로 다른 방식이다. 암호화할 때는 공개키를 사용하고, 복호화할 때는 해당 공개키와 쌍을 이루는 개인키를 사용한다. 공개키는 모든 사용자에게 공개되어 있으며, 데이터를 전송할 때는 해당 공개키로 암호화한다. 이후 데이터를 수신한 사람은 개인키를 사용하여 복호화한다. 이 방식을 사용하면 데이터를 안전하게 전송할 수 있다.
대칭키 암호화 방식은 암호화와 복호화에 같은 키를 사용한다. 이 방식은 암호화된 데이터를 전송하기 전에 대칭키로 암호화를 수행하고, 수신자는 해당 대칭키를 사용해서 복호화한다.
SSL과 TLS는 공개키 암호화 방식을 이용하여 대칭키를 안전하게 전송한 후, 대칭키 암호화 방식으로 데이터를 전송한다. 다만, 현재는 SSL에서는 보안문제가 발견되어 사용되지 않으며, TLS 방식이 사용된다.
HTTPS도 마냥 완벽한 보안을 제공하지 않는다. 그래서 HTTPS를 사용하며 여러가지 보안적인 취약점을 고려해서 웹 사이트를 개발해야 한다. 아직까지 블로그에 쓴 내용 정도로 개념적으로 밖에 알 수 없다. 나중에 로그인 기능이나, 서버와 중요한 내용을 통신하는 기능을 개발할 때는 이 개념이 매우 중요할 것이다.
1) 평문이란 암호 통신에서, 변형이 없는 보통의 정보. 보내려는 공개된 전보문 자체를 이른다.(출처: 네이버 국어사전)
안녕하세요, 제로베이스 프론트엔드스쿨 멘토입니다. 작성해주신 글 잘 읽었고, 앞으로의 더 나은 블로깅을 응원하는 마음에서 작은 의견을 남기고 갑니다 :)
감사합니다!