加密
复制一个包含安装步骤和完整Markdown指南的设置提示。
Capgo 提供了强大的端到端加密功能,确保您的应用程序包中的 JavaScript code 和资产在传输和存储过程中受到保护。该加密系统旨在为您提供对应用程序安全性的完全控制,同时保持实时更新的便利性。
Capgo 的加密系统使用行业标准的加密方法来保护您的包免受未经授权的访问。启用加密时,您的包在离开开发环境之前会被加密,并且直到它们被用户设备上的应用程序解密为止。
什么加密实际上保护了什么: 与 OTA 系统相比,只有签名更新,Capgo 加密上传的包之前存储和传输。这保护了存储或传输过程中的包内容,并确保只有您私钥的持有者才能产生有效的加密更新。它并没有 使已发布的 Web 资产无法逆向工程:客户端用于解密更新的公钥被分发在应用程序中,因此一位坚定的攻击者仍然可以提取它并检查包内容的内容。 何时需要加密
加密的工作原理
关于加密的工作原理Capgo采用了混合加密方法,结合了RSA和AES加密技术,实现了最佳的安全性和性能:

1. 密钥生成
标题:1. 密钥生成- 私钥: 在开发环境中安全生成并存储(用于加密)
- 公钥: 从私钥派生并在应用的Capacitor配置中存储(用于解密)
- 会话密钥: 为每次上传包生成的随机AES密钥
2. 加密过程
Section titled “2. 加密流程”- 为每个上传的包生成一个随机的AES会话密钥
- 使用AES会话密钥对您的包进行加密
- 计算包的校验和
- 使用您的RSA私钥对AES会话密钥和校验和进行加密(创建“签名”)
- 存储加密的包和加密的签名
校验和与AES密钥一起加密,以防止篡改。由于只有您的RSA私钥才能创建此签名,且只有相应的公钥才能解密它,因此这确保了AES会话密钥和预期校验和都是真实的,并且没有被攻击者修改。
3. 解密流程
Section titled “3. 解密流程”- 您的应用程序下载加密的包和加密的签名
- 使用您的RSA公钥(存储在应用程序中)来解密签名的Capgo SDK
- 这揭示了AES会话密钥和原始校验和
- 使用 AES 会话密钥来解密捆绑包
- 计算并与原始校验和进行比较的解密捆绑包的校验和
即使攻击者截获加密的捆绑包,他们也无法修改 AES 会话密钥或提供虚假的校验和,因为他们需要您的私钥才能创建一个有效的签名,这个签名可以被公钥解密。
Capgo vs 其他平台
标题:Capgo vs 其他平台| 功能 | Capgo | 其他 OTA 平台 |
|---|---|---|
| 捆绑包内容 | 在存储/传输中加密;仍然可以通过反向工程师在应用程序二进制文件中检查 | 公开可读 |
| 安全方法 | 真正的端到端加密 | Code 签名仅 |
| 隐私级别 | 平台可以访问您的 __CAPGO_KEEP_0__ | Platform can access your code |
| 内容 + 完整性 + 真实性 | 完整性 + 真实性仅 | 为什么这很重要: |
在存储/传输中加密;仍然可以通过反向工程师在应用程序二进制文件中检查
- Code signing 仅验证更新未被篡改且来自正确源
- Capgo 加密 保护存储和传递的包并使伪造加密更新更困难,因为攻击者需要您的私钥
- 逆向工程仍然可能 因为客户端包含用于解密和加载更新的公钥
加密方法
加密方法Capgo 使用加密 V2 作为标准加密方法:
加密 V2 (当前标准)
使用 RSA-4096 提供增强的安全性- 加密 V2 (当前标准)
- AES-256-GCM用于认证加密
- 提供完整性验证
- 更好的性能和安全性
Encryption V1(已弃用)
标题:Encryption V1(已弃用)- 使用RSA-2048进行密钥加密
- AES-256-CBC用于打包加密
- CLI中不再可用
- 使用V1的遗留应用程序必须迁移到V2
设置加密
标题:设置加密步骤 1:生成加密密钥
标题:步骤 1:生成加密密钥首先,使用 Capgo CLI 生成您的加密密钥:
# Generate new encryption keys (creates files in current directory)npx @capgo/cli@latest key create这将创建:
.capgo_key_v2:您的私钥(请妥善保管!).capgo_key_v2.pub:您的公钥(您的应用程序使用)
这些文件是在您运行命令的当前目录中创建的。
步骤 2:将公钥保存到 Capacitor 配置(必需)
标题:步骤 2:将公钥保存到 Capacitor 配置(必需)您 必须 将您的公钥保存到 Capacitor 配置中,以便您的移动应用程序可以解密捆绑包:
# Save public key from file to Capacitor config (required)npx @capgo/cli@latest key save --key ./.capgo_key_v2.pub
# Or save public key data directlynpx @capgo/cli@latest key save --key-data "$CAPGO_PUBLIC_KEY"步骤 3:同步 Capacitor 平台(必需)
标题:步骤 3:同步 Capacitor 平台(必需)保存公钥后,您 必须 同步 Capacitor 平台以将更新的配置复制到本机层:
# Sync the platform to copy config to nativenpx cap sync加密打包
加密打包方法 1:上传时加密
方法 1:上传时加密最简单的方法是在上传过程中进行加密:
# Upload with automatic encryptionnpx @capgo/cli@latest bundle upload --key-v2
# For external storage, you must encrypt first (see Manual Encryption Workflow below)方法 2:手动加密工作流
方法 2:手动加密工作流为了获得更多的控制,您可以手动加密打包:
-
创建一个 zip 打包:
终端窗口 npx @capgo/cli@latest bundle zip com.example.app --path ./dist --key-v2 -
加密包裹:
终端窗口 npx @capgo/cli@latest bundle encrypt ./com.example.app.zip CHECKSUM_FROM_STEP_1 -
上传到您的存储(例如 S3)并注册到 Capgo:
终端窗口 # First upload the encrypted bundle to your storage (e.g., AWS S3)aws s3 cp ./encrypted-bundle.zip s3://your-bucket/encrypted-bundle.zip# Then register with Capgo using the external URLnpx @capgo/cli@latest bundle upload --external https://your-storage.com/encrypted-bundle.zip --iv-session-key IV_SESSION_KEY_FROM_STEP_2
密钥管理
密钥管理安全存储密钥
安全存储密钥私钥选项:
-
基于文件 (本地开发):
终端窗口 # Key stored as .capgo_key_v2 file in project rootnpx @capgo/cli@latest bundle upload --key-v2 -
环境变量 (CI/CD):
终端窗口 # Store in environment variable for CIexport CAPGO_PRIVATE_KEY="$(cat .capgo_key_v2)"npx @capgo/cli@latest bundle upload --key-data-v2 "$CAPGO_PRIVATE_KEY"
公钥设置 (必填):
# Must save public key to Capacitor config for mobile appnpx @capgo/cli@latest key save --key ./.capgo_key_v2.pub生产环境:
- 将私钥存储在安全的密钥管理服务 (AWS KMS, Azure Key Vault 等) 中
- 使用 CI/CD 秘密管理私钥
- Never commit private keys to version control
Key Usage:
- Private Key: Used by CLI for encryption during bundle upload (keep secure)
- Public Key: Stored in app configuration for decryption on device (safe to commit)
Key Rotation
Section titled “Key Rotation”Regularly rotate your encryption keys for enhanced security:
-
Generate new keys:
笔式窗安稙床一个服务器 # Navigate to desired directory first, then create keysmkdir ./new-keys && cd ./new-keysnpx @capgo/cli@latest key create -
将新公钥保存到Capacitor配置:
终端窗口 npx @capgo/cli@latest key save --key ./new-keys/.capgo_key_v2.pub -
更新您的应用程序配置 使用新公钥
-
部署更新的应用程序 在上传加密包装之前
安全最佳实践
安全最佳实践密钥安全
密钥安全- 绝不分享私钥 环境或团队成员之间
- 为不同环境(dev,staging,production)使用不同的密钥 定期轮换密钥(建议每6-12个月)
- 安全存储密钥 安全包
- 在解密后始终验证包完整性 监控
使用适当的密钥管理系统
安全包- 安全包 安全包
- 安全包 __CAPGO_KEEP_0__
- 使用 HTTPS __CAPGO_KEEP_1__
- 实现 正确处理解密失败的错误
访问控制
标题:访问控制- 限制 对加密密钥的访问仅限授权人员
- 使用基于角色的访问 控制密钥管理操作
- 审计 定期检查和访问密钥
- Implement 正确备份和恢复程序
故障排除加密
故障排除加密常见问题
常见问题解密失败:
- 确认私钥与用于加密的公钥匹配
- 检查加密
ivSessionKey确保您正在使用加密 V2(V1 已不再支持) - Implement
与密钥相关的错误:
- 确认私钥格式正确(PEM格式)
- 验证密钥在存储/传输过程中未被损坏
- 检查应用配置中密钥的权限是否正确
性能问题:
- 大型捆绑包可能会花更长时间进行加密/解密
- 考虑使用Delta(清单)更新来减少捆绑包大小
- 监控设备性能在解密期间
调试命令
标题为“调试命令”检查加密状态:
npx @capgo/cli@latest app debug测试加密/解密工作流程:
# Test the complete workflow: zip → encrypt → decrypt → unzipnpx @capgo/cli@latest bundle zip com.example.app --key-v2npx @capgo/cli@latest bundle encrypt ./com.example.app.zip CHECKSUM --jsonnpx @capgo/cli@latest bundle decrypt ./encrypted-bundle.zip IV_SESSION_KEY合规性和标准
合规性和标准部分Capgo遵循的加密实现遵循行业标准:
- AES-256:符合FIPS 140-2的加密算法
- RSA-4096:用于密钥保护的强大对称加密
- GCM 模式: 提供了机密性和真实性
- Secure Random: 使用加密安全随机数生成
这使得 Capgo 适合需要遵守:
- GDPR (通用数据保护条例)
- HIPAA (健康保险可移植性和责任法)
- SOC 2 (服务组织控制 2)
- ISO 27001 (信息安全管理)
性能考虑
性能考虑加密开销
加密开销- 打包大小: 加密的包大小约为1-2%的额外大小
- 处理时间: 加密/解密操作会增加极小的延迟
- 内存使用: 加密/解密操作期间的暂时性内存占用增加
- 通过将图像转换为WebP格式来优化打包大小
- 在打包之前最小化JavaScript和CSS文件
- 移除未使用的依赖项和__CAPGO_KEEP_0__
- Remove unused dependencies and code
- 在较旧或较慢的设备上监控设备性能