暗号化
コピー可能
Capgoは、JavaScript codeやアセットを保護するために、エンドツーエンドの暗号化を提供します。これにより、JavaScript codeやアセットが送信や保存される際に保護されます。この暗号化システムは、ライブアップデートの便利さを維持しながら、完全な制御を提供するように設計されています。
Capgoの暗号化システムは、業界標準の暗号化方法を使用して、不正アクセスからバンドルを保護します。暗号化が有効になると、開発環境からバンドルが暗号化され、ユーザーのデバイスでアプリが暗号化を解除するまで暗号化され続けます。
実際に保護されるもの: OTAシステムがアップデートを署名するのみの場合と異なり、Capgoはアップロードされたバンドルを暗号化して保存し、配信します。この方法により、保存中や送信中のバンドル内容が一般的なアクセスから保護され、有効な暗号化されたアップデートを生成するには、プライベートキーが必要になります。 暗号化を実行しない 実行しない
暗号化のしくみ
「暗号化のしくみ」Capgoは、RSAとAES暗号化を組み合わせたハイブリッド暗号化アプローチを使用して、最適なセキュリティとパフォーマンスを実現します。

1. キー生成
「1. キー生成」- プライベートキー: 開発環境で安全に生成および保存されるキー (暗号化に使用)
- パブリックキー: プライベートキーから派生し、AppのCapacitor設定に保存されるキー (復号化に使用)
- セッションキー: 各バンドルアップロード用にランダムに生成されるAESキー
2. 暗号化プロセス
2.暗号化プロセス- 各バンドルのアップロードごとにランダムなAESセッションキーが生成されます。
- AESセッションキーを使用してバンドルが暗号化されます。
- バンドルのチェックサムが計算されます。
- RSAの秘密鍵を使用して、AESセッションキーとチェックサムが両方とも暗号化されます (「署名」が生成されます)。
- 暗号化されたバンドルと署名が保存されます。
チェックサムはAESキーと共に暗号化され、改ざんを防止します。RSAの秘密鍵のみがこの署名を作成し、対応する公開鍵のみがそれを復号化できるため、AESセッションキーと予想されるチェックサムが改ざんされていないことを保証します。
3.復号化プロセス
3.復号化プロセス- アプリは暗号化されたバンドルと署名をダウンロードします。
- Capgo SDKはアプリ内に保存されているRSAの公開鍵を使用して署名を復号化します。
- これによりAESセッションキーと元のチェックサムが明らかになります。
- __CAPGO_KEEP_0__
- 暗号化されたバンドルのAESセッションキー
暗号化されたバンドルのチェックサムを計算し、元のチェックサムと比較して整合性を検証します
Capgo vs Other Platforms
Capgo vs Other Platforms| __CAPGO_KEEP_0__ vs Other Platforms | Capgo | __CAPGO_KEEP_0__ |
|---|---|---|
| 他のOTAプラットフォームとは異なる__CAPGO_KEEP_0__の特徴はありますか? | ストレージ/トランジットで暗号化; しかし、特定の逆向作成者がアプリバイナリを使用して検査することは可能です。 | パブリックに読み取れる |
| セキュリティーメソッド | 完全なエンドツーヘンド暗号化 | Code署名のみ |
| プライバシー レベル | 強い配信/ストレージ保護; 反逆作成防止ではない | プラットフォームがcodeをアクセスできます |
| 保護 | 内容 + 完全性 + 認証性 | 完全性 + 認証性のみ |
なぜこれが重要なのか:
- Code署名 アップデートが改ざんされていないか、正しいソースから来たことを確認するだけ
- Capgo暗号化 アップデートが保存され、配信されている間、パッケージを保護し、攻撃者があなたの秘密鍵を取得せずに偽造された暗号化されたアップデートを作成するのは非常に難しくなる
- アプリが配信された後、クライアントにはアップデートを復号化およびロードするために必要な公開鍵が含まれているため、逆アセンブルはまだ可能 アップデートの暗号化方法
「アップデートの暗号化方法」のセクション
__CAPGO_KEEP_0__は、標準暗号化方法としてEncryption V2を使用します:Capgo uses Encryption V2 as the standard encryption method:
「Encryption V2 (現在の標準)」のセクション
RSA-4096を使用してセキュリティを強化- 暗号化方法
- AES-256-GCMによる認証付き暗号化
- 整合性の検証を提供
- パフォーマンスとセキュリティの向上
暗号化V1 (廃止)
「暗号化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暗号化されたバンドル
「暗号化されたバンドル」アップロード中に暗号化する方法
「アップロード中に暗号化する方法」アップロードプロセス中に暗号化する最も簡単な方法は次のとおりです。
# 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 がバンドル アップロード中に暗号化に使用します (安全に保管してください)
- パブリック キー: デバイス上のデコードに使用するためにアプリの構成に保存します (コミットするのは安全です)
プライベート キーが侵害された場合に回転する
プライベート キーが侵害されたと疑われるか確認された場合にキー ペアを回転するプライベート キーが侵害されたと疑われるか確認された場合にキー ペアを回転する
-
キー ペアを回転する:
ターミナル ウィンドウ npx @capgo/cli@latest key create -
CapgoのCapacitor設定に置き換えられた公開鍵を保存してください:
トミスト、アシトエン、パック、パトエン、アシトエン、パック、パトエン、アシトエン、パック npx @capgo/cli@latest key save --key ./.capgo_key_v2.pub -
コンディコトエン、パトエン、パック、パトエン、アシトエン、パック コンディコトエン
npx cap sync、パトエン、パック、パトエン、アシトエン、パック、パトエン、アシトエン、パック -
パトエン、パック、パトエン、アシトエン、パック コンディコトエン、パトエン、パック、パトエン、アシトエン、パック コンディコトエン パトエン、パック、パトエン、アシトエン、パック
-
コンディコトエン、パトエン、パック、パトエン、アシトエン、パック Version、コンディコトエン
セキュリティのベストプラクティス
セキュリティのベストプラクティスキー セキュリティ
キー セキュリティ- プライベートキーを 環境間やチームメンバー間で共有しない
- 環境ごとに 開発、ステージング、生産環境用に異なるキーを使用する
- 漏洩の場合にキーをローテートする: 私鍵が疑われるか確認された場合、キー ペアを置き換えましょう; 予定表の定期的なローテーションは必要ありません
- 鍵を安全に保存する 適切な鍵管理システムを使用する
Bundle Security
「Bundle Security」セクション- 常に 暗号化後にダウンロードの整合性を検証する
- 異常なダウンロードパターンやエラーを監視する すべての Bundle URL に HTTPS を使用する (モバイル アプリ用に必須)
- 実装する Bundle Security
- Bundle Security セクション 暗号化エラーの適切なエラーハンドリング
アクセス制御
セクション「アクセス制御」- 暗号化鍵へのアクセスを承認された従業員のみに制限する 権限ベースのアクセス制御を使用して鍵管理オペレーション
- 鍵使用とアクセスを定期的に監査 鍵使用とアクセスを定期的に監査
- 適切なバックアップと復元手順を実装する 暗号化のトラブルシューティング
- __CAPGO_KEEP_0__ __CAPGO_KEEP_0__
__CAPGO_KEEP_0__
トラブルシューティング用エンクリプション一般的な問題
一般的な問題デコード失敗:
- プライベートキーがエンコードに使用したパブリックキーと一致していることを確認してください
- エンコードに使用した
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%のオーバーヘッドで大きくなります
- 処理時間:暗号化/復号化は最小限の遅延を追加します
- メモリ使用量: 暫定的な増加は暗号化/復号操作中
最適化のヒント
最適化のヒントのセクション- Delta (マニフェスト) アップデートを使用して暗号化されたデータの転送を最小限に抑える
- WebP形式に画像を変換してバンドルサイズを最適化する
- JavaScriptとCSSファイルをバンドルする前に最小化する
- 不要な依存関係を削除してcode
- 古い/遅いデバイスでデバイスのパフォーマンスを監視する
次のステップ
次のステップのセクション- について学ぶ カスタムストレージ 独自のインフラを使用して暗号化するには
- 詳細を確認 チャンネル コンテキスト:Capgoのリリースチャンネル機能名。ページ/エリア:Capgoのソリューションマーケティングページ。役割:短いUIラベルまたはナビゲーションアイテム。見られる場所:ページソリューション/ホワイトラベル.astro。メッセージキー`solutions_white_label_visual_cell2_value` (ソリューション ホワイトラベル ビジュアル セル2 値)。
- 環境間で暗号化されたバンドルを管理するには 設定 CI/CD統合
コンテキスト:ページエリア:Capgo Builder /ネイティブクラウドビルド製品ページ。役割:短いUIラベルまたはナビゲーションアイテム。メッセージキー`native_build_feature_ci_cd` (ネイティブビルド機能Ci Cd)。
暗号化されたデプロイを自動化するには暗号化から続けて セクション題名「暗号化から続けて」 セキュリティとコンプライアンスの計画に役立つため、{0}に接続してください。 コンプライアンス コンプライアンスの実装詳細については Capgo Security Scanner for the product workflow in Capgo Security Scanner, Capgo Security for the product workflow in Capgo Security, Capgo Trust Center for the product workflow in Capgo Trust Center, and 組織のセキュリティ 組織のセキュリティの実装詳細については