1. 라이브러리
  2. HTTP와 웹
  3. HTTP 기본 원리

업데이트됨 1개월 전

URL을 입력할 때마다, 당신의 브라우저는 보안 결정을 내립니다. http://https:// 사이의 단 한 글자 차이가 당신의 비밀번호, 메시지, 신용카드 번호가 인터넷을 통해 이동하는 방식을 결정합니다 — 누구나 볼 수 있는 평문으로 전송될지, 아니면 당신과 웹사이트만 볼 수 있는 암호화된 터널을 통해 전송될지.

S는 Secure, 즉 '보안'을 의미합니다.

HTTP: 엽서 프로토콜

HTTP는 더 이상 존재하지 않는 세상을 위해 설계되었습니다.

팀 버너스리가 웹을 만들었을 때, 그것은 학술 논문을 공유하기 위한 시스템이었습니다. 훔칠 비밀번호도, 가로챌 신용카드도, 읽을 개인 메시지도 없었습니다. 데이터를 평문으로 보내는 것은 무모한 일이 아니었습니다 — 합리적인 선택이었습니다. 웹은 순수했습니다.

그 후 우리는 웹에 은행 계좌를 올렸습니다. 의료 기록도. 개인적인 대화도. 우리의 정체성도.

HTTP는 변하지 않았습니다. 그 주변 세상이 변했습니다.

일반 HTTP를 사용하여 웹사이트를 방문하면, 모든 정보는 그것을 처리하는 누구에게나 읽힐 수 있는 상태로 인터넷을 통해 이동합니다. 인터넷 서비스 제공업체가 볼 수 있습니다. 당신이 연결된 Wi-Fi 라우터를 운영하는 누구나 볼 수 있습니다. 커피숍에서 두 테이블 떨어진 곳에 앉아 당신이 이메일을 확인하는 동안 패킷 캡처 소프트웨어를 실행하는 그 사람? 그 사람도 볼 수 있습니다.

HTTP는 엽서입니다. 엽서에 비밀번호를 적고 낯선 사람에게 건네며, 수십 명이 읽지 않고 전달해 줄 것이라고 믿는 것입니다. 그들은 읽을 것입니다. 일부는 그것을 받아 적을 것입니다.

HTTPS: 봉인된 편지

HTTPS는 HTTP를 암호화로 감쌉니다. 데이터가 전송되기 전에 세 가지 일이 일어납니다:

암호화는 의도된 수신자만 해독할 수 있는 암호로 데이터를 뒤섞습니다. HTTPS 사이트에 신용카드 번호를 입력하면, 기기를 떠나는 순간 알아볼 수 없는 노이즈로 변환됩니다. 현대의 암호화 방식은 무차별 대입 공격으로 해독하는 데 우주의 나이보다 더 긴 시간이 걸릴 것입니다.

인증은 당신이 생각하는 상대와 실제로 통신하고 있다는 것을 증명합니다. https://yourbank.com에 접속할 때, 브라우저는 서버가 실제로 당신의 은행인지 — 은행인 척하는 누군가가 아닌지 — 에 대한 암호학적 증명을 요구합니다. 이 증명은 신원 확인을 담당하는 인증 기관(Certificate Authority)이 디지털 서명한 인증서 형태로 제공됩니다. 브라우저에는 신뢰하는 기관 목록이 내장되어 있습니다. 은행은 기관에 신원을 증명하고, 기관은 인증서에 서명하며, 브라우저는 서명을 확인합니다. 신뢰의 사슬입니다.

무결성은 변조를 감지합니다. HTTPS는 수학적 체크섬을 사용하여 데이터가 전송된 그대로 도착하는지 확인합니다. 누군가 연결을 가로채 10달러 이체를 10,000달러로 변경하려 한다면, 수학이 맞지 않습니다. 브라우저는 변조된 데이터를 거부합니다.

세 가지 메커니즘. 적대적인 인터넷 환경 속에서도 안전한 단 하나의 통로.

S가 없으면 어떻게 되는가

이 위협들은 이론이 아닙니다.

도청은 HTTP에서 아주 쉽습니다. 커피숍 Wi-Fi? 그 네트워크의 누구나 무료 소프트웨어로 당신의 트래픽을 읽을 수 있습니다. 회사 네트워크? IT 부서는 모든 URL과 양식 제출 내용을 볼 수 있습니다. 누군가 보고 있다고 가정하세요 — HTTP에서는 실제로 볼 수 있으니까요.

