「OMEMO」の版間の差分

提供:XMPP用語集
ナビゲーションに移動 検索に移動
(カテゴリ)
 
(同じ利用者による、間の5版が非表示)
4行目: 4行目:
 
<!-- 参考:http://jezf25zgvxlsvuzdzm6fg2hoetmruhy4uxnolyw46tuh4jugcwc7byqd.onion/OMEMO -->
 
<!-- 参考: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で仕様にした]ものである。
+
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の他エンドツーエンド暗号化方式と比較した総覧==
 
==XMPPの他エンドツーエンド暗号化方式と比較した総覧==
88行目: 88行目:
 
=====電話番号=====
 
=====電話番号=====
 
[https://support.signal.org/hc/ja/articles/360007318691-電話番号を登録する 電話番号が必要]。
 
[https://support.signal.org/hc/ja/articles/360007318691-電話番号を登録する 電話番号が必要]。
 
[https://support.signal.org/hc/ja/articles/360007061452-Signal-は私が連絡先に登録している人たちに私の電話番号を送信しているのですか? 電話番号が相手に伝わる]。
 
  
 
====Android版の問題====
 
====Android版の問題====
124行目: 122行目:
 
このように、エドワード・スノーデンがエンドツーエンド暗号化を理由にSignalを薦めていても、OMEMOではなく、わざわざSignalを選ぶ理由がない。
 
このように、エドワード・スノーデンがエンドツーエンド暗号化を理由にSignalを薦めていても、OMEMOではなく、わざわざSignalを選ぶ理由がない。
  
==電子メール+PGPとの比較==
+
==電子メール+OpenPGPとの比較==
PGPは古く、仕様にたくさんの問題を抱えている。
+
OpenPGPは古く、仕様にたくさんの問題を抱えている。
  
===PGPの問題点===
+
===OpenPGPの問題点===
 
<!-- 参考:https://nicholasjohnson.ch/2022/01/03/goodbye-pgp/ -->
 
<!-- 参考:https://nicholasjohnson.ch/2022/01/03/goodbye-pgp/ -->
 
====Web of Trust====
 
====Web of Trust====
140行目: 138行目:
  
 
====朽ちた暗号====
 
====朽ちた暗号====
[https://safecurves.cr.yp.to/rigid.html PGPは、バックドアがあるとされているNISTの楕円曲線をサポートしている。]
+
[https://safecurves.cr.yp.to/rigid.html OpenPGPは、バックドアがあるとされているNISTの楕円曲線をサポートしている。]
  
 
OpenPGPは、下位互換性と標準への準拠という名目でセキュリティを犠牲にしている。SHA-1、3DES、CAST5、Blowfish などの朽ちているか、もしくは古いアルゴリズムをサポートしている。最新の暗号システムでは使用しないCFBモードとS2Kパスワード ハッシュを使用する。
 
OpenPGPは、下位互換性と標準への準拠という名目でセキュリティを犠牲にしている。SHA-1、3DES、CAST5、Blowfish などの朽ちているか、もしくは古いアルゴリズムをサポートしている。最新の暗号システムでは使用しないCFBモードとS2Kパスワード ハッシュを使用する。
158行目: 156行目:
  
 
====否認不可能====
 
====否認不可能====
署名暗号技術の[https://ja.wikipedia.org/wiki/否認不可 否認可能性]がない。ただし、電子メールではサーバーはDKIMを使用し、メール内容にはメタデータとIPログに加えて、コンテキスト情報があり、に否認可能性がなくても変わらない。
+
署名暗号技術の[https://ja.wikipedia.org/wiki/否認不可 否認可能性]がない。ただし、電子メールではサーバーは[https://ja.wikipedia.org/wiki/DKIM DKIM]を使用し、メール内容にはメタデータとIPログに加えてコンテキスト情報があり、OpenPGPに否認可能性がなくても変わらない。
  
 
====前方秘匿性(フォワードセキュリティ)の欠如====
 
====前方秘匿性(フォワードセキュリティ)の欠如====
暗号鍵の秘密鍵が漏洩した場合、他人がその鍵で過去に暗号化されたすべてのデータを解読可能になる。主要なメールプロバイダーは要求に応じて法執行機関にメール内容を提供し、NSAは[https://ja.wikipedia.org/wiki/XKeyscore XKeyscore]を利用して、送信されるメールのコピーを保持する。
+
暗号鍵の秘密鍵が漏洩した場合、その鍵で過去に暗号化されたすべてのデータを他者が解読可能になる。主要なメールプロバイダーは要求に応じて法執行機関にメール内容を提供し、NSAは[https://ja.wikipedia.org/wiki/XKeyscore XKeyscore]を利用して、送信されるメールのコピーを保持する。
  
 
====メッセージパディングなし====
 
====メッセージパディングなし====
168行目: 166行目:
 
また、[https://inaz2.hatenablog.com/entry/2015/12/23/000923 パディングオラクル攻撃]に対して脆弱。
 
また、[https://inaz2.hatenablog.com/entry/2015/12/23/000923 パディングオラクル攻撃]に対して脆弱。
  
===XMPP+OMEMOが電子メール+PGPに対して完全に上回る点===
+
===XMPP+OMEMOが電子メール+OpenPGPに対して完全に上回る点===
 
* 鍵サーバーがない。
 
* 鍵サーバーがない。
* 朽ちた暗号が使われない。[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-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が使われる。ただし、OpenPGPと同じく否認可能性はない。
* 前方秘匿性(フォワードセキュリティ)があり、同じ鍵を短期間だけ使い、自動的に更新され、秘密にすべき鍵が漏洩しても、過去に送信したメッセージをほとんど解読できない。
+
* 前方秘匿性(フォワードセキュリティ)があり、すなわち同じ鍵を短期間だけ使い、自動的に更新されるため、秘密にすべき鍵が漏洩しても、過去に送信したメッセージをほとんど解読できない。
 
* [https://xmpp.org/extensions/xep-0384.html#protocol-double_ratchet メッセージパディングあり]。
 
* [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 強い]。
 
* 別人が同じ暗号文を再送する[https://ja.wikipedia.org/wiki/反射攻撃 反射攻撃]に[https://xmpp.org/extensions/xep-0384.html#reqs-threat-model 強い]。
  
===XMPP+OMEMOが電子メール+PGPに対して下回る点===
+
===XMPP+OMEMOが電子メール+OpenPGPに対して下回る点===
 
* クライアントが少ない。
 
* クライアントが少ない。
 
* 普及してない。
 
* 普及してない。

2024年3月20日 (水) 08:07時点における最新版


概要[編集]

OMEMOは2015年に最初の版が作成されたXMPPのエンドツーエンド暗号化をする現代的な仕様で、過去の暗号化仕様の問題を解決する。インスタントメッセンジャーSignalの暗号化を行うアルゴリズムであるDouble Ratchet(SignalWikipedia日本語)を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[編集]