オープンウェブにおける信頼性の高いJavaScript:Webアプリケーションの整合性と透明性を確保する

#Tech

オープンウェブにおける信頼性の高いJavaScript:Webアプリケーションの整合性と透明性を確保する

機密データを扱うWebアプリケーションにおいて、サーバーが提供するJavaScriptコードの信頼性が脅かされる問題に対処するため、MozillaがWeb Application Integrity, Consistency and Transparency (WAICT)を提案しました。

WAICTは、Webサイトがクライアントサイドコードをマニフェストに紐付け、公開監査可能なログに記録することで、コードの整合性と透明性を担保します。

これにより、悪意のあるサーバーによるコード改ざんを検出し、ユーザーのセキュリティを保護します。

Cloudflare、Freedom of the Press Foundation、Metaなどのパートナーと協力し、Firefox Nightlyで早期プロトタイプを公開しており、フィードバックを募っています。

ウェブ上で機密性の高いデータを扱うアプリケーションの信頼性確保が喫緊の課題となっています。従来のウェブの仕組みでは、サーバーが提供するコードをブラウザが信頼するという前提に立っていましたが、悪意のあるサーバーが存在する場合、この信頼モデルは崩壊する危険性があります。この課題を解決するため、Mozillaは「WAICT」という新しい仕組みを開発・導入を進めているとのことです。

サーバーの信頼性に対する課題

SignalやWhatsAppのようなエンドツーエンド暗号化(E2EE)を利用するメッセージングアプリを例に挙げます。これらのアプリは、ユーザーのメッセージや暗号化キーを保護するために、サーバーから提供されるJavaScriptの実装を信頼しています。しかし、もしサーバーが侵害されたり悪意を持ったりした場合、特定のユーザーに対して改ざんされたコードを送りつけることが可能です。これにより、ユーザーのセキュリティが損なわれるにもかかわらず、その攻撃を発見することは極めて困難でした。これは、サーバーの振る舞いに依存する従来のセキュリティモデルの根本的な弱点を示しています。

WAICTによる検証可能なセキュリティ

WAICT(Web Application Integrity, Consistency and Transparency)は、ウェブアプリケーションに「完全性(Integrity)」と「透明性(Transparency)」という二つの重要な特性をもたらします。完全性とは、ユーザーが実行するコードが開発者が意図した通りのものであることを保証することです。透明性とは、そのコードの設計図(マニフェスト)が公開され、誰でも独立して監査できる状態にあることを意味します。WAICTは、クライアント側のコードをこの公開されたマニフェストに暗号学的に結びつける仕組みです。

実装と今後の展開

WAICTが有効化されたサイトが、公開されていないコードを配信した場合、ブラウザはそのコードを拒否します。これにより、これまで見えなかった攻撃が可視化され、追跡可能になります。Mozillaは、CloudflareやMetaなどエコシステム全体のパートナーと協力し、この仕組みの実装を進めています。現在、Firefox Nightlyのプレフィックスを通じてプロトタイプが利用可能となっており、標準化に向けたフィードバックを求めているとのことです。

まとめ

WAICTは、ウェブアプリケーションのセキュリティを「サーバーの信頼」から「コードの検証可能性」へとシフトさせる重要な一歩です。これにより、オープンウェブ全体でより強固で検証可能なアプリケーションセキュリティを実現することを目指しています。

原文の冒頭を表示(英語・3段落のみ)

The open web is a critical platform for applications that handle highly sensitive data, from private communications to financial transactions and medical records. Traditionally, servers are trusted to deliver the appropriate code and resources for their web applications to browsers, who then provide a secure and isolated environment for their execution. In some circumstances, this trust model falls short.

Consider a browser-based messaging application, like Signal or WhatsApp, which uses end-to-end encryption. The browser depends on the server to provide a trustworthy javascript implementation of the app; which ensures the user’s messages and cryptographic keys are suitably protected. A malicious or compromised server could selectively serve modified code to some users, undermining their security with little risk of detection. This challenges the basic premise of end-to-end encryption: that a misbehaving server should not be able to compromise user security.

Towards Verifiable Security on the Web

※ 著作権に配慮し、引用は冒頭3段落までです。続きは元記事をご覧ください。

元記事を読む ↗