Capacitor-updater 现已支持端到端 code 加密。Code 签名可确保最终用户设备上运行的更新未被篡改,并在 Capacitor-updater 标准的 Web 级安全之上提供额外一层保护。
Capacitor-updater 的默认安全性
默认情况下,Capgo 的安全模型类似于 Web 托管服务商。Capgo 存储更新 静态加密 并通过 HTTPS 使用现代加密套件提供服务。同样,从开发者电脑发布更新也始终使用 HTTPS。

Capgo 的默认安全配置在 SSL Labs 的 HTTPS 测试中获得了 A+ 评级(https://www.ssllabs.com,2022 年 11 月)
与顶级 Web 主机一样,Capgo 使用 HTTPS 保护服务器与最终用户设备之间网络连接的隐私和完整性。这种卓越的安全级别非常适合 Web 以及使用 Capgo 的 Ionic 应用。
云端基础设施供应链
Capgo 和大多数 Web 主机的另一个共同点是,它们都运行在底层云基础设施上,通常来自 AWS、GCP 或其他主流云服务商。这些云服务商以及 Capgo 或其他 Web 主机运营的硬件和软件都是云供应链的一部分。
云供应链及其安全模型适用于大量网站和应用。每个使用云服务商的 Web 开发者都信任该服务商,并期望他们上传的文件在运行或提供服务时不会被篡改。云服务商也在努力确保其基础设施的安全。
但显然,硬件和软件漏洞会被发现。云服务商会按时修补漏洞,并主动防止恶意软件(例如 Google 的 SLSA),并构建纵深防御体系。实际上,云基础设施已证明能够满足大多数网站和应用的安全需求。然而,一些 Ionic 应用在其威胁模型中包含了被入侵的云基础设施。对于这些安全要求高于 Web 的 Capacitor JS 应用,我们在 Capgo 中构建了端到端 code 签名,以及 Capgo Updates 标准协议.
使用 Capgo 进行端到端 code 签名
Capgo 的端到端 code 签名使用公钥加密技术,确保最终用户设备仅运行来自 Capacitor 应用开发者的未修改原始更新。
“端到端”意味着这种安全性覆盖了从开发者发布更新到最终用户设备接收并运行更新的整个流程。“Code 签名”是指使用加密技术和秘密私钥对 code 进行“签名”,随后使用受信任的公钥验证签名。
以下是一个简单的*模式来说明其工作原理:

- 实践中很复杂,加密很难
定义:
- AES:高级加密标准,一种对称加密算法,加密和解密使用同一个密钥。
- RSA:Rivest–Shamir–Adleman,一种非对称加密算法,使用两个密钥:公钥和私钥。
- Cypher:加密后的数据。
- 会话密钥:用于加密和解密数据的 AES 密钥。
- 校验和:为文件计算出的哈希值
- 签名:用 RSA 私钥加密过的校验和。可以用 RSA 公钥验证
我们使用 AES 算法加密更新。每次 upload 都会生成一个随机 AES 密钥,然后用开发者的 RSA 私钥加密该 AES 密钥和校验和(以下简称“签名”)。App 会使用开发者的 RSA 公钥解密 AES 密钥和签名(将其还原为校验和)。之后,用解密后的 AES 密钥解密更新;计算解密后更新内容的校验和,并与解密后的签名进行比对。
我们使用两种不同的加密算法,因为 RSA 无法用于加密大量数据。AES 用于加密更新,RSA 用于加密 AES 密钥和校验和。
这样,即使是 Capgo 也无法读取你的 bundle 内容。这是一种许多企业客户都在使用的可靠安全模型。
更新加密 V2 2024-08-27:
- 我们更换了 App 中存储的密钥类型。这样做是为了防止从私钥(之前用于解密)反推出公钥(之前用于加密)。现在,App 存储的是公钥(现在用于解密)。
- 我们将校验和算法从 CRC32 改成了 SHA256。我们还开始 为 bundle 签名。当配置了加密 V2 时,更新必须具有有效签名。插件会严格强制执行此要求。
- 我们现在强制要求配置加密 V2 时签名有效。 这三项更改是在社区成员进行安全分析后实施的,旨在防止更新过程中的加密攻击。
如果您使用的是加密 V1,请迁移到 V2 以享受新的安全功能。请遵循 迁移指南.
借助端到端 code 签名,Capgo 变成了“无信任”云基础设施。如果 Capgo 的任一云提供商甚至 Capgo 本身修改了 code 签名的更新,终端用户的设备将拒绝该更新,并继续运行设备上已有的、受信任的先前更新。
虽然 Web 级别的 HTTPS 对许多应用来说已经足够,但一些大型企业认为端到端 code 签名提供的额外安全层级很有吸引力。其中一些公司开发金融应用,处理高价值且不可逆的交易。其他公司的 CISO 将云基础设施被入侵纳入其威胁模型。我们为这些用例在 Capgo 中构建了端到端 code 签名,并期待与有更高安全需求的公司进一步交流。
企业客户入门指南
对于高度重视安全的大型企业或项目,我们希望让 code 签名易于设置和维护。为此,我们现在提供以下功能:
- 快速证书设置与配置
- 支持在 Capgo 和开发构建中,对 code 签名开发服务器进行签名
- 每次更新均进行生产环境 code 签名
Capgo code 签名功能面向所有客户开放。要开始使用,请遵循 设置说明.
额度
非常感谢 Ionic,本文基于 本文 使用 ChatGPT-3 重写并进行了适配。
继续阅读:通过 Code 签名实现 Capacitor Updater 的端到端加密
如果你正在使用 通过 Code 签名实现 Capacitor Updater 的端到端加密 来规划安全与合规,请结合 加密 了解 Encryption 的实现细节, 合规性 了解合规部分的实现细节, Capgo 安全扫描器 了解 Capgo Security Scanner 的产品工作流, Capgo 安全 用于 Capgo 安全的产品工作流,以及 Capgo 信任中心 用于 Capgo 信任中心的产品工作流。