window.crypto.subtle가 보안 컨텍스트에서만 사용 가능한 이유

쌍제이(JJVoiture)·2025년 3월 10일
0

window.crypto.subtle가 HTTPS 환경에서만 사용 가능한 이유

개요

window.crypto.subtle API는 웹 애플리케이션에서 암호화, 해싱, 서명 등의 보안 기능을 수행하는 Web Cryptography API의 일부입니다. 그러나 이 API는 보안이 보장되는 환경에서만 사용할 수 있도록 제한되어 있으며, localhost를 제외한 모든 환경에서는 HTTPS에서만 동작합니다. 이러한 제한이 존재하는 이유를 설명합니다.

보안 컨텍스트(Security Context) 개념

웹 브라우저는 보안이 유지되는 환경에서만 특정 기능을 사용할 수 있도록 제한하는 보안 컨텍스트(Secure Context) 개념을 도입했습니다. 보안 컨텍스트는 웹 페이지가 HTTPS를 통해 제공되거나, localhost와 같은 신뢰할 수 있는 환경에서 실행될 때 활성화됩니다. window.crypto.subtle API는 보안 컨텍스트에서만 사용할 수 있는 기능 중 하나로, 이는 안전한 암호화 연산을 보장하기 위한 조치입니다.

보안상의 이유

1. 중간자 공격(MITM, Man-In-The-Middle) 방지

window.crypto.subtle은 암호화 키 생성 및 서명 검증과 같은 중요한 보안 작업을 수행합니다. HTTP 환경에서는 네트워크 트래픽이 암호화되지 않아, 공격자가 중간자 공격을 통해 중요한 데이터를 탈취하거나 변조할 수 있습니다. 따라서 브라우저는 신뢰할 수 있는 HTTPS 환경에서만 이 API를 허용합니다.

2. 스크립트 변조 방지

HTTPS는 웹사이트에서 제공하는 JavaScript 파일이 중간에서 변조되지 않았음을 보장합니다. 만약 HTTP 환경에서도 crypto.subtle API를 허용한다면, 악성 코드가 주입될 위험이 커지고, 보안 키 또는 민감한 데이터가 노출될 가능성이 높아집니다.

3. 사용자의 데이터 보호

암호화 API는 주로 사용자 데이터의 보안을 강화하는 목적으로 사용됩니다. HTTP 환경에서는 보안이 보장되지 않으므로, 민감한 정보를 암호화 및 해독하는 과정에서 데이터가 안전하지 않은 상태로 유출될 가능성이 있습니다. HTTPS 환경에서는 TLS(전송 계층 보안)를 통해 데이터의 무결성과 기밀성이 유지됩니다.

localhost 예외 허용 이유

웹 개발 중에는 HTTPS 환경을 설정하지 않은 로컬 개발 서버를 사용할 수 있습니다. 이 경우에도 crypto.subtle API를 사용할 수 있도록 브라우저는 localhost에서 예외적으로 API 접근을 허용합니다. 이는 개발자들이 보안 기능을 테스트할 수 있도록 지원하기 위한 정책입니다.

결론

window.crypto.subtle API가 HTTPS 환경에서만 사용 가능한 이유는 보안 강화를 위한 조치입니다. 이는 보안 컨텍스트를 기반으로 하며, 중간자 공격 방지, 스크립트 변조 방지, 사용자 데이터 보호 등의 목적을 가지고 있습니다. 개발 환경에서는 localhost에서 예외적으로 허용되지만, 실제 배포 시에는 반드시 HTTPS를 사용하여 API를 정상적으로 동작하도록 해야 합니다.


참조
보안 컨텍스트

profile
안녕하세요. 중구난방 개발자 쌍제이입니다.

0개의 댓글