__CAPGO_KEEP_0__ - __CAPGO_KEEP_1__ アプリ向けライブアップデート

暗号化

Capgoは、配布されるアプリケーションパッケージに強力なエンドツーヘンド暗号化を提供し、JavaScript codeやアセットが送信および保存される際に保護されます。この暗号化システムは、ライブ更新の便利さを維持しながら、完全な制御を提供するように設計されています。

Capgo’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.

: OTAシステムが更新のみ署名するのと異なり、__CAPGO_KEEP_0__はアップロードされたパッケージを暗号化し、保存および配信する前に暗号化します。これにより、保存または転送中のパッケージの内容が一般的なアクセスから保護され、有効な暗号化された更新を生成するには、プライベートキーが必要になります。: Unlike OTA systems that only sign updates, Capgo encrypts the uploaded bundle before storage and delivery. This protects the bundle contents from casual access in storage or transit and ensures only someone with your private key can produce a valid encrypted update. It does 暗号化の必要性 Overview

暗号化は特に重要です。

Section titled “How Encryption Works”

Capgoは、RSAとAESの暗号化を組み合わせたハイブリッド暗号化アプローチを使用して、最適なセキュリティとパフォーマンスを実現します。

Capgo暗号化フロー

  • プライベートキー: 開発環境で安全に生成および保存され、暗号化に使用されます。
  • パブリックキー: プライベートキーから派生され、Capacitorアプリの設定で保存され、復号化に使用されます。
  • セッションキー: 各アップロード用にランダムに生成されるAESキー
  1. ランダムなAESセッションキーが各バンドルアップロード用に生成されます
  2. バンドルはAESセッションキーで暗号化されます
  3. バンドルのチェックサムが計算されます
  4. 両方のAESセッションキーとチェックサムは、RSA秘密鍵(署名を作成する)で暗号化されます
  5. 暗号化されたバンドルと署名が保存されます

チェックサムはAESキーと共に暗号化され、改ざんを防止します。RSA秘密鍵のみで署名を作成でき、対応する公開鍵のみで復号化できるため、AESセッションキーと予想されるチェックサムが本物であり、攻撃者によって改ざんされていないことを保証します。

  1. アプリは暗号化されたバンドルと署名をダウンロードします
  2. Capgo SDKは、RSA公開鍵(アプリ内に保存されている)を使用して署名を復号化します
  3. これにより、AESセッションキーと元のチェックサムが明らかになります
  4. AES セッション キーは、バンドルを復号するために使用されます。
  5. 復号したバンドルのチェックサムが計算され、元のチェックサムと比較され、整合性の検証が行われます。

このプロセスにより、攻撃者が暗号化されたバンドルをキャッチしたとしても、AES セッション キーを変更したり、偽のチェックサムを提供したりすることはできません。なぜなら、有効な署名を作成するには、プライベート キーが必要だからです。ただし、パブリック キーは署名を復号できます。

Capgo vs Other Platforms

「Capgo vs Other Platforms」
機能Capgo他のOTAプラットフォーム
バンドルコンテンツストレージ/トランジットで暗号化されている; しかし、特定のリバースエンジニアによってアプリバイナリを検査することは可能パブリックに読み取れる
セキュリティーメソッド完全にエンドツーエンドの暗号化Code署名のみ
プライバシー レベルプラットフォームが__CAPGO_KEEP_0__にアクセスできるPlatform can access your code
コンテンツ + 完全性 + 認証性完全性 + 認証性のみなぜこれが重要なのか:

ストレージ/トランジットで暗号化されている; しかし、特定のリバースエンジニアによってアプリバイナリを検査することは可能

  • Code署名 更新が改ざんされていないか、正しい元のソースから来たかだけを確認する
  • Capgo暗号化 配布中のバンドルを保護し、偽造された暗号化された更新を困難にし、攻撃者がプライベートキーを取得する必要があるため、偽造された暗号化された更新を困難にします。
  • アプリが配信された後、クライアントには更新を復号化およびロードするために必要な公開鍵が含まれているため、逆アセンブルはまだ可能です。 暗号化方法

Capgo uses Encryption V2 as the standard encryption method:

