「OMEMO」の版間の差分

提供:XMPP用語集
ナビゲーションに移動 検索に移動
 
(同じ利用者による、間の7版が非表示)
1行目: 1行目:
 
[[Category:基本用語]]
 
[[Category:基本用語]]
 +
[[Category:エンドツーエンド暗号化]]
  
== 日本語訳 ==
+
<!-- 参考: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" |無
 +
|}
  
[[OTR]]と比べると、複数の暗号化チャット、オフラインの場合でもメッセージの安全な同期、などの特徴がある。
+
==Signalとの比較==
その為、[[OTR]]には対応せずOMEMOのみ対応しているクライアントも存在している。
+
以下に挙げられているSignalの問題がXMPPにはなく、Signalの最大の特長である優れた暗号化の実装がOMEMOにある。
  
普通に使う分には、安全な会話をする為の機能の一つと思えばいい。OTRとは別の機能。
+
===Signalの問題点===
 +
====全OSに共通の問題====
 +
=====中央集権=====
 +
サーバーを選べない。[https://signal.org/blog/the-ecosystem-is-moving/ Signal側はこれが問題にされていると認識しているが、脱中央集権化すると、変更を加えることが難しくなると主張している]。
  
=== 関連用語 ===
+
=====Google reCAPTCHA=====
[[OTR]]
+
プライバシーに悪いGoogle reCAPTCHAが使われ、[https://github.com/signalapp/Signal-Android/issues/10999 Githubのissueで取り上げらた]
__NOTOC__
 
  
== リンク ==
+
=====電話番号=====
* [https://en.wikipedia.org/wiki/OMEMO OMEMO - Wikipedia]
+
[https://support.signal.org/hc/ja/articles/360007318691-電話番号を登録する 電話番号が必要]。
 +
 
 +
====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を選ぶ理由がない。
 +
 
 +
==電子メール+OpenPGPとの比較==
 +
OpenPGPは古く、仕様にたくさんの問題を抱えている。
 +
 
 +
===OpenPGPの問題点===
 +
<!-- 参考: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 OpenPGPは、バックドアがあるとされている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/否認不可 否認可能性]がない。ただし、電子メールではサーバーは[https://ja.wikipedia.org/wiki/DKIM DKIM]を使用し、メール内容にはメタデータとIPログに加えてコンテキスト情報があり、OpenPGPに否認可能性がなくても変わらない。
 +
 
 +
====前方秘匿性(フォワードセキュリティ)の欠如====
 +
暗号鍵の秘密鍵が漏洩した場合、その鍵で過去に暗号化されたすべてのデータを他者が解読可能になる。主要なメールプロバイダーは要求に応じて法執行機関にメール内容を提供し、NSAは[https://ja.wikipedia.org/wiki/XKeyscore XKeyscore]を利用して、送信されるメールのコピーを保持する。
 +
 
 +
====メッセージパディングなし====
 +
パディングがない暗号のモードであるCFBを使うので、暗号文のままでもメッセージの正確な長さがわかる。
 +
 
 +
また、[https://inaz2.hatenablog.com/entry/2015/12/23/000923 パディングオラクル攻撃]に対して脆弱。
 +
 
 +
===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が使われる。ただし、OpenPGPと同じく否認可能性はない。
 +
* 前方秘匿性(フォワードセキュリティ)があり、すなわち同じ鍵を短期間だけ使い、自動的に更新されるため、秘密にすべき鍵が漏洩しても、過去に送信したメッセージをほとんど解読できない。
 +
* [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が電子メール+OpenPGPに対して下回る点===
 +
* クライアントが少ない。
 +
* 普及してない。
 +
 
 +
==関連用語==
 +
* [[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日本語

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[編集]