コンテンツに進む

Encryption

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

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

実際に保護されるもの: OTAシステムがアップデートのみ署名するのとは異なり、Capgoはアップロードされたバンドルをストレージおよび配信前に暗号化します。これにより、ストレージまたはトランジット中のバンドル内容を無防備にアクセスできるようになり、有効な暗号化されたアップデートを生成できるのはあなたの秘密鍵を持つ人だけです。 暗号化は必要なとき 「」

暗号化のしくみ

「暗号化のしくみ」

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

Capgo暗号化フロー

1.鍵の生成

「1.鍵の生成」
  • プライベートキー: 開発環境で安全に生成および保存される鍵(暗号化に使用)
  • パブリックキー: プライベートキーから派生し、Capacitorアプリの設定で保存される鍵(復号化に使用)
  • セッションキー: 各バンドルアップロード用にランダムに生成されるAES鍵

2.暗号化プロセス

2.暗号化プロセス
  1. 各バンドルのアップロードごとにランダムなAESセッションキーが生成されます
  2. バンドルはAESセッションキーで暗号化されます
  3. バンドルのチェックサムが計算されます
  4. AESセッションキーとチェックサムは両方ともRSAの秘密鍵で暗号化されます(「署名」を生成します)
  5. 暗号化されたバンドルと署名が保存されます

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

3.復号化プロセス

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

暗号化されたバンドルのチェックサムを計算し、元のチェックサムと比較して整合性を検証します

Capgo vs Other Platforms

Capgo vs Other Platforms
セクションCapgo__CAPGO_KEEP_0__
他のOTAプラットフォームストレージ/トランジットで暗号化; しかし、特定のリバースエンジニアがアプリバイナリを使用して検査することはまだ可能パブリックに読み取れる
セキュリティーメソッド完全なエンドツーヘンド暗号化Code署名のみ
プライバシー レベル強い配信/ストレージ保護; 反逆エンジニアリングに反対ではないプラットフォームがあなたのcodeにアクセスする
保護内容 + 完全性 + 認証完全性 + 認証のみ

なぜこれが重要なのか:

  • Code署名 更新は改ざんされていないか、正しいソースから来たかだけを確認します
  • Capgo暗号化 更新が保存され、配信されていたり、偽造された暗号化された更新が作成されても、攻撃者はあなたの秘密鍵が必要になります
  • アプリが配信された後、逆エンジニアリングはまだ可能です アプリ内には更新を復号化してロードするために必要な公開鍵が含まれています

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

  • RSA-4096を使用してセキュリティを強化しています
  • AES-256-GCMによる認証付き暗号化
  • 整合性検証を提供
  • パフォーマンスとセキュリティの向上
  • RSA-2048を使用して鍵を暗号化
  • AES-256-CBCを使用してバンドルを暗号化
  • 現在のCLIで利用できなくなりました
  • V1を使用する古いアプリはV2に移行する必要があります

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

「エンクリプションキーを生成するステップ1」

Capgoを使用して、暗号化キーを生成するには、まずCapgoとCLIを使用してください。

最初に、__CAPGO_KEEP_0__と__CAPGO_KEEP_1__を使用して暗号化キーを生成してください。
# 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 directly
npx @capgo/cli@latest key save --key-data "$CAPGO_PUBLIC_KEY"

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

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

公開鍵を保存した後、 は 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)

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

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

より多くの制御が必要な場合は、パッケージを手動で暗号化できます

  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 がバンドルアップロード中に暗号化に使用する (安全に保管)
  • パブリックキー: デバイス上で復号に使用するためにアプリ設定に保存 (コミットするのは安全)

プライベートキーが侵害された場合に回転する

セクション: “プライベートキーが侵害された場合に回転する”

