メインコンテンツにジャンプ
ソリューション

Capacitor アップデート用の Code 署名を使用した E2E 暗号化

__CAPGO_KEEP_0__ アップデート用の暗号化を RSA + AES で実施し、企業向けおよび高セキュリティアプリ向けに設計

マーティン・ドナディュー

マーティン・ドナディュー

コンテンツマーケティング

Capacitor アップデート用の Code 署名を使用した E2E 暗号化

Capacitor-updater code-updater は、Code 署名を使用してエンドユーザーのデバイスで実行されるアップデートが改ざんされていないことを確認し、Capacitor-updater の標準的なウェブ向けセキュリティの上位に位置する追加の保護を提供します。

Capacitor-updater のデフォルトセキュリティ

Capgo のデフォルトセキュリティモデルは、ウェブホスティングプロバイダーのセキュリティモデルと似ています。Capgo はアップデートを格納します __CAPGO_KEEP_0__は、HTTPSを使用して、暗号化されたデータを安全に保存します。同様に、開発者が更新を公開する際は、HTTPSを使用して安全にデータを送信します。 __CAPGO_KEEP_0__は、SSL LabsのHTTPSテストでA+を獲得しています。

Capgoの標準的なセキュリティ設定は、SSL LabsのHTTPSテストでA+を獲得しています (

Capgo’s default security scores an A+ on SSL Labs’ HTTPS test (2022年11月__CAPGO_KEEP_0__は、Webホストのベストプラクティスと同様に、HTTPSを使用して、サーバーとエンドユーザーのデバイス間のネットワーク接続のプライバシーと完整性を保護します。これは、WebとIonicアプリケーションが__CAPGO_KEEP_1__を使用する場合に、優れたセキュリティレベルです。

Like best-in-class web hosts, Capgo uses HTTPS to protect the privacy and integrity of network connections between the server and end users’ devices. This is an excellent level of security that works well both for the web and Ionic apps that use Capgo.

__CAPGO_KEEP_0__と多くのWebホストは、AWS、GCP、または他の人気のクラウドプロバイダーから提供される下位レベルのクラウドインフラストラクチャを実行しています。__CAPGO_KEEP_1__または他のWebホストが実行するハードウェアとソフトウェアは、クラウド供給 chainの一部です。

Another thing Capgo and most web hosts have in common is they run on lower-level cloud infrastructure, often from AWS, GCP, or another popular cloud provider. The hardware and software operated by these cloud providers and Capgo or other web hosts are part of the cloud supply chain.

しかし、明らかにハードウェアとソフトウェアの脆弱性が発見されます。クラウドプロバイダーは、適切なスケジュールで脆弱性を修正し、悪意のあるソフトウェアの発生(e.g.

GoogleのSLSA を予防します。多くのウェブサイトやアプリは、セキュリティの要件を満たすために、クラウドインフラストラクチャを使用しています。ただし、イオニックアプリのいくつかは、クラウドインフラストラクチャを脅威モデルに含めています。高度なセキュリティ要件を持つこのようなCapacitorのJSアプリに対して、codeのエンドツーヘンドCapgoへのサインインを実装しました。 Capgoのアップデートの標準プロトコル.

エンドツーヘンドcodeのサインインにCapgoを使用

Capgoのエンドツーヘンドcodeのサインインでは、公開鍵暗号学を使用して、エンドユーザーのデバイスが、Capacitorアプリの開発者によって提供されたオリジナルのアップデートのみを実行することを保証します。

「エンドツーヘンド」は、開発者がアップデートを公開した時点から、エンドユーザーのデバイスがアップデートを受信して実行するまでの流れをカバーすることを意味します。「Codeのサインイン」は、暗号学と秘密のプライベートキーを使用して「code」を署名し、後に信頼されたパブリックキーを使用して署名を検証することを意味します。

ここに、簡単な*のスキーマを示します。

Capgoの暗号化スキーマ

  • 実用上は複雑ですが、暗号学は難しい

定義:

  • AES: Advanced Encryption Standard、シームトリック暗号化アルゴリズム、1つの鍵で暗号化と復号が行われます。
  • RSA: Rivest–Shamir–Adleman、非対称暗号化アルゴリズム、2つの鍵が使用されます: 公開鍵とプライベート鍵。
  • シファー: エンコードされたデータ。
  • セッションキー: AESアルゴリズムを使用してデータを暗号化および復号化するために使用されるキー。
  • チェックサム: ファイルのハッシュ値
  • 署名: プライベートのRSAキーの暗号化されたチェックサム。パブリックのRSAキーの使用により、署名が検証できます。

アップデートを暗号化するために、AESアルゴリズムを使用します。アップロードごとにランダムなAESキーが生成され、AESキーとチェックサム(ここでは「署名」と呼びます)は開発者のプライベートのRSAキーで暗号化されます。アプリでは開発者のパブリックのRSAキーを使用して、AESキーと署名(チェックサムに戻す)を復号化します。次に、復号化されたAESキーを使用してアップデートを復号化し、復号化されたアップデートのチェックサムを計算し、復号化された署名と比較します。

RSAは大量のデータを暗号化することができないため、2つの異なる暗号化アルゴリズムを使用します。AESはアップデートを暗号化し、RSAはAESキーとチェックサムを暗号化します。

このように、Capgoがあなたのバンドルの内容を読むことができません。このは、多くの企業顧客が使用する強力なセキュリティモデルです。

アップデート暗号化V2 2024-08-27:

  • アプリに保存されているキータイプを変更しました。これは、暗号化に使用されていたパブリックキーを復号化するために使用されていたプライベートキーから推測するのを防ぐために行われました。現在、アプリは復号化に使用されるパブリックキーを保存しています。
  • チェックサムをCRC32アルゴリズムからSHA256アルゴリズムに変更しました。また、バンドルに署名を開始しました __CAPGO_KEEP_0__暗号化 V2 が設定されている場合、更新には有効な署名が必要です。これはプラグインによって厳格に強制されます。
  • V2 の有効な署名暗号化が設定されていることを強く強制します。 コミュニティのメンバーから安全性分析が行われた後、3 つの変更が行われました。これらはアップデート中に暗号攻撃を防ぐためにここにあります。

暗号化 V1 を使用した場合は、V2 に移行して新しいセキュリティ機能を利用することをお勧めします。migration instructions を参照してください。 __CAPGO_KEEP_0__ でエンドツーワークの署名が行われると、__CAPGO_KEEP_1__ は “信頼できない” クラウドインフラストラクチャになります。__CAPGO_KEEP_2__ のクラウドプロバイダーまたは __CAPGO_KEEP_3__ 自身が __CAPGO_KEEP_4__ で署名されたアップデートを変更した場合、エンドユーザーのデバイスはアップデートを拒否し、すでにデバイスにインストールされている信頼できるアップデートを実行します。.

With end-to-end code signing, Capgo becomes a “trustless” cloud infrastructure. If one of Capgo’s cloud providers or even Capgo itself were to modify a code-signed update, end users’ devices would reject that update and run the previous, trusted update that’s already on the device.

While web-level HTTPS is sufficient for many apps, some large companies find the extra level of security from end-to-end code signing appealing. Some of these companies make finance apps that issue high-value, permanent transactions. Other companies have CISOs who include compromised cloud infrastructure in their threat models. We built end-to-end code signing in to Capgo for these use cases and are interested in hearing more from companies with higher-level security needs.

大規模企業やプロジェクトにとってセキュリティを深く考慮する場合、__CAPGO_KEEP_0__ 署名を簡単に設定して維持できるようにしたいと思います。そこで、以下の機能を提供しています。

For large companies or projects who care deeply about security, we want to make code signing easy to set up and maintain. To that end, we now provide the following features:

  • __CAPGO_KEEP_0__ は __CAPGO_KEEP_1__ で署名されたアップデートを __CAPGO_KEEP_2__ にアップロードします。__CAPGO_KEEP_3__ は __CAPGO_KEEP_4__ で署名されたアップデートを __CAPGO_KEEP_2__ にアップロードします。__CAPGO_KEEP_5__ は __CAPGO_KEEP_6__ で署名されたアップデートを __CAPGO_KEEP_2__ にアップロードします。
  • 開発サーバーに code を使用して、両方の Capgo と開発用のビルドをサポートする
  • 更新ごとに code を使用したプロダクション

Capgo code の署名はすべての顧客に利用可能です。始めるには、以下のセットアップ手順に従ってください。 セットアップ手順.

クレジット

「__CAPGO_KEEP_0__」は「__CAPGO_KEEP_1__」に感謝します。この記事は「__CAPGO_KEEP_1__」に基づいています。 この記事はChat-GPT-3で書き直され、適応されました。著者 マーティン・ドナディュー __CAPGO_KEEP_0__

Capacitorアプリのリアルタイムアップデート

Capgoを使用して、ウェブ層のバグが生じた場合に、ユーザーにバックグラウンドでアップデートを提供し、ネイティブの変更は通常のレビュー経路を通じて

スタートする

最新のブログ記事

Capgoは、プロフェッショナルなモバイルアプリを作成するために必要な最良の洞察を提供します。