Nonce+Timestamp的防重放攻击解决方案

  • 分类: Tips
  • 发表日期:2021-09-01 15:32:00
  • 最后修改:2021-09-01 15:33:00

重放攻击是指黑客通过抓包,重复使用一个已经被服务端接收通过的包。如果请求时数据库操作,则重放攻击至少将导致服务器拥堵,如果请求是转账呢?

所以预防重放攻击很重要!Very important!Es ist wichtig(德)!Это важно(俄)!


基于timestamp+secret_key的方案

规定客户端的每次请求必须携带时间戳,时间戳与secret_key及其它参数一起进行数字签名,因为黑客不知道加密方式,所以不能生成新的Signature。服务端接受到请求判断该时间戳与服务端的时间差是否超过阈值。

缺点:在阈值范围内进行重放攻击,这种方法就不好用了。


基于nonce+timestamp+secret_key的方案

将nonce也作为数字签名的一部分,服务端将阈值范围内请求的nonce存储起来(不能无限存,超时则删除以减轻存储压力),请求到来时查询已存储的nonce就可知道该请求是否被重放。

优点:阈值范围内的重放攻击可以通过nonce来解决。

缺点:需要消耗一定的存储空间,但相比安全性可忽略~

 

post
2021年8月16日 11:33 原创
post
2021年8月25日 16:11
post
2021年12月2日 11:35 原创
post
2023年7月18日 14:37

0 评论

大哥整点话呗~