- Twitter(X)の新しい暗号化DM(XChat) は技術的には end-to-end 暗号化をうたっているが、秘密鍵の奪取・MITM・メタデータ露出などの深刻なセキュリティ欠陥が依然として存在する
- Libsodium Box(秘密鍵ベースの暗号化) を導入したが、forward secrecy 非対応と4桁PINベースの弱い鍵保護方式により、秘密鍵の抽出が比較的容易である
- Juiceboxプロトコルで鍵をバックアップ/復旧するが、実際の安全性はバックエンドへの信頼に全面的に依存しており、Twitterがすべてのバックエンドを直接運用しているため、shardingの意味はほとんどない
- 公開鍵の認証/検証のための out-of-band 手続きがないため、TwitterがMITM(中間者攻撃)で鍵をすり替えることができ、ユーザーメタデータもそのまま露出する
- Signal と異なり、現時点では実質的なプライバシー保護が不十分なため、信頼できる暗号化メッセンジャーとして Signal を推奨している
Twitterの新しい暗号化DM分析
背景と要約
- Twitter(X)は新しい XChat暗号化メッセージプラットフォーム を公開し、Rustで開発され、Bitcoinスタイルの暗号化構造を導入したと宣伝した
- しかし実際の実装を見ると、依然としてTwitterが秘密鍵へのアクセス、MITM(中間者攻撃)、メタデータ収集を行える構造である
- 結論: Signalの利用を推奨、Twitter(X) DMは根本的な限界により安全ではない
暗号化構造と限界
1. 暗号化方式
- Libsodiumの box(公開鍵ベースの暗号化) を使用
- forward secrecy(前方秘匿性) 非対応: 秘密鍵が漏洩すると過去のメッセージをすべて復号可能(つまり、Signalなど最新のメッセンジャーより脆弱)
- 実際の実装はRustではなく、Cライブラリ(jniでバインド)を使用
2. 鍵保存と復旧(Juiceboxプロトコル)
- デバイスで生成された秘密鍵を Juiceboxプロトコル で保存
- 鍵は PIN(4桁)ベースで暗号化 して保存され、復旧時にはPIN入力が必要
- サーバーはPINを知らないが、PINが4桁(1万通り)しかないため、並列ブルートフォースで迅速に突破可能
- Argon2idで16MBメモリ・32回反復を適用しても、実際の攻撃者にとって大きな障害ではない(低性能ノートPCでも0.2秒以内)
3. 鍵分散(Sharding)構造の限界
- Juiceboxは複数バックエンドへの分散(sharding)をサポートするが、Twitterは3つのバックエンドをすべて直接運用している
- 結局、鍵復旧プロセスではTwitterへの信頼に完全に依存する必要があり、sharding本来のセキュリティ上の利点がない
- バックエンドと安全に通信するHSM、SGXなどのハードウェア検証手続きも存在しない
4. 公開鍵認証/交換の脆弱性
- 相手の公開鍵はTwitterサーバー経由で受け取るだけで、別途検証する(out-of-band)手段がない
- Twitterは必要に応じて任意の公開鍵を提供し、中間者攻撃(MITM)を実行可能
- 公式サポートページでもこの脆弱性を認め、今後の改善を予告しているだけで、実質的な対策はない
5. メタデータとその他の問題
- 誰が誰に、いつメッセージをやり取りしているかといったメタデータはTwitterが完全に把握可能
- 秘密鍵が露出しなくても、ユーザーのコミュニケーションパターンは依然として会社に露出する
結論と勧告
- 暗号化DMの設計上の限界により、実際のセキュリティとプライバシーの面でSignalなどの検証済みメッセンジャーに及ばない
- Twitterが公開鍵・キーストア・通信経路のすべてを制御している限り、真の end-to-end 暗号化とは見なせない
- Signal のような公開され透明性のあるプロトコルを採用するメッセンジャーの利用を強く推奨する
1件のコメント
Hacker Newsのコメント
Matthew Garrettの書くものは何でも好きなファンだが、Signalがかなり以前から常に forward secrecy をサポートしてきたことは、しつこいくらい強調しておきたい。現代的な安全なメッセンジャーという概念は、OTR(Borisov と Goldberg)が「完全な forward secrecy」と否認可能性の概念をほぼ初めて導入したことで生まれた。Signalは、そのアイデアと、そのアイデアのエンジニアリング面(より良い暗号化、より良いコード、より良いパッケージング)の両方を発展させた成果だと思う。もどかしいのは、新しいメッセンジャーが「pre-Signal」レベルではなく、2001年以前、つまり現代以前のセキュリティ水準へ後退していることだ
過去のさまざまなリークから覚えておくべきことが3つある。(1) FBIが企業に秘密裏にバックドアを入れるよう「強制」した事実がある。FISA裁判所が企業に致命的な罰金を科せるという言及もあった。(2) 大企業にはバックドアの対価として数千万〜数億規模の金額が支払われる。そして政府契約や輸出ライセンスなど、さまざまな方法で圧力がかけられる。結局のところ「銀行か銃か」式の政策と解釈できる。(3) Lavabitの裁判では、FBIが鍵の提供を要求したうえで、顧客に嘘をつくよう事実上強いた。こうした事例を思い出すと、大手プラットフォーム内の暗号化は政府の要求で意図的に弱められているか、あるいは単に気にされず杜撰に実装されているケースがかなり多いのではないかと疑ってしまう。Patriot Act、FISC、秘密解釈などの関連法令や慣行がなくなり、違反者が処罰されるまでは、警察国家における暗号化は Five Eyes によってすでに壊されていると考えるべきだ
人々がApp StoreからPCベースのアプリをインストールし続ける限り、この後進的な状況は続くだろう
ephemeral key を使わず、forward secrecy も相互作用履歴もないなら、どの点が本当に「bitcoin スタイル」なのか疑問だ
暗号技術は使われているが、だいたいは面白みがなく、ほとんど無意味な派生技術のように感じる
実質的な活用価値がないということだ
Bitcoin自体も安全な通信チャネルではないという事実
PINベースの鍵導出を使っている点はある。ただ、これはメッセージングそのものというよりバックアップ実装に近い方式で、本質的な特徴とも言いにくい
ハッシュ関数を使っていることへの言及
以前の議論へのリンク共有:
Xの新しい「暗号化された」XChatもそれほど安全ではない
関連コメントを見る
暗号化するなら別のソフトウェアを使い、公開鍵は直接会って交換する方式のほうが良いのではと思う
質問: 近いうちに北京へ行く予定だが、VPNなしでTwitterを使えるのか気になる
「Bitcoin style encryption」という表現には疑問がある。実際のBitcoinは、私たちが一般に知る「encryption」ではなく、暗号署名技術により強く依存しているという認識だ
この用語は実際には何の意味もなく、技術に詳しくない人にもっともらしく聞こえるように使われたマーケティング用語にすぎない
この発言の出所自体が、技術的に深い人ではない点を念頭に置くべきだ
この用語を使ったのは、話題を呼ぶと分かっていたからだろう。より注目を集めるための戦略的な選択だという解釈
解説動画へのリンク共有
https://www.youtube.com/watch?v=sJNK4VKeoBM
単に格好よく見せて、「価値のあるもの」のように感じさせるための流行語程度の言葉
本物のXChat(IRCクライアント)が、X-Twitterを商標権侵害で訴えられるのか気になる
http://xchat.org/
昔、XChatからHexChatへ移っていった頃のIRCユーザーだった思い出がある。しかもHexChatも開発終了の知らせが出ていて驚いた
HexChat終了のお知らせ
おそらく可能ではあるが、XChat側がXの侵害する各分野で商業的な市場性をしっかり立証し、各地域で商標権が登録されていれば認められやすい。そうでなければもっと難しいという意見
Twitterが使っているライブラリ(元記事ベース)で面白いのは、開発者本人がライブラリの説明に
「警告: 実験用ライブラリ! これはレビューされるまで本番環境で使わないでください。リスクやバグの可能性が高いです」
と自ら書いていることだ
https://github.com/ionspin/kotlin-multiplatform-libsodium
Twitterのブランド力が非常に強く、リブランディング後もなお生命力を失っていないことに感嘆する