暗号の名前だけでなく、誰が平文にアクセスし、更新に影響を与えられるかを比較しましょう。
暗号化されたWebメッセンジャーだからといって、自動的に危険になるわけではありません。また、ネイティブAndroidアプリだからといって、自動的に安全になるわけでもありません。どちらもエンドツーエンド暗号化を実装でき、どちらもユーザーの端末上で平文を扱う必要があります。意味のある比較とは、誰がクライアントに影響を与え、表示された内容を読み、あるいは暗号鍵にアクセスできるかを比べることです。
同じ名前のアルゴリズムを使っていても、2つのクライアントの実装や安全性が同一だと証明されたことにはなりません。Livaraでは、公開されているセキュリティアーキテクチャが、意図する保護の仕組みを説明しています。この記事はプラットフォームの信頼境界を比較するものであり、どちらかのクライアントに対する独立した監査の結果ではありません。
確認しておきたい違い
| 項目 | Webクライアント | Androidクライアント |
|---|---|---|
| コードの配信 | サイトのコード、依存関係、ブラウザーのキャッシュと更新動作 | インストール済みパッケージとその更新経路 |
| 追加ソフトウェア | 関連する権限を持つ拡張機能、サイトに挿入されたコード | アクセシビリティサービス、キーボード、その他の高い権限を持つソフトウェア |
| 保存領域 | ブラウザープロファイルとオリジン単位のストレージ | アプリの保存領域、OSの制御、バックアップ設定 |
| 物理的なアクセス | ロックが解除されたブラウザーセッションと共用パソコン | ロックが解除されたスマートフォンと有効なアプリセッション |
| 完全性の確認 | サイトの配信過程とブラウザーのセキュリティへの信頼 | パッケージ署名と、提供されている場合は信頼できるリリースのハッシュ値 |
これらは異なる攻撃対象領域であり、あらゆる状況に当てはまる順位ではありません。適切に保守された専用ブラウザーのほうが、悪意あるソフトウェアの入った古いスマートフォンより良い選択になる場合もあります。
拡張機能は暗号化されたチャットのメッセージを読めるのか
適切なサイトアクセス権限を持つ拡張機能は、コンテンツスクリプトを使ってページの内容を読んだり変更したりできます。Chromeのコンテンツスクリプトに関するドキュメントでは、これらのスクリプトがページのDOMとやり取りすることが説明されています。メッセージがそこに読めるテキストとして表示されていれば、権限を与えられたスクリプトはメッセージの暗号化を破らずにアクセスできる可能性があります。
拡張機能には通常、分離されたJavaScript実行環境がありますが、それによってページの表示内容を構成するDOMまで拡張機能から隔離されるわけではありません。逆に、同じブラウザープロファイル内にある無関係なサイトならどれでも、別のサイトのチャットを自動的に読めるという説明も誤りです。ブラウザーのオリジン境界は依然として重要であり、それを越えるには許可されたやり取り、脆弱性、または別のアクセス手段が必要です。
拡張機能のサイトアクセス権限を確認し、不要な拡張機能を削除してください。拡張機能を最小限にした別のプロファイルを使えば露出を減らせますが、侵害されたOSや安全でないサイトのコードを修復できるわけではありません。
WebCryptoが提供するもの、提供しないもの
W3CのWeb Cryptography仕様は、Webアプリケーションに暗号処理を提供します。それらを組み合わせたプロトコルを認証したり、悪意あるスクリプトを無害にしたりするものではありません。
抽出不可の鍵は、APIを通じた通常の鍵素材のエクスポートを制限します。それでも、適切なアクセス権を持つコードは、その鍵で許可された処理を実行したり、その結果得られる平文を読んだりできる場合があります。したがって、鍵を抽出できないことは、侵害されたアプリケーション環境に対する完全な防御ではありません。アルゴリズムが利用できるかどうかもブラウザーの実装次第です。仕様の名前だけで対応を前提にせず、実際のサポート状況を確認する必要があります。
ユーザーにとって実用的な確認点は、ブラウザーとOSが更新されているか、オリジンが正しいか、どの拡張機能がサイトにアクセスできるか、そしてアプリが永続的に保存する鍵とログアウトをどう扱うかです。
新しく配信されたWebコードには必ず最新の修正が含まれるのか
いいえ。Web配信では素早く更新できる場合がありますが、キャッシュ、サービスワーカー、長期間開いたままのタブによって、実際に動作するコードは変わり得ます。また、サイトのコード配信過程を信頼する必要もあります。インストール型アプリにも、更新の遅れ、署名や配布の仕組みの侵害、サポートが終了したOSバージョンといった独自のリスクがあります。
どちらのクライアントも、公式の経路で最新の状態に保ってください。ページを再読み込みしたからといってセキュリティ修正が適用されたと考えたり、パッケージ署名があるからといってアプリに脆弱性がないと考えたりしないでください。
Androidのダウンロードを確認する方法
Androidのパッケージ署名と公開されたファイルのハッシュ値は、それぞれ異なる問いに答えるものです。公式のapksignerドキュメントでは、署名の検証について説明されています。SHA-256の比較では、ダウンロードしたファイルが特定の参照対象と一致するかを確認できますが、その参照対象自体が信頼できなければなりません。
攻撃者がAPKと表示されるチェックサムの両方を管理している場合、一致しても真正性は確認できません。ファイルのハッシュを計算しても、再現可能なビルドであること、悪意ある動作がないこと、暗号処理が正しいことは証明できません。Livaraの脅威モデルも、信頼できる参照対象が必要であるというこの制約を認めています。
ブログでネイティブアプリのほうが安全だと書かれているという理由だけで、代わりのアプリをサイドロードしないでください。公式の配布経路と、インストールするつもりの正確なバージョンを確認してください。
プラットフォーム選択のチェックリスト
- 共用パソコンですか? 個人的なチャットのセッションを開いたままにせず、保存済みのセッションとログアウト時の動作を確認してください。
- 拡張機能が多いですか? サイトへのアクセス権限を減らすか、機密性の高い作業にはクリーンなプロファイルを使ってください。
- 組織が管理する端末ですか? 個人アカウントを使う前に、組織の管理・監視ポリシーを理解してください。
- 信頼できないAndroidサービスがありますか? アクセシビリティ、通知、キーボード、リモートサポートのアクセス権限を確認してください。ただし、必要な支援ツールまで無差別に無効化しないでください。
- 長期間の履歴がありますか? 何かを削除する前に、ブラウザーの保存領域の消去やアプリの再インストール後に、鍵とバックアップがどのように保持されるかを理解してください。
- リスクの高い会話ですか? 独立した信頼できる経路で相手を確認し、双方の端末の安全性を考慮してください。
より広い観点で判断するには、安全なメッセンジャーのチェックリストを利用してください。どちらのプラットフォームを選んでも、受信者によるコピー、悪意ある端末からのアクセス、サービスが保持するメタデータがなくなるわけではありません。
よくある質問
ブラウザー拡張機能は暗号化を破る必要があるのか
ページにすでに表示されている平文にアクセスできるのであれば、必要ありません。そのアクセスが可能かどうかは、関連する権限とブラウザーの保護機能によって決まります。
Androidアプリは常により安全な選択なのか
いいえ。端末の状態、更新サポート、インストール元、高い権限を持つソフトウェアが重要です。実際に利用している環境を比較してください。
チェックサムの一致は安全なビルドの証明になるのか
ハッシュ関数の前提が成り立つ範囲で、参照ハッシュとの一致を証明します。参照対象が真正であるか、コードが安全であるかを証明するものではありません。



