[要約] RFC 8942 - HTTP Client Hintsは、ウェブブラウザやその他のHTTPクライアントがサーバーに自身の設定や能力を伝えるための仕組みを定義しています。この情報を使って、サーバーはユーザー体験を最適化するためにコンテンツを動的に調整できます。利用場面としては、画像の解像度調整、コンテンツの言語選択、デバイスの性能に応じたデータの最適化などがあります。

Internet Engineering Task Force (IETF)                       I. Grigorik
Request for Comments: 8942                                      Y. Weiss
Category: Experimental                                            Google
ISSN: 2070-1721                                            February 2021
        

HTTP Client Hints

HTTPクライアントのヒント

Abstract

概要

HTTP defines proactive content negotiation to allow servers to select the appropriate response for a given request, based upon the user agent's characteristics, as expressed in request headers. In practice, user agents are often unwilling to send those request headers, because it is not clear whether they will be used, and sending them impacts both performance and privacy.

HTTPは、リクエストヘッダーで表現されているように、サーバーが特定の要求に対して適切な応答を選択できるようにするための予防コンテンツネゴシエーションを定義します。実際には、ユーザーエージェントは、それらが使用されるかどうかが明確ではなく、それらを送信し、それらを送信することができず、パフォーマンスとプライバシーの両方に影響を与えます。

This document defines an Accept-CH response header that servers can use to advertise their use of request headers for proactive content negotiation, along with a set of guidelines for the creation of such headers, colloquially known as "Client Hints."

このドキュメントでは、「クライアントヒント」と共意的に知られているそのようなヘッダーの作成のための一連のガイドラインとともに、サーバーがプロアクティブコンテンツネゴシエーションのために要求ヘッダーの使用を宣伝するために使用できるaccept-ch応答ヘッダーを定義します。

Status of This Memo

本文書の位置付け

This document is not an Internet Standards Track specification; it is published for examination, experimental implementation, and evaluation.

この文書はインターネット標準のトラック仕様ではありません。検査、実験的実施、評価のために公開されています。

This document defines an Experimental Protocol for the Internet community. This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Not all documents approved by the IESG are candidates for any level of Internet Standard; see Section 2 of RFC 7841.

この文書は、インターネットコミュニティの実験的プロトコルを定義しています。この文書は、インターネットエンジニアリングタスクフォース(IETF)の製品です。IETFコミュニティのコンセンサスを表します。それは公開レビューを受け、インターネットエンジニアリングステアリンググループ(IESG)による出版の承認を受けました。IESGによって承認されたすべての文書がすべてのレベルのインターネット規格の候補者ではありません。RFC 7841のセクション2を参照してください。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at https://www.rfc-editor.org/info/rfc8942.

この文書の現在のステータス、任意のエラータ、およびフィードバックを提供する方法は、https://www.rfc-editor.org/info/rfc8942で取得できます。

Copyright Notice

著作権表示

Copyright (c) 2021 IETF Trust and the persons identified as the document authors. All rights reserved.

著作権(C)2021 IETF信頼と文書著者として識別された人。全著作権所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

