security - 用于跟踪网络数据包的优化算法(防止重放攻击)

标签 security network-programming udp replay

我正在实现一个处理 udp 数据包的网络服务器。我想避免重放攻击,攻击者可以复制 udp 数据包,然后及时重放它们。我想知道我可以对数据包进行哈希处理并将该值存储在哈希表中。然后,每次收到数据包时,我都可以执行相同的过程,然后在哈希表中查找它。如果它已经存在,那么我们拒绝该数据包,但是如果我们从未见过它(该条目不存在),我们将存储它以供将来使用。

现在,什么哈希算法适合这个?除了哈希表之外我还需要其他东西吗?由于收到了很多 udp 数据包,我希望它能在 O(1) 内工作!!!!!! ;-),这可能吗?

显然,我“记住”哈希值的时间越长,我需要分配的存储(状态)就越多,哈希表可以随着时间的推移动态增长和收缩吗?

我可能离这里很远,我可能根本不需要哈希表!我对想法持开放态度!

最佳答案

您可以控制数据包的内容吗?如果是这样,请向内容添加哈希并使用它 - 这会将哈希工作转移给发件人。您还可以包括一个有效期,以便 a) 您知道您可以在该时间之后丢弃数据包的任何记录,b) 攻击者存储的数据包在该时间之后变得无用。您可能希望以某种方式对时间戳进行加密,以便攻击者不能只更新时间戳。

其他技术可以在Wikipedia上找到

关于security - 用于跟踪网络数据包的优化算法(防止重放攻击),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4315965/

相关文章:

c# - 通过数据库传递密码如何使其安全

java - 如何向 Spring MVC Controller 方法添加自定义安全注释

c# - 套接字通信程序测试

c - 在UDP服务器编程中如何将传入的udp客户端与套接字绑定(bind)?

php - 静态盐与随机盐 - 安全 PHP

android - PdfRenderer 无法访问受密码保护的 pdf

java - 如何解决与网络相关的 (hadoop) 应用程序问题?

c++ - Qt - QTcpserver 工作不正常

Java IOException : No buffer space available while sending UDP packets on Linux 错误

udp - Netty 是否提供可靠有序的 UDP 消息传递?