OMEMO エンド・ツー・エンド暗号化とは?XMPPによるプライベートチャット

XMPPは、おそらく固定されたチャットプラットフォームから遠く離れたところにあるものです。これは、電子メールに似たインスタントメッセージング標準です。あるサーバーでXMPPのアカウントを登録した人は、別のサーバーにいる他の人と通信することができます。

デフォルトでは、これらのXMPPチャットは暗号化されていません。そこで、OMEMOの出番です。OMEMOのエンド・トゥ・エンドの暗号化により、XMPPはSignal、Session、その他のプライベート・チャット・アプリケーションと同等のセキュリティを提供しますが、一元化されたプラットフォームに依存するリスクはありません。

XMPPとは何ですか?

XMPPは、1999年から存在するインスタントメッセージングプロトコルで、元々はJabberとして知られていました。頭文字をとって、Extensible Messaging and Presence Protocol(拡張メッセージング・プレゼンスプロトコル)と呼ばれています。XMPPは、インターネット上でメッセージを送信するためのオープンスタンダードで、誰もが同じサーバーにアカウントを登録する必要がありません。ある人があるプロバイダーにアカウントを登録し、別の場所に登録した人にメッセージを送ることができる。

このため、XMPPのユーザー名は電子メールアドレスに似ています。たとえば、conversions.imでアカウントを作成した場合、名前は"username@conversations.im"と表示されます。

注:Conversations.imは、Android用の最も人気のあるXMPPアプリを提供しています。iPhoneをお使いの場合は、ChatSecureをご利用ください。

皆さんは、知らず知らずのうちにXMPPを利用しているかもしれません。Google TalkやFacebook Messengerなど、人気のあるチャットプラットフォームはXMPPクライアントとして始まりました。WhatsAppは、XMPPをカスタマイズしたバージョンを使って動作しています。フリーでオープンソースのビデオ会議ツールJitsiなど、いくつかのプロジェクトもバックエンドにXMPPを使用しています。

OMEMOとは?

XMPPはデフォルトでは、特にプライベートな通信手段ではありません。サーバーとの通信は暗号化されていますが、サーバーを運営している人は誰でもメッセージを読むことができます。

幸いなことに、XMPPは拡張可能です(結局のところ、それは名前にあります)。OMEMOは、XMPPにエンドツーエンドの暗号化を追加する拡張機能です。これは最初のものではありません。OpenPGPやOTR(Off-the-Record Communication)など、他の方式が先行しています。OMEMOが提供するのは、単なるエンドツーエンドの暗号化ではなく、マルチエンドからマルチエンドへの暗号化なのです。そのため、OMEMO Multi-End Message and Object Encryption(そう、再帰的頭字語)という名前が付けられたのです。

マルチエンド-マルチエンド暗号化とはどういう意味ですか?簡単に言うと、ノートパソコンからメッセージを送信しても、携帯電話やアカウントにサインインしている他のデバイスからそのメッセージを見ることができる、ということです。また、受信者も、自分のデバイスでそのメッセージを見ることができます。しかし、OMEMOはメッセージを様々なサーバで暗号化して保持するため、あなたと受信者だけがメッセージを読むことができます。

OMEMOはもともと、Open Whisper SystemsがSignalアプリのために作った「Signal Protocol」がベースになっています。一元化されたSignal Protocolとは異なり、OMEMOは複数のサーバーにまたがる暗号化を扱う必要がある。OMEMOは、2015年のGoogle Summer of Codeのプロジェクトとして始まり、Conversations Androidアプリにマルチエンド間暗号を実装した。

OMEMOはプライベートなメッセージだけではありません。プライベートでファイルを転送することも可能です。

OMEMOを有効にする方法

プロバイダーが対応していれば、OMEMOをオンにするのは簡単です。誰かとチャットを始めるとき、鍵のアイコンを探してください。メッセージが暗号化されていない場合はロックされていない、暗号化されている場合はロックされていると表示されます。このロックをクリックすると、利用可能な暗号化オプションが選択できます。