「暗号化方法V2 (現在の標準)」のセクション

RSA-4096を使用してセキュリティを強化
  • Encryption Methods
  • AES-256-GCMによる認証付き暗号化
  • 整合性検証を提供
  • パフォーマンスとセキュリティの向上
  • RSA-2048を使用して鍵の暗号化
  • AES-256-CBCによるバンドル暗号化
  • CLIで現在利用できない
  • __CAPGO_KEEP_0__で現在利用できない

texts":["migration guide","for detailed instructions.","暗号化設定","Section titled “Setting Up Encryption”","暗号化キー生成の手順1","Section titled “Step 1: Generate Encryption Keys”","まず、__CAPGO_KEEP_0__ __CAPGO_KEEP_1__ を使用して暗号化キーを生成します。","ターミナル画面","コピー","これにより、",":秘密鍵(この情報を安全に保管してください。)",":公開鍵(アプリで使用)"]

translations":["migration guide","for detailed instructions.","暗号化設定","Section titled “Setting Up Encryption”","暗号化キー生成の手順1","Section titled “Step 1: Generate Encryption Keys”","まず、__CAPGO_KEEP_0__ __CAPGO_KEEP_1__ を使用して暗号化キーを生成します。","ターミナル画面","コピー","これにより、",":秘密鍵(この情報を安全に保管してください。)",":公開鍵(アプリで使用)"]}】

translations":["migration guide","for detailed instructions.","暗号化設定","Section titled “Setting Up Encryption”","暗号化キー生成の手順1","Section titled “Step 1: Generate Encryption Keys”","まず、__CAPGO_KEEP_0__ __CAPGO_KEEP_1__ を使用して暗号化キーを生成します。","ターミナル画面","コピー","これにより、",":秘密鍵(この情報を安全に保管してください。)",":公開鍵(アプリで使用)"]}】

translations":["migration guide","for detailed instructions.","暗号化設定","Section titled “Setting Up Encryption”","暗号化キー生成の手順1","Section titled “Step 1: Generate Encryption Keys”","まず、__CAPGO_KEEP_0__ __CAPGO_KEEP_1__ を使用して暗号化キーを生成します。","ターミナル画面","コピー","これにより、",":秘密鍵(この情報を安全に保管してください。)",":公開鍵(アプリで使用)"]}】

translations":["migration guide","for detailed instructions.","暗号化設定","Section titled “Setting Up Encryption”","暗号化キー生成の手順1","Section titled “Step 1: Generate Encryption Keys”","まず、Capgo CLI を使用して暗号化キーを生成します。","ターミナル画面","コピー","これにより、",":秘密鍵(この情報を安全に保管してください。)",":公開鍵(アプリで使用)"]}】

translations":["migration guide","for detailed instructions.","暗号化設定","Section titled “Setting Up Encryption”","暗号化キー生成の手順1","Section titled “Step 1: Generate Encryption Keys”","まず、__CAPGO_KEEP_0__ __CAPGO_KEEP_1__ を使用して暗号化キーを生成します。","ターミナル画面","コピー","これにより、",":秘密鍵(この情報を安全に保管してください。)",":公開鍵(アプリで使用)"]}】
# Generate new encryption keys (creates files in current directory)
npx @capgo/cli@latest key create

translations":["migration guide","for detailed instructions.","暗号化設定","Section titled “Setting Up Encryption”","暗号化キー生成の手順1","Section titled “Step 1: Generate Encryption Keys”","まず、__CAPGO_KEEP_0__ __CAPGO_KEEP_1__ を使用して暗号化キーを生成します。","ターミナル画面","コピー","これにより、",":秘密鍵(この情報を安全に保管してください。)",":公開鍵(アプリで使用)"]}】

  • .capgo_key_v2translations":["migration guide","for detailed instructions.","暗号化設定","Section titled “Setting Up Encryption”","暗号化キー生成の手順1","Section titled “Step 1: Generate Encryption Keys”","まず、__CAPGO_KEEP_0__ __CAPGO_KEEP_1__ を使用して暗号化キーを生成します。","ターミナル画面","コピー","これにより、",":秘密鍵(この情報を安全に保管してください。)",":公開鍵(アプリで使用)"]}】
  • .capgo_key_v2.pubtranslations":["migration guide","for detailed instructions.","暗号化設定","Section titled “Setting Up Encryption”","暗号化キー生成の手順1","Section titled “Step 1: Generate Encryption Keys”","まず、__CAPGO_KEEP_0__ __CAPGO_KEEP_1__ を使用して暗号化キーを生成します。","ターミナル画面","コピー","これにより、",":秘密鍵(この情報を安全に保管してください。)",":公開鍵(アプリで使用)"]}】

