暗号化
__CAPGO_KEEP_0__のセットアッププロンプトをコピーして、インストール手順とこのプラグインのフルマークダウンガイドを含む。
Capgo provides robust end-to-end encryption for your app bundles, ensuring that your JavaScript code and assets are protected during transmission and storage. This encryption system is designed to give you complete control over your app’s security while maintaining the convenience of live updates.
__CAPGO_KEEP_0__の暗号化システムは、業界標準の暗号化方法を使用して、不正アクセスからアプリケーションバンドルを保護します。暗号化が有効になると、開発環境から出発するアプリケーションバンドルは暗号化され、ユーザーのデバイスでアプリが暗号化を解除するまで暗号化され続けます。
InstallCapgo’s encryption system uses industry-standard cryptographic methods to protect your bundles from unauthorized access. When encryption is enabled, your bundles are encrypted before leaving your development environment and remain encrypted until they’re decrypted by your app on the user’s device.
実際に保護される暗号化: Capgo でアップロードされたバンドルを暗号化して保存および配信することで、OTA システムと比較してアップデートを署名するだけのシステムとは異なります。この方法では、ストレージまたはトランジット中のバンドル内容を無防備にアクセスするのを防ぎ、有効な暗号化されたアップデートを生成できるのはあなたのプライベート キーを持っている人だけです。 アップデートの暗号化の必要性 アップデートの暗号化の必要性
Capgo uses a hybrid encryption approach that combines RSA and AES encryption for optimal security and performance:

1. シークレット キー生成
セクション: 1. シークレット キー生成- プライベート キー: 開発環境で安全に生成および保存され、暗号化に使用されます
- パブリック キー: プライベート キーから派生され、Capacitor アプリの設定に保存され、復号化に使用されます
- セッション キー: 各アップロード用にランダムに生成される AES キー
2. 暗号化プロセス
セクション: 2. 暗号化プロセス- 各アップロードごとにランダムに生成される AES セッション キー
- AES セッション キーを使用してバンドルが暗号化されます
- バンドルのチェックサムは計算されます。
- 両方のAESセッションキーとチェックサムは、RSAの秘密鍵(「署名」を作成する)を使用して暗号化されます。
- 暗号化されたバンドルと暗号化された署名は保存されます。
チェックサムはAESキーとともに暗号化され、改ざんを防止します。RSAの秘密鍵でしか署名を作成できず、対応する公開鍵でしか署名を復号化できるため、AESセッションキーと期待されるチェックサムは、攻撃者によって改ざんされていないことを保証します。
3. 復号化プロセス
「3. 復号化プロセス」のセクション- アプリは暗号化されたバンドルと暗号化された署名をダウンロードします。
- Capgo SDKは、RSAの公開鍵(アプリに保存されている)を使用して署名を復号化します。
- これにより、AESセッションキーと元のチェックサムが明らかになります。
- AESセッションキーはバンドルを復号化します。
- 復号化されたバンドルのチェックサムが計算され、元のチェックサムと整合性を検証します。
このプロセスにより、暗号化されたバンドルを攻撃者がキャッチした場合でも、AESセッションキーまたは偽のチェックサムを変更することはできません。なぜなら、有効な署名を作成するには秘密鍵が必要であり、公開鍵で復号化できるからです。
Capgo vs Other Platforms
「Capgo vs Other Platforms」| Feature | Capgo | Other OTA Platforms |
|---|---|---|
| Bundle Content | ストレージ/トランジットで暗号化されているが、逆エンジニアがアプリのバイナリを使用して検査できる | パブリックに読み取れる |
| Security Method | 完全なエンドツーヘンド暗号化 | Code の署名のみ |
| プライバシー レベル | 強い配信/保存保護; 反逆用エンジニアリング対策ではない | プラットフォームが code にアクセスする |
| 保護 | 内容 + 完全性 + 認証 | 完全性 + 認証のみ |
なぜこれが重要なのか:
- Code の署名 __CAPGO_KEEP_0__ の署名は、更新が改ざんされていないか、正しいソースから来ているかを確認するのみ
- Capgo の暗号化 保護されたバンドルは、保存および配信されている間、攻撃者がプライベートキーを取得する必要があるため、偽造された暗号化された更新をより困難にします。
- 逆アセンブルはまだ可能です。 アプリが配信された後、クライアントには更新を復号およびロードするために必要な公開鍵が含まれているため、
暗号化方法
「暗号化方法」セクションCapgoは暗号化V2を標準暗号化方法として使用します:
暗号化V2 (現在の標準)
「暗号化V2 (現在の標準)」セクション- RSA-4096を使用して強化されたセキュリティを提供します。
- AES-256-GCMを使用して認証付き暗号化を提供します。
- 整合性の検証を提供します。
- パフォーマンスとセキュリティの向上
Encryption V1 (Deprecated)
「Encryption V1 (Deprecated)」セクション- RSA-2048を使用して鍵の暗号化
- AES-256-CBCを使用してパッケージの暗号化
- 現在のCLIで利用不可
- V1を使用する古いアプリケーションはV2に移行する必要があります
暗号化の設定
暗号化の設定Step 1: 暗号化キーを生成する
Step 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: 公開鍵 (アプリで使用)
このファイルは、コマンドを実行したディレクトリで作成されます。
Step 2: Capacitor の公開鍵を保存してください (必須)
セクション: “Step 2: Capacitor の公開鍵を保存してください (必須)”あなた は、__CAPGO_KEEP_0__ の設定に公開鍵を保存する必要があります。モバイルアプリがパッケージを復号するためです。 save your public key to the Capacitor config so your mobile app can decrypt bundles:
# 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"Step 3: Capacitor プラットフォームを同期してください (必須)
セクション: “Step 3: Capacitor プラットフォームを同期してください (必須)”公開鍵を保存した後、 あなたは は、Capacitor プラットフォームを同期する必要があります。更新された設定をネイティブ層にコピーするためです。
# Sync the platform to copy config to nativenpx cap sync暗号化されたバンドル
「暗号化されたバンドル」アップロード中に暗号化する方法
「アップロード中の暗号化方法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」
より多くの制御が必要な場合は、手動でバンドルを暗号化することができます: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 -
Capgoにアップロードして登録する (例: S3)
ターミナルウィンドウ # 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 シークレット管理を使用してプライベート鍵を管理する
- バージョン管理からプライベート鍵をコミットしない
鍵の使用方法:
- 秘密鍵: CLIで使用されるアップロード用バンドルエンコードに使用される鍵 (安全に保管)
- 公開鍵: __CAPGO_KEEP_0__の設定ファイルにデバイス上のデコードに使用される鍵が保存される (コミット可能)
鍵のローテーション
セクション:「鍵のローテーション」鍵のローテーションを定期的に行うことでセキュリティが向上します:
-
新しい鍵を生成する:
ターミナル画面 # 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 -
アプリケーション設定を更新してください __CAPGO_KEEP_0__の新しい公開鍵を使用して
-
__CAPGO_KEEP_1__を更新してください __CAPGO_KEEP_2__をアップロードする前に、__CAPGO_KEEP_1__で暗号化されたバンドルをアップロードしてください
セキュリティのベストプラクティス
セクション「セキュリティのベストプラクティス」鍵のセキュリティ
セクション「鍵のセキュリティ」- プライベート鍵を __CAPGO_KEEP_3__間またはチームメンバー間で共有しないでください
- __CAPGO_KEEP_4__のために異なる鍵を使用してください (dev、staging、production)
- __CAPGO_KEEP_0__の鍵を定期的に回転する __CAPGO_KEEP_1__ (推奨: 6-12 か月ごと)
- __CAPGO_KEEP_2__の鍵を安全に保管する __CAPGO_KEEP_3__を使用する
Bundle Security
「Bundle Security」セクション- __CAPGO_KEEP_4__ 暗号化解除後、ダウンロードパターンやエラーが異常な場合は監視する
- HTTPSを使用する (モバイルアプリ用には必須)
- __CAPGO_KEEP_0__ __CAPGO_KEEP_1__
- 暗号化失敗時の適切なエラー処理を実装する アクセス制御
「アクセス制御」セクション
暗号化キーへのアクセスを、承認された従業員のみに制限する- ロールベースのアクセス制御 暗号化キー管理のオペレーションにロールベースのアクセス制御を使用する
- 暗号化キーの使用とアクセスを定期的に監査する 適切なバックアップと復元手順を実装する
- Implement proper error handling for decryption failures
- Access Control Section titled “Access Control”
トラブルシューティングの暗号化
「トラブルシューティングの暗号化」のセクション一般的な問題
「一般的な問題」のセクション暗号化失敗の場合:
- __CAPGO_KEEP_0__のプライベートキーが暗号化に使用されているパブリックキーと一致していることを確認してください
- __CAPGO_KEEP_1__が正しいことを確認してください
ivSessionKey暗号化 V2 を使用していることを確認してください (V1 はサポートされていません) - キー関連のエラーの場合:
プライベート キーの形式が正しいことを確認してください (PEM 形式)
- キーが保存/転送中に損傷していないことを確認してください
- __CAPGO_KEEP_0__
- アプリの設定でキーが適切な権限を持っていることを確認してください。
パフォーマンス問題:
- 大きいバンドルは暗号化/復号化に長い時間かかる可能性があります。
- バンドルサイズを削減するために、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%のオーバーヘッドで大きくなります。
- 処理時間: __CAPGO_KEEP_0__を使用することで最小限の遅延が生じる
- メモリ使用量: 暫定的な増加が暗号化/復号処理の操作中に発生する
最適化のヒント
「最適化のヒント」のセクション- Delta (マニフェスト) アップデートを使用して暗号化されたデータの転送を最小限に抑える
- WebP形式に画像を変換することでバンドルサイズを最適化する
- JavaScriptとCSSファイルをバンドルする前に最小化する
- 使用されていない依存関係を削除し、codeを使用する
- 古い/遅いデバイスでデバイスのパフォーマンスを監視する
次のステップ
「次のステップ」のセクション- Capgoについて学びます __CAPGO_KEEP_0__ __CAPGO_KEEP_0__
- Explore __CAPGO_KEEP_0__ 環境間で暗号化されたバンドルを管理する
- セットアップ __CAPGO_KEEP_0__ 暗号化されたデプロイを自動化する