プライベートキーが侵害されたと疑われるか確認された場合にキーペアを回転する。定期的なカレンダー回転は必要ない。このことは、OTA-のみの変更ではなく、ネイティブキー移行である。

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

    ターミナルウィンドウ
    npx @capgo/cli@latest key create
  2. Capacitorの設定に置き換えの公開鍵を保存してください:

    ターミナルウィンドウ
    npx @capgo/cli@latest key save --key ./.capgo_key_v2.pub
  3. ネイティブリリースをSyncし、配信する: 実行 npx cap sync, では新しいネイティブアプリのバージョンを配布し、置き換えられた公開鍵を含みます。

  4. コンテキスト:CapgoマーケティングウェブサイトのHTMLテキストフラグメント(親キー`compare_step_build_text`).ページ/エリア:Capgoマーケティングウェブサイト。役割:長いマーケティングまたは法的文章。見つける:ページalternatives/expo.astro、ページalternatives/voltbuilder.astro。Capgo製品/ブランドおよび開発者用語を完全に保存します。メッセージキー`compare_step_build_text`(Compare Step Build Text)。 デバイスは、古いネイティブバイナリを実行している場合、置き換えキーで暗号化されたアップデートを復号できません。置き換えキーで暗号化されたアップデートをデバイスに適用するには、 置き換えの公開鍵を含む新しいネイティブアプリバージョンを配布します。 新しいネイティブバージョンをターゲットします:

  5. 古いネイティブバイナリを実行しているデバイスでは、置き換え鍵で暗号化されたアップデートを復号できません。使用 バージョン対象化

セキュリティのベストプラクティス

セキュリティのベストプラクティス

キー セキュリティ

キー セキュリティ
  • プライベートキーを 環境間やチームメンバー間で共有しない
  • 環境ごとに 開発、ステージング、生産用の
  • キーを異なる環境で使用するLive Update
  • Cloudflare Capacitor

GitHub

Capgo
  • code API
  • SDK CLI
  • npm bun
  • { 暗号化エラーの適切なエラーハンドリング
  • アクセスを制限 暗号化キーへのアクセスを承認された従業員のみに
  • ロールベースのアクセス 暗号化キーの管理操作に使用する
  • 監査 暗号化キーの使用とアクセスを定期的に
  • 適切なバックアップと復旧手順を実装 暗号化のトラブルシューティング

一般的な問題

一般的な問題

デコード失敗:

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

鍵関連のエラー:

  • プライベートキー形式が正しいことを確認してください (PEM形式)
  • ストレージ/転送中に鍵が損傷していないことを確認してください
  • アプリケーション設定で鍵が適切な権限を持っていることを確認してください

パフォーマンスの問題:

  • 大きなバンドルは暗号化/復号に長くかかる可能性があります
  • 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 モード: 秘密性と実際性を両方とも提供します。
  • セキュア ランダム: 組み込み暗号化を使用した暗号化されたランダム数の生成

This makes Capgo suitable for applications requiring compliance with:

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

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

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

暗号化オーバーヘッド

暗号化オーバーヘッド
  • バンドルサイズ:暗号化されたバンドルは、約1-2%のオーバーヘッドで大きくなります
  • 処理時間:暗号化/復号化は最小限の遅延を追加します
  • メモリ使用量: 暫定的な増加は暗号化/復号化処理中
  • Deltaアップデートを使用して暗号化されたデータの転送を最小限に抑え
  • WebP形式に画像を変換してバンドルサイズを最適化
  • JavaScriptとCSSファイルを最小化してバンドルする
  • 不要な依存関係を削除してcode
  • 古い/遅いデバイスでデバイスのパフォーマンスを監視

暗号化から続けて

暗号化を使用している場合

暗号化 Encryption セキュリティとコンプライアンスの計画に役立つため、接続する コンプライアンス コンプライアンスの実装詳細について Capgo セキュリティ スキャナー Capgo セキュリティ スキャナーの製品ワークフローについて Capgo セキュリティ Capgo セキュリティの製品ワークフローについて Capgo トラスト センター Capgo トラスト センターの製品ワークフローについて 組織セキュリティ 組織セキュリティの実装詳細について