Ricochet-匿名サーバーレスインスタントメッセージングプロトコル

オープンソースのRicochetプロジェクト( github )の紹介と技術説明の紹介の翻訳。



動作する匿名のサーバーレスインスタントメッセージングシステム



Ricochetは、だれも信頼しない、インスタントメッセージングの代替方法を使用した実験です。身元、連絡先リスト、通信を明らかにしません。



-あなたはあなたの身元やIPアドレスを明かすことなく通信できます。

-誰と通信しているか、いつ通信しているかを知ることはできません(メタデータなし)

-ハッキングされる可能性のあるサーバーや、ユーザーに関する情報の提供を余儀なくされる可能性のあるオペレーターはありません

-一般ユーザーでもクロスプラットフォームでシンプル



注:プロジェクトは最近、Torsionから名前が変更されました。



仕組み



Ricochetは、Torの隠されたサービスに基づくピアツーピアインスタントメッセージングシステムです。 あなたのログインはあなたの隠されたサービスのアドレスであり、あなたの連絡先はTorを通してあなたに接続します(仲介サーバーの参加なしで)。 対話システムは、住所に基づいて身元を確認することが非常に困難になるように設計されています。



Ricochetは、Tor Project開発者と提携したり、スポンサーをしたりしていません。



実験



プロジェクトは実験的です。 誰もコードの正式な監査を実施していません。 セキュリティと匿名性は複雑なトピックであり、ソフトウェアを使用する際に公開されるリスクを個別に評価する必要があります。 セキュリティのためにRicochetに依存することはお勧めしません。また、必要以上にRicochetを信頼しないでください。 私は、開発者として、私のプロジェクトが他の同様のプロジェクトよりもあなたに多くのプライバシーを与えると確信しています。



ダウンロードする



RicochetはWindows、OS X(10.7以降)で利用できます。また、汎用のLinuxバイナリパッケージもあります。 リリース情報とリリース履歴は、それぞれのページで入手できます。



これらは、プロジェクトのWebサイトでも入手できます。



バイナリはPGP 9032 CAE4 CBFA 933A 5A21 45D5 FF97 C53F 183C 045Dを介して署名されます。



著者アドレス:ricochet:rs7ce36jsj24ogfwまたはjohn.brooks@dereferenced.net。



Tor:隠しサービスプロトコルの仕組み



Torを使用すると、Web公開からインスタントメッセージングまで、さまざまな種類のサービスを提供しながら、ユーザーは自分の場所を隠すことができます。 Torミーティングポイント(「ランデブーポイント」)を使用すると、他のユーザーは非表示のサービスに参加できますが、他のユーザーは他のユーザーの身元を知ることができません。



隠されたサービスは、参加する前にTorネットワーク上でその存在を報告する必要があります。 このサービスは、リピーターをランダムに選択し、それらのチェーンを構築し、それらを「デート」ポイントにして、公開キーを提供します。 写真では、緑色の線はチェーンであり、直接的な接続ではありません。 本格的なTorチェーンを使用する場合、デートポイントを隠しサービスのIPアドレスにバインドすることは非常に困難です。 公開キーには多くの人がアクセスできますが、隠しサービスのIPアドレスは公開しないでください。



画像



ステップ2:隠されたサービスは、公開鍵と、知り合いの各ポイントに関する簡単な情報を含む記述子を収集し、秘密鍵で署名します。 分散ハッシュテーブルへのハンドルをアップロードします。 お客様は、XYZ.onionのハンドルを見つけます。XYZは、公開キーに基づく16文字の名前です。 その後、非表示のサービスが開始されます。



自動生成されたサービス名を使用することは実用的ではないように思えるかもしれませんが、重要な目的に役立ちます:知り合いのポイント、分散ハッシュテーブルのディレクトリ、そしてもちろん顧客を含む全員が、目的の隠されたサービスと通信していることを確認できます。 「分散され、安全で、人間にとって意味のある」3つのポイントのうち、通常は2つまでしか選択できないと考えられています。



画像



ステップ3:隠されたサービスに接続したいクライアントは、自分のタマネギのアドレスを見つけなければなりません。 その後、彼は分散ハッシュテーブルから記述子をダウンロードする必要があります。 XYZ.onionの記述子がある場合(およびサービスがオンラインである場合、サービスは放棄されず、名前にタイプミスはありません)、クライアントは一連のデートポイントと正しい公開キーを認識します。 このとき、クライアントはランダムに選択された別のリレーへのチェーンも作成し、それをミーティングポイントにして、ワンタイムシークレットキーを渡します。



画像



ステップ4:記述子が存在し、ミーティングポイントが準備されると、クライアントは、ミーティングポイントのアドレスとワンタイムシークレットキーを含む導入メッセージ(隠しサービスの公開キーで暗号化された)を収集します。 クライアントは、隠しサービスに転送する要求とともに、知り合いの1つに送信します。 繰り返しますが、通信はTorチェーンを介して行われ、紹介メッセージの送信をクライアントのIPアドレスに関連付けることはできず、クライアントは匿名のままです。



画像



