PHP开发SQL极简教程 · MySQL · MyBatis · JPA 技术笔记 教程 总结PHP经验分享

时序攻击和如何预防

2020-08-11  本文已影响0人  怀老师

什么是时序攻击?

通过观测执行的时间来推导出结果。

举例说明:

比如,当我们批量上传100道解密题的答案时,每一道题的检测时间是1分钟,全对的情况下总耗时为100分钟。但是如果检测到答案错误就会立即返回错误,不进行等待,那么总耗时肯定在100分钟以下。

第一个结论,我们可以判断,所传的答案不够1分钟就返回的,必定是错误答案。

这时假定我们的每个答案都有6个步骤,均匀分布在1分钟内。
第10秒返回了错误的答案就是错在第一步了;第20秒返回了错误的就是错在第二步;第30秒就返回了错误的就是错在第三步。以此类推,就能根据返回的时间,判断我们接近真正答案的进度。
并且当我们获取到返回结果的时间,就能推算出出错的环节,然后略过正确的环节,从出错的环节开始答题。类似断点续传

第二个结论,我们可以根据消耗时间的不同,推算出接近正确答案的进度。

如何避免时序攻击

避免时序攻击的方法就是均匀返回。
举例,每道题的检测时间都固定为1分钟,即使错误了,也在1分钟的时候才返回错误。那么,外界无法知晓自己破解的进度,就要把所有的可能都试一遍。也起到了我们预期的防护结果。

上一篇 下一篇

猜你喜欢

热点阅读