このコマンドを実行したディレクトリでファイルが作成されます。

Step 2: Save Your Public Key to Capacitor Config (Required)

ステップ 2: Capacitor 設定にパブリック キーを保存する (必須)

「ステップ 2: __CAPGO_KEEP_0__ 設定にパブリック キーを保存する (必須)」というセクション あなた save your public key to the Capacitor config so your mobile app can decrypt bundles:

あなたのパブリック キーを __CAPGO_KEEP_0__ 設定に保存する必要があります。モバイル アプリがパッケージを復号化できるように:
# 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 directly
npx @capgo/cli@latest key save --key-data "$CAPGO_PUBLIC_KEY"

After saving the public key, you must Capacitorプラットフォームを同期する必要があります。

ターミナルウィンドウ
# Sync the platform to copy config to native
npx cap sync

アップロード中に暗号化する方法

アップロード中に暗号化する方法のセクション

アップロードプロセス中に暗号化する最も簡単な方法は次のとおりです。

ターミナル画面
# Upload with automatic encryption
npx @capgo/cli@latest bundle upload --key-v2
# For external storage, you must encrypt first (see Manual Encryption Workflow below)

より多くの制御が必要な場合は、バンドルを手動で暗号化できます。

  1. zipバンドルを作成する

    ターミナル画面
    npx @capgo/cli@latest bundle zip com.example.app --path ./dist --key-v2
  2. 暗号化する:

    ターミナル画面
    npx @capgo/cli@latest bundle encrypt ./com.example.app.zip CHECKSUM_FROM_STEP_1
  3. 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 URL
    npx @capgo/cli@latest bundle upload --external https://your-storage.com/encrypted-bundle.zip --iv-session-key IV_SESSION_KEY_FROM_STEP_2

秘密鍵のオプション:

  1. ファイルベース (ローカル開発):

    ターミナルウィンドウ
    # Key stored as .capgo_key_v2 file in project root
    npx @capgo/cli@latest bundle upload --key-v2
  2. 環境変数 (CI/CD):

    ターミナルウィンドウ
    # Store in environment variable for CI
    export 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 app
npx @capgo/cli@latest key save --key ./.capgo_key_v2.pub

本番環境:

  • AWS KMS、Azure Key Vault などを含む安全な鍵管理サービスでプライベート鍵を保存
  • CI/CD のシークレット管理を使用してプライベート鍵を管理
  • バージョン管理にプライベート キーをコミットしないでください

Key Usage:

  • プライベート キー: CLI がバンドル アップロード中に暗号化に使用します (安全に保管してください)
  • パブリック キー: デバイス上で復号化するためにアプリの構成に保存します (コミットすることが安全です)

セキュリティを向上させるために、定期的に暗号化キーのローテーションを実行してください:

  1. 新しいキーを生成:

    ターミナル画面
    # Navigate to desired directory first, then create keys
    mkdir ./new-keys && cd ./new-keys
    npx @capgo/cli@latest key create
  2. 新しい公開鍵をCapacitor設定に保存してください:

    ターミナルウィンドウ
    npx @capgo/cli@latest key save --key ./new-keys/.capgo_key_v2.pub
  3. 新しい公開鍵でアプリケーション設定を更新してください 新しい公開鍵とともに

  4. アップロードする暗号化されたバンドルに新しい鍵を使用する前に、アプリケーションを更新してください セキュリティのベストプラクティス

セクション「セキュリティのベストプラクティス」

鍵のセキュリティ

セクション「鍵のセキュリティ」

