web-dev-qa-db-ja.com

複数のデバイスを使用するインスタントメッセージングの完全転送秘密

PFSとDHについて複数のサイトをオンラインで読みましたが、まだいくつか質問があります。

PFSを使用するには、さまざまなキーを使用してメッセージを暗号化する必要があることを理解しています。そのため、IMクライアントは、書き込むすべてのメッセージ(またはいくつかのメッセージごと)に対して新しいキーを生成している可能性があります。

これは、DH交換が偶然に新しいキーを生成し、両方のIMクライアントがそのキーを持つ必要があることを意味します。これにより、送信者はメッセージを暗号化し、受信者はメッセージを復号化できます。

ここまでは理解できましたか?

したがって、その場合、私が正しければ、秘密鍵だけでなく、すべてのメッセージの暗号化/復号化に使用される各鍵も非常に重要です。

これらのいずれかが漏洩すると、セキュリティが侵害されます。したがって、秘密鍵と暗号化鍵の両方が常に保護され、エンドユーザーのデバイスにのみ保存されることが非常に重要だと思います。

しかし、一部のIMクライアントでは、複数のデバイスを使用して暗号化されたメッセージにアクセスできることがわかります。

これは、秘密キーと暗号化キーをすべてのデバイスにコピーする必要があることを意味しますか?これはセキュリティリスクではありませんか?

この秘密鍵と暗号化鍵を他のデバイスに安全にコピーするプロトコルまたは暗号化方法はありますか?

ありがとう。

2
William

PFSを使用するには、さまざまなキーを使用してメッセージを暗号化する必要があることを理解しています。そのため、IMクライアントは、書き込むすべてのメッセージ(またはいくつかのメッセージごと)に対して新しいキーを生成している可能性があります。

これは、DH交換が偶然に新しいキーを生成し、両方のIMクライアントがそのキーを持つ必要があることを意味します。これにより、送信者はメッセージを暗号化し、受信者はメッセージを復号化できます。

ここまでは理解できましたか?

結構です。

PFSは、パッシブにキャプチャされた暗号文のプレーンテキストの機密性が、長期間の鍵が危険にさらされても保持される特性です。

PFSのないシステムの例として、従来のSSL/TLS構成では、(証明書からの)長期RSA鍵ペアをセッション鍵を交換する方法として使用する場合があります。これは静的キー交換と呼ばれます。問題は、攻撃者がすべてのセッションを記録し、後日証明書を侵害した場合、RSAキーを使用してそれらのセッションを解読する可能性があることです。これは当然のことながら問題です。

TLSは、DHEと呼ばれる一時的な方法でDiffie-Hellman(DH)を使用します。この場合、エフェメラルとは、セッションの作成後に、キーの交換に使用されたキーまたはパラメーターが破棄されることを意味します。

Diffie-Hellmanは、攻撃者がその秘密を攻撃者に公開することなく、攻撃者が見ているコンテキストで共有秘密に合意できるという特性を持っています。 DHの信じられないほど単純化された(数学的に正しくないが、より直感的な)説明は、アリスが値のペアAを生成するというものです。sおよびAp(秘密および公開)およびボブは値のペアを生成しますBsおよびBp(繰り返しますが、秘密と公開)、それぞれ特定の特別な数学的特性があります。 Aを交換することによりpおよびBp、アリスとボブの両方が同じ結果の秘密値xを計算できます。盗聴者であるイブがこれらの値の交換を聞いている場合(つまり、彼女は両方を知っているApおよびBp)、彼女はxを計算できないAsおよびBs(つまり、秘密の部分)。

簡単に言えば、DH自体に問題があります。アクティブな攻撃者は、DH交換の中間者を務め、接続を危険にさらすために自分の秘密の値を挿入できます。 DHだけでは、能動的な改ざんに対する抵抗はありません。この種の使用法は、一般に「匿名DH」またはADHと呼ばれます。 TLSでは、変更されていないことを証明するために、交換されたDH値に長期RSA鍵で署名することでこれを解決します。

Diffie-Hellman Ephemeral(DHE)は、各セッションのDHシークレットをランダムに生成し、パブリック部分を交換し、xの計算後にこれらのシークレットを破棄します。上記のアリスとボブの間のやり取りで、AsおよびBsパーツが送信されることはなく、イブはそれらなしではxを計算できません。 1回AsおよびBsは破棄され、誰もxを再作成できません。長期のRSA鍵を危険にさらすと、以前に記録されたセッションおよび暗号文から平文を復元することはできません。

しかし、一部のIMクライアントでは、複数のデバイスを使用して暗号化されたメッセージにアクセスできることがわかります。

これは、秘密鍵と暗号化鍵をすべてのデバイスにコピーする必要があることを意味しますか?これはセキュリティリスクではありませんか?

この秘密キーと暗号化キーを他のデバイスに安全にコピーするプロトコルまたは暗号化方法はありますか?

マルチパーティ暗号化は複雑であり、関与するさまざまなメカニズムがたくさんあります。個人的には、Signalの ダブルラチェットアルゴリズム は、問題を最も簡単に理解できるエレガントなソリューションの1つだと思いますが、それでもかなり複雑なシステムです。紙は最小限の暗号用語で非常によく書かれているので、読むことをお勧めします。

これらのプロトコルが一般的に機能する方法は、デバイスをアカウントとペアリングするときに、デバイス間で何らかの方法(QRコードなど)で交換される、ある種の長期IDキーを持っていることです。このキーは、プロトコルに応じて異なるレベルのアクセスを提供します。SignalおよびWhatsAppの場合、デバイスはあなたの名前でグループチャットに「参加」できます。グループ内のいずれかのパーティがメッセージを送信すると、他のパーティ(同じIDを共有する個々のパーティを含む)ごとにメッセージを暗号化して、復号化できるようにします。 WhatsApp(およびSignal)がグループチャットを実行する方法の幅広い背景については、 この他の質問 を読むことをお勧めします。ここで重要な要素の1つは、IDキーが事前キーの署名にのみ使用されることです。これは、定期的にローテーションできるIDキーの代理になります。これは、長期キー自体がバルクデータの署名に使用されることはないことを意味します。これにより、公開が大幅に制限され、事前キーの署名後にメモリから消去することができます。

アルゴリズムのラチェット部分は、キーを継続的にチェーンで導出できるようにするいくつかの暗号化プロセスを指します。これらのプロセスにより、チェーン内の他のキーを危険にさらすことなく、個々の派生キーが侵害される可能性があります。チェーンをより完全に危険にさらし、過去および将来のメッセージを解読するためには、一般に、異なるタイプの複数の異なる鍵の危険性がある必要があります。これにより、メッセージにいくつかの転送秘密プロパティが設定されます。

質問にもっと直接答えるために:IDキーはセキュリティが重要です(ただし、IDキーが危害を受けた場合に回復する方法はあります)が、前方秘密には直接影響しません。 IDキーの公開部分はSignalサーバーに公開されますが、秘密部分はデバイス上に留まることを目的としています。秘密鍵の新しいデバイスへの交換は、QRコードまたは類似のもの(実装固有)を介して行われ、ローカルの物理的な操作であるため、通常は安全であると見なされます。

1
Polynomial