在 Glean 中使用 Firefox 的 Oblivious HTTP

Oblivious HTTP (RFC 9458) 是一种互联网标准传输协议,允许分离隐私问题。

发送 HTTP(S) 请求的客户端必然会将其网络地址和请求内容都暴露给目标服务器。OHTTP 通过引入封装和中继,允许一个系统,其中第三方中继只能了解网络地址而不知道内容,而服务器只能了解请求内容而不知道网络地址。

这对于我们不希望与 IP 地址关联的数据收集来说,是一种有用的风险缓解措施。

我的数据可以使用 OHTTP 吗?

任何满足以下条件的数据收集都可以使用 OHTTP

  • 您的数据必须仅在 Firefox 桌面版上收集。

    • 目前,没有其他 Mozilla 项目支持 OHTTP。

  • 您的数据必须通过 Glean 记录。

    • 它是 Mozilla 中唯一支持 OHTTP 的数据收集系统。

  • 您的数据必须位于其自己的 自定义 Ping 中。

    • OHTTP 是传输级别的决策,而 Ping 是 Glean 的传输有效负载。

  • 您的数据(与 Mozilla 项目中所有新的或扩展的数据收集一样)必须经过 数据收集审查

    • 如果您正在考虑使用 OHTTP,可能是因为您打算收集的数据很敏感。这意味着您可能需要特别地经过 敏感数据收集审查

  • 您的数据不得需要与未通过 OHTTP 发送的 ID 关联。

    • 这包括 client_id 和 Mozilla 账户标识符。 client_id 和其他指纹信息被明确排除在使用 OHTTP 的 Ping 之外。

如何为我的数据使用 OHTTP?

简短版本:在 Ping 定义中添加两个元数据字段

最简单的方法是,通过在 Ping 的 pings.yaml 定义中添加以下三行来选择使用 OHTTP。

  metadata:
    include_info_sections: false
    use_ohttp: true

这是一个指向 Searchfox 搜索 use_ohttp: true 的便捷链接,如果您想查看树中现有的用法。

较长版本

  1. 确保您已按照 将新的检测添加到 Firefox 桌面版 的必要步骤进行操作。

    • 命名您的 Ping。

    • 设计和实现您的检测。

    • 设计和实现您的 Ping 提交计划。

    • 安排 数据审查(可能是 敏感数据)。

  2. 在 Ping 的 pings.yaml 定义中添加 metadata.include_info_sections: falsemetadata.use_ohttp: true

    • include_info_sections: false 确保没有 client_idclient_infoping_info 字段中可用于指纹识别的部分,这将使我们无法轻易地将此 Ping 映射到特定客户端。

    • use_ohttp: true 向 Firefox on Glean (FOG) 的 glean_parser 扩展发出信号,以生成识别此 Ping 需要 OHTTP 传输的必要代码。它在 FOG 的上传器中读取,以确保 Ping 仅使用 OHTTP 发送。

  3. 测试您的检测。.

就是这样!