在python 2.7.7中引入hmac.compare_digest
,旨在提供对时间攻击具有弹性的字符串比较。
可悲的是,2.7.7仍然是最新的,许多系统都有旧版本,包括Ubuntu 14.04。
有没有办法比较此类系统中的身份验证字符串,而无需用户从源代码编译Python(并定期重新编译以保持安全更新)?
答案 0 :(得分:1)
您需要避免短路。像
这样的东西sum(i != j for i, j in zip(hmac1.digest(), hmac2.digest()))
与compare_digest
相同的警告适用:
注意:如果a和b的长度不同,或者发生错误,则a 定时攻击理论上可以揭示有关类型的信息 和a和b的长度 - 但不是它们的值。