有人可以简单地告诉我字符串比较定时攻击是什么吗?我已经用谷歌搜索了这个,但所有的解释都是非常技术性的。另外,这种攻击是否比蛮力攻击更好?如果我错了,请纠正我,但我相信这种攻击是用来破解密码的。
简单英语中的字符串比较定时攻击
信息安全
攻击
密码破解
2021-09-11 13:21:18
1个回答
在检查字符串是否相等时,您需要检查每个字符是否匹配。大多数编程语言都会采取捷径并返回 False - 或 Not Equal - 一旦发现一个不匹配的字符。例如,
str1 = "1111111111111111"
str2 = "1101111111111111"
你一打到0就知道它们不相等,你为什么还要继续检查?
这是超级可利用的。想象一下,我正在尝试破解密码(或哈希,或 MAC 标记,或任何需要比较是否相等的东西),知道服务器将在内部某处进行惰性字符串比较,我可能会得到以下时间结果(完全弥补):
Tried "aaaaaaaa", it took 0.2 ms
Tried "bbbbbbbb", it took 0.2 ms
Tried "cccccccc", it took 0.4 ms
酷,现在我知道第一个字母是“c”,因为它花了更长的时间。现在我可以用“caaaaaaa”、“cbbbbbbb”等来做同样的事情。一次破解一个字母比一次破解整个密码要快得多。
这种“惰性”字符串比较对程序员来说通常是一件好事,因为它使事情运行得更快,但对安全性不利。安全字符串比较将一直检查到最后,即使它发现了差异,因此永远不会有时间差异。
其它你可能感兴趣的问题