web-dev-qa-db-ja.com

非常に長寿命のWSS WebSocketセキュア接続は本当に安全ですか?

私はセキュリティの専門家とはほど遠いので、この質問のどんな近似も許してください。

これ(非常に良い)回答 から理解できるように、一連のHTTPS接続は次のように要約できます。

  1. 高価な非対称暗号を使用するブラウザーとサーバーの間のネゴシエーションがあり、その結果、サーバーによって決定される「セッション」の時間続く共有マスターシークレットが生成されます。
  2. 後続の各接続は、マスターシークレットから鍵が推測される高速対称暗号化アルゴリズムで暗号化されます。したがって、各接続は異なるキーで暗号化されるため、「スニファー」には、特定の接続キーまたはマスターシークレットを見つけるのに十分なデータがありません。

現在、私は、非常に長期間接続されたままになる可能性のあるWebソケットを使用するアプリケーションに取り組んでいます。非常に長い間、私は数日を意味します。このWebソケット接続を通過する情報は機密性が非常に高くなります。

それで、WebSocketが決して切断してはならないことを知って、対称鍵を定期的に更新する何かがWSS仕様にありますか?
私が理解しているように、対称アルゴリズムでは、同じキーで暗号化されるデータが多いほど、暗号化が弱くなります。

HTTPSは、新しい接続ごとにこのキーを変更します(マスターシークレットから新しいキーにアクセスします)が、長期間にわたって接続が1つしかないWebSocket接続はどうなりますか?

12
Salomon BRYS

その接続を介してエクサバイトのオーダーで送信しているのでない限り、AESはその時間枠にわたってセキュリティが低下することはありません。 WebSocketが開いている間はセキュリティが低下しないため、最終的に(lotの使用後に)WebSocketを通過するデータフローのみが侵食される可能性があります。 AESによるセキュリティ。インターネット全体で1日あたり約1,000エクサバイトが生成されたことに注意してください。そのため、ルーティングを行わない限り、非常に重要ですその1つのWebSocketを通過するすべてのインターネットトラフィックの割合は、WebSocketの使用中にキーを更新する必要はありません。

それでもキーを更新したい場合は、クライアントまたはサーバーが接続中にいつでも、2つの新しいランダムな値に基づいてマスターキーを再取得するハンドシェイク要求を再発行します。 RFC5246

4
sethmlarson