Capgoのライブアップデートについて
ライブアップデートは、Capacitorアプリの最も強力な機能の1つで、アプリストアの提出なしでリアルタイムアップデートを可能にします。Capgoがこの機能をどのように実装しているか詳しく見ていきましょう。
主要なコンセプト
Capacitorアプリは2つの主要なレイヤーで構成されています:
- Webレイヤー: WebViewで読み込まれるHTML、CSS、JavaScriptファイルを含む
- ネイティブレイヤー: プラットフォーム固有のコード(AndroidのJava/Kotlin、iOSのSwift)を含む
Capgoのライブアップデートシステムは、アプリバイナリにコンパイルされていないウェブレイヤーを実行時に置き換えることで動作します。
技術的な実装
Capacitorのサーバーパス
Capgoは2つの重要なパスを管理します:
- 現在のサーバーパス: 現在WebViewで読み込まれているファイルを指す
- 次のサーバーパス: 次回のアプリ再起動時に読み込まれるファイルを指す
Android実装
Androidでは、Capgoは以下を通じてパスを管理します:
[[CODE_BLOCK]]
iOS実装
iOSでは、パスは以下を通じて管理されます:
[[CODE_BLOCK]]
セキュリティ対策
Capgoは、エンドツーエンド暗号化を通じて軍事グレードのセキュリティを実装し、開発からデプロイメントまでアプリのアップデートを完全に安全に保ちます。当社の暗号化システムは、従来のコード署名を超えて真のゼロ知識セキュリティを提供します。
エンドツーエンド暗号化アーキテクチャ
-
エンドツーエンド暗号化(E2EE): すべてのアップデートバンドルは、開発環境を離れる前にAES-256-GCM暗号化を使用して暗号化されます。この軍事グレードの暗号化により、アプリのアップデートは配信プロセス全体を通じて完全にプライベートかつ安全に保たれます。
-
ゼロ知識アーキテクチャ: 他のOTAアップデートソリューションがアップデートの署名のみを行うのとは異なり、Capgoは真のゼロ知識暗号化を採用しています:
- アップデートの内容はアップロード前に暗号化される
- Capgoサーバーは暗号化されたデータのみを保存
- 復号化はエンドユーザーのデバイスでのみ行われる
- 中間者がアップデート内容にアクセスできない
-
セキュアなキー管理:
- 暗号化キーはCI/CD環境で安全に生成・保存される
- 秘密鍵はCapgoのサーバーに触れることはない
- 各アプリバージョンで固有の暗号化キーを使用可能
- セキュリティ強化のためのキーローテーションをサポート
暗号化システムの詳細については、こちらのガイドをご覧ください:Capgoライブアップデートのエンドツーエンド暗号化
アップデートセキュリティプロセス
-
アップロード前の暗号化:
- アップデートはCI/CDパイプラインで暗号化される
- 各ファイルは個別に暗号化される
- メタデータも完全なプライバシーのために暗号化される
-
セキュアなストレージ:
- 暗号化されたバンドルはCapgoのグローバルCDNに保存される
- プレーンテキストデータは一切サーバーに触れない
- サーバー侵害の場合でもデータは安全に保たれる
-
セキュアな配信:
- アップデートは暗号化されたチャネルを通じて配信される
- 各アプリインスタンスが暗号化の整合性を検証する
- 復号化失敗時の自動リトライメカニズム
-
クライアントサイドセキュリティ:
- インストール前にアップデートが検証される
- 復号化失敗時は自動ロールバック
- アプリの保護されたストレージでのセキュアなキー保管
この包括的なセキュリティアプローチにより、以下に対するアプリのアップデートの保護を確保します:
- 中間者攻撃
- サーバーサイドの侵害
- 不正な変更
- リプレイ攻撃
- コンテンツの改ざん
アップデートライフサイクル
Capgoのアップデートプロセスはデフォルトで自動化されるように設計されています。自動プロセスは以下のように機能します:
1. 自動アップデートチェック
プラグインは以下の状況で自動的にアップデートをチェックします:
- アプリ起動時
この動作はautoUpdate
設定によって制御されます:
[[CODE_BLOCK]]
getLatest()
を使用して手動でもチェックできます。
2. 自動ダウンロード
新しいバージョンが検出され、autoUpdate
が有効な場合:
- ダウンロードが自動的に開始される
- 進行状況が内部的に追跡される
- ダウンロード失敗時は各アプリ起動時に自動リトライ