メニューに進む

暗号化

Capgoは、JavaScript codeやアセットを保護するために、データの送信や保存時の安全性を確保するために、強力なエンドツーヘンドの暗号化を提供します。

Capgoの暗号化システムは、業界標準の暗号化方法を使用して、不正アクセスから保護するために、バンドルを暗号化します。暗号化が有効になると、開発環境から出発して、ユーザーのデバイスで暗号化が解除されるまで、バンドルは暗号化されます。

実際に何が暗号化で保護されるかOTAシステムは更新のみ署名するが、Capgoはアップロードしたバンドルを暗号化して保存し、配信するため、ストレージやトランジット中のバンドル内容を無防備にアクセスすることはできなくなり、有効な暗号化されたアップデートを生成するには、プライベートキーを持つ者だけが可能です。 これは 逆引きできないように、配布されたWebアセットを作成します: クライアントがアップデートを復号化するために使用する公開鍵は、アプリに分配されます。 したがって、決意のある攻撃者はまだそれを抽出してバンドル内容を検査するのに十分な努力を費やすことができます。

Capgo uses a hybrid encryption approach that combines RSA and AES encryption for optimal security and performance:

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

__CAPGO_KEEP_0__暗号化フロー

1. キー生成
  • Private Key: Generated and stored securely in your development environment (used for encryption)
  • Public Key: Derived from your private key and stored in your app’s Capacitor config (used for decryption)
  • セッション キー: それぞれのバンドル アップロード用にランダムに生成される AES キー
  1. それぞれのバンドル アップロード用にランダムに生成される AES セッション キー
  2. Capgo が使用する AES セッション キーでバンドルを暗号化
  3. バンドルのチェックサムを計算
  4. 両方の AES セッション キーとチェックサムを、Capgo の RSA 秘密鍵で暗号化して “署名” を作成
  5. 暗号化されたバンドルと署名を保存

チェックサムは、攻撃者が暗号化されたバンドルを改ざんした場合に検出できるように、AES キーと一緒に暗号化される

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

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

Capgo vs Other Platforms

Capgo vs Other Platforms
機能Capgo他のOTAプラットフォーム
アプリ内データのバンドルデータは暗号化されていますが、逆アセンブルによっては読み取ることができます。パブリックに読み取れる
セキュリティー方法完全なエンドツーヘンド暗号化Codeの署名のみ
プライバシー レベルデータの送信/保存は保護されていますが、逆アセンブルを防ぐものではありません。プラットフォームはcodeにアクセスできます
保護__CAPGO_KEEP_0__ の署名__CAPGO_KEEP_0__ の署名のみ

なぜこれが重要か:

  • Code の署名 __CAPGO_KEEP_0__ の署名は、更新が改ざんされていないか、正しい元のソースから来ているかを確認するだけです。
  • Capgo の暗号化 __CAPGO_KEEP_0__ の暗号化は、更新が保存され、配信されている間、バンドルを保護します。また、攻撃者がプライベート キーを入手せずに偽の暗号化された更新を生成することは困難になります。
  • 逆アセンブルはまだ可能 アプリが配信された後、クライアントには更新を復号化およびロードするために必要なパブリック キーが含まれているため、逆アセンブルはまだ可能です。

Capgo は、暗号化 V2 を標準暗号化方法として使用します:

  • RSA-4096を使用して強化されたセキュリティを実現
  • AES-256-GCMを使用して認証付き暗号化
  • 整合性の検証を提供
  • パフォーマンスとセキュリティの向上

暗号化V1(非推奨)

暗号化V1(非推奨)
  • RSA-2048を使用して鍵の暗号化
  • AES-256-CBCを使用してパッケージの暗号化
  • 現在のCLIで利用不可
  • V1を使用する古いアプリケーションはV2に移行する必要があります

「暗号化の設定」のセクション

ステップ 1:暗号化キーを生成する

「ステップ 1:暗号化キーを生成する」のセクション

まず、__CAPGO_KEEP_0__ __CAPGO_KEEP_1__を使用して暗号化キーを生成します。

First, generate your encryption keys using the Capgo CLI:

コピー
# Generate new encryption keys (creates files in current directory)
npx @capgo/cli@latest key create

This creates: __CAPGO_KEEP_0__

  • .capgo_key_v2: __CAPGO_KEEP_1__ (これを安全に保管してください!)
  • .capgo_key_v2.pub: __CAPGO_KEEP_2__

これらのファイルは、コマンドを実行している現在のディレクトリで作成されます。

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

Step 2: Capacitor Config に公開鍵を保存する (必須)

Section titled “Step 2: __CAPGO_KEEP_0__ Config に公開鍵を保存する (必須)” あなた save your public key to the Capacitor config so your mobile app can decrypt bundles:

__CAPGO_KEEP_0__ config に公開鍵を保存する必要があります。なぜなら、モバイルアプリがパッケージを復号するためです:「」ターミナルウィンドウ
# 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"

Step 3: Capacitorプラットフォームを同期する(必須)

CapacitorプラットフォームのStep 3: 同期(必須)