暗号化をサポートしているプロバイダーのアカウントを持っている人には、暗号化されたメッセージを送信することができますが、そのプロバイダーのクライアントも同様に暗号化をサポートしている必要があります。そうでない場合、クライアントは暗号化がオプションとして利用できないことを知らせるエラーメッセージを表示することがあります。とはいえ、XMPPは何年も前から暗号化をサポートしており、ほとんどのプロバイダーも同じです。XMPPクライアント内のOMEMOサポートを追跡するWebサイトがあります。

OMEMO暗号化の長所と短所

エンドツーエンドのOMEMO暗号を使用したXMPPは、プライベートな通信方法ですが、他の方法と同様に長所と短所があります。

OMEMO暗号を使用したXMPPの長所

  • XMPPは非中央集権的です。SignalやWhatsAppのような代替オプションとは異なり、1つのプロバイダーの稼働に依存することはありません。XMPPがダウンするようなことはありません。あるプロバイダーのサーバーがダウンしても、他のプロバイダーはメッセージの送受信を継続します。
  • XMPPとOMEMOはオープンスタンダードです。誰でもコードを読んで、それらがどのように動作するかを理解することができます。このため、他の人がコードを監査し、メッセージが実際に非公開であることを確認することができます。
  • Forward Secrecy(前方秘匿)。これは、暗号化キーがデバイスに保存され、送信時にメッセージにアクセスできないデバイスは、メッセージを見ることができないことを意味します。
  • OMEMOをサポートするXMPPクライアントであれば、どれでも使用することができます。ひとつのアプリに依存することはありません。そして、あなたに最適なインターフェイスを見つける自由があります。
  • タイムテスト済み。XMPPは長い歴史があります。OMEMOの方が歴史は浅いですが、すぐになくなることはないでしょう。結局のところ、古い暗号化方式が残っているのです。しかし、新しい暗号化方式に切り替える時期が来たとしても、既存のXMPPアカウントを捨てることなく、切り替えることができます。

OMEMO暗号化機能付きXMPPの弱点

  • メッセージはデフォルトでは暗号化されていません。アカウントでOMEMOを有効にする必要があります。その後、チャットごとにメッセージを暗号化するか、すべてのメッセージを暗号化するかを選択することができます。後者の場合は、OMEMOをサポートしているXMPPアカウントを持っている人だけに通信が制限されます。
  • 前方秘匿。携帯電話にサインインする前にラップトップからメッセージを送信すると、携帯電話ではそのメッセージを見ることができません。これは、私たちの多くが期待してきたこととは異なります。
  • 旧来のテクノロジーでは、コミュニケーションが制限されます。XMPP with OMEMOは、必要な機能のほとんどを提供しますが、その体験は少し古臭く感じるかもしれません。メッセージに"いいね"をしたり、個々のメッセージに絵文字で反応したり、チャット内でスレッドを立ち上げたりする機能はないのです。
  • 比較的知られていない。XMPPもOMEMOも、ほとんどの人は聞いたことがないでしょう。友人や家族とチャットをしたい場合、一人一人、この技術を紹介し、納得してもらう必要があります。QuicksyやConversations for Androidのように、このプロセスを非常に簡単にするアプリもありますが、Signalのように徐々に知名度が上がっているアプリを紹介する方が簡単かもしれません。

OMEMO暗号化でXMPPを使用すべきか?

XMPPもOMEMOも、技術的な響きが強すぎるシンプルな名前のツールです。電子メールアカウントを作成し、電子メールクライアントを使用できる程度の技術力があれば、XMPPを使用してプライベートメッセージを送信するために必要なスキルを身につけることができます。

重要なのは、いつものように、誰と話したいのか、そして、その人たちはあなたと一緒に切り替えてくれるのか、ということです。もしそうでなければ、必ずしもメインストリームのプラットフォームに戻る必要はありませんし、Signalに固執することもありません。Matrixは同様のセキュリティと分散化を提供しますが、より現代的な贅沢さを備えています。

Scroll to Top