暗号化
このプラグインのインストール手順と全てのマークダウンガイドを含むセットアップコマンドをコピーします。
Capgoは、JavaScript codeやアセットを保護するために、エンドツーエンドの暗号化を提供します。
Capgoの暗号化システムは、業界標準の暗号化方法を使用して、不正アクセスからバンドルを保護します。暗号化が有効になっている場合、開発環境を離れる前にバンドルは暗号化され、ユーザーのデバイスでアプリが解読するまで暗号化されます。
実際にどの部分が保護されているか: Capgoは、OTAシステムがアップデートを署名するのみの場合と異なり、アップロードされるバンドルを暗号化して保存し配信します。この方法により、ストレージまたはトランジット中のバンドル内容を無断に閲覧することができなくなり、しかも、有効な暗号化されたアップデートを発行するには、プライベートキーを持つ者だけが可能です。 暗号化の必要性 暗号化の必要性
暗号化のしくみ
「暗号化のしくみ」Capgo は、RSA と AES の暗号化を組み合わせたハイブリッド暗号化アプローチを使用して、最適なセキュリティとパフォーマンスを実現します:

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に移行する必要があります
Encryption V1 (Deprecated)
暗号化の設定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 の公開鍵を保存してください (必須)」あなた あなたは 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"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 -
ターミナル画面
Copy to clipboard 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 -
アプリケーション設定を更新 新しい公開鍵を使用して
-
アップデートされたアプリケーションをデプロイ 新しい鍵で暗号化されたバンドルをアップロードする前に
セキュリティのベストプラクティス
セクション “セキュリティのベストプラクティス”鍵のセキュリティ
セクション “鍵のセキュリティ”- プライベート鍵を 環境やチームメンバー間で共有しない
- 異なる環境 (開発、ステージング、生産) に 異なる鍵を使用する
- 鍵を定期的に回転する (推奨: 6-12 か月ごと)
- 鍵を安全に保存する 適切な鍵管理システムを使用して
Bundle Security
セクション「Bundle Security」- 常に検証する 復号化後、パッケージの完整性を確認する
- 不審なダウンロードパターンやエラーの監視 すべてのパッケージURLでHTTPSを使用する (モバイルアプリ用必須)
- __CAPGO_KEEP_0__ __CAPGO_KEEP_0__
- 暗号化失敗時の適切なエラーハンドリングの実装 アクセス制御
「アクセス制御」セクション
暗号化キーへのアクセスを、承認された従業員のみに制限する- ロールベースのアクセス制御 暗号化キー管理のためのロールベースのアクセス制御
- 暗号化キーの使用とアクセスを定期的に監査する 暗号化失敗時の適切なバックアップと復元手順の実装
- Implement proper error handling for decryption failures
- Access Control Section titled “Access Control”
トラブルシューティングの暗号化
「トラブルシューティングの暗号化」のセクション一般的な問題
「一般的な問題」のセクション暗号化失敗:
- 暗号化に使用した公開鍵と一致するようにプライベート鍵を確認してください
- 暗号化に使用した
ivSessionKeyが正しいことを確認してください - 暗号化 V2 を使用していることを確認してください (V1 はサポートされていません)
鍵関連のエラー:
- プライベート鍵の形式が正しいことを確認してください (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% のオーバーヘッドで大きくなります。
- 処理時間: __CAPGO_KEEP_0__を使用することで最小限の遅延が生じる
- メモリ使用量: 暫時的な増加が暗号化/復号処理中のオペレーションで発生
最適化のヒント
最適化のヒント- Delta (マニフェスト) アップデートを使用して暗号化されたデータの転送を最小限に抑える
- WebP形式に画像を変換することでバンドルサイズを最適化する
- バンドル前にJavaScriptとCSSファイルを最小化する
- 使用されていない依存関係を削除し、code
- 古い/遅いデバイスでデバイスのパフォーマンスを監視する