ステップ5:隠しサービスは紹介メッセージを解読し、ミーティングポイントのアドレスと秘密鍵を見つけます。 彼は、ミーティングポイントへのチェーンを作成し、グリーティングメッセージでワンタイムシークレットキーを送信します。



画像



最後の手順で、ミーティングポイントはクライアントに接続が成功したことを通知します。 その後、クライアントと非表示のサービスは、ミーティングポイントまで構築されたチェーンを使用して相互に通信します。 ポイントは、単に暗号化されたメッセージを前後にブロードキャストするだけです。



一般に、クライアントと非表示サービス間の完全な接続は6つのリレーで構成されます。3つはクライアントによって選択され(そのうちの1つはミーティングポイントです)、他の3つは非表示サービスによって選択されます。



画像



Ricochet Designテクニカルノート



プロジェクトの目的


次のプロパティを使用してインスタントメッセージングシステムを作成します。



-ユーザーは連絡先または住所で識別されません

-通信は認証され、個人的に行われます

-連絡先リスト、メッセージ履歴、その他のメタデータに誰もアクセスできません

-ローカルネットワークレベルでの検閲と追跡に抵抗する

-ブラックリストまたはDOSの使用に抵抗する

-一般ユーザーにとってアクセス可能で理解しやすい

-従来のIMに匹敵する信頼性と双方向性



はじめに


各ユーザーのIDは、隠されたサービスとその連絡先によって表されます。 この情報は、通信のIDとしてricochetの形式で配布されます:qjj5g7bxwcvs3d7i。 この形式では、一意であり、サービスに接続するのに十分です。



オンライン中、ユーザーは隠しサービスに関する情報をオニオンアドレスを含むIDの形式で配布し、既知の連絡先として識別されるか、通信要求の受信に使用される双方向の匿名接続を受け入れます。



既知の連絡先は、確立された接続を介してメッセージを送信するために特別なプロトコルを使用します。



お問い合わせ


従来のインスタントメッセージングシステムと同様に、IDを使用して連絡先リストにユーザーを追加するリクエストを送信できます。 メッセージを送受信する前に、このリクエストを受け入れる必要があります。



リクエストはサービスに接続することで送信され、連絡先をリクエストするための接続が確立されたことが報告され、リクエストの送信者のIDを含むさまざまな情報が提供されます。 送信者は、オンライン中に定期的に接続を確立しようとします。



リクエストには次のものが含まれます。



-受信者の隠しサービスの名前

-受信者が接続の開始時に作成したランダムCookie

-受信者が接続を確認するために使用するランダムな秘密鍵

-非表示のサービスに関連付けられ、送信者の身元を確認する完全な公開鍵

-おそらくニックネームと短い歓迎メッセージ

-同じ公開鍵を使用してこのRSA情報に署名する



受信者は、公開鍵に基づいて送信者IDを計算し、要求の署名を確認することで確認します。 これにより、IDで表される隠しサービスを使用する送信者の権利が確認されます。



受信者はリクエストを承諾または拒否できます。 拒否された公開鍵はブラックリストに登録され、将来自動的に拒否される可能性があります



ピン間の接続


オンライン中、サービスは定期的に各連絡先との通信を試みます。 成功した場合、接続は開いたままになり、連絡先はオンラインであると見なされます。 2つの連絡先のどちらが開始者であるかに関係なく、連絡先ごとに1つの接続が必要です。



隠されたサービス層は、機密性、一時性、および確認を提供するという点で便利です。したがって、アプリケーションプロトコルは非常に単純です。 接続のクライアント部分は、連絡先リクエストの直後に作成された事前配布のランダムキーによって確認されます。



通信には、単純なバイナリコマンド応答プロトコルが使用されます。 彼は不安定な接続に信頼性を追加しようとしています。 プロセスの単純化と完全な制御のために、セキュリティおよび通信の匿名性に対する攻撃の可能性を排除するために、元のプロトコルが使用され、既製のオプション(XMPPなど)は使用されません。



このプロトコルには、将来の開発のためにバージョンを検証する機能が含まれています。



インターフェースと安定性


インターフェースは重要であり、多くの場合、セキュリティと匿名性の過小評価されている部分です。 技術に詳しくないユーザーは、プログラムの使用方法と、安全を保つために何をする必要があるかを簡単に理解する必要があります。



Ricochetインターフェースは、他のインスタントメッセージングマネージャーを使用したことがある人にとってはシンプルでわかりやすいものにしようとしています。 Torとネットワークの概念を理解する必要はありません。 正しい方法で使用することは簡単で、セキュリティルールに違反することは難しく、ITプロフェッショナルはプログラムの機能を拡張することができます。



今後の展開


ここで説明するプロトコルは、最も単純なオプションに近いものです。 より高度なプロトコルでは、ファイル転送またはストリーミングオーディオとビデオが許可される場合があります。 隠されたサービスをより高度に使用すると、パブリックアクセスでサービスを開くリスクを減らすことができます。 共有サービスまたはより複雑なサービスを使用して、攻撃を防ぐこともできます。 当然、プロジェクトの開発におけるアイデアと支援は歓迎されます。



All Articles