Google 产品应用透明度

为了提高 Google 应用和产品的可信度,我们致力于在透明度日志中列出每个 Google 产品软件包。 我们发布了透明度日志,以便公开验证我们针对这些软件包(APK 和 APEX)所做的 声明。

威胁模型

透明度系统可用于检测供应链攻击,从而起到威慑作用。下面我们通过一些示例进行说明。

假设攻击者恶意修改了 Google 应用或产品,甚至设法使用通过 Google Play 进行分发时所用的签名密钥对其进行签名。 借助二进制透明度日志,任何收到可疑软件包(APK 或 APEX)的人都可以将其用作额外的可验证的真实来源,以验证软件包的真实性。 他们会发现 Google 尚未将相应的软件包元数据添加到日志中,因此会知道不要信任被入侵的软件包。

由于向日志发布与使用 签名进行发布是不同的流程(如生态系统图所示), 因此这不仅提高了攻击者入侵密钥的门槛,还提高了其他方面的门槛。

虽然我们计划使用标准见证协议将此日志集成到公共见证网络中 ,但我们鼓励外部独立方监控此 公开日志 的完整性。 这些方可以证明日志的仅追加属性,并报告任何篡改行为。

此类透明度系统的存在以及攻击的可发现性提高,有助于阻止恶意活动。 如果软件包遭到入侵,但用户只信任日志中的软件包,则需要公开被入侵的软件包。 这样一来,发现被入侵软件包的可能性就会增加,并且可以采取措施来移除其分发。

版权主张方模型

版权主张方模型是一个框架,用于在 可验证的系统中 定义角色和工件。就 Google 产品应用透明度而言,我们所做的声明是,此日志中记录的软件包文件的哈希值代表特定版本的官方 Google 产品,供公众使用。

  • ClaimGoogleApp:(我,Google,声明 $hashApp 适用于 $googleApp),其中:
    • $hashApp 是 $googleApp 特定版本的软件包文件 (包括 拆分 APK 和 APEX 软件包)的加密哈希值(例如 SHA256)。
    • $googleApp 是一个 Android 软件包 (APK 或 APEX),它构成了 Google 创建和分发的应用或产品。

任何拥有 $googleApp 副本的人都可以验证此声明, 我们会在 验证页面中详细介绍此流程。

日志内容

当 Google 发布新版本的 APK 或 APEX 软件包时, 它会向 Google 产品应用透明度日志添加相应的条目。

此日志中的每个条目都包含四条元数据:

  1. 由 Google 签名的软件包的 APK 或 APEX 文件的哈希值。这是一个十六进制字符串,表示整个文件的 SHA256 摘要。
  2. 对上述哈希类型的说明。这是一个字符串。
  3. 软件包的软件包名称。这是一个字符串。
  4. 软件包的版本号 (versionCode)。 这是一个非零整数。

日志条目的格式是将这四条信息与换行符 (\n) 连接起来,如下所示:

hash\nhash_description\npackage_name\npackage_version\n

由于 Google 产品可以作为 APK 或 APEX 文件进行分发,因此哈希说明设置为 SHA256(APK) 或 SHA256(APEX)。这样可以全面涵盖每个文件的内容,并让用户更轻松地获取此衡量指标。

生态系统图

可验证的日志生态系统图