중간자 공격은 더 나아갑니다. 공격자는 당신과 웹사이트 사이에 자신을 끼워 넣어 양방향 트래픽을 가로챕니다. 단순히 읽는 것에 그치지 않습니다 — 수정합니다. 광고를 삽입합니다. 가짜 로그인 화면으로 리다이렉트합니다. 세션을 훔쳐 당신이 됩니다. 보안이 없는 Wi-Fi에서 이것은 기본적인 기술과 몇 분이면 내려받을 수 있는 도구만 있으면 가능합니다.

세션 하이재킹은 HTTP가 "로그인 유지"를 처리하는 방식을 악용합니다. "로그인 상태 유지"를 선택하면, 브라우저는 쿠키 — 인증되었다는 것을 증명하는 토큰 — 를 저장합니다. HTTP에서는 그 쿠키가 평문으로 전송됩니다. 쿠키를 훔치면 그 사용자가 됩니다. 비밀번호가 필요 없습니다.

눈에 띄지 않는 변조는 아마도 가장 교묘합니다. ISP가 HTTP 페이지에 광고를 삽입한 사례가 있었습니다. 정부는 콘텐츠를 검열하거나 시민을 추적하기 위해 HTTP의 무결성 부재를 이용했습니다. 악의적인 행위자들은 합법적인 웹사이트에 암호화폐 채굴기와 악성 소프트웨어를 심었습니다. HTTP는 수신한 것이 전송된 것과 동일한지 확인할 방법을 제공하지 않습니다.

업계의 판단

인터넷은 결론을 내렸습니다: HTTPS는 더 이상 선택사항이 아닙니다.

Chrome은 HTTP 사이트를 "안전하지 않음"으로 표시합니다. 브라우저들은 HTTP에서 기능을 하나씩 제거하고 있습니다 — 위치 정보, 카메라 접근, 서비스 워커는 이제 HTTPS가 필요합니다. 검색 엔진은 보안 사이트를 더 높게 순위에 올립니다.

2016년에 출시된 Let's Encrypt는 인증서를 무료로, 자동으로 발급받을 수 있게 했습니다. 비용 장벽은 사라졌습니다. 기술적 장벽도 사라졌습니다. HTTP는 이제 낡은 유산과 게으름의 영역으로만 남아 있습니다.

HTTPS는 속도를 늦추지 않습니다 — 암호화로 인한 처리 부담은 거의 없습니다. 몇 밀리초에 불과합니다. 게다가 HTTPS는 HTTP보다 훨씬 빠른 HTTP/2와 HTTP/3를 가능하게 합니다. 보안 사이트가 더 빠르게 로드되는 경우가 많습니다.

HTTPS를 사용할지 여부가 문제가 아닙니다. 아직도 사용하지 않는 곳이 왜 있는지가 문제입니다.

HTTP vs. HTTPS에 관한 자주 묻는 질문

인터넷 제공업체가 HTTPS 사이트에서 내가 하는 것을 볼 수 있나요?

도메인에 연결했다는 사실(예: "amazon.com")은 볼 수 있지만, 방문한 페이지, 검색한 내용, 입력한 내용은 볼 수 없습니다. 내용은 암호화되어 있습니다. HTTP에서는 모든 것을 볼 수 있습니다.

HTTPS가 HTTP보다 느린가요?

아닙니다. 암호화로 인한 처리 부담은 거의 없습니다 — 몇 밀리초에 불과합니다. HTTPS는 일반 HTTP보다 훨씬 빠른 HTTP/2와 HTTP/3를 가능하게 합니다. 보안 사이트가 더 빠르게 로드되는 경우가 많습니다.

사이트가 HTTPS를 사용하는지 어떻게 알 수 있나요?

주소 표시줄을 확인하세요. HTTPS 사이트는 자물쇠 아이콘을 표시하고 URL이 https://로 시작합니다. 사이트가 안전하지 않으면 브라우저가 명시적으로 경고합니다.

HTTP 사이트에서는 어떤 정보도 입력하지 않아야 하나요?

네. HTTP 사이트에서는 절대로 비밀번호, 신용카드 번호, 개인 정보를 입력하지 마세요. 입력하는 모든 것이 기록되고 있다고 가정하세요.

민감한 데이터를 처리하지 않는 HTTP 사이트는 어떤가요?

"무해한" HTTP 연결도 악용될 수 있습니다. 공격자는 악성 소프트웨어를 삽입하거나, 피싱 페이지로 리다이렉트하거나, 당신의 브라우징을 추적할 수 있습니다. 오늘날 어떤 사이트도 HTTP를 사용할 정당한 이유가 없습니다.

이 페이지가 도움이 되었나요?

😔
🤨
😃
HTTP vs. HTTPS: S가 중요한 이유 • 라이브러리 • Connected