Google 产品应用透明度

为了提高对 Google 应用的信任度,我们现在承诺在透明度日志中列出所有 Google 产品应用。我们发布了透明度日志,以便公开验证我们针对这些 APK 提出的声明。

威胁模型

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

假设攻击者恶意修改了某个 Google 应用,甚至设法使用通过 Google Play 分发时所用的签名密钥为该应用签名。借助二进制透明度日志,收到可疑 APK 的任何人都可以将其用作可验证的标准答案来源,以验证 APK 的真实性。 他们会发现 Google 未将相应的 APK 元数据添加到日志中,因此会知道不应信任遭入侵的 APK。

由于发布到日志与使用签名进行的发布过程是分开的(如生态系统图所示),因此这提高了攻击者的门槛,而不仅仅是泄露密钥。

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

此类透明系统的存在以及攻击的可发现性提高,有助于遏制恶意活动。如果某个 APK 遭到入侵,但用户只信任日志中列出的 APK,那么遭到入侵的 APK 就需要公开。这样可以提高发现受损 APK 的可能性,并采取措施来阻止其分发。

版权主张方模型

声明者模型是一种用于在可验证的系统中定义角色和制品 (artifact) 的框架。对于 Google 第一方应用透明度,我们声明此日志中记录的 APK 文件哈希值代表的是面向公众的特定版本的官方 Google 应用。

  • 声明GoogleApp:(我,Google,声明 $hashApp 适用于 $googleApp),其中:
    • $hashApp 是特定版本 $googleApp 的 APK 文件(包括拆分 APK)的加密哈希(例如 SHA256)。
    • $googleApp 是 Google 创建和分发的应用所组成的 Android 软件包 (APK)。

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

日志内容

当 Google 发布新版 APK 时,会在 Google 第一方 APK 透明度日志中添加相应条目。

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

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

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

hash\nSHA256(APK)\npackage_name\npackage_version\n

由于我们测量的是整个 APK 文件,因此哈希说明设置为 SHA256(APK)。这样可以全面覆盖每个文件的内容,并让用户更轻松地获取此衡量指标。

生态系统图

可验证的日志生态系统图