서명된 HTTP 교환

야스다 키누코

서명된 HTTP 교환(또는 'SXG')은 웹 패키지라고 하는 새로운 기술의 하위 집합으로, 게시자가 콘텐츠의 무결성과 저작자 표시를 유지하면서도 콘텐츠를 이동식(즉, 다른 당사자가 재배포할 수 있음)할 수 있도록 안전하게 만들 수 있습니다. 이식 가능한 콘텐츠는 빠른 콘텐츠 전송 지원, 사용자 간 콘텐츠 공유 촉진, 더 간단한 오프라인 환경 등 많은 이점이 있습니다.

서명된 HTTP 교환(SXG)은 어떻게 작동하나요? 이 기술을 통해 게시자는 모든 캐싱 서버에서 서명된 교환을 제공할 수 있는 방식으로 단일 HTTP 교환(요청/응답 쌍)에 서명할 수 있습니다. 브라우저가 이 서명된 Exchange를 로드하면 게시자의 URL이 주소 표시줄에 안전하게 표시될 수 있습니다. 교환의 서명은 콘텐츠가 원래 게시자의 출처에서 왔다는 충분한 증거이기 때문입니다.

서명된 교환: 핵심

이렇게 하면 콘텐츠의 출처가 콘텐츠 배포자로부터 분리됩니다. 특정 서버, 연결, 호스팅 서비스에 의존하지 않고 콘텐츠를 웹에 게시할 수 있습니다. 다음과 같이 SXG를 사용할 수 있게 되어 기쁘게 생각합니다.

  • 개인 정보 보호 미리 가져오기: 후속 탐색을 위해 리소스를 미리 가져오기 (예: link rel=prefetch)하면 탐색이 훨씬 빨라진 것처럼 느껴질 수 있지만 개인 정보 보호 단점도 있습니다. 예를 들어 교차 출처 탐색의 리소스를 미리 가져오면 사용자가 최종적으로 사이트를 방문하지 않더라도 사용자가 일부 정보에 관심을 가질 수 있다는 사실을 대상 사이트에 알립니다. 반면 SXG를 사용하면 대상 사이트에 도달하지 않고 빠른 캐시에서 교차 출처 리소스를 미리 가져올 수 있으므로 탐색이 발생할 때와 시점에만 사용자의 관심을 전달할 수 있습니다. 이 방법은 사용자를 다른 웹사이트로 보내는 것이 목표인 사이트에 유용할 것입니다. 특히 Google은 Google 검색결과 페이지에서 이 기능을 사용하여 AMP URL을 개선하고 검색결과에서 클릭 속도를 높일 계획입니다.

  • 인증서 비공개 키에 대한 관리 권한을 양도하지 않고도 CDN의 이점: 갑자기 인기를 얻게 된 콘텐츠 (예: reddit.com의 첫 페이지에서 링크)는 콘텐츠가 제공되는 사이트에 과부하가 발생하는 경우가 많으며, 사이트가 비교적 작은 경우 속도가 느려지거나 일시적으로 사용할 수 없게 될 수도 있습니다. 빠르고 강력한 캐시 서버를 사용하여 콘텐츠를 공유하며 SXG를 통해 TLS 키를 공유하지 않고도 이를 가능하게 하면 이러한 상황을 피할 수 있습니다.

서명된 교환 사용해 보기

서명된 교환은 Chrome 73 이상에서 사용할 수 있으며 이전에는 오리진 트라이얼로 제공되었습니다.

SXG 만들기

게시자로서 원본에 대한 SXG를 만들려면 서명에 서명할 인증서 키가 필요하며, 인증서에 유효한 SXG로 처리할 특수한 'CanSignHttpExchanges' 확장 프로그램이 있어야 합니다. 2018년 11월부터 DigiCert에서만 이 확장 프로그램을 지원합니다. 이 페이지에서 SXG에 작동하는 인증서를 요청할 수 있습니다.

SXG 인증서를 받으면 github에 게시된 참조 생성기 도구를 사용하여 자체 SXG를 만들 수 있습니다.

Chrome 코드 저장소에서 실제 SXG 예시 파일도 살펴볼 수 있습니다. 예를 들어 이 파일간단한 텍스트 파일용으로 만들어진 가장 간단한 파일입니다. 주로 로컬 테스트를 위해 생성됩니다. 서명에 유효한 인증서와 타임스탬프가 있을 필요는 없습니다.

로컬에서 기능 테스트

테스트 목적으로 SXG를 만들려면 자체 서명 인증서를 만들고 chrome://flags/#allow-sxg-certs-without-extension를 사용 설정하여 Chrome에서 특수 확장 프로그램 없이 인증서로 만든 SXG를 처리하도록 할 수 있습니다.

서버, 인증서, SXG가 올바르게 설정된 경우 다음과 같은 코드가 작동합니다.

<!-- prefetch the sample.sxg -->
<link rel="prefetch" href="https://your-site.com/sample.sxg" />

<!-- clicking the link below should make Chrome navigate to the inner
     response of sample.sxg (and the prefetched SXG is used) -->
<a href="https://your-site.com/sample.sxg">Sample</a>

SXG는 Chrome 73 이상에서 앵커 태그 (<a>)와 link rel=prefetch에서만 지원됩니다. 또한 서명의 유효성은 사양에 따라 7일로 제한되므로 서명된 콘텐츠가 비교적 빨리 만료됩니다.

의견 보내기

webpackage-dev@chromium.org를 통해 이 실험에 관한 의견을 기다리고 있습니다. 사양 토론에 참여하거나 팀에 Chrome 버그를 신고할 수도 있습니다. 여러분의 의견은 표준화 프로세스와 구현 문제를 해결하는 데 큰 도움이 됩니다.

의견