今では誰もが WhatsAppが最近完全なエンドツーエンドの暗号化を展開しました 、直接通信、メディア添付ファイル、グループチャット。
私は彼らの ホワイトペーパー(PDF) を読み、 Signalのグループチャット との違いに気づきました。暗号化されたヘッダー)およびWhatsAppは、メッセージを配信するサーバーにメッセージを送信します。
WhatsAppのグループチャットプロトコルが機能する方法が混乱しています。これは、単純な個人対個人のプロトコル(Signalのように)を使用できず、やや複雑な「ラチェット」ベースのキー導出(私が思う)を使用するためです。セキュリティプロパティはWhatsAppによって犠牲になります。
では、グループチャットプロトコル機能にはどのようなセキュリティプロパティがあり、どのように機能しますか(高レベル)?
「セキュリティプロパティ」は少し一般的であるため、ここに私が求めているセキュリティプロパティのリストを示します。
まず、彼らの paper から
WhatsAppグループへのメッセージは、上記のペアで暗号化されたセッションに基づいて構築され、グループに送信されるほとんどのメッセージに対して効率的なサーバー側ファンアウトを実現します。これは、Signal Messaging Protocolの「Sender Keys」コンポーネントを使用して実現されます。
WhatsAppグループメンバーが初めてメッセージをグループに送信するとき:
- 送信者は、ランダムな32バイトのチェーンキーを生成します。
- 送信者はランダムなCurve25519署名鍵の鍵ペアを生成します。
- 送信者は、32バイトのチェーンキーと署名キーの公開キーを送信者キーメッセージに結合します。
- 送信者は、前述のペアワイズメッセージングプロトコルを使用して、グループの各メンバーへの送信者キーを個別に暗号化します。グループへの後続のすべてのメッセージ:
- 送信者は、チェーンキーからメッセージキーを導出し、チェーンキーを更新します。
- 送信者は、CESモードでAES256を使用してメッセージを暗号化します。
- 送信者は、署名鍵を使用して暗号文に署名します。
- 送信者は単一の暗号文メッセージをサーバーに送信し、サーバーはサーバー側のファンアウトをすべてのグループ参加者に行います。メッセージ送信者のチェーンキーの「ハッシュラチェット」は、転送の秘密性を提供します。グループメンバーが退出するたびに、すべてのグループ参加者は送信者キーを消去してやり直します。
ここで重要なポイントは4です。送信者は個別に送信者キーをグループの各メンバーに暗号化します説明されているペアワイズメッセージングプロトコルを使用します以前
これは、1対1のプロトコルの上に構築された賢い改作です。これを使用して、グループの個々のメンバーに共有キーを配布し、グループがサーバーを使用して効率的な「ファンアウト」を提供できるようにします。 (ブロブストレージと同様に)サーバーが必要な秘密キーを知られていない場合。
「グループチャットプロトコル機能にはどのようなセキュリティプロパティがあり、どのように機能しますか(高レベル)?」
それがどのように機能するかについては、誰かが完全な(適用された)分析を行うまで、紙はあなたが今のところ利用できるであろうと同じくらい詳細だと思います。
それが提供する機能について...
前方秘密:説明されたラチェットメカニズムがこれを提供します(またはそう主張します)
パッシブ:ポイント4の「送信者キー」配布方法では、パッシブ攻撃を近づけることが不可能になります。パッシブパーティは、(WhatsAppサーバーへの)ノイズパイプ暗号化レイヤーを通過しなければならないことに注意してください。グループであり、おそらく、グループ内の各当事者のトラフィックへのアクセスを容易にする複数のプレゼンスポイントが必要になります。したがって、主要なバックボーンプロバイダーまたはNSAでない限り、そこにいる人はほとんど除外できます。
アクティブな攻撃:グループ内のデバイスの1つに サイドチャネル攻撃 を実行することは可能ですが、そのレベルのデバイスへの侵略的なアクセス権がある場合(したがって、その所有者である可能性が高いです!) )、ペンチのペアとデバイスの所有者との5分は、はるかに実りが多いと思われます。
文字起こしの一貫性:すべてのメッセージはHMACを使用して整合性を保証します(ステップ7)
もっともらしい否認可能性:どちらかと言えば、新しい実装によって提供されるすべての追加のセキュリティにより、特定のユーザーがメッセージを送信したことを否定することは非常に困難になります。
ホワイトペーパーで収集できるものから、グループメッセージはグループ内で暗号化されます。同じ Sender Key
は各参加者によって配布および使用されるため、メッセージは作成時に認証されません。
ラチェットは送信者間でどのように同期しますか、手掛かりはありません。
プロパティ:
Chain Key
変更。ホワイトペーパーは、プロトコルの技術的な説明とはかけ離れています。だから私はこれを非常に注意して取ります。