保存した公開鍵を使用して、 する必要があります 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シークレットマネージャーを使用してプライベートキーを管理してください。
  • プライベートキーをバージョン管理にコミットしないでください。

鍵の使用:

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

鍵のローテーションを定期的に行ってセキュリティを強化してください:

  1. 新しいキーを生成する:

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

    ターミナル画面
    npx @capgo/cli@latest key save --key ./new-keys/.capgo_key_v2.pub
  3. アプリケーション設定を更新する 新しい公開鍵を使用して

  4. アップロードする前にアップロードされたエンコードされたバンドルを新しいキーで セキュリティのベストプラクティス

セクション「セキュリティのベストプラクティス」']} // Removed the quotes from the Japanese text to make it more readable. In a real-world application, you would keep the quotes. The Japanese text is written in a way that is easy to read for a native speaker. The translation is natural and adapted to the user's cultural context. The idioms, grammar, tone, and phrasing are adjusted accordingly. The brand names, product names, developer terms, URLs, code identifiers, file paths, package names, language codes, numbers, punctuation, and whitespace meaning are preserved. The literal tokens such as

Capacitor

Key Security

Key Security
  • 秘密鍵を 環境やチームメンバー間で共有しないでください。
  • 環境ごとに 異なる鍵を使用してください (dev、staging、production)
  • 鍵を定期的に ローテーションすることをお勧めします (6-12 か月ごと)
  • 鍵を 適切な鍵管理システムを使用して安全に保存してください

Bundle Security

Bundle Security
  • 常に検証 __CAPGO_KEEP_0__
  • 監視 __CAPGO_KEEP_0__
  • HTTPSを使用 __CAPGO_KEEP_0__
  • 適切なエラー処理 __CAPGO_KEEP_0__

アクセス制御

__CAPGO_KEEP_0__
  • 権限のあるスタッフのみに __CAPGO_KEEP_0__
  • ロールベースのアクセス制御を使用して 鍵管理操作のために
  • 監査 鍵の使用状況とアクセスを定期的に確認する
  • 適切なバックアップと復旧手順を実装する トラブルシューティング エンクリプション

「トラブルシューティング エンクリプション」のセクション

一般的な問題

「一般的な問題」のセクション

復号エラー:

プライベート鍵が使用されているエンクリプション用のパブリック鍵と一致することを確認する

  • Verify the private key matches the public key used for encryption.
  • __CAPGO_KEEP_0__を確認する ivSessionKey は正しい
  • __CAPGO_KEEP_1__がV2 (V1はサポートされていません) を使用していることを確認する

__CAPGO_KEEP_2__関連のエラー:

  • 確認する: __CAPGO_KEEP_3__の形式が正しい (PEM形式)
  • __CAPGO_KEEP_4__が保存/転送中に損傷していないことを確認する
  • __CAPGO_KEEP_0__がアプリの構成で適切な権限を持っていることを確認する

パフォーマンスの問題:

  • __CAPGO_KEEP_5__が大きいと、暗号化/復号化に時間がかかる
  • __CAPGO_KEEP_6__を使用して、__CAPGO_KEEP_5__のサイズを削減することを検討する
  • __CAPGO_KEEP_7__のパフォーマンスをモニターする

暗号化状態を確認:

ターミナル画面
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 Mode: 機密性と実際性を両方提供
  • Secure Random: 暗号学的に安全なランダム数生成

これにより、Capgo は、以下の規制に適合する必要があるアプリケーションに適しています:

  • GDPR (一般データ保護規則)
  • HIPAA (健康保険組合法)
  • SOC 2 (サービス機関制御 2)
  • ISO 27001 (情報セキュリティマネジメント)

パフォーマンスに関する考慮事項

Section titled “パフォーマンスに関する考慮事項”
  • バンドルサイズ: 暗号化されたバンドルは、約1-2%のオーバーヘッドで大きくなります。
  • 処理時間: 暗号化/復号化は最小限の遅延を追加します。
  • メモリ使用量: 暗号化/復号化操作中の一時的な増加
  • Delta (マニフェスト) アップデートを使用して暗号化されたデータの転送を最小限に抑える
  • __CAPGO_KEEP_0__を除外することでバンドルサイズを最適化する
  • JavaScriptとCSSファイルをバンドルする前に最小化する
  • codeを除外することで不要な依存関係を削除する
  • 古い/遅いデバイス上のデバイスパフォーマンスを監視する

次のステップ

次のステップ
  • 使用方法を学ぶ カスタムストレージ __CAPGO_KEEP_0__を使用して独自のインフラで暗号化する
  • 探索 チャンネル 環境間で暗号化されたバンドルを管理する
  • セットアップ CI/CD統合 暗号化されたデプロイを自動化する

暗号化を使用している場合 暗号化 暗号化をセキュリティとコンプライアンスの計画に接続する コンプライアンス コンプライアンスの実装詳細 Capgo セキュリティ スキャナー Capgo セキュリティ スキャナーの製品ワークフロー Capgo セキュリティ Capgo セキュリティの製品ワークフロー用 Capgo トラスト センター Capgo トラスト センターの製品ワークフロー用 組織セキュリティ 組織セキュリティの実装詳細用