Capacitor更新器现在支持端到端加密。__CAPGO_KEEP_1__签名确保更新在用户设备上运行时没有被篡改,并提供了额外的保护,高于__CAPGO_KEEP_2__-updater的标准web级安全 now supports end-to-end code encryption. Code signing makes sure the updates run by end users’ devices have not been tampered with and provides an extra level of protection above Capacitor-updater’s standard web-grade security.
Capacitor的安全模型默认与web托管提供商类似。__CAPGO_KEEP_1__存储更新
By default, Capgo’s security model is similar to that of web hosting providers. Capgo stores updates encrypted at rest and serves them over HTTPS using modern ciphers. Similarly, publishing an update from a developer’s computer always uses HTTPS.

Capgo 的默认安全性在 SSL Labs 的 HTTPS 测试中得分 A+(https://www.ssllabs.com, November 2022)
像最好的 web 主机一样,Capgo 使用 HTTPS 保护网络连接的隐私和完整性,保护服务器和终端用户设备之间的网络连接。这是适用于 web 和使用 Capgo 的 Ionic 应用的一个很好的安全水平。
云基础设施供应链
Capgo 和大多数 web 主机都有一个共同点:它们都运行在较低级别的云基础设施上,通常来自 AWS、GCP 或其他流行的云提供商。这些云提供商和 Capgo 或其他 web 主机运营的硬件和软件是云供应链的一部分。
云供应链及其安全模型适用于大量的网站和应用。每个使用云提供商的 web 开发人员都将信任该提供商,并期望上传的文件是运行或服务的文件,而没有被篡改。云提供商也在努力保持其基础设施的安全性。
显然,硬件和软件的漏洞会被发现。云提供商会按时修复漏洞,预防恶意软件(例如 Google 的 SLSA),并且在实践中,云基础设施已经证明可以满足大多数网站和应用程序的安全需求。然而,某些Ionic应用程序将受损的云基础设施包含在其威胁模型中。对于这些Capacitor JS应用程序,其安全要求高于Web,我们构建了端到端code的签名,用于Capgo和 Capgo更新标准协议.
端到端code签名与Capgo
Capgo的端到端code签名使用公钥密码学来确保终端用户的设备只运行未修改的、原始的更新,从Capacitor应用程序开发者那里下载。
“端到端”意味着此安全性覆盖了从开发者发布更新到终端用户设备接收并运行更新的整个流程。“Code签名”是使用密码学和一个秘密的私钥来“签名”code,并且后来使用一个可信的公钥来验证签名。
以下是一个简单的*schema来解释它是如何工作的:

- 在实践中,密码学是复杂的
定义:
- AES:高级加密标准,一个对称加密算法,一个密钥用于加密和解密。
- RSA:里维斯特-沙米尔-阿德勒曼,一个非对称加密算法,两个密钥被使用:一个公钥和一个私钥。
- 密文:加密的数据。
- Session key: 使用 AES 算法对数据进行加密和解密的密钥。
- Checksum: 文件的哈希值
- Signature: 使用开发者私钥加密的哈希值,通过开发者公钥可以验证
我们使用 AES 算法对更新进行加密。为每次上传生成一个随机的 AES 密钥,然后使用开发者私钥加密 AES 密钥和哈希值(后称“签名”)。在应用程序中使用开发者公钥解密 AES 密钥和签名(将其还原为哈希值)。之后,解密的 AES 密钥用于解密更新;解密更新的哈希值与解密签名的哈希值进行比较
我们使用两种不同的加密算法,因为 RSA 不能用于加密大量数据。 AES 用于加密更新,RSA 用于加密 AES 密钥和哈希值
即使是 Capgo 也无法读取您的捆绑包内容。这是一个被许多企业客户使用的强大的安全模型
Update encryption V2 2024-08-27:
- 我们将存储在应用程序中的密钥类型切换了。这是为了防止从私钥(之前用于解密)推断出公钥(之前用于加密)。现在,应用程序存储的是公钥(现在用于解密)
- 我们从 CRC32 算法切换到了 SHA256 算法。我们还开始 签名捆绑包当配置了加密 V2 时,更新必须具有有效的签名。这一要求是由插件严格强制执行的。
- 我们现在强制执行了有效的签名加密 V2 配置。 这些 3 个更改是在社区成员进行安全分析之后完成的。它们旨在在更新期间防止加密攻击。
如果您使用的是加密 V1,迁移到 V2 以利用新安全功能。遵循 迁移指南.
通过端到端 code 签名,Capgo 成为一个“无需信任”的云基础设施。如果其中一个 Capgo 的云提供商或甚至 Capgo 自己修改了 code 签名的更新,终端用户的设备将拒绝该更新并运行已经在设备上的可信的更新。
虽然 web 级别的 HTTPS 对于许多应用程序来说是足够的,但一些大公司发现了端到端 code 签名的额外安全层级很有吸引力。这些公司中的一些开发了发行高值、永久交易的财务应用程序。其他公司的 CISOs 将受损的云基础设施纳入了他们的威胁模型中。我们在 Capgo 中为这些用例构建了端到端 code 签名,并希望从更高级别的安全需求的公司那里听到更多的反馈。
企业客户入门
对于那些对安全非常关心的大公司或项目,我们希望使 code 签名的设置和维护变得容易。为此,我们现在提供以下功能:
- 快速证书设置和配置
- 支持使用 code 签名同时支持 Capgo 和开发构建的开发服务器
- 每次更新都会对生产环境 code 进行签名
Capgo code 签名功能对所有客户开放。要开始使用,请遵循 设置指南.