web-dev-qa-db-ja.com

信号プロトコル:キー交換がまだ行われていない場合、IDはどのように交換されますか?

Signalの blog は、プロファイルにアクセスするためのキーが、メッセージと同じように、Signal Protocolを使用して連絡先と通常どおり交換されることを示しています(つまり、メッセージはすでに連絡先であり、共有の一時的な対称キーをすでに生成しています)。 。

彼らはまた、あなたがあなたの連絡先にいない誰かと新しいスレッドを始めるならば、あなたは彼らとあなたのプロフィールを自動的に共有することについて言及します。受信者が連絡先ではなくオフラインで、共有対称キーを作成するためのハンドシェイクを完了していない場合、これはどのように行われますか?

1
aroooo

ここ は、さらに詳しく調べたい場合の仕様です。特に X3DH です。

基本的に(これは単純化です)、サーバーは各デバイスの多数の「事前キー」を保存します。これらは、デバイスが登録時に生成し、必要に応じて再生成する一時的なDHキーの公開部分です。

アリスはボブとのセッションを開始すると、サーバーからプレキーを取得し、それを使用するための新しい一時キーを作成します。彼女が送信するメッセージには、彼女が使用したプレキーの識別子と、彼女の一時キーの公開部分が含まれています。

ボブはメッセージを受信すると、アリスが使用した事前キーの秘密の半分を見つけ、それを彼女が送信した公開キーと一緒に使用して共有秘密を計算できます。


重要な合意は、プロファイルを共有するためだけでなく、暗号化されたメッセージを送信するためにも必要であることは注目に値します。 2つのデバイスが共有シークレットを非同期で作成できない場合は、両方のデバイスがオンラインであるか、キー合意メッセージが配信されるまでサーバーによってキャッシュされない限り、セッションを開始することはできません。事前鍵は、鍵合意メッセージを「事前キャッシュ」する一種の方法です。

3
AndrolGenhald