OMEMO
概要
OMEMOは2015年に最初の版が作成されたXMPPのエンドツーエンド暗号化をする現代的な仕様で、過去の暗号化仕様の問題を解決する。インスタントメッセンジャーSignalの暗号化を行うアルゴリズムであるDouble Ratchet(Signal、Wikipedia日本語)をXMPPで仕様にしたものである。
XMPPの他エンドツーエンド暗号化方式と比較した総覧
企画 | セキュリティ特性 | 伝達の種類 | XMPPとの互換性 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
真正性 | 完全性 | 暗号化 | 前方秘匿性 | 頑強性 | 1対1 | グループチャット | オフラインメッセージ | 複数の送信源 | Discoveryのサポート | |
OMEMO | 有 | 悪意のある認証済みデバイスの場合を除いて有 | 有 | 有 | 認証済みデバイスによっては有 | 有 | 非匿名のみ有 | 有 | 有 | 有 |
OpenPGP for XMPPインスタントメッセージ | 有 | 有 | 有 | 無 | N/A | 有 | 可能であり、予定があるが、現在は仕様がない | 有 | 有 | 有 |
古いPGP | 無。メッセージ暗号化のみで、署名されない | 無 | 有 | 無 | N/A | 有 | 無 | 有 | 全送信源で同じ鍵の組み合わせの場合は有 | 無 |
OTR | 有 | 有 | 有 | 有 | 有 | 有 | 無 | 無 | 無 | 無 |
Signalとの比較
以下に挙げられているSignalの問題がXMPPにはなく、Signalの最大の特長である優れた暗号化の実装がOMEMOにある。
Signalの問題点
全OSに共通の問題
中央集権
サーバーを選べない。Signal側はこれが問題にされていると認識しているが、脱中央集権化すると、変更を加えることが難しくなると主張している。
Google reCAPTCHA
プライバシーに悪いGoogle reCAPTCHAが使われ、Githubのissueで取り上げらた。
電話番号
Android版の問題
F-Droidにアプリがない
F-Droidにアプリがない。ただし、フォークしたSignal FOSSはF-Droidにレポジトリを追加して入手できる。
デスクトップ版の問題
スマートフォンに依存
デスクトップアプリだけでは登録できず、スマートフォンが必要。
Electron
デスクトップ版は、起動が遅く、動作が重く、不安定で、セキュリティが脆く、アプリのファイルサイズが大きく、視覚障害者が利用しづらいElectronを使用している。過去にはGithubのissueでこの問題が取り上げられたが、大幅なコード書き換えが必要なため、開発者が取り除く予定はない。
XMPP+OMEMOがSignalに対して完全に上回る点
- 非中央集権。
- 電話番号不要。
- スマートフォン不要。
- サーバーとクライアントは、通信経路匿名化ソフトウェアTorのオニオンサービスで通信可能。
- クライアントアプリの豊富さ。
- 使いやすいクライアントがある。
- 外観が豊富。
- 軽量なクライアントがある。
- GUIもCLIもある。
- Elecrtonを使用しないクライアントがある。
- Android OSの場合は、F-Droidから外部のレポジトリを登録せずに、アプリをダウンロードできる。
- サーバーソフトウェアの豊富さ。
- デスクトップパソコンとの相性。
Signalと同等な点
- メッセージの暗号化
- エンドツーエンド暗号化
このように、エドワード・スノーデンがエンドツーエンド暗号化を理由にSignalを薦めていても、OMEMOではなく、わざわざSignalを選ぶ理由がない。
電子メール+OpenPGPとの比較
OpenPGPは古く、仕様にたくさんの問題を抱えている。
OpenPGPの問題点
Web of Trust
全員の連絡先が他の連絡先全員に漏れる。
鍵サーバー
署名スパム
公衆鍵サーバーは誰でもどの鍵にも署名可能で、大量の無駄な鍵で署名されて、鍵が長くなる。
鍵束
鍵サーバーに鍵を要求する度に、端末のIPアドレスと要求したすべての鍵がサーバーに知られる。これは、ランダムな間隔でTor経由で鍵を更新するParcimonieで防げるが、ソフトウェアは1年半以上も更新されていない。
朽ちた暗号
OpenPGPは、バックドアがあるとされているNISTの楕円曲線をサポートしている。
OpenPGPは、下位互換性と標準への準拠という名目でセキュリティを犠牲にしている。SHA-1、3DES、CAST5、Blowfish などの朽ちているか、もしくは古いアルゴリズムをサポートしている。最新の暗号システムでは使用しないCFBモードとS2Kパスワード ハッシュを使用する。
鍵の有効期限
連絡先に定期的に鍵を更新するよう強要する。鍵を更新するため、#鍵サーバーを使用する人がいる。
指定がなければRSAを使用
より速く、より小さく、より安全なCurve25519を使用しない。
鍵IDと指紋
多数の利用者は、成りすまし可能なv3の危険な鍵IDのままにしている。しかし、現在のv4の鍵であっても、衝突済みのSHA1に依存している。
圧縮+暗号化
攻撃者が暗号化されたメッセージを解読するのに役立つ場合がある。
否認不可能
署名暗号技術の否認可能性がない。ただし、電子メールではサーバーはDKIMを使用し、メール内容にはメタデータとIPログに加えてコンテキスト情報があり、OpenPGPに否認可能性がなくても変わらない。
前方秘匿性(フォワードセキュリティ)の欠如
暗号鍵の秘密鍵が漏洩した場合、その鍵で過去に暗号化されたすべてのデータを他者が解読可能になる。主要なメールプロバイダーは要求に応じて法執行機関にメール内容を提供し、NSAはXKeyscoreを利用して、送信されるメールのコピーを保持する。
メッセージパディングなし
パディングがない暗号のモードであるCFBを使うので、暗号文のままでもメッセージの正確な長さがわかる。
また、パディングオラクル攻撃に対して脆弱。
XMPP+OMEMOが電子メール+OpenPGPに対して完全に上回る点
- 鍵サーバーがない。
- 朽ちた暗号が使われない。鍵交換は暗号Curve25519/Ed25519とハッシュSHA-256が使われ、メッセージ暗号化は暗号AES-256-CBCとハッシュHKDF-SHA-256、HMAC-SHA-256が使われる。ただし、OpenPGPと同じく否認可能性はない。
- 前方秘匿性(フォワードセキュリティ)があり、同じ鍵を短期間だけ使い、自動的に更新され、秘密にすべき鍵が漏洩しても、過去に送信したメッセージをほとんど解読できない。
- メッセージパディングあり。
- 別人が同じ暗号文を再送する反射攻撃に強い。
XMPP+OMEMOが電子メール+OpenPGPに対して下回る点
- クライアントが少ない。
- 普及してない。
関連用語
外部リンク
Wiki
- XMPP E2E Security - XMPP Wiki
- Tech pages/OMEMO - XMPP Wiki
- OMEMO - Wikipedia英語
- Double Ratchetアルゴリズム - Wikipedia日本語