2

UDP パケットを処理するネットワーク サーバーを実装しています。攻撃者が udp パケットをコピーし、後でそれらをリプレイできるリプレイ攻撃を回避したいと考えています。私は、パケットをハッシュして、この値をハッシュテーブルに保存できるという考えをいじっています。その後、パケットを受信するたびに同じプロセスを実行し、ハッシュ テーブルで検索できます。すでに存在する場合はパケットを拒否しますが、それを確認したことがない (エントリが存在しない) 場合は、将来の使用のために保存します。

では、これに適したハッシュ アルゴリズムはどれでしょうか。ハッシュテーブル以外に何か必要ですか? 受信されている udp パケットがたくさんあるので、これを O(1) で動作させたい!!!!!!!! ;-)、これは可能ですか?

明らかに、ハッシュを「記憶」する時間が長いほど、より多くのストレージ (状態) を割り当てる必要があります。ハッシュ テーブルは時間の経過とともに動的に拡大および縮小できますか?

私はここから離れているかもしれませんが、ハッシュテーブルはまったく必要ないかもしれません! 私はアイデアを受け入れます!!

4

2 に答える 2

3

パケットの内容を制御できますか? その場合は、コンテンツにハッシュを追加してそれを使用します。これにより、ハッシュ作業が送信者に移動します。また、有効期間を含めることもできます。これにより、a) その時間以降はパケットの記録を破棄できることがわかり、b) 攻撃者によって保存されたパケットはその時間以降は役に立たなくなります。タイムスタンプを何らかの方法で暗号化して、攻撃者がタイムスタンプを更新できないようにする必要があります。

その他のテクニックはウィキペディアで見つけることができます

于 2010-11-30T16:30:16.243 に答える
1

パケットにハッシュ テーブルを使用すると、O(n) であるハッシュ テーブルを再ハッシュする必要があるため、コストがかかる可能性があります。

この状況では、サーバーと各クライアントの間で共有シークレットをネゴシエートする必要があります。この秘密鍵 K は、Message Authentication Codeの構築に使用されます。認証されるメッセージは、タイムスタンプとともに UDP パケットで送信するデータである必要があります。シーケンス ID は、UDP パケットが到着するという保証がまったくなく、パケットが順不同で到着する可能性があるため、好ましくありません。

この攻撃は、3 ウェイ ハンドシェイクとシーケンス ID により、TCP では不可能であることに注意してください。この場合、TCP によって提供されるセキュリティは、実際には、この提案されたセキュリティ システムよりも軽い可能性があります。

于 2010-11-30T17:12:08.637 に答える