web-dev-qa-db-ja.com

完全転送秘密は、グループチャットまたはチャット履歴で機能しますか?

WhatsAppのような、最後のメッセージの前からのメッセージや、グループチャットのように多数のメッセージを同時に表示したいアプリで、完全転送秘密が機能するかどうか知りたいです。

私が理解しているように、完全転送秘密は毎回キーを変更するので、そのキーで暗号化されていない古いメッセージは、最後のキーが失われた場合に解読されにくくなります。それが事実であり、私がそうであると確信している場合、あなたは最後のメッセージしか見ることができません

10
dwkd

つまり、WhatsAppがエンドツーエンドの暗号化でサポートすることを行う Perfect forward secrecy です。 PFSは、接続の不確実性のためにチャットアプリにとって困難であり、多くのチャットアプリがそれを無視する理由です。

通常のPFS(TLSやSSHなど)では、進行中の接続が確立され、キーは非常に多くのバイトまたは分ごとに再計算されます。チャットアプリは、受信したメッセージ(またはデータ)を確認できません。実際、チャネルのもう一方の端は、データを自分の方法で送信したことがないか、またはずっとオフラインであった可能性があります。いずれの場合も、送信者であるあなたは、相手方に関係なく、送信したメッセージを保護することができます

[〜#〜] otr [〜#〜] en Axolotl などのこの問題のプロトコル全体を克服するには、prekeysを使用します。これらの事前キーは、事前に計算されたDiffie-Hellman(またはCurve25519のようなEC)キーです。事前に数百のキーを計算するのが一般的です。これらの事前に計算されたキーペアからのすべての公開キーは、リレー(チャット)サーバーに送信され、公開IDキーとともに公開されます(公開IDキーは実際には 'name'他の方へ)。公開プレキーがリレーサーバー上にあるため、メッセージを送信したい人は、プレキーの1つを選択して共有シークレットを計算できます。

次に、メッセージは共有シークレットを使用して暗号化および認証され、事前キーIDとともに受信者に送信されます。受信者がサーバーからメッセージをプルすると、対応するプライベートプレキーを使用してメッセージを復号化できます。新しいprekeypairが生成され、代わりにサーバーに送信されます。このシステムは永遠に続きます。

送信者と受信者の両方が、使用中のすべてのプレキーを追跡する必要があります。このアルゴリズム全体は、Double Ratchetとして知られています。

Axolotlを使用するアプリ:

  • WhatsApp
  • Google Allo
  • Facebookメッセンジャー
  • 信号
  • Viber(請求済み)

更新

すべてのメッセージが別のキーで暗号化されているため、プロトコルは自己修復です。メッセージが復号化されると、このキーは不明になり、メッセージ自体がローカルアプリデータベースに保存されます。ここにトリックがあります:メッセージは順番にされないので、せいぜい1つのプレキー(1つのメッセージ)が危険にさらされます。これは他のメッセージには影響しません。すべてのメッセージは別のキー(完全な秘密)で暗号化されます。メッセージ自体は互いに依存していないため、最後のメッセージに対する攻撃では、攻撃者は将来の通信を制御できません(将来の機密性)。 注:プロトコルには、メッセージの順序や失われたメッセージなど、いくつかの欠点もあります。

更新2:グループチャット

プロトコルの観点からは、「グループチャット」のようなものはありません。同じメッセージで、複数の人に何度も送信されます。たとえば、メールは複数の受信者にも送信できます。これらの各メッセージは、受信者の事前キーで暗号化されています。たとえば、グループにあなたを含む合計4人が含まれている場合、同じメッセージがグループメンバーのそれぞれに3回送信されます(技術的には1回だけ送信され、3つのメッセージが含まれます)。したがって、各メッセージは、あなたと受信者の間の共有秘密で署名および暗号化される必要があります。 注:TextSecureプロトコルの最新バージョンでは、メッセージを1回暗号化して複数回署名することにより、このプロセスをある程度最適化できます。より大きなグループに一時的なグループキーを導入するという提案があります。私の知る限り、これはまだWhatsAppに組み込まれていません。

新しいユーザーがチャットに参加した場合、チャットメッセージはローカルデバイスに(当然)保持されるため、そのユーザーの履歴はありません。これを利点として見てください。グループのすべてのユーザーがメッセージをプライベートに保つ責任があります。同期ソリューションは、 1)攻撃対象を増やす、2)暗号システムの複雑さを増やす、3)メッセージの所有権を移動する。

8
Yorick de Wid

最近のほとんどのE2Eアプリでは、PFSは転送中のみに適用されます。それらの保存は通常、ローカルデバイスに格納された暗号化キーを使用した対称暗号化です(基本的には暗号化されていません)。この場合、履歴メッセージの検索は簡単です。

一部のアプリでは、ローカル暗号化を強化するために、ユーザーが追加のパスフレーズ(ユーザーの頭脳に保存されている)を提供できます。

0
user133760