世界を動かす技術を、日本語で。

Twitterの新しい暗号化DMは旧型よりも優れていない

概要

Twitterの新しい暗号化メッセージ「XChat」は、改善された点もあるが本質的な安全性に問題が残る。 依然としてTwitterはユーザーの秘密鍵を取得できる可能性が高く、MITM攻撃やメタデータ漏洩のリスクが存在。 JuiceboxプロトコルやLibsodiumの採用など技術的な工夫はあるが、PINやキーストアの運用に課題。 サーバーやバックエンドの信頼性が担保されておらず、Signalのような先進的な安全性は実現できていない。 結論として、プライバシー重視ならSignalの利用が推奨される。

Twitterの新暗号化DM「XChat」の問題点

  • Twitter は数年前に暗号化DMを導入したが、 エンドツーエンド暗号化(e2ee) としては不十分な実装。
  • 当初は画像送信などの機能もなく、実用性に乏しいサービス。
  • 最近、Elonが「 XChat」という新しい暗号化メッセージングを発表、 Rust製アーキテクチャ とBitcoin風暗号化を採用。
  • しかし、 根本的な安全性の問題 は解決されていない現状。

技術的な構成とその限界

  • 新実装は Libsodiumのboxes を用いたメッセージ暗号化を採用。
    • これは 前方秘匿性(Forward Secrecy) を持たないため、秘密鍵が漏洩すれば全ての過去メッセージが解読可能。
    • Signal は10年以上前から前方秘匿性を実現しており、現代的な基準には及ばない。
  • Libsodium の実装はC言語であり、Rustではない。
  • 従来方式では、各クライアントがキーペアを生成し、公開鍵のみをTwitterにアップロード。
    • 新デバイスでは過去メッセージを復号できず、デバイス数に制限がありスケーラビリティにも課題。

JuiceboxプロトコルとPIN運用のリスク

  • 新方式では Juiceboxプロトコル を使い、秘密鍵をサーバーに保存。
    • 秘密鍵はPINで生成した鍵で暗号化され、PINを知らなければ復号不可。
  • PINは4桁固定 で最大10,000通り。Argon2idによるKDFを用いても、並列計算で短時間に総当たり可能。
  • Juiceboxは 複数バックエンドへのシャーディング をサポートするが、Twitterは自社管理の3つのバックエンドのみ使用。
    • いずれもx.comドメイン配下であり、 Twitterが全て管理

バックエンドの信頼性とMITMの懸念

  • キーストアの信頼性は、 バックエンドとクライアント間の通信の真正性 に依存。
    • HSMの検証や試行回数制限プロトコルが必要だが、Twitterはその証明やドキュメントを公開していない。
  • クライアントは相手の公開鍵をTwitterサーバーから受け取るのみで、 公開鍵の真正性検証手段が存在しない
    • Twitterが任意の公開鍵を渡せば、 MITM攻撃 が容易に成立。
  • サポートページでもこの点は「今後修正予定」とされているが、過去の暗号化DMでも未解決のまま。

メタデータ漏洩とプライバシー

  • サーバーは 誰が・いつ・誰にメッセージを送ったか というメタデータを常に把握可能。
  • たとえ暗号化が突破されなくても、 通信のパターン から多くの情報が漏洩。

Signalとの比較・推奨

  • Signal は前方秘匿性・公開鍵の真正性検証・メタデータ保護など、 現代的な安全性 を実装。
  • TwitterのXChatは、 安全性・プライバシーの観点でSignalに大きく劣る
  • プライバシー重視ユーザーには Signalの利用を推奨

補足・注釈

  • JuiceboxにはRust実装も存在するが、TwitterはC実装をJNI経由で利用。
  • バックエンド運用者が悪意を持つ場合や、法的圧力下で秘密鍵の取得が現実的なリスク。
  • GoogleやAppleは、Intel SGX等を用いたより安全なキーストア運用をドキュメント化。

結論: Twitterの「XChat」は技術的な進歩はあるものの、 本質的な安全性・信頼性は確保されていないSignal の利用が、現時点では最適な選択。

Hackerたちの意見

新しいXChatは暗号化を搭載して展開中だよ [...] これはRustで作られていて、「ビットコインスタイル」の暗号化が使われてるんだって。「ビットコインスタイルの暗号化」って何を意味するの?ビットコインって、一般的に知られている「暗号化」よりも、主に暗号署名に依存してるんじゃないの?

ただのバズワードで、価値を感じさせるためのものだよ。

そのコメントの出所は、深い技術的専門知識を持っている人ではないことが証明されているから、あまり真に受けない方がいいよ。

みんなが他の人の公開鍵を知っていれば、エンドツーエンドの暗号化は簡単だよ。例えば、GPGがそういう仕組みだね。でも、信頼できる方法でその鍵を配布するのが難しいんだ。配布中に誰かが鍵を改ざんできると、どんな接続でも中間者攻撃ができちゃうからね。この「ビットコインスタイル」の暗号化は、今と歴史の中での全ユーザーの公開鍵のブロックチェーンかブロックツリーなんじゃないかな。ツリーのルートハッシュをクライアントアプリ内に送って、各ユーザーが自分のツリーのエントリーが正しいか確認できるようにして、他のユーザーのプライベートキーを取得するのに同じ確認済みのツリーを使えるって感じ。

何の意味もないよ。ただ、技術をよく知らない人にはカッコよく聞こえるだけ。君のHDMIケーブルが「10倍の速度のために金メッキされてる!」って言ってるのと同じ理由だね。

それは、彼が人々を刺激するって分かってるから、注目を集めるためにやってるんだよね。

この動画で説明されてるよ。 https://www.youtube.com/watch?v=sJNK4VKeoBM

本物のXChatは、名前の侵害でX-Twitterを訴えることができるのかな? http://xchat.org/

どうだろう?XChatは、Xが侵害している各市場で確立された商業的存在を示さなきゃいけないんだ。さらに、XChatがそれぞれの地域で商標を持っていないと、もっと難しくなるよ。

そういえば、XChatからHexChatへの移行時にIRCの常連だったのを思い出すな。今はHexChatも死んでるって知った :( [0] [0]: https://hexchat.github.io/news/2.16.2.html

以前の議論: Xの新しい「暗号化された」XChat機能は、特に安全性が高いわけではなさそうだね https://news.ycombinator.com/item?id=44178008

ありがとう。そこにあるトップコメントは結構技術的で、最後にこう言ってるよ:> 「ヘルプドキュメントにも書いてある通り、これはフォワードセキュアじゃないので、鍵を持った瞬間に全部復号できる。これが意味のあるエンドツーエンド暗号化プラットフォームからはほど遠いのは馬鹿げてる。」 https://news.ycombinator.com/item?id=44178544

Hacker Newsで議論の続きを見る