HTTP(Hyper Text Transfer Protocol) 란 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜 입니다.
즉, 인터넷에서 하이퍼텍스트를 교환하기위한 통신규약으로 80번 포트를 사용하고 있고 상태를 가지고 있지 않은 Stateless 프로토콜 입니다. 또 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이었기 때문에 HTTP로 비밀번호나 개인정보를 주고받으면 제3자가 정보를 조회할 수 있다는 보안부분의 취약점이 발생할 수 있었습니다.
HTTPS(Hypertext Transfer Protocol Secure) 프로토콜은 HTTP의 보안 취약점을 개선하고자 SSL(Secure Socket Layer) 보안 소켓 계층 이용해서 문제를 해결하였습니다.
여기서 SSL은 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주고 서버 브라우저가 개인정보같은 민감한 정보를 주고받을 때 도난 당하거나 해킹당하는 것을 막아줍니다. 또 HTTPS는 TLS(전송 계층 보안) 프로토콜을 통해서도 보안을 유지하고 있습니다. TSL은 데이터 무결성을 제공하기 때문에 데이터가 전송 중에 수정되거나 손상되는 것을 방지하고 사용자가 자신이 의도하는 웹사이트와 통신하고 있음을 입증하는 인증 기능도 제공하고 있습니다
HTTP와 HTTPS의 가장 큰 차이점은 SSL 인증서라고 볼 수 있습니다.
인증서는 사용자가 사이트에 제공하는 정보를 암호화로 바꿔서 데이터로 전송한다고 생각하면 쉽습니다! 암호화되서 데이터베이스에 저장이 되기 때문에 실제로 해킹을 당하더라도 데이터가 암호화되어있기 때문에 해독할 수 없습니다.
HTTPS는 웹사이트의 무결성을 보호해준다. 웹 사이트와 사용자 브라우저 사이의 통신을 침입자가 건드리지 못하도록 한다. (침입자라함은, 악의가 있는 공격자는 물론이고, 합법이지만 통신에 침입하여 페이지에 광고를 삽입하는 경우도 해당한다.)
가벼운 웹 서핑이라면 HTTP도 상관없지만, 사용자의 정보를 웹 서버와 주고 받아야하는 경우라면 HTTP는 정보 유출의 위험성을 갖게 된다. HTTPS는 침입자가 웹사이트와 사용자 사이의 통신을 몰래 수신하는 것을 방지함으로써 보안을 강화해준다.
getUserMedia()를 통한 사진 촬영이나 오디오 녹음, 프로그레시브 웹 앱과 같은 강력한 웹 플랫폼 신기능들은 실행하려면 사용자의 명시적인 권한 허락을 필요로 한다. 지오로케이션 API와 같은 오래된 API들도 실행할 때 권한이 필요하도록 업데이트되고 있는데, HTTPS는 이러한 새 기능과 업데이트된 API에 대한 권한 허락을 가능하게 한다.
네이버, 다음은 물론이고 구글 역시 검색 엔진 최적화(SEO: Search Engine Optimization) 관련 내용을 HTTPS 웹사이트에 대해서 적용하고 있다. 즉, 키워드 검색 시 상위 노출되는 기준 중 하나가 보안 요소이다.
모든 사이트에서 텍스트를 암호화해서 주고 받으면 과부하가 걸려 속도가 느려질 수 있다. 중요한 사이트는 HTTPS로 관리하고, 그렇지 않은 사이트는 HTTP를 사용한다.
HTTPS를 지원한다고 해서 무조건 안전한 것은 아니다. 신뢰할 수 있는 CA 기업이 아니라 자체적으로 인증서를 발급할 수도 있고, 신뢰할 수 없는 CA 기업을 통해서 인증서를 발급받을 수도 있기 때문이다.