暗号化
このプラグインのインストールステップとフルマークダウンガイドのセットアップの質問をコピーする。
Capgoは、JavaScript codeやアセットを保護するために、データの送信と保存の間にアプリのバンドルを安全に保護する強力なエンドツーヘンド暗号化を提供します。この暗号化システムは、ライブアップデートの便利さを維持しながら、アプリのセキュリティを完全に制御できるように設計されています。
Capgoの暗号化システムは、業界標準の暗号化方法を使用して、不正アクセスからバンドルを保護します。暗号化が有効になると、開発環境から離れる前にバンドルが暗号化され、ユーザーのデバイス上のアプリによってのみ復号化されます。
実際に保護される暗号化: OTAシステムがアップデートのみ署名するのと異なり、Capgoはアップロードされたバンドルをストレージと配信前に暗号化します。これにより、ストレージまたはトランジット中のバンドル内容を無害なアクセスから保護し、有人にあなたのプライベートキーを持っている場合にのみ有効な暗号化されたアップデートを生成できるようにします。ただし、配布されたWebアセットを逆アセンブルすることは不可能ではありません: クライアントがアップデートを復号化するために使用する公開鍵はアプリに分配されているため、十分な努力を払えば、攻撃者はバンドル内容を検査できます。 暗号化が必要な場合 暗号化が必要な場合
暗号化は特に重要です。
「暗号化のしくみ」セクションのタイトルCapgoは、RSAとAES暗号化を組み合わせたハイブリッド暗号化アプローチを使用して、最適なセキュリティとパフォーマンスを実現します。

