xchat.

XChatのエンドツーエンド暗号化の仕組み

メッセージングアプリにおけるエンドツーエンド暗号化が実際に何を意味するのか、平易な言葉で解説します。

「エンドツーエンド暗号化」という言葉は、ろくな説明もないまま飛び交っている。XChatのようなアプリにとってそれが実際に何を意味するのかを、ここで整理しておきたい。

XChatでメッセージを送ると、端末を離れる前にアプリがそれをスクランブル化する。解読に必要な鍵は、あなたの端末と相手の端末にしか存在しない。メッセージはスクランブル化された状態のままX Corpのサーバーを経由していく。サーバーは、あなたから相手へメッセージが送られたという事実は把握できる——そうでなければ配送自体が成り立たない——が、その中身をのぞき見ることはできない。

これは「通信経路の暗号化」とは別物だ。通信経路の暗号化は、メッセージがネットワーク上を移動している間だけ保護する仕組みにすぎない。「保存時の暗号化」とも違う。こちらはサーバー上に保存されたデータを守るものだ。エンドツーエンド暗号化が両者より強いのは、サーバーが鍵を一切持たないからだ。

実際どう働くのか。仮にX CorpがあなたのXChatのやり取りを読みたいと思ったとしても——政府からの圧力であれ、召喚状への対応であれ、他のどんな理由であれ——読むことはできない。暗号技術がそれを阻む。メッセージを読む唯一の方法は、会話に参加している端末そのものに物理的にアクセスすることだ。

ここに小さな注釈がつく。暗号化が守るのはメッセージの中身であって、メタデータ——誰と、いつ、どのくらいの頻度でやり取りしたか——は守らない。この情報はメッセージを配送するために不可欠で、どの暗号化メッセンジャーもこの部分には何らかの痕跡を残している。

SignalやWhatsAppを使ったことがあれば、この仕組みはすぐに馴染むはずだ。下敷きになっている暗号プリミティブも近い。