HSTS
1. 개요
1. 개요
HSTS는 HTTP 보안 강화를 위한 웹 보안 정책이다. 이 정책은 HTTPS를 보조하는 정책 중 하나로서, 일정 기간 동안 이용자의 보안 접속을 강제할 수 있다. 서버에서 Strict-Transport-Security 헤더를 브라우저에 전송함으로써 활성화되며, 주요 기능은 페이지 이동 중 일반 HTTP 접속이 시도될 경우 서버의 개입 없이 브라우저가 강제로 HTTPS로 프로토콜을 변경시키는 것이다.
이 기술은 Microsoft Edge, 인터넷 익스플로러, 크롬, 파이어폭스, 사파리, 오페라 및 그 외 다양한 모바일 웹 브라우저에서 호환된다. 보다 강력한 보호를 위해 HSTS Preload List에 사이트를 등록할 수 있는데, 이는 구글 크롬이 주도하는 리스트로, 등록된 도메인은 브라우저 업데이트 이후 반영구적으로 무조건 HTTPS로 연결된다. 엣지, 사파리, 파이어폭스 등 다른 주요 브라우저들도 이 리스트를 지원하며 동일한 데이터베이스를 사용한다.
HSTS Preload List에 등록되기 위해서는 몇 가지 엄격한 조건을 충족해야 한다. Strict-Transport-Security 헤더의 max-age 값이 1년 이상이어야 하며, 하위 도메인을 포함하는 includeSubDomains 지시어와 preload 옵션이 명시되어 있어야 한다. 또한, HTTP로 접속 시 HTTPS로의 301 리디렉션이 정상적으로 이루어져야 한다. 이 정책은 웹사이트의 전반적인 보안 수준을 높이는 데 기여하지만, 설정의 영구성으로 인해 관리에 주의가 필요하다.
2. 설명
2. 설명
2.1. 작동 원리
2.1. 작동 원리
HSTS의 작동 원리는 서버가 웹 브라우저에 특정 HTTP 응답 헤더를 전송하는 것으로 시작한다. 서버 관리자가 웹사이트의 설정에 Strict-Transport-Security 헤더를 추가하면, 사용자가 해당 사이트에 최초로 HTTPS로 안전하게 접속했을 때 이 정책이 브라우저에 전달된다. 이 헤더에는 max-age 지시어가 포함되어 있어, 브라우저가 이 정책을 얼마 동안 유지할지 기간을 초 단위로 지정한다.
일단 정책이 브라우저에 캐시되면, 그 기간 동안은 사용자가 URL에 http://를 직접 입력하거나, 일반 HTTP 링크를 클릭해 접속을 시도해도 브라우저가 자동으로 이를 https://로 변경한다. 이 모든 과정은 서버에 추가 요청을 보내지 않고 브라우저 단에서 강제로 수행된다. 이를 통해 중간자 공격이나 프로토콜 다운그레이드 공격과 같은 보안 위협을 효과적으로 차단할 수 있다. 이 메커니즘은 Microsoft Edge, 크롬, 파이어폭스, 사파리 등 주요 웹 브라우저에서 표준으로 지원된다.
보다 강력한 보호를 위해 사이트는 HSTS Preload List에 등록될 수 있다. 이는 구글이 관리하는 목록으로, 등록된 도메인은 브라우저가 처음부터 HTTPS로만 연결을 시도하도록 한다. 즉, 사용자의 첫 방문조차도 안전한 연결을 통해 이루어지므로 최초 접속 시 발생할 수 있는 보안 취약점을 원천적으로 차단한다. 이 프리로드 목록은 크롬뿐만 아니라 엣지, 사파리, 파이어폭스 등 다른 브라우저들도 채택하고 있어 광범위한 호환성을 가진다.
2.2. HSTS Preload List
2.2. HSTS Preload List
HSTS Preload List는 구글 크롬이 주도하여 운영하는 공개 목록으로, 여기에 등록된 도메인은 사용자의 브라우저가 최초 접속 시에도 HTTP 대신 HTTPS를 강제적으로 사용하도록 만든다. 일반적인 HSTS 정책은 사용자가 최초 한 번 해당 사이트를 HTTPS로 방문한 후에만 적용되지만, Preload List에 등록되면 브라우저 자체에 내장되어 처음부터 HTTPS 연결을 시도하게 되어, 중간자 공격에 의한 평문 HTTP 접속을 원천적으로 차단할 수 있다. 이 목록은 크롬뿐만 아니라 마이크로소프트 엣지, 사파리, 파이어폭스 등 주요 웹 브라우저에서도 지원되며, 동일한 데이터베이스를 공유한다.
Preload List에 등록되기 위해서는 몇 가지 엄격한 조건을 충족해야 한다. 서버가 응답으로 보내는 Strict-Transport-Security HTTP 헤더의 max-age 지시자가 1년(31536000초) 이상으로 설정되어 있어야 하며, 모든 하위 도메인을 포함하는 includeSubDomains 지시자와 등록 의사를 나타내는 preload 지시자가 함께 명시되어야 한다. 또한, 사이트는 HTTP 요청을 HTTPS로 자동 전환하는 301 리디렉션을 반드시 구현해야 한다.
이 목록에 등록하면 보안성이 크게 향상되지만, 그 영향은 장기적이고 광범위하다는 점에 주의해야 한다. 등록 후에는 해당 도메인과 모든 하위 도메인에 대해 HTTPS를 영구적으로 제공할 것을 약속하는 것이며, 인증서 오류 등으로 HTTPS 연결에 실패할 경우 사용자는 사이트에 접근할 수 없게 된다. 등록을 취소하거나 목록에서 제거를 요청하더라도 변경 사항이 전 세계 사용자의 브라우저에 반영되기까지는 다음 브라우저 업데이트 주기를 기다려야 하므로, 등록 결정은 신중하게 내려져야 한다. 사이트 소유자는 구글의 HSTS Preload List 제출 사이트를 통해 자신의 도메인 등록 상태를 확인하거나 등록을 신청할 수 있다.
2.3. 적용 방법
2.3. 적용 방법
HSTS를 적용하는 방법은 크게 두 가지로 나눌 수 있다. 첫 번째는 웹 서버에서 Strict-Transport-Security 응답 헤더를 설정하는 기본적인 방법이며, 두 번째는 더 강력한 보안을 위해 HSTS Preload List에 사이트를 등록하는 방법이다.
기본적인 적용을 위해서는 웹 서버(Apache, Nginx 등)의 설정 파일에 Strict-Transport-Security 헤더를 추가해야 한다. 이 헤더는 max-age, includeSubDomains, preload 등의 지시어를 포함할 수 있다. 예를 들어, max-age=31536000; includeSubDomains; preload와 같이 설정하면, 해당 도메인과 모든 하위 도메인에 대해 1년 동안 HTTPS 접속이 강제된다. 또한, 사이트로의 모든 HTTP 접속은 반드시 HTTPS로 301 리디렉션 처리되어야 한다. 일부 CDN 서비스나 호스팅 제공자는 관리자 패널에서 이 설정을 간편하게 활성화할 수 있는 옵션을 제공하기도 한다.
보다 영구적인 보호를 원한다면 HSTS Preload List에 등록하는 것을 고려할 수 있다. 이 리스트는 구글 크롬이 주도하지만, 마이크로소프트 엣지, 모질라 파이어폭스, 애플 사파리 등 주요 웹 브라우저들이 공유하여 사용한다. 등록을 위해서는 앞서 언급한 헤더 설정에 더해, max-age가 최소 1년(31536000초) 이상이어야 하며, includeSubDomains와 preload 지시어가 모두 포함되어 있어야 한다. 등록은 공식 HSTS Preload List 제출 사이트를 통해 신청하며, 일단 등록되고 브라우저에 반영되면 해당 도메인은 브라우저 자체에서 강제적으로 HTTPS로만 연결된다. 이는 매우 강력한 보안을 제공하지만, 등록 후 삭제에는 긴 시간이 소요될 수 있으므로, 모든 하위 도메인을 포함한 전체 사이트 구조가 장기적으로 HTTPS를 유지할 수 있을 때만 신청해야 한다.
3. 슈퍼 쿠키 논란
3. 슈퍼 쿠키 논란
HSTS는 보안을 강화하기 위해 도입된 기술이지만, 이를 악용한 '슈퍼 쿠키'라는 추적 기법이 가능하다는 점에서 논란의 대상이 되었다. 이는 HSTS가 특정 도메인에 대한 HTTPS 접속을 강제하기 위해 브라우저에 해당 정보를 장기간 저장하는 메커니즘을 활용하기 때문이다. 악의적인 사이트 운영자는 여러 개의 특수한 서브도메인에 대해 HSTS 정책을 설정하고, 사용자가 이를 방문하게 함으로써 브라우저에 고유한 '지문'을 남길 수 있다. 이후 사용자가 다른 사이트를 방문할 때 이 지문을 읽어 사용자를 식별하고 온라인 추적을 수행하는 것이 슈퍼 쿠키의 기본 원리이다.
일반적인 HTTP 쿠키와 달리, 슈퍼 쿠키는 브라우저의 일반적인 쿠키 삭제나 시크릿 모드로도 쉽게 제거되지 않는다는 점에서 '슈퍼'라는 수식어가 붙었다. 사용자가 브라우저의 캐시나 HSTS 설정을 명시적으로 초기화하지 않는 한 정보가 지속적으로 남아 있을 수 있다. 특히 스마트폰이나 태블릿에 내장된 웹뷰와 같은 임베디드 환경에서는 이러한 설정을 초기화할 수 있는 방법이 사용자에게 제공되지 않을 수도 있어 문제가 될 수 있다.
이러한 우려로 인해 주요 웹 브라우저 개발사들은 HSTS를 포함한 기술이 사용자 추적에 악용될 수 있음을 인정하고, 소프트웨어 사용 약관에 관련 법적 면책 조항을 추가하기도 했다. 한편, 브라우저 벤더들은 이 문제를 해결하기 위한 노력도 기울이고 있다. 예를 들어, 모질라 파이어폭스는 2021년 업데이트를 통해 서드파티 컨텍스트에서의 HSTS 및 HPKP 설정 저장을 차단하는 방식으로 슈퍼 쿠키 기반 추적을 방지하는 기능을 도입했다. 이는 사생활 보호 강화를 위한 중요한 조치로 평가된다.