このドキュメントは、このドキュメントの発行日に有効なBCP 78およびIETFドキュメントに関連するIETFトラストの法的規定(https://trustee.ietf.org/license-info)の対象となります。 これらのドキュメントは、このドキュメントに関するお客様の権利と制限について説明しているため、注意深く確認してください。 このドキュメントから抽出されたコードコンポーネントには、Trust LegalProvisionsのセクション4.eで説明されているSimplifiedBSD Licenseテキストが含まれている必要があり、Simplified BSDLicenseで説明されているように保証なしで提供されます。

Table of Contents

目次

   1.  Introduction
     1.1.  Notational Conventions
   2.  Client Hints Request Header Fields
     2.1.  Sending Client Hints
     2.2.  Server Processing of Client Hints
   3.  Advertising Server Support
     3.1.  The Accept-CH Response Header Field
     3.2.  Interaction with Caches
   4.  Security Considerations
     4.1.  Information Exposure
     4.2.  Deployment and Security Risks
     4.3.  Abuse Detection
   5.  Cost of Sending Hints
   6.  IANA Considerations
     6.1.  Accept-CH
   7.  References
     7.1.  Normative References
     7.2.  Informative References
   Acknowledgements
   Authors' Addresses
        
1. Introduction
1. はじめに

There are thousands of different devices accessing the web, each with different device capabilities and preference information. These device capabilities include hardware and software characteristics, as well as dynamic user and user agent preferences. Historically, applications that wanted the server to optimize content delivery and user experience based on such capabilities had to rely on passive identification (e.g., by matching the User-Agent header field (Section 5.5.3 of [RFC7231]) against an established database of user agent signatures), use HTTP cookies [RFC6265] and URL parameters, or use some combination of these and similar mechanisms to enable ad hoc content negotiation.

それぞれがデバイス機能と嗜好情報を持つ、Webにアクセスする何千もの異なるデバイスがあります。これらのデバイス機能には、ハードウェアおよびソフトウェアの特性、および動的ユーザーおよびユーザーエージェントの設定が含まれます。歴史的には、そのような機能に基づいてコンテンツ配信およびユーザーエクスペリエンスを最適化するようにサーバーに対応したアプリケーションは、確立されたデータベースに対して(たとえば、ユーザーエージェントのヘッダーフィールド([RFC7231]のセクション5.5.3)を照合することによって(例えば、[RFC7231]のセクション5.5.3)に依存していました。User Agent Signatures)、HTTP Cookie [RFC6265]とURLパラメータを使用するか、アドホックコンテンツネゴシエーションを可能にするためにこれらと類似のメカニズムの組み合わせを使用します。

Such techniques are expensive to set up and maintain and are not portable across both applications and servers. They also make it hard for both user agent and server to understand which data are required and are in use during the negotiation:

そのような技術は、設定および維持するのに高価であり、アプリケーションとサーバの両方にポータブルではない。また、ユーザーエージェントとサーバーの両方がどのデータが必要かどうかを理解し、ネゴシエーション中に使用中のどちらの両方に困難になります。

* User agent detection cannot reliably identify all static variables, cannot infer dynamic user agent preferences, requires an external device database, is not cache friendly, and is reliant on a passive fingerprinting surface. * Cookie-based approaches are not portable across applications and servers, impose additional client-side latency by requiring JavaScript execution, and are not cache friendly. * URL parameters, similar to cookie-based approaches, suffer from lack of portability and are hard to deploy due to a requirement to encode content negotiation data inside of the URL of each resource.

* ユーザーエージェントの検出はすべての静的変数を確実に識別できません。動的ユーザーエージェントの設定を推測できない、外部デバイスデータベースが必要で、キャッシュフレンドリではなく、パッシブフィンガープリントサーフェスに依存しています。* Cookieベースのアプローチはアプリケーションとサーバー間で移植性がありませんが、JavaScriptの実行を要求することで追加のクライアント側の待ち時間を課し、キャッシュにやさしいものではありません。* Cookieベースのアプローチと同様に、URLパラメータは、コンテンツネゴシエーションデータを各リソースのURLの内部にエンコードする必要があるため、展開するのが困難です。

Proactive content negotiation (Section 3.4.1 of [RFC7231]) offers an alternative approach; user agents use specified, well-defined request headers to advertise their capabilities and characteristics, so that servers can select (or formulate) an appropriate response based on those request headers (or on other, implicit characteristics).

プロアクティブコンテンツ交渉([RFC7231のセクション3.4.1)は代替的なアプローチを提供します。ユーザーエージェントは、サーバーがそれらの要求ヘッダー(または他の暗黙的な特性)に基づいて適切な応答を選択(または定式化)できるように、指定された明確な要求ヘッダーを使用して機能と特性を宣伝します。

However, traditional proactive content negotiation techniques often mean that user agents send these request headers prolifically. This causes performance concerns (because it creates "bloat" in requests), as well as privacy issues; passively providing such information allows servers to silently fingerprint the user.

ただし、従来のプロアアクティブコンテンツネゴシエーションテクニックは、ユーザーエージェントがこれらの要求ヘッダーを異常に送信することを意味します。これによりパフォーマンスの懸念が発生します(要求に「ぼかし」を作成しているため)、プライバシーの問題が発生します。そのような情報を受動的に提供することにより、サーバはユーザを静かに指紋することを可能にする。

This document defines Client Hints, a framework that enables servers to opt-in to specific proactive content negotiation features, adapting their content accordingly, as well as guidelines for content negotiation mechanisms that use the framework. This document also defines a new response header, Accept-CH, that allows an origin server to explicitly ask that user agents send these headers in requests.

このドキュメントは、クライアントのヒント、サーバーが特定の予防コンテンツネゴシエーション機能にオプトインすることを可能にするフレームワークであり、それに応じてコンテンツを適応させ、フレームワークを使用するコンテンツネゴシエーションメカニズムのガイドラインを適用できます。このドキュメントはまた、新しい応答ヘッダー、accept-chを定義しています。これにより、オリジンサーバーがユーザーエージェントがこれらのヘッダーを要求に送信できるようにするためにオリジンサーバーが明示的に依頼することを可能にします。

Client Hints mitigate performance concerns by assuring that user agents will only send the request headers when they're actually going to be used, and they mitigate privacy concerns of passive fingerprinting by requiring explicit opt-in and disclosure of required headers by the server through the use of the Accept-CH response header, turning passive fingerprinting vectors into active ones.

クライアントヒントは、実際に使用されるときにユーザーエージェントが要求ヘッダのみを送信することによってパフォーマンスの懸念を軽減し、それらはサーバーによって必要なヘッダーの明示的なオプトインおよび開示を必要とすることによってパッシブフィンガープリントのプライバシーの懸念を軽減します。Accept-CH応答ヘッダーを使用して、パッシブフィンガープリントベクトルをアクティブなものにします。

The document does not define specific usages of Client Hints. Such usages need to be defined in their respective specifications.

この文書は、クライアントのヒントの特定の使用法を定義しません。そのような用途はそれぞれの仕様で定義される必要がある。

One example of such usage is the User-Agent Client Hints [UA-CH].

そのような使用の一例は、ユーザーエージェントクライアントのヒント[UA-CH]です。

1.1. Notational Conventions
1.1. 表記規則

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

この文書のキーワード "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", および "OPTIONAL" はBCP 14 [RFC2119] [RFC8174]で説明されているように、すべて大文字の場合にのみ解釈されます。

This document uses the Augmented Backus-Naur Form (ABNF) notation of [RFC5234].

この資料は、[RFC5234]の拡張された背景 - Naur形式(ABNF)表記を使用しています。

2. Client Hints Request Header Fields
2. クライアントヒントはヘッダーフィールドを要求します

A Client Hints request header field is an HTTP header field that is used by HTTP user agents to indicate data that can be used by the server to select an appropriate response. Each one conveys user-agent preferences that the server can use to adapt and optimize the response.

クライアントヒント要求ヘッダフィールドは、HTTPユーザエージェントがサーバが適切な応答を選択するために使用できるデータを示すためにHTTPユーザエージェントによって使用されるHTTPヘッダフィールドである。各1つは、サーバーが応答を適応して最適化するために使用できるユーザーエージェントの設定を伝えます。

2.1. Sending Client Hints
2.1. クライアントヒントを送信する

User agents choose what Client Hints to send in a request based on their default settings, user configuration, and server preferences expressed in "Accept-CH". The user agent and server can use an opt-in mechanism outlined below to negotiate which header fields need to be sent to allow for efficient content adaption, and they can optionally use additional mechanisms (e.g., as outlined in [CLIENT-HINTS-INFRASTRUCTURE]) to negotiate delegation policies that control access of third parties to those same header fields. User agents SHOULD require an opt-in to send any hints that are not considered low-entropy. See the low-entropy hint table at [CLIENT-HINTS-INFRASTRUCTURE] for examples of hints that expose low amounts of entropy.

ユーザーエージェントは、デフォルト設定、ユーザー構成、および「accept-ch」で表現されたサーバーの設定に基づいて、要求に送信するクライアントがどのクライアントを送信するかを選択します。ユーザエージェントとサーバは、以下に概説されているオプトインメカニズムを使用して、効率的なコンテンツの適応を可能にするためにどのヘッダフィールドを送信する必要があるかをネゴシエートすることができ、それらはオプションで追加のメカニズムを使用することができます(たとえば、[クライアントヒントインフラストラクチャ]に概説されているように)。同一のヘッダーフィールドへの第三者のアクセスを制御する委任方針を交渉すること。ユーザエージェントは、低エントロピーとは見なされないヒントを送信するためにオプトインを必要とする必要があります。少量のエントロピーを公開するヒントの例については、[Client-Hints-Infrastructure]のローエントロピーヒントテーブルを参照してください。

Implementers need to be aware of the fingerprinting implications when implementing support for Client Hints and follow the considerations outlined in the Security Considerations section of this document (see Section 4).

クライアントのヒントのサポートを実装し、このドキュメントの[セキュリティ上の考慮事項]セクションに記載されている考慮事項に従う場合、実装者は指紋の影響を認識する必要があります(セクション4を参照)。

2.2. Server Processing of Client Hints
2.2. クライアントヒントのサーバー処理

When presented with a request that contains one or more Client Hints header fields, servers can optimize the response based upon the information in them. When doing so, and if the resource is cacheable, the server MUST also generate a Vary response header field (Section 7.1.4 of [RFC7231]) to indicate which hints can affect the selected response and whether the selected response is appropriate for a later request.

1つ以上のクライアントヒントヘッダーフィールドを含む要求が表示された場合、サーバーはそれらの情報に基づいて応答を最適化することができます。そうする場合、リソースがキャッシュ可能な場合、サーバーは選択された応答に影響を与える可能性があるか、選択した応答が後で適切かどうかを示すために、[RFC7231のセクション7.1.4]の[RFC7231]のセクション7.1.4)も生成する必要があります。リクエスト。

Servers MUST ignore hints they do not understand nor support. There is no mechanism for servers to indicate to user agents that hints were ignored.

サーバーは彼らが理解していないヒントを無視しなければなりません。ヒントが無視されたユーザーエージェントに表示するためのサーバーにはメカニズムはありません。

Furthermore, the server can generate additional response header fields (as specified by the hint or hints in use) that convey related values to aid client processing.

さらに、サーバは、関連する値を支援するために関連する値を伝える追加の応答ヘッダフィールドを生成することができる。

3. Advertising Server Support
3. 広告サーバーのサポート

Servers can advertise support for Client Hints using the mechanism described below.

サーバーは、以下のメカニズムを使用してクライアントヒントのサポートを宣伝できます。

3.1. The Accept-CH Response Header Field
3.1. ACCEPT-CH応答ヘッダーフィールド

The Accept-CH response header field indicates server support for the hints indicated in its value. Servers wishing to receive user agent information through Client Hints SHOULD add the Accept-CH response header to their responses as early as possible.

Accept-CH Responseヘッダーフィールドは、その値に示されているヒントに対するサーバーサポートを示します。クライアントヒントを介してユーザーエージェント情報を受信したいサーバーは、できるだけ早く受け入れられた応答ヘッダーを応答に追加する必要があります。

Accept-CH is a Structured Header [RFC8941]. Its value MUST be an sf-list (Section 3.1 of [RFC8941]) whose members are Tokens (Section 3.3.4 of [RFC8941]). Its ABNF is:

Accept-CHは構造化ヘッダー[RFC8941]です。その値は、メンバーがトークンのSFリスト([RFC8941]のセクション3.1)でなければなりません([RFC8941]のセクション3.3.4)。そのABNFは次のとおりです。

     Accept-CH = sf-list
        

For example:

例えば:

Accept-CH: Sec-CH-Example, Sec-CH-Example-2

accept-ch:sec-ch-example、sec-ch-example-2

When a user agent receives an HTTP response containing "Accept-CH", it indicates that the origin opts-in to receive the indicated request header fields for subsequent same-origin requests. The opt-in MUST be ignored if delivered over non-secure transport (using a scheme different from HTTPS). It SHOULD be persisted and bound to the origin to enable delivery of Client Hints on subsequent requests to the server's origin, for the duration of the user's session (as defined by the user agent). An opt-in overrides previous persisted opt-in values and SHOULD be persisted in its stead.

ユーザーエージェントが "accept-ch"を含むHTTPレスポンスを受信すると、その後の同じ原点要求のために示された要求ヘッダフィールドを受信するためにオプトインがオプトインされていることを示します。安全でないトランスポートで配信されている場合は、オプトインは無視されます(HTTPSとは異なる方式を使用)。ユーザーのセッションの期間(ユーザーエージェントによって定義されているように)サーバーの原点への後続の要求に対するクライアントヒントの配信を可能にするには、永続化され、原点にバインドする必要があります。オプトインは以前の永続化されたオプトイン値をオーバーライドし、その代わりに持続する必要があります。

Based on the Accept-CH example above, which is received in response to a user agent navigating to "https://site.example", and delivered over a secure transport, persisted Accept-CH preferences will be bound to "https://site.example". It will then use it for navigations to for example, "https://site.example/foobar.html", but not to, for example, "https://foobar.site.example/". It will similarly use the preference for any same-origin resource requests (e.g., to "https://site.example/image.jpg") initiated by the page constructed from the navigation's response, but not to cross-origin resource requests (e.g., "https://thirdparty.example/resource.js"). This preference will not extend to resource requests initiated to "https://site.example" from other origins (e.g., from navigations to "https://other.example/").

上記のaccept-chの例に基づいて、ユーザーエージェントに "https://site.example"に対応し、安全なトランスポートで配信された、永続的なaccept-ch設定は "https:// site.example "。次に、「https://site.example/foobar.html」などのナビゲーションに使用しますが、たとえば、 "https://foobar.site.example/"には使用されません。ナビゲーションの応答から構築されたページによって開始されたが、原点の応答から構築されたページによって開始されたが、原点の応答から構築されたページによって開始されたが、原点の応答から構築されたページによって開始されたが、原点の応答から構築されたページによって開始されたが、原点の応答から構築されたプラフィックの好みを使用するであろう。たとえば、 "https://thirdparty.example/resource.js")。この好みは、他の起源からの「https://site.example」から「https://site.example」に開始されたリソース要求には拡張されません(たとえば、ナビゲーションから "https:///other.example/")。

3.2. Interaction with Caches
3.2. キャッシュとの対話

When selecting a response based on one or more Client Hints, and if the resource is cacheable, the server needs to generate a Vary response header field [RFC7234] to indicate which hints can affect the selected response and whether the selected response is appropriate for a later request.

1つまたは複数のクライアントヒントに基づいて応答を選択すると、リソースがキャッシュ可能である場合、サーバーは選択された応答に影響を与える可能性があるか、選択した応答がどのヒントに影響を与えるか、および選択した応答が適切かを示すために、Vary Response Headerフィールドを生成する必要があります。後で要求します。

Vary: Sec-CH-Example

さまざま:sec-ch-example

The above example indicates that the cache key needs to include the Sec-CH-Example header field.

上記の例では、キャッシュキーがSEC-CH-Example Headerフィールドを含める必要があることを示しています。

Vary: Sec-CH-Example, Sec-CH-Example-2

さまざま:SEC-CH-Example、SEC-CH-Example-2

The above example indicates that the cache key needs to include the Sec-CH-Example and Sec-CH-Example-2 header fields.

上記の例では、キャッシュキーにSEC-CH-Example-Example-2ヘッダーフィールドを含める必要があることを示しています。

4. Security Considerations
4. セキュリティに関する考慮事項
4.1. Information Exposure
4.1. 情報露出

Request header fields used in features relying on this document expose information about the user's environment to enable privacy-preserving proactive content negotiation and avoid exposing passive fingerprinting vectors. However, implementers need to bear in mind that in the worst case, uncontrolled and unmonitored active fingerprinting is not better than passive fingerprinting. In order to provide user privacy benefits, user agents need to apply further policies that prevent abuse of the information exposed by features using Client Hints.

この文書に依存している機能で使用されるヘッダーフィールドをリクエストするPrivacyを提供するために、ユーザーの環境に関する情報を公開し、プロアクティブコンテンツネゴシエーションを実現し、パッシブフィンガープリントベクトルを公開しないようにします。ただし、実装者は、最悪の場合、制御されていない、非監視対象の指紋はパッシブフィンガープリントよりも優れていないことに留意する必要があります。ユーザーのプライバシーの利点を提供するために、ユーザーエージェントは、クライアントのヒントを使用している機能によって公開された情報の乱用を妨げるさらなるポリシーを適用する必要があります。

The information exposed by features might reveal new information about the user, and implementers ought to consider the following considerations, recommendations, and best practices.

機能によって公開された情報は、ユーザーに関する新しい情報を明らかにし、実装者は次の考慮事項、推奨事項、およびベストプラクティスを考慮する必要があります。

The underlying assumption is that exposing information about the user as a request header is equivalent (from a security perspective) to exposing this information by other means. (For example, if the request's origin can access that information using JavaScript APIs and transmit it to its servers.)

基礎となる仮定は、要求ヘッダとしてユーザに関する情報を公開すること(セキュリティの観点から)等価であるため、この情報を他の手段で公開することです。(例えば、要求の原点がJavaScript APIを使用してその情報にアクセスしてサーバーに送信できる場合)。)

Because Client Hints is an explicit opt-in mechanism, it means that servers wanting access to information about the user's environment need to actively ask for it, enabling clients and privacy researchers to keep track of which origins collect that data, and potentially act upon it. The header-based opt-in means that removal of passive fingerprinting vectors is possible. As an example, the user agent can reduce the information exposed by the User-Agent string, while enabling active access to that information through User-Agent Client Hints [UA-CH]. Otherwise, the user agent can expose information already available through script (e.g., the Save-Data Client Hints <https://wicg.github.io/savedata/#save-data-request-header-field>), without increasing the passive fingerprinting surface. User agents supporting Client Hints features which send certain information to opted-in servers SHOULD avoid sending the equivalent information passively.

クライアントのヒントは明示的なオプトインメカニズムであるため、ユーザーの環境に関する情報へのアクセスを求めたいサーバーが積極的にそれを求める必要があり、クライアントやプライバシーの研究者がそのデータを収集し、潜在的に行動することができます。。ヘッダベースのオプトインは、パッシブフィンガープリントベクトルの除去が可能であることを意味します。一例として、ユーザエージェントは、User-Agent Stringによって公開された情報を減らすことができますが、ユーザーエージェントクライアントのヒント[UA-CH]を介してその情報へのアクティブなアクセスを可能にします。それ以外の場合、ユーザーエージェントは、スクリプトを介して既に入手可能な情報(例えば、保存データクライアントのヒント<https://wicg.github.io/SaveData/javeSave-Data-Request-header-field>)を拡大させることなく、情報を公開できます。パッシブフィンガープリント面。クライアントヒントをサポートするユーザエージェントは、オプトインインテサーバに特定の情報を送信する機能を受動的に送信しないようにしてください。

Therefore, features relying on this document to define Client Hint headers MUST NOT provide new information that is otherwise not made available to the application by the user agent, such as existing request headers, HTML, CSS, or JavaScript.

したがって、クライアントヒントヘッダーを定義するためにこの文書に依存する機能は、既存の要求ヘッダー、HTML、CSS、またはJavaScriptなど、ユーザーエージェントによってアプリケーションに使用可能ではない新しい情報を提供してはなりません。

Such features need to take into account the following aspects of the exposed information:

そのような機能は、さらなる情報の以下の態様を考慮に入れる必要がある。

Entropy: Exposing highly granular data can be used to help identify users across multiple requests to different origins. Reducing the set of header field values that can be expressed, or restricting them to an enumerated range where the advertised value is close to but is not an exact representation of the current value, can improve privacy and reduce risk of linkability by ensuring that the same value is sent by multiple users.

エントロピー:非常に細かいデータを公開するために、さまざまな起源への複数の要求にわたるユーザーを識別するのに役立ちます。表現できるヘッダーフィールド値のセットを縮小するか、広告された値が現在の値の正確な表現ではない列挙範囲に制限することは、プライバシーを向上させ、同じことを確実にすることで連携性のリスクを低減することができます。値は複数のユーザーによって送信されます。

Sensitivity: The feature SHOULD NOT expose user-sensitive information. To that end, information available to the application, but gated behind specific user actions (e.g., a permission prompt or user activation), SHOULD NOT be exposed as a Client Hint.

感度:機能はユーザーに敏感な情報を公開してはいけません。そのために、アプリケーションで利用可能な情報は、特定のユーザアクション(例えば、許可プロプトまたはユーザアクティブ化)の背後にゲートされた情報をクライアントのヒントとして公開してはいけません。

Change over time: The feature SHOULD NOT expose user information that changes over time, unless the state change itself is also exposed (e.g., through JavaScript callbacks).

時間の経過とともに変更すると、状態変化自体が公開されていない限り(例えばJavaScriptコールバックを通じて)、時間とともに変化するユーザー情報を公開しないでください。

Different features will be positioned in different points in the space between low-entropy, non-sensitive, and static information (e.g., user agent information) and high-entropy, sensitive, and dynamic information (e.g., geolocation). User agents need to consider the value provided by a particular feature vs. these considerations and may wish to have different policies regarding that tradeoff on a per-feature or other fine-grained basis.

異なる機能は、低エントロピー、非感度、および静的情報(例えば、ユーザエージェント情報)と高エントロピー、敏感、および動的情報(例えば、地理化)との間の空間内の異なる点に配置されます。ユーザエージェントは、特定の機能とこれらの考慮事項によって提供される値を考慮する必要があり、特徴または他の微細な粒度でそのトレードオフに関して異なるポリシーを持つことを望むかもしれない。

Implementers ought to consider both user- and server-controlled mechanisms and policies to control which Client Hints header fields are advertised:

実装者は、どのクライアントヒントヘッダフィールドがアドバタイズされているかを制御するためのユーザおよびサーバ制御のメカニズムとポリシーの両方を考慮する必要があります。

* Implementers SHOULD restrict delivery of some or all Client Hints header fields to the opt-in origin only, unless the opt-in origin has explicitly delegated permission to another origin to request Client Hints header fields.

* アプリケーションは、Opt-in Originが別のOriginに明示的に委任されていない限り、クライアントのヒントヘッダーフィールドを要求するための別の原点への許可を明示的に委任されていない限り、実装者はOpt-in Originへの配信を制限する必要があります。

* Implementers that consider providing user-choice mechanisms that allow users to balance privacy concerns against bandwidth limitations need to also consider that explaining the privacy implications involved to users, such as the risks of passive fingerprinting, may be challenging or even impractical.

* 帯域幅の制限に対するプライバシーの懸念のバランスをとることを可能にするユーザー選択メカニズムを提供することを検討する実装者は、パッシブフィンガープリントのリスクなどのユーザーに関わるプライバシーの影響を説明することも、やりがいのある、または実用的ではない可能性があると考える必要があります。

* Implementations specific to certain use cases or threat models MAY avoid transmitting some or all of the Client Hints header fields. For example, avoid transmission of header fields that can carry higher risks of linkability.

* 特定のユースケースまたは脅威モデルに固有の実装は、クライアントヒントヘッダーフィールドの一部または全部の送信を回避することがあります。たとえば、リンク性の高いリスクを持つことができるヘッダーフィールドの送信を避けます。

User agents MUST clear persisted opt-in preferences when any one of site data, browsing cache, cookies, or similar are cleared.

ユーザエージェントは、サイトデータ、閲覧キャッシュ、Cookie、または類似のいずれかがクリアされたときに、永続的なオプトイン嗜好をクリアする必要があります。

4.2. Deployment and Security Risks
4.2. 展開とセキュリティ上のリスク

Deployment of new request headers requires several considerations:

新しい要求ヘッダーの展開には、いくつかの考慮事項が必要です。

* Potential conflicts due to existing use of a header field name * Properties of the data communicated in a header field value

* ヘッダーフィールド名の既存の使用による潜在的な競合*ヘッダーフィールド値で通信されたデータのプロパティ

Authors of new Client Hints are advised to carefully consider whether they need to be able to be added by client-side content (e.g., scripts) or whether the Client Hints need to be exclusively set by the user agent. In the latter case, the Sec- prefix on the header field name has the effect of preventing scripts and other application content from setting them in user agents. Using the "Sec-" prefix signals to servers that the user agent -- and not application content -- generated the values. See [FETCH] for more information.

新しいクライアントヒントの作者は、クライアント側のコンテンツ(例えば、スクリプト)によって追加できるか、クライアントのヒントをユーザーエージェントによって排他的に設定する必要があるかどうかを慎重に検討することをお勧めします。後者の場合、ヘッダフィールド名のSec-プレフィックスには、スクリプトやその他のアプリケーションコンテンツがユーザーエージェントに設定するのを防ぐ効果があります。「Sec-」プレフィックス信号を使用すると、アプリケーションコンテンツが生成されたユーザーエージェント - ではなく、サーバーを使用します。詳細については[取得]を参照してください。

By convention, request headers that are Client Hints are encouraged to use a CH- prefix, to make them easier to identify as using this framework; for example, CH-Foo or, with a "Sec-" prefix, Sec-CH-Foo. Doing so makes them easier to identify programmatically (e.g., for stripping unrecognized hints from requests by privacy filters).

慣例により、クライアントのヒントである要求ヘッダーは、このフレームワークを使用するように識別することを容易にするために、CH-プレフィックスを使用することをお勧めします。たとえば、ch-fooまたは "sec-"プレフィックス、sec-ch-fooなどです。そうすることで、それらをプログラム的に識別しやすくする(例えば、プライバシーフィルタによる要求から認識されないヒントをストリッピングするために)。

A Client Hints request header negotiated using the Accept-CH opt-in mechanism MUST have a field name that matches sf-token (Section 3.3.4 of [RFC8941]).

Accept-CH Opt-inメカニズムを使用してネゴシエートされたクライアントヒント要求ヘッダーは、SFトークンと一致するフィールド名([RFC8941]のセクション3.3.4)を持っている必要があります。

4.3. Abuse Detection
4.3. 虐待検出

A user agent that tracks access to active fingerprinting information SHOULD consider emission of Client Hints headers similar to the way it would consider access to the equivalent API.

アクティブなフィンガープリント情報へのアクセスを追跡するユーザーエージェントは、同等のAPIへのアクセスを検討する方法と同様のクライアントヒントヘッダーの排出を検討する必要があります。

Research into abuse of Client Hints might look at how HTTP responses to requests that contain Client Hints differ from those with different values and from those without values. This might be used to reveal which Client Hints are in use, allowing researchers to further analyze that use.

クライアントヒントの乱用に関する研究クライアントのヒントを含む要求に対するHTT回答に対するHTTS応答は、値が異なるものと値のないものとは異なる場合があります。これはどのクライアントのヒントが使用されているかを明らかにして、研究者がその使用をさらに分析できるようにするために使用されます。

5. Cost of Sending Hints
5. ヒントを送るためのコスト

Sending Client Hints to the server incurs an increase in request byte size. Some of this increase can be mitigated by HTTP header compression schemes, but each new hint sent will still lead to some increased bandwidth usage. Servers SHOULD take that into account when opting in to receive Client Hints and SHOULD NOT opt-in to receive hints unless they are to be used for content adaptation purposes.

クライアントヒントをサーバーに送信すると、リクエストバイトサイズの増加が発生します。この増加のいくつかはHTTPヘッダー圧縮方式によって軽減できますが、送信された各ヒントは依然として帯域幅の上昇の増加につながります。サーバーは、クライアントのヒントを受信するためにオプションを開始し、コンテンツ適応の目的で使用されない限り、ヒントを受信するようにオプトインしないでください。

Due to request byte size increase, features relying on this document to define Client Hints MAY consider restricting sending those hints to certain request destinations [FETCH], where they are more likely to be useful.

リクエストバイトサイズの増加により、クライアントのヒントを定義するためにこの文書に依存する機能は、それらのヒントの送信を特定の要求宛先に送信することを制限することを検討します。ここで、それらは有用である可能性が高いです。

6. IANA Considerations
6. IANAの考慮事項

Features relying on this document are expected to register added request header fields in the "Permanent Message Header Field Names" registry [RFC3864].

この文書に依存する機能は、「永久メッセージヘッダーフィールド名」レジストリ[RFC3864]に追加の要求ヘッダーフィールドを登録することが期待されています。

This document defines the "Accept-CH" HTTP response header field; IANA has registered it in the same registry.

このドキュメントでは、「Accept-CH」HTTPレスポンスヘッダーフィールドを定義します。IANAは同じレジストリに登録しました。

6.1. Accept-CH
6.1. accept ch

Header field name: Accept-CH

ヘッダーフィールド名:承認済み

Applicable protocol: HTTP

該当するプロトコル:http.

Status: experimental

ステータス:実験的

Author/Change controller: IETF

作成者/変更コントローラー:IETF

Specification document(s): Section 3.1 of this RFC

指定文書:このRFCのセクション3.1

Related information: for Client Hints

関連情報:クライアントヒントの場合

7. References
7. 参考文献
7.1. Normative References
7.1. 引用文献

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>.

[RFC2119] BRADNER、S、「RFCSで使用するためのキーワード」、BCP 14、RFC 2119、DOI 10.17487 / RFC2119、1997年3月、<https://www.rfc-editor.org/info/RFC2119>。

[RFC3864] Klyne, G., Nottingham, M., and J. Mogul, "Registration Procedures for Message Header Fields", BCP 90, RFC 3864, DOI 10.17487/RFC3864, September 2004, <https://www.rfc-editor.org/info/rfc3864>.

[RFC3864] Klyne、G.、Nottingham、M.、J. Mogul、「メッセージヘッダーフィールドの登録手順」、BCP 90、RFC 3864、DOI 10.17487 / RFC3864、2004年9月、<https:///www.rfc-editor.org/info/rfc3864>。

[RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", STD 68, RFC 5234, DOI 10.17487/RFC5234, January 2008, <https://www.rfc-editor.org/info/rfc5234>.

[RFC5234] Crocker、D.、ED。2008年1月、<https://www.rfc-editor.org/info/rfc-editor.org/info/rfc- editor.org/info/rfc523,2008、<https://www.rfc-editor.org/info/rfc- editor.org/info/rfc- editor.org/info/rfc- editor.org/info/rfc- editor.org/info/rfc- editor.org/info/rfc5234>。

[RFC7231] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content", RFC 7231, DOI 10.17487/RFC7231, June 2014, <https://www.rfc-editor.org/info/rfc7231>.

[RFC7231] Fielding、R.、Ed。J. Reschke、ED。、「Hypertext Transfer Protocol(HTTP / 1.1):セマンティクスとコンテンツ」、RFC 7231、DOI 10.17487 / RFC7231、2014年6月、<https://www.rfc-editor.org/info/rfc7231>。

[RFC7234] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, Ed., "Hypertext Transfer Protocol (HTTP/1.1): Caching", RFC 7234, DOI 10.17487/RFC7234, June 2014, <https://www.rfc-editor.org/info/rfc7234>.

[RFC7234] Field、R.、Ed。、Nottingham、M.、Ed。、J.Reschke、Ed。、「ハイパーテキスト転送プロトコル(HTTP / 1.1):キャッシング」、RFC 7234、DOI 10.17487 / RFC7234、2014年6月<https://www.rfc-editor.org/info/rfc7234>。

[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>.

[RFC8174] Leiba、B、「RFC 2119キーワードの大文字の曖昧さ」、BCP 14、RFC 8174、DOI 10.17487 / RFC8174、2017年5月、<https://www.rfc-editor.org/info/RFC8174>。

[RFC8941] Nottingham, M. and P-H. Kamp, "Structured Field Values for HTTP", RFC 8941, DOI 10.17487/RFC8941, February 2021, <https://www.rfc-editor.org/info/rfc8941>.

[RFC8941]ノッティンガム、M.およびP-H。Kamp、「HTTPの構造化フィールド値」、RFC 8941、DOI 10.17487 / RFC8941、2021年2月、<https://www.rfc-editor.org/info/rfc8941>。

7.2. Informative References
7.2. 参考引用

[CLIENT-HINTS-INFRASTRUCTURE] Weiss, Y., "Client Hints Infrastructure", July 2020, <https://wicg.github.io/client-hints-infrastructure/>.

[クライアント - ヒント - インフラストラクチャ] Weiss、Y。、「クライアントヒントインフラストラクチャ」、<https://wicg.github.io/client-hints-infrasture />。

[FETCH] WHATWG, "Fetch - Living Standard", <https://fetch.spec.whatwg.org/>.

[Fetch] Whatwg、 "Fetch - Living Standard"、<https://fetch.spec.whatwg.org/>。

[RFC6265] Barth, A., "HTTP State Management Mechanism", RFC 6265, DOI 10.17487/RFC6265, April 2011, <https://www.rfc-editor.org/info/rfc6265>.

[RFC6265] BARTH、A。、「HTTP状態管理メカニズム」、RFC 6265、DOI 10.17487 / RFC6265、2011年4月、<https://www.rfc-editor.org/info/rfc6265>。

[UA-CH] West, M. and Y. Weiss, "User-Agent Client Hints", August 2020, <https://wicg.github.io/ua-client-hints/>.

[UA-CH] WEST、M.およびY. Weiss、「User-Agent Client Hints」、2020年8月、<https://wicg.github.io/ua-client-hints/>。

Acknowledgements

謝辞

Thanks to Mark Nottingham, Julian Reschke, Chris Bentzel, Ben Greenstein, Tarun Bansal, Roy Fielding, Vasiliy Faronov, Ted Hardie, Jonas Sicking, Martin Thomson, and numerous other members of the IETF HTTP Working Group for invaluable help and feedback.

Mark Nottingham、Julian Reschke、Chris Bentzel、Ben Greenstein、Tarun Bansal、Roy Fielding、Vasiliy Faronov、Ted Cardie、Jonasの病気、Martin Thomson、および非常に貴重なヘルプとフィードバックのための多数のIETF HTTPワーキンググループのメンバー。

Authors' Addresses

著者の住所

Ilya Grigorik Google

Ilya Grigorik Google

   Email: ilya@igvita.com
   URI:   https://www.igvita.com/
        

Yoav Weiss Google

yoav Weiss Google

   Email: yoav@yoav.ws
   URI:   https://blog.yoav.ws/