1.鍵の生成
セクションのタイトル「1.鍵の生成」- プライベートキー:開発環境で生成および安全に保存される(暗号化に使用)
- パブリックキー:プライベートキーから派生し、Capacitorアプリの設定で保存される(復号化に使用)
- セッションキー:各アップロード用にランダムに生成されるAESキー
2.暗号化プロセス
2.暗号化プロセス- 各バンドルのアップロードごとにランダムなAESセッションキーが生成されます。
- __CAPGO_KEEP_0__がAESセッションキーを使用して__CAPGO_KEEP_1__を暗号化します。
- __CAPGO_KEEP_1__のチェックサムが計算されます。
- 両方のAESセッションキーとチェックサムがRSA秘密鍵を使用して暗号化されます (署名を作成)。
- 暗号化されたバンドルと署名が保存されます。
チェックサムは、攻撃者が暗号化されたAESキーを変更できないように、AESキーと一緒に暗号化されます。RSA秘密鍵のみがこの署名を作成し、対応する公開鍵のみが署名を復号化できるため、暗号化されたAESキーと予想されるチェックサムが本物であり、攻撃者によって変更されていないことを保証します。
3.復号化プロセス
3.復号化プロセス- __CAPGO_KEEP_1__がRSA公開鍵 (アプリ内に保存) を使用して署名を復号化します。
- The Capgo SDK uses your RSA public key (stored in the app) to decrypt the signature
- Section titled “3. Decryption Process”
- The AES session key is used to decrypt the bundle.
- A checksum of the decrypted bundle is calculated and compared with the original checksum for integrity verification.
This process ensures that even if an attacker intercepts the encrypted bundle, they cannot modify the AES session key or provide a fake checksum, because they would need your private key to create a valid signature that the public key can decrypt.
Capgo vs Other Platforms
「Capgo vs Other Platforms」のセクション| 機能 | Capgo | 他のOTAプラットフォーム |
|---|---|---|
| バンドルコンテンツ | 保存/転送中の暗号化; しかし、特定のリバースエンジニアによってアプリバイナリを検査することは可能 | パブリックに読み取れる |
| セキュリティーメソッド | True end-to-end encryption | Code署名のみ |
| プライバシー レベル | プラットフォームが__CAPGO_KEEP_0__にアクセスする | Platform can access your code |
| コンテンツ + 完整性 + 認証性 | 完全性 + 認証性のみ | なぜこれが重要なのか: |
保存/転送中の暗号化; しかし、特定のリバースエンジニアによってアプリバイナリを検査することは可能
- Code の署名 は、更新が正しく送信されてきたことを確認するだけであり、更新が改ざんされていないことを確認する
- Capgo の暗号化 は、更新が保存され、配信されている間、バンドルを保護し、暗号化された更新を偽造するのは難しくなります。なぜなら、攻撃者はあなたの秘密鍵が必要だからです
- 逆アセンブルはまだ可能 アプリが配信された後、クライアントには更新を復号化してロードするために必要な公開鍵が含まれているため
暗号化方法
「暗号化方法」のセクションCapgo は、暗号化 V2 を標準暗号化方法として使用します
暗号化 V2 (現在の標準)
「暗号化 V2 (現在の標準)」のセクション- RSA-4096 を使用してセキュリティを強化
- __CAPGO_KEEP_0__
- __CAPGO_KEEP_0__
- __CAPGO_KEEP_0__
__CAPGO_KEEP_0__
__CAPGO_KEEP_0__- __CAPGO_KEEP_0__
- __CAPGO_KEEP_0__
- CLI
- __CAPGO_KEEP_0__
暗号化の設定
「暗号化の設定」のセクションステップ 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 プラットフォームを同期する(必須)」保存した公開鍵を保存した後、 __CAPGO_KEEP_0__プラットフォームを同期する必要があります。 sync the Capacitor platform to copy the updated config to the native layer:
# Sync the platform to copy config to nativenpx cap sync暗号化されたバンドル
暗号化されたバンドルのセクションアップロード中に暗号化する方法
アップロード中に暗号化する方法のセクションアップロードプロセス中に暗号化するのが最も簡単な方法です。
# Upload with automatic encryptionnpx @capgo/cli@latest bundle upload --key-v2
# For external storage, you must encrypt first (see Manual Encryption Workflow below)手動暗号化フロー
手動暗号化フローのセクションより多くの制御が必要な場合は、手動でバンドルを暗号化できます。
-
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シークレット マネージャーを使用してプライベート キーを管理
- バージョン管理にプライベート キーをコミットしないでください
Key Usage:
- プライベート キーCLIがバンドルアップロード中に暗号化に使用します (安全に保管してください)
- パブリック キー__CAPGO_KEEP_0__がデバイス上で暗号化を実行するためにアプリの構成に保存します (安全にコミットしてください)
Key Rotation
Key Rotationセキュリティを向上させるために、定期的に暗号化キーのローテーションを実行してください:
-
新しいキーを生成する:
ターミナル画面 # 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 -
アプリケーション設定を更新する 新しいパブリックキーと
-
アップロードする前にアップデートされたアプリケーションをデプロイする 新しいキーで暗号化されたバンドルをアップロードする前に
セキュリティのベストプラクティス
セクション「セキュリティのベストプラクティス」キー セキュリティ
セクション「キー セキュリティ」- プライベート キーを誰にも共有しない 環境やチームメンバー間で
- 異なるキーを使用する 異なる環境 (開発、ステージング、生産) に対して
- 定期的にキーをローテートする (推奨: 6-12 か月ごと)
- セキュアにキーを保存する 適切なキー管理システムを使用する
Bundle Security
「Bundle Security」セクション- 常に 暗号化解除後にバンドルの完整性を検証する
- 監視する 不通常のダウンロードパターンまたはエラーの場合
- __CAPGO_KEEP_0__を使用します すべてのバンドルURLに適用してください (モバイルアプリ用)
- __CAPGO_KEEP_0__を実装します 暗号化失敗の場合の適切なエラーハンドリングを実装します
__CAPGO_KEEP_1__
セクション「__CAPGO_KEEP_1__」- __CAPGO_KEEP_2__にアクセス 暗号化キーへのアクセスを承認されたスタッフのみに制限します
- __CAPGO_KEEP_3__ベースのアクセス __CAPGO_KEEP_3__管理のためのキー管理オペレーション
- __CAPGO_KEEP_4__ __CAPGO_KEEP_0__の使用とアクセスは定期的に行ってください
- __CAPGO_KEEP_1__ __CAPGO_KEEP_2__のための適切なバックアップと復元手順を実装
__CAPGO_KEEP_3__
__CAPGO_KEEP_4____CAPGO_KEEP_5__
__CAPGO_KEEP_6____CAPGO_KEEP_7__
- __CAPGO_KEEP_8__のプライベートキーがエンクリプション用のパブリックキーと一致していることを確認してください
- __CAPGO_KEEP_9__が正しいことを確認してください
ivSessionKey__CAPGO_KEEP_10__を使用していることを確認してください (V1はサポートされていません) - __CAPGO_KEEP_11__
Key-related errors:
- 秘密鍵のフォーマットが正しいことを確認してください (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 モード: __CAPGO_KEEP_0__は、機密性と実際性を両方とも提供します。
- Secure Random: 高度に安全なランダムな数字の生成
This makes Capgo suitable for applications requiring compliance with:
- GDPR (General Data Protection Regulation)
- HIPAA (Health Insurance Portability and Accountability Act)
- SOC 2 (Service Organization Control 2)
- ISO 27001 (Information Security Management)
Performance Considerations
パフォーマンスの考慮事項Encryption Overhead
暗号化オーバーヘッド- バンドルサイズ:暗号化されたバンドルは、約1-2%のオーバーヘッドでやや大きくなります。
- 処理時間:暗号化/復号化は最小限の遅延を追加します。
- メモリ使用量:暗号化/復号化オペレーション中の一時的な増加
最適化のヒント
セクション「最適化のヒント」- Delta (マニフェスト) アップデートを使用して暗号化されたデータの転送を最小限に抑えましょう。
- WebP形式に画像を変換することでバンドルサイズを最適化しましょう。
- JavaScriptとCSSファイルをバンドルする前に最小化しましょう。
- 使用されていない依存関係を削除し、code
- __CAPGO_KEEP_0__のデバイスパフォーマンスを監視する
__CAPGO_KEEP_1__
__CAPGO_KEEP_2__- __CAPGO_KEEP_3__について学ぶ __CAPGO_KEEP_4__ __CAPGO_KEEP_5__でエンクリプションを使用する
- __CAPGO_KEEP_6__ __CAPGO_KEEP_7__ __CAPGO_KEEP_8__
- __CAPGO_KEEP_9__ __CAPGO_KEEP_10__ __CAPGO_KEEP_11__
Encryptionから続けて
Encryptionから続けてのセクションEncryptionを使用して Encryption セキュリティとコンプライアンスの計画に使用する場合、 Compliance Complianceの実装詳細のために Capgo セキュリティスキャナー Capgo セキュリティスキャナーの製品ワークフロー Capgo セキュリティ Capgo セキュリティの製品ワークフロー Capgo トラストセンター 製品ワークフローについてはCapgoのTrust Centerで確認してください。 組織のセキュリティ 製品の実装詳細については組織のセキュリティを参照してください。