プライベート鍵を誰にも共有しないでください
  • セキュリティのベストプラクティス 環境やチームメンバー間で
  • 異なるキーを使用する 異なる環境 (開発、ステージング、生産) に対して
  • 定期的にキーをローテートする (推奨: 6-12 か月ごと)
  • セキュアにキーを保存する 適切なキー管理システムを使用する
  • 常に 暗号化解除後、バンドルの完整性を検証する
  • 監視する __CAPGO_KEEP_0__
  • HTTPSを使用する __CAPGO_KEEP_1__ (モバイルアプリ用必須)
  • 実装 暗号化失敗時の適切なエラーハンドリング
  • 暗号化キーへのアクセス 承認された従業員のみに
  • ロールベースのアクセス 暗号化キー管理オペレーション
  • 監査 キー使用とアクセスを定期的に行ってください
  • Implement 適切なバックアップと復旧手順を実施してください

トラブルシューティング:暗号化

「トラブルシューティング:暗号化」

一般的な問題

「一般的な問題」

復号エラー:

  • 暗号化に使用した公開鍵と一致するプライベートキーを確認してください
  • 暗号化に使用した ivSessionKey が正しいことを確認してください
  • 暗号化 V2 (V1 はサポートされていません) を使用していることを確認してください

Key-related errors:

  • 秘密鍵のフォーマットが正しいことを確認してください (PEM形式)
  • 保存/転送中の鍵が損傷していないことを確認してください
  • アプリの設定で鍵が適切な権限を持っていることを確認してください

Performance issues:

  • 大きなバンドルは暗号化/復号化に長い時間かかる可能性があります
  • Delta (マニフェスト) アップデートを使用してバンドルのサイズを削減することを検討してください
  • デバイスのパフォーマンスを復号化中に監視してください

暗号化の状態を確認してください:

ターミナル画面
npx @capgo/cli@latest app debug

暗号化/復号ワークフローをテスト:

ターミナルウィンドウ
# Test the complete workflow: zip → encrypt → decrypt → unzip
npx @capgo/cli@latest bundle zip com.example.app --key-v2
npx @capgo/cli@latest bundle encrypt ./com.example.app.zip CHECKSUM --json
npx @capgo/cli@latest bundle decrypt ./encrypted-bundle.zip IV_SESSION_KEY

Capgoの暗号化実装は、業界標準に従っています:

  • AES-256: FIPS 140-2で承認された暗号化アルゴリズム
  • RSA-4096: 強力な非対称暗号化を使用して鍵を保護する
  • GCM モード: と を両方とも保証します。
  • ランダムなセキュリティ数値: 強度の高い暗号化を使用したランダムな数字の生成

この機能により、Capgo は以下の要件に適合するアプリケーション向けに適しています。

  • データ保護規制総則(General Data Protection Regulation)
  • HIPAA (健康保険 portability と accountability Act)
  • サービス機関制御2 (SOC 2)
  • ISO 27001 (情報セキュリティマネジメントシステム規格)

パフォーマンスの考慮事項

パフォーマンスの考慮事項
  • Bundle size: __CAPGO_KEEP_0__
  • Processing time: __CAPGO_KEEP_0__
  • Memory usage: __CAPGO_KEEP_0__

Optimization Tips

Optimization Tips
  • Use Delta (manifest) updates to minimize encrypted data transfer
  • Optimize your bundle size by converting images to WebP format
  • Minimize JavaScript and CSS files before bundling
  • Remove unused dependencies and code
  • 古い/遅いデバイスでパフォーマンスを監視する
  • 学習する カスタムストレージ 自分のインフラストラクチャで暗号化を使用するには
  • 探索 チャンネル 環境間で暗号化されたバンドルを管理するには
  • セットアップ CI/CD統合 暗号化されたデプロイを自動化するには

暗号化を使用して 暗号化 セキュリティとコンプライアンスの計画に使用する場合、 コンプライアンス コンプライアンスの実装詳細 Capgo セキュリティ スキャナー Capgo セキュリティ スキャナーの製品ワークフロー Capgo セキュリティ Capgo セキュリティの製品ワークフロー Capgo トラスト センター 製品ワークフローについては、Capgo Trust Centerで確認してください。 組織セキュリティ 製品実装詳細については、組織セキュリティを参照してください。