우리가 매일 사용하는 인터넷은 수많은 데이터가 오고 가며, 수많은 파일이 업로드되고 다운로드된다.
수많은 웹 페이지가 화려하게 표시도 된다.
그 중심에 HTTP나 HTTPS가 있다. 특히 요즘에는 자동으로도 입력해 주는 HTTP나 HTTPS.
브라우저를 켜고, 누리집(홈페이지) 주소를 입력할 때, 맨 앞에 항상 붙는 것이 보이지 않는가?
그런데, HTTP 하고, HTTPS는 뭐가 다를까? 보안과 관련이 있을 텐데, 그렇다면 HTTP는 왜 안 없어지고 계속 있어서 HTTP와 HTTPS 2개를 다 알야 아하는 걸까?
HTTP(HyperText Transfer Protocol)는 하이퍼텍스트 전송 프로토콜이라는 이름을 가지고 있다.
하이퍼텍스트(HyperText)는 특정한 문구(텍스트)가 다른 단어나 데이터베이스와 링크되어 사용자가 관련 문서를 넘나들며 원하는 정보를 얻을 수 있는 것을 의미한다. 쉽게 말해 링크 텍스트.
하이퍼(Hyper)라는 단어 자체에는 최고, 초과, 과잉이라는 뜻을 가지고 있는 그리스어이자 영어의 접두사이다.
다른 문서를 넘나들며 정보를 얻을 수 있으니, 최고이고, 기존의 정보를 초과해서 넘치게 얻을 수 있고, 그러한 정보를 얻을 수 있음에 들뜬다는 의미에서 알맞은 용어이다.
그래서 이러한 하이퍼텍스트인 문서, 이미지, 링크 등 다양한 콘텐츠 자체를 주고받기 위한 통신 규약을 HTTP라고 한다. 사용자가 웹 브라우저를 통해 어떤 웹사이트에 접속하게 되면,
예를 들어 https://fosterahope.tistory.com 링크를 접속한다고 한다면, 브라우저는 이 주소에 해당하는 서버로부터 웹 페이지를 받아오는 과정을 시작한다. 서버는 요청을 처리하면서 HTML, CSS, 이미지 등의 데이터를 브라우저로 전송하고, 브라우저는 이를 화면에 띄워준다.
이 과정을 통해 우리는 엣지, 크롬, 사파리, 웨일 등의 브라우저에 우리가 원하는 콘텐츠가 표시되는 것이다.
미디어를 포함한 여러 콘텐츠를 표시하고 전송하는 HTTP 기술은 혁신이었다.
하지만, 시대가 변해 기술이 발전하고, 성능이 좋아지면서 문제가 생겼다. 모든 데이터가 암호화되지 않은 채로 전송된다는 점이다. 네트워크 중간에서 정보를 가로챌 수 있는 기술이 나오고, 비교적 쉽게 이 방법이 가능해지면서 사용자의 개인정보나 로그인 정보 등이 고스란히 노출될 수 있게 된 것이다.
이러한 보안상의 문제점을 해결하기 위해 등장한 것이 HTTPS(HyperText Transfer Protocols Secure)이다.
Secure가 붙은 것처럼 HTTP에 보안 계층(SSL/TLS)을 추가하여 데이터를 암호화하는 방식이다. SSL(Secure Sockets Layer)나 TLS(Trasport Layer Security) 기술을 이용해 브라우저와 서버의 통신 내용을 암호화해서 외부에서 데이터를 탈취하거나 조작하기 어렵게 만드는 방법을 사용한다.
HTTPS는 먼저 클라이언트인 브라우저가 서버에 접속할 때 해당 서버가 신뢰할 수 있는 기관(CA)으로부터 발급받은 디지털 인증서를 확인한다. 이를 통해 사용자는 이 서버가 진짜인지, 중간에 위장된 가짜 사이트는 아닌지를 검증할 수 있다. 인증이 완료되면 브라우저와 서버는 암호화 키 교환을 통해 안전한 통신 채널을 설정하고, 이후 주고받는 데이터는 모두 암호화되어 전송된다.
HTTP가 사용하는 전송 프로토콜에서 데이터가 노출되지 않도록 암호화를 하고, 인증서를 확인하는 과정이 추가된 HTTPS는 대체로 신뢰할 수 있도록 보안이 높은 특징을 가지고 있다. 반대로, 이런 작업을 한 번 더 해야 하기 때문에 속도는 HTTP에 비해 비교적 느릴 수 있다는 특징을 가지고 있다.
HTTP | HTTPS | |
보안성 | 낮음 | 높음(암호화) |
인증서 | 없음 | 있음(SSL/TLS 인증서) |
데이터 노출 | 노출됨 | 노출 안 됨(암호화) |
속도 | 빠름 | 비교적 느릴 수 있음 |
신뢰도 | 낮음 | 높음 |
하지만 요즘 같은 기술이 발전한 시대에, 검증을 위한 암/복호화 '시간'은 정말 특수한 경우가 아니고서는 의미가 없다.
중간에 가로챌 수 있고, HTTP와 HTTPS가 속도 차이 때문에 HTTP가 필요하다면 별도로 조치를 하면 될 것 같은데, 왜 HTTP를 아직도 쓰고 있는 곳이 있는 걸까?
HTTPS를 적용하기 위해서는 신뢰할 수 있는 기관의 SSL 인증서가 필요하다.
'그냥, 암호화해야지! 하고 S 옵션 사용!'
이렇게 사용하는 게 아니라는 뜻이다. 특히 예전에는, 신뢰할 수 있는 기관을 통하는 인증서를 받기 위해 돈을 지불해야 해서 진입장벽도 높았다.
이처럼, 누군가는 신뢰를 해줘야 하는 상황이기 때문에, HTTP가 완전히 사라질 수는 없을 것이다.
하지만, 지금도 대부분의 브라우저는 서버가 HTTP를 사용한다는 이유만으로 강력한 경고를 띄워주고, 사용에 제한을 두는 옵션까지 있기 때문에, HTTPS는 선택이 아닌 필수가 되었다.
요즘에는 마음만 먹으면, 무료 인증 기관을 통해 누구나 쉽게 SSL 인증서를 발급받을 수 있게 되었다. 혹은, 외부의 대부분 누리집(홈페이지)은 웹 호스팅 서비스나 도메인 서비스, 클라우드 서버를 이용하게 되는데, 이러한 서비스에 클릭 몇 번으로 HTTPS를 적용할 수 있도록 제공하고 있어서 HTTPS는 필수가 되었고, 진입장벽도 낮아졌기에, 누리집을 제공하던, API를 제공하던, HyperText를 전송하는 규약을 사용한다면, 꼭, 필수적으로 HTTPS를 사용해야 문제가 없을 것이다.
#HTTP #HTTPS #TLS #SSL
'IT 정보 > 용어' 카테고리의 다른 글
gRPC란 Google에서 만든 원격 함수 호출 시스템? (0) | 2025.04.11 |
---|---|
소켓 프로그래밍이란? 네트워크 통신 프로그래밍의 핵심 기본 기술 (2) | 2025.04.10 |
JSON이란? 비동기 통신의 필수 요소? (0) | 2025.04.08 |
RPC란? 분산 시스템을 위한 원격 프로시저 호출 (0) | 2025.04.07 |
마이크로 서비스란? 조각 서비스를 제공할 수 있다? (1) | 2025.04.05 |