web-dev-qa-db-ja.com

エンドツーエンドの暗号化グループチャットにはどのプロトコルが存在しますか?

私は2つのこととのグループチャットのための既存のプロトコルを探しています。

  1. エンドツーエンドで暗号化されます。期待どおりです。メッセージはチャットメンバーだけが解読でき、メッセージの改ざんが検出されます。

  2. 各メンバーの各メッセージを個別に暗号化することはできません。Signal Protocolはこれを行い、グループチャットを多数の1対1のチャットに変換します。問題に対する適切でスケーラブルなソリューション。グループには数百のメンバーが含まれる可能性があるため、各メンバーの暗号化キーを暗号化することもかなりのマイナス面です。

新しいメンバーはすべて、参加時に全員の公開鍵を受け取る可能性があり、メンバーが退会するときにグループキーをローテーションする必要があります。これは十分にスケーリングでき、セキュリティを損なうことなく回避策がない可能性があるため、これは許可されており、「すべての人のすべてのメッセージを暗号化する」とは見なされません。


私は既存のプロトコルを探しましたが、これらの要件を満たす結果はゼロでした。数年前、グループが共通のキーを導出してそれを使用したことについて読んだと思いましたが、そのようなものは見つかりませんでした。

  • Signal、WhatsApp、Alloは Signal Protocol which 違反#2 を使用します。

  • Toxには いくつかの広範なドキュメント がありますが、グループチャットで暗号化がどのように行われるのか、どういうわけかわかりません。

  • 別の出典 は、「エンドツーエンドでグループを作成することはできない」とさえ主張しています(ただし、私は彼/彼女が間違っているとかなり確信しています)。

  • そして最後に、 Mumble[〜#〜] xmpp [〜#〜] などの他の一般的なアプリケーションの束は、最初から最後まで、または単に TelegramRicochet および [〜#〜] zrtp [〜#〜] などのグループチャットはサポートしていません。

31
Luc

グループチャット用のエンドツーエンドの暗号化メッセージングプロトコルの全体像をまとめてみましょう。

  • [〜#〜] pgp [〜#〜]のようなプロトコルはしばらく前から存在しており、単にコンテンツを暗号化することで「グループメッセージング」を提供します。ランダムに生成された対称キーを生成し、そのキーを各受信者の公開キーで非対称に暗号化します。これらのプロトコルは、暗号化されたコンテンツを1回だけ送信しますが、グループの各メンバーに暗号化キーを暗号化します。 PGPと同様に、このアプローチは完全な転送の秘密性、拒否性、または会話の整合性を提供しないことに注意してください(したがって、トランスクリプトの整合性はありません)。

  • OGPは、PGPのいくつかの欠点に対処するために導入され、完全転送秘密、会話の整合性、および拒否可能性を改善しました。 OTRの作者であるIan Goldbergも、プロトコルのマルチパーティバリアントについて、 mpOTR という名前の論文を書きました。 mpOTRは、XMPPトランスポートを念頭に設計されており、本質的に同期して設計されています。つまり、各グループメンバーは、いつでもオンラインで新しい交渉を行うことが期待されます。キーイング素材。説明されているプロトコルは、セッション内の完全転送秘密を提供せず、主に展開されていません。 N + 1Sec は同様のプロトコルで、いくつかの改善点があります。これらのプロトコルはアルゴリズムが非常に複雑であり、特にレイテンシをミックスに追加すると、スケーリングが悪くなることに注意してください。

  • それからあなたはプロトコルのクラス全体を持っています、それらは単に各メッセージを送信しているだけなので、単にN回プロトコルを呼び出します。これらのプロトコルには、既存の1対1プロトコルを再利用できるという利点があります。これは、非同期の完全転送秘密などの素晴らしい機能を提供するチャネルがすでにある場合に非常に便利です。この場合、グループ構造は暗号化の概念ではありません。暗号化の保証はありませんが、アルゴリズムの複雑さは低くなります。 Open Whisper Systemsブログには、mpOTRスタイルのメッセージングではなく、Signalがなぜこれを行うのかについて 素晴らしい投稿 があります。このクラスのプロトコルは、クライアントがさまざまなメッセージをすべて暗号化して送信する「クライアント側ファンアウト」と呼ばれるものであるため、2番目の要件に違反します。

  • WhatsAppで採用されたSignalの最適化が存在し、それらは whitepaper と呼ばれるSender Keysにあり、「サーバー側のファンアウト」があります。 」。セットアップ時にN回を使用しますが、最初のメッセージの後で、グループの各メンバーはグループに単一のメッセージを送信できます。このプロトコルは、ハッシュラチェットを使用することにより、完全な転送秘密を保持します(ただし、将来の完全な秘密は提供しません)。トランスクリプトの整合性はサーバー側で(サーバー側のファンアウトのため)実施されますが、暗号化の観点からは実施されません。

これらは、実装されているプロトコルのタイプです。グループ設定で非同期性と将来の完全な秘密性および筆記録の一貫性を組み合わせる方法について、ユーザビリティと暗号研究の両方で課題があります。

両方の要件に対応するプロトコルが必要な場合は、SignalプロトコルのSender Keysバリアントのようなものがあなたが探しているものだと思います。

37
FredericJacobs

たぶん 非同期ラチェットツリー はあなたが求めているものです。

Messaging Layer Security もご覧ください。

メッセージングレイヤーセキュリティ(MLS)は、最新の効率的で安全なグループメッセージングプロトコルを構築するIETFワーキンググループです。

2
cbwang