web-dev-qa-db-ja.com

WhatsAppの新しいグループチャットプロトコルはどのように機能し、どのようなセキュリティプロパティを備えていますか?

今では誰もが WhatsAppが最近完全なエンドツーエンドの暗号化を展開しました 、直接通信、メディア添付ファイル、グループチャット

私は彼らの ホワイトペーパー(PDF) を読み、 Signalのグループチャット との違いに気づきました。暗号化されたヘッダー)およびWhatsAppは、メッセージを配信するサーバーにメッセージを送信します。

WhatsAppのグループチャットプロトコルが機能する方法が混乱しています。これは、単純な個人対個人のプロトコル(Signalのように)を使用できず、やや複雑な「ラチェット」ベースのキー導出(私が思う)を使用するためです。セキュリティプロパティはWhatsAppによって犠牲になります。

では、グループチャットプロトコル機能にはどのようなセキュリティプロパティがあり、どのように機能しますか(高レベル)?


「セキュリティプロパティ」は少し一般的であるため、ここに私が求めているセキュリティプロパティのリストを示します。

  • パッシブセキュリティ(盗聴者は暗号化を破ることはできません)
  • アクティブなセキュリティ(中間者は、最初のセットアップ後に気付かれずに暗号化を破ることはできません)
  • Forward secrecy (今日の秘密の暗号化キーの妥協は、過去の攻撃者が記録したメッセージのセキュリティを壊しません)
  • もっともらしい否認可能性(特定のメッセージがmeによってXが経過した直後に送信されたことの確証はありません)
  • 文字起こしの一貫性(グループの全員が同じメッセージを見た/見たことの「ハード」な証拠があります)
18
SEJPM

まず、彼らの paper から

WhatsAppグループへのメッセージは、上記のペアで暗号化されたセッションに基づいて構築され、グループに送信されるほとんどのメッセージに対して効率的なサーバー側ファンアウトを実現します。これは、Signal Messaging Protocolの「Sender Keys」コンポーネントを使用して実現されます。

WhatsAppグループメンバーが初めてメッセージをグループに送信するとき:

  1. 送信者は、ランダムな32バイトのチェーンキーを生成します。
  2. 送信者はランダムなCurve25519署名鍵の鍵ペアを生成します。
  3. 送信者は、32バイトのチェーンキーと署名キーの公開キーを送信者キーメッセージに結合します。
  4. 送信者は、前述のペアワイズメッセージングプロトコルを使用して、グループの各メンバーへの送信者キーを個別に暗号化します。グループへの後続のすべてのメッセージ:
  5. 送信者は、チェーンキーからメッセージキーを導出し、チェーンキーを更新します。
  6. 送信者は、CESモードでAES256を使用してメッセージを暗号化します。
  7. 送信者は、署名鍵を使用して暗号文に署名します。
  8. 送信者は単一の暗号文メッセージをサーバーに送信し、サーバーはサーバー側のファンアウトをすべてのグループ参加者に行います。メッセージ送信者のチェーンキーの「ハッシュラチェット」は、転送の秘密性を提供します。グループメンバーが退出するたびに、すべてのグループ参加者は送信者キーを消去してやり直します。

ここで重要なポイントは4です。送信者は個別に送信者キーをグループの各メンバーに暗号化します説明されているペアワイズメッセージングプロトコルを使用します以前

これは、1対1のプロトコルの上に構築された賢い改作です。これを使用して、グループの個々のメンバーに共有キーを配布し、グループがサーバーを使用して効率的な「ファンアウト」を提供できるようにします。 (ブロブストレージと同様に)サーバーが必要な秘密キーを知られていない場合。

「グループチャットプロトコル機能にはどのようなセキュリティプロパティがあり、どのように機能しますか(高レベル)?」

それがどのように機能するかについては、誰かが完全な(適用された)分析を行うまで、紙はあなたが今のところ利用できるであろうと同じくらい詳細だと思います。

それが提供する機能について...

  • 前方秘密:説明されたラチェットメカニズムがこれを提供します(またはそう主張します)

  • パッシブ:ポイント4の「送信者キー」配布方法では、パッシブ攻撃を近づけることが不可能になります。パッシブパーティは、(WhatsAppサーバーへの)ノイズパイプ暗号化レイヤーを通過しなければならないことに注意してください。グループであり、おそらく、グループ内の各当事者のトラフィックへのアクセスを容易にする複数のプレゼンスポイントが必要になります。したがって、主要なバックボーンプロバイダーまたはNSAでない限り、そこにいる人はほとんど除外できます。

  • アクティブな攻撃:グループ内のデバイスの1つに サイドチャネル攻撃 を実行することは可能ですが、そのレベルのデバイスへの侵略的なアクセス権がある場合(したがって、その所有者である可能性が高いです!) )、ペンチのペアとデバイスの所有者との5分は、はるかに実りが多いと思われます。

  • 文字起こしの一貫性:すべてのメッセージはHMACを使用して整合性を保証します(ステップ7)

  • もっともらしい否認可能性:どちらかと言えば、新しい実装によって提供されるすべての追加のセキュリティにより、特定のユーザーがメッセージを送信したことを否定することは非常に困難になります。

9
Nathan

ホワイトペーパーで収集できるものから、グループメッセージはグループ内で暗号化されます。同じ Sender Keyは各参加者によって配布および使用されるため、メッセージは作成時に認証されません。

ラチェットは送信者間でどのように同期しますか、手掛かりはありません。

プロパティ:

  • パッシブセキュリティ:はい(盗聴者は暗号化を破ることはできません)
  • アクティブセキュリティ(最初のセットアップ後、中間者が気付かないうちに暗号化を解読することはできません):サーバーがキーを取得することがないため、サーバーになりすまそうとしてもはい。
  • 前方秘密性:はい、ラチェット関数の平均によって。
  • もっともらしい否認性:はい、誰もが(私の知る限り)同じ対称鍵で署名および暗号化します。
  • 文字起こしの一貫性:はい、Chain Key変更。

ホワイトペーパーは、プロトコルの技術的な説明とはかけ離れています。だから私はこれを非常に注意して取ります。

1
M'vy