5月5日、Mozillaが「Trustworthy JavaScript for the Open Web – Mozilla Hacks」と題した記事を公開した。この記事では、悪意のあるサーバーからWebアプリケーションを保護する新しいセキュリティ仕様「Web Application Integrity, Consistency and Transparency(WAICT)」について詳しく紹介されている。
WhatsAppやSignalといったエンドツーエンド暗号化アプリには、実は致命的な脆弱性が存在する。悪意のあるサーバーが特定のユーザーにのみ改ざんされたJavaScriptコードを配信することで、エンドツーエンド暗号化を迂回してユーザーデータを盗み取ることが可能だ。この「サーバー信頼性問題」は、Webセキュリティ分野で長年議論されてきた課題である。
エンドツーエンド暗号化の根本的脆弱性
近年、プライベートな通信から金融取引、医療記録まで、極めて機密性の高いデータを扱うWebアプリケーションが急速に普及している。これらのアプリの多くはエンドツーエンド暗号化を採用し、理論的にはサーバー側でも通信内容を解読できない仕組みを提供している。
しかし、従来のWebセキュリティモデルには重大な脆弱性がある。SignalやWhatsAppのようなブラウザベースのメッセージングアプリケーションでは、ブラウザがサーバーから信頼できるJavaScript実装を受け取ることに依存している。この相互信頼モデルこそが問題の根源だ。
悪意のある、または侵害されたサーバーは、特定のユーザーにのみ改ざんされたコードを選択的に配信する可能性がある。大部分のユーザーには正常なコードを配信し続けることで、検出リスクを最小限に抑えながらターゲットユーザーのセキュリティを損なうことができる。これは「悪質なサーバーがユーザーセキュリティを侵害してはならない」というエンドツーエンド暗号化の基本前提に真っ向から挑戦する問題だ。
WAICT:透明性による革新的解決アプローチ
Mozillaが開発するWAICTは、この問題を透明性と暗号学的証明によって解決する革新的なアプローチだ。この仕様は、Certificate Transparency(SSL証明書の透明性)やBinary Transparency(バイナリファイルの透明性)といった既存の透明性技術をWebアプリケーションに適用したものである。
WAICTがWebプラットフォームにもたらす2つの重要な特性:
- 完全性(Integrity): ユーザーが実行するコードが、開発者がマニフェストでコミットした内容と一致する
- 透明性(Transparency): これらのマニフェストが公開ログに記録され、独立して監査可能である
WAICTを使用すると、Webサイトはクライアントサイドコードをマニフェストに暗号学的に結び付け、そのマニフェストを公開監査可能なログにコミットできる。この強化された信頼モデルが必要なサイトは、WAICT執行にオプトインすることが可能だ。
オプトインしたサイトが公開ログに記録されていないコードを配信した場合、ブラウザはそれを拒否し、以前は見えなかった攻撃が観察可能で特定可能になる。これにより、ユーザーのマシンに配信されるコードが、セキュリティ研究者が検査できる公開コードと一致することが保証される。
実装状況と業界連携
MozillaはCloudflare、Freedom of the Press Foundation、Metaなどのエコシステム全体のパートナーと協力し、実用的で安全、かつ可能な限りシンプルなデプロイメントモデルを確保している。特にMeta(Facebook)は、同社のMessengerサービスでの導入を検討しており、実用性の検証に重要な役割を果たしている。
WAICTの初期プロトタイプは、現実世界のシナリオでアプローチを検証するため、Firefox Nightlyの設定フラグの背後で利用可能だ。waict.devでプロトタイプをテスト可能で、WAICTによって保護されたエンドツーエンド暗号化ビデオ通話アプリのデモも含まれている。
この実装はまだ進行中の作業で完成したソリューションではないが、反復と標準化のための具体的な基盤を提供している。MozillaはGitHub上で仕様書をオープンに開発しており、コミュニティからの初期フィードバックを歓迎している。
Webセキュリティの新たな地平
WAICTの登場は、Subresource Integrity(サブリソース完全性)やContent Security Policy(コンテンツセキュリティポリシー)といった既存のWebセキュリティ技術を大きく発展させるものだ。これまでのセキュリティ仕様が主に外部リソースの改ざん検知に焦点を当てていたのに対し、WAICTはアプリケーション全体の完全性を保証する包括的なアプローチを提供する。
この仕様が標準化されれば、プライバシーを重視するWebアプリケーションの信頼性が大幅に向上し、強力で検証可能なアプリケーションセキュリティがオープンウェブの第一級の特性となることが期待される。政府の監視や企業による不正なデータ収集への懸念が高まる中、WAICTのような技術的保護手段の重要性はますます増している。
詳細はTrustworthy JavaScript for the Open Web – Mozilla Hacksを参照していただきたい。