「OMEMO」の版間の差分
細 |
|||
1行目: | 1行目: | ||
− | [[ | + | <!-- 参考:http://jezf25zgvxlsvuzdzm6fg2hoetmruhy4uxnolyw46tuh4jugcwc7byqd.onion/OMEMO --> |
+ | ==概要== | ||
+ | OMEMOは[https://xmpp.org/extensions/xep-0384.html#revision-history-v0.0.1 2015年に最初の版が作成された]XMPPのエンドツーエンド暗号化をする現代的な仕様で、過去の暗号化仕様の問題を解決する[https://xmpp.org/extensions/xep-0384.html#intro-motivation 過去の暗号化仕様の問題を解決する]。インスタントメッセンジャー[https://signal.org/ja Signal]の暗号化を行うアルゴリズムであるDouble Ratchet([https://signal.org/docs/specifications/doubleratchet/ Signal]、[https://ja.wikipedia.org/wiki/Double_Ratchetアルゴリズム Wikipedia日本語])を[https://xmpp.org/extensions/xep-0384.html#intro-overview XMPPで仕様にした]ものである。 | ||
− | == | + | ==XMPPの他エンドツーエンド暗号化方式と比較した総覧== |
− | () | + | <!-- https://wiki.xmpp.org/web/XMPP_E2E_Security#Comparative_Overview (固定版 https://wiki.xmpp.org/web/index.php?title=XMPP_E2E_Security&oldid=10490 )を和訳と微修正した。 --> |
+ | {| class="wikitable" style="text-align: center;" | ||
+ | |- | ||
+ | !rowspan="2" |企画 | ||
+ | !colspan="5" |セキュリティ特性 | ||
+ | !colspan="2" |伝達の種類 | ||
+ | !colspan="3" |XMPPとの互換性 | ||
+ | |- | ||
+ | ![https://ja.wikipedia.org/wiki/デジタル署名#認証 真正性] | ||
+ | ![https://en.wikipedia.org/wiki/Information_security#Integrity <abbr title="情報及び処理方法が、正確であること及び完全であることを保護すること。">完全性<abbr>] | ||
+ | ![https://ja.wikipedia.org/wiki/暗号 暗号化] | ||
+ | ![https://ja.wikipedia.org/wiki/Forward_secrecy 前方秘匿性] | ||
+ | ![https://en.wikipedia.org/wiki/Malleability_(cryptography) <abbr title="暗号文が与えられたとき、ある関係性を持った別の暗号文の生成ができないこと。">頑強性</abbr>] | ||
+ | !1対1 | ||
+ | !グループチャット | ||
+ | !オフラインメッセージ | ||
+ | !複数の送信源 | ||
+ | !Discoveryのサポート | ||
+ | |- | ||
+ | |[https://xmpp.org/extensions/xep-0384.html OMEMO] | ||
+ | | style="background-color:#33ff00" |有 | ||
+ | | style="background-color:#33ff00" |悪意のある認証済みデバイスの場合を除いて有 | ||
+ | | style="background-color:#33ff00" |有 | ||
+ | | style="background-color:#33ff00" |有 | ||
+ | | style="background-color:#33ff00" |認証済みデバイスによっては有 | ||
+ | | style="background-color:#33ff00" |有 | ||
+ | | style="background-color:yellow" |非匿名のみ有 | ||
+ | | style="background-color:#33ff00" |有 | ||
+ | | style="background-color:#33ff00" |有 | ||
+ | | style="background-color:#33ff00" |有 | ||
+ | |- | ||
+ | |[https://xmpp.org/extensions/xep-0374.html OpenPGP for XMPPインスタントメッセージ] | ||
+ | | style="background-color:#33ff00" |有 | ||
+ | | style="background-color:#33ff00" |有 | ||
+ | | style="background-color:#33ff00" |有 | ||
+ | | style="background-color:red" |無 | ||
+ | | style="background-color:yellow" |N/A | ||
+ | | style="background-color:#33ff00" |有 | ||
+ | | style="background-color:red" |可能であり、予定があるが、現在は仕様がない | ||
+ | | style="background-color:#33ff00" |有 | ||
+ | | style="background-color:#33ff00" |有 | ||
+ | | style="background-color:#33ff00" |有 | ||
+ | |- | ||
+ | |[https://xmpp.org/extensions/xep-0027.html 古いPGP] | ||
+ | | style="background-color:red" |無。メッセージ暗号化のみで、署名されない | ||
+ | | style="background-color:red" |無 | ||
+ | | style="background-color:#33ff00" |有 | ||
+ | | style="background-color:red" |無 | ||
+ | | style="background-color:yellow" |N/A | ||
+ | | style="background-color:#33ff00" |有 | ||
+ | | style="background-color:red" |無 | ||
+ | | style="background-color:#33ff00" |有 | ||
+ | | style="background-color:yellow" |全送信源で同じ鍵の組み合わせの場合は有 | ||
+ | | style="background-color:red" |無 | ||
+ | |- | ||
+ | |OTR | ||
+ | | style="background-color:#33ff00" |有 | ||
+ | | style="background-color:#33ff00" |有 | ||
+ | | style="background-color:#33ff00" |有 | ||
+ | | style="background-color:#33ff00" |有 | ||
+ | | style="background-color:#33ff00" |有 | ||
+ | | style="background-color:#33ff00" |有 | ||
+ | | style="background-color:red" |無 | ||
+ | | style="background-color:red" |無 | ||
+ | | style="background-color:red" |無 | ||
+ | | style="background-color:red" |無 | ||
+ | |} | ||
− | == | + | ==Signalとの比較== |
− | + | 以下に挙げられているSignalの問題がXMPPにはなく、Signalの最大の特長である優れた暗号化の実装がOMEMOにある。 | |
− | + | ===Signalの問題点=== | |
− | + | ====全OSに共通の問題==== | |
+ | =====中央集権===== | ||
+ | サーバーを選べない。[https://signal.org/blog/the-ecosystem-is-moving/ Signal側はこれが問題にされていると認識しているが、脱中央集権化すると、変更を加えることが難しくなると主張している]。 | ||
− | + | =====Google reCAPTCHA===== | |
+ | プライバシーに悪いGoogle reCAPTCHAが使われ、[https://github.com/signalapp/Signal-Android/issues/10999 Githubのissueで取り上げらた]。 | ||
− | === | + | =====電話番号===== |
− | [ | + | [https://support.signal.org/hc/ja/articles/360007318691-電話番号を登録する 電話番号が必要]。 |
− | |||
− | == | + | [https://support.signal.org/hc/ja/articles/360007061452-Signal-は私が連絡先に登録している人たちに私の電話番号を送信しているのですか? 電話番号が相手に伝わる]。 |
− | * [https://en.wikipedia.org/wiki/ | + | |
+ | ====Android版の問題==== | ||
+ | =====F-Droidにアプリがない===== | ||
+ | [https://community.signalusers.org/t/signal-android-app-on-f-droid-store-f-droid-status/28581 F-Droidにアプリがない]。ただし、フォークした[https://www.twinhelix.com/apps/signal-foss Signal FOSS]はF-Droidにレポジトリを追加して入手できる。 | ||
+ | |||
+ | ====デスクトップ版の問題==== | ||
+ | =====スマートフォンに依存===== | ||
+ | [https://support.signal.org/hc/ja/articles/360007318751-登録のトラブルシューティング デスクトップアプリだけでは登録できず、スマートフォンが必要]。 | ||
+ | |||
+ | =====Electron===== | ||
+ | デスクトップ版は、起動が遅く、動作が重く、不安定で、セキュリティが脆く、アプリのファイルサイズが大きく、視覚障害者が利用しづらい[https://www.freie-messenger.de/en/begriffe/electron/ Electron]を使用している。[https://github.com/signalapp/Signal-Desktop/issues/2178 過去にはGithubのissueでこの問題が取り上げられたが]、大幅なコード書き換えが必要なため、開発者が取り除く予定はない。 | ||
+ | |||
+ | ===XMPP+OMEMOがSignalに対して完全に上回る点=== | ||
+ | * 非中央集権。 | ||
+ | ** 電話番号不要。 | ||
+ | ** スマートフォン不要。 | ||
+ | ** サーバーとクライアントは、通信経路匿名化ソフトウェアTorのオニオンサービスで通信可能。 | ||
+ | |||
+ | * クライアントアプリの豊富さ。 | ||
+ | ** 使いやすいクライアントがある。 | ||
+ | ** 外観が豊富。 | ||
+ | ** 軽量なクライアントがある。 | ||
+ | ** GUIもCLIもある。 | ||
+ | ** Elecrtonを使用しないクライアントがある。 | ||
+ | ** Android OSの場合は、F-Droidから外部のレポジトリを登録せずに、アプリをダウンロードできる。 | ||
+ | * サーバーソフトウェアの豊富さ。 | ||
+ | * デスクトップパソコンとの相性。 | ||
+ | |||
+ | ===Signalと同等な点=== | ||
+ | * メッセージの暗号化 | ||
+ | ** エンドツーエンド暗号化 | ||
+ | |||
+ | このように、エドワード・スノーデンがエンドツーエンド暗号化を理由にSignalを薦めていても、OMEMOではなく、わざわざSignalを選ぶ理由がない。 | ||
+ | |||
+ | ==電子メール+PGPとの比較== | ||
+ | PGPは古く、仕様にたくさんの問題を抱えている。 | ||
+ | |||
+ | ===PGPの問題点=== | ||
+ | <!-- 参考:https://nicholasjohnson.ch/2022/01/03/goodbye-pgp/ --> | ||
+ | ====Web of Trust==== | ||
+ | 全員の連絡先が他の連絡先全員に漏れる。 | ||
+ | |||
+ | ====鍵サーバー==== | ||
+ | =====署名スパム===== | ||
+ | 公衆鍵サーバーは誰でもどの鍵にも署名可能で、大量の無駄な鍵で署名されて、鍵が長くなる。 | ||
+ | |||
+ | =====鍵束===== | ||
+ | 鍵サーバーに鍵を要求する度に、端末のIPアドレスと要求したすべての鍵がサーバーに知られる。これは、ランダムな間隔でTor経由で鍵を更新する[https://manpages.debian.org/bullseye/parcimonie/parcimonie.1p.en.html Parcimonie]で防げるが、ソフトウェアは1年半以上も更新されていない。 | ||
+ | |||
+ | ====朽ちた暗号==== | ||
+ | [https://safecurves.cr.yp.to/rigid.html PGPは、バックドアがあるとされているNISTの楕円曲線をサポートしている。] | ||
+ | |||
+ | OpenPGPは、下位互換性と標準への準拠という名目でセキュリティを犠牲にしている。SHA-1、3DES、CAST5、Blowfish などの朽ちているか、もしくは古いアルゴリズムをサポートしている。最新の暗号システムでは使用しないCFBモードとS2Kパスワード ハッシュを使用する。 | ||
+ | |||
+ | ====鍵の有効期限==== | ||
+ | 連絡先に定期的に鍵を更新するよう強要する。鍵を更新するため、[[#鍵サーバー]]を使用する人がいる。 | ||
+ | |||
+ | ====指定がなければRSAを使用==== | ||
+ | より速く、より小さく、より安全な[https://ja.wikipedia.org/wiki/エドワーズ曲線デジタル署名アルゴリズム Curve25519]を使用しない。 | ||
+ | |||
+ | ====鍵IDと指紋==== | ||
+ | 多数の利用者は、成りすまし可能なv3の危険な鍵IDのままにしている。しかし、現在のv4の鍵であっても、[https://shattered.io/ 衝突済みのSHA1]に依存している。 | ||
+ | |||
+ | <!-- ====パケット形式==== --> | ||
+ | ====圧縮+暗号化==== | ||
+ | [https://security.stackexchange.com/questions/43413/is-it-safe-for-gpg-to-compress-all-messages-prior-to-encryption-by-default 攻撃者が暗号化されたメッセージを解読するのに役立つ場合がある。] | ||
+ | |||
+ | ====否認不可能==== | ||
+ | 署名暗号技術の[https://ja.wikipedia.org/wiki/否認不可 否認可能性]がない。ただし、電子メールではサーバーはDKIMを使用し、メール内容にはメタデータとIPログに加えて、コンテキスト情報があり、に否認可能性がなくても変わらない。 | ||
+ | |||
+ | ====前方秘匿性(フォワードセキュリティ)の欠如==== | ||
+ | 暗号鍵の秘密鍵が漏洩した場合、他人がその鍵で過去に暗号化されたすべてのデータを解読可能になる。主要なメールプロバイダーは要求に応じて法執行機関にメール内容を提供し、NSAは[https://ja.wikipedia.org/wiki/XKeyscore XKeyscore]を利用して、送信されるメールのコピーを保持する。 | ||
+ | |||
+ | ====メッセージパディングなし==== | ||
+ | パディングがない暗号のモードであるCFBを使うので、暗号文のままでもメッセージの正確な長さがわかる。 | ||
+ | |||
+ | また、[https://inaz2.hatenablog.com/entry/2015/12/23/000923 パディングオラクル攻撃]に対して脆弱。 | ||
+ | |||
+ | ===XMPP+OMEMOが電子メール+PGPに対して完全に上回る点=== | ||
+ | * 鍵サーバーがない。 | ||
+ | * 朽ちた暗号が使われない。[https://xmpp.org/extensions/xep-0384.html#protocol-key_exchange 鍵交換]は暗号Curve25519/Ed25519とハッシュSHA-256が使われ、[https://xmpp.org/extensions/xep-0384.html#protocol-message_encryption メッセージ暗号化]は暗号AES-256-CBCとハッシュHKDF-SHA-256、HMAC-SHA-256が使われる。ただし、PGPと同じく否認可能性はない。 | ||
+ | * 前方秘匿性(フォワードセキュリティ)があり、同じ鍵を短期間だけ使い、自動的に更新され、秘密にすべき鍵が漏洩しても、過去に送信したメッセージをほとんど解読できない。 | ||
+ | * [https://xmpp.org/extensions/xep-0384.html#protocol-double_ratchet メッセージパディングあり]。 | ||
+ | * 別人が同じ暗号文を再送する[https://ja.wikipedia.org/wiki/反射攻撃 反射攻撃]に[https://xmpp.org/extensions/xep-0384.html#reqs-threat-model 強い]。 | ||
+ | |||
+ | ===XMPP+OMEMOが電子メール+PGPに対して下回る点=== | ||
+ | * クライアントが少ない。 | ||
+ | * 普及してない。 | ||
+ | |||
+ | ==関連用語== | ||
+ | * [[OTR]] | ||
+ | |||
+ | ==外部リンク== | ||
* [https://xmpp.org/extensions/xep-0384.html XEP-0384: OMEMO Encryption] | * [https://xmpp.org/extensions/xep-0384.html XEP-0384: OMEMO Encryption] | ||
+ | * [https://conversations.im/omemo/ OMEMO Multi-End Message and Object Encryption] | ||
+ | * [https://omemo.top/ Are we OMEMO yet?] | ||
+ | |||
+ | ===Wiki=== | ||
+ | * [https://wiki.xmpp.org/web/XMPP_E2E_Security XMPP E2E Security] - XMPP Wiki | ||
+ | * [https://wiki.xmpp.org/web/Tech_pages/OMEMO Tech pages/OMEMO] - XMPP Wiki | ||
+ | * [https://en.wikipedia.org/wiki/OMEMO OMEMO] - Wikipedia英語 | ||
+ | * [https://ja.wikipedia.org/wiki/Double_Ratchetアルゴリズム Double Ratchetアルゴリズム] - Wikipedia日本語 | ||
+ | |||
+ | |||
+ | [[カテゴリ:エンドツーエンド暗号化]] |
2023年5月11日 (木) 09:45時点における版
概要
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を選ぶ理由がない。
電子メール+PGPとの比較
PGPは古く、仕様にたくさんの問題を抱えている。
PGPの問題点
Web of Trust
全員の連絡先が他の連絡先全員に漏れる。
鍵サーバー
署名スパム
公衆鍵サーバーは誰でもどの鍵にも署名可能で、大量の無駄な鍵で署名されて、鍵が長くなる。
鍵束
鍵サーバーに鍵を要求する度に、端末のIPアドレスと要求したすべての鍵がサーバーに知られる。これは、ランダムな間隔でTor経由で鍵を更新するParcimonieで防げるが、ソフトウェアは1年半以上も更新されていない。
朽ちた暗号
PGPは、バックドアがあるとされているNISTの楕円曲線をサポートしている。
OpenPGPは、下位互換性と標準への準拠という名目でセキュリティを犠牲にしている。SHA-1、3DES、CAST5、Blowfish などの朽ちているか、もしくは古いアルゴリズムをサポートしている。最新の暗号システムでは使用しないCFBモードとS2Kパスワード ハッシュを使用する。
鍵の有効期限
連絡先に定期的に鍵を更新するよう強要する。鍵を更新するため、#鍵サーバーを使用する人がいる。
指定がなければRSAを使用
より速く、より小さく、より安全なCurve25519を使用しない。
鍵IDと指紋
多数の利用者は、成りすまし可能なv3の危険な鍵IDのままにしている。しかし、現在のv4の鍵であっても、衝突済みのSHA1に依存している。
圧縮+暗号化
攻撃者が暗号化されたメッセージを解読するのに役立つ場合がある。
否認不可能
署名暗号技術の否認可能性がない。ただし、電子メールではサーバーはDKIMを使用し、メール内容にはメタデータとIPログに加えて、コンテキスト情報があり、に否認可能性がなくても変わらない。
前方秘匿性(フォワードセキュリティ)の欠如
暗号鍵の秘密鍵が漏洩した場合、他人がその鍵で過去に暗号化されたすべてのデータを解読可能になる。主要なメールプロバイダーは要求に応じて法執行機関にメール内容を提供し、NSAはXKeyscoreを利用して、送信されるメールのコピーを保持する。
メッセージパディングなし
パディングがない暗号のモードであるCFBを使うので、暗号文のままでもメッセージの正確な長さがわかる。
また、パディングオラクル攻撃に対して脆弱。
XMPP+OMEMOが電子メール+PGPに対して完全に上回る点
- 鍵サーバーがない。
- 朽ちた暗号が使われない。鍵交換は暗号Curve25519/Ed25519とハッシュSHA-256が使われ、メッセージ暗号化は暗号AES-256-CBCとハッシュHKDF-SHA-256、HMAC-SHA-256が使われる。ただし、PGPと同じく否認可能性はない。
- 前方秘匿性(フォワードセキュリティ)があり、同じ鍵を短期間だけ使い、自動的に更新され、秘密にすべき鍵が漏洩しても、過去に送信したメッセージをほとんど解読できない。
- メッセージパディングあり。
- 別人が同じ暗号文を再送する反射攻撃に強い。
XMPP+OMEMOが電子メール+PGPに対して下回る点
- クライアントが少ない。
- 普及してない。
関連用語
外部リンク
Wiki
- XMPP E2E Security - XMPP Wiki
- Tech pages/OMEMO - XMPP Wiki
- OMEMO - Wikipedia英語
- Double Ratchetアルゴリズム - Wikipedia日本語