刚刚见识了KRACK密钥重装攻击和ROCA加密攻击不久,现在一个被称为DUHK(Don’t Use Hard-coded Keys,禁用硬编码密钥)的新型攻击手段又被曝光出来。根据撰写相关论文的三位美国学者表示,DUHK是一个存在于传统ANSI X9.31 RNG加密算法内的漏洞,在一定条件下,利用该漏洞的攻击者甚至可以破解VPN上的加密通信以及WEB会话内容。
ANSI X9.31 RNG是什么鬼?
为了将数据加密的更安全,人们希望借由一种可以随机产生的数字进行处理,这就出现了随机数字生成器(RNG)。不过往往计算机生成的随机数字,实际上都是根据一定算法和种子值生成的,并不是真正的随机数,只是重复周期比较大的数列,因此这些数字也被称为“伪随机数(PN)”。
而使用伪随机数的弊端是,一旦掌握了上述算法中的“种子密钥”,利用这些伪随机数加密的内容便形同虚设了。
ANSI X9.31 RNG便是一种使用非常广泛的伪随机数字生成器标准加密算法,虽然它被称为“RNG”,此前也一直被用来加密VPN通信和网页流量不被外部拦截。同时由于其被美国阅批认作一种“美国联邦信息处理标准(FIPS)”,所以在2016年1月以前被大量采用。
研究人员公布的涉及ANSI X9.31 RNG加密算法的主机状态和密钥恢复情况
DUHK攻击的条件
不过,现在研究学者发现,一些网络设备厂商在设备或者软件上使用了X9.31伪随机数生成器的同时,还使用了硬编码的“种子密钥”作为解密ANSI X9.31 RNG的密钥。这就好像同时将“锁”和“钥匙”交给了闯入者,令“防盗门”失去了效力。而在此种条件下发动的攻击便是DUHK攻击了。
除了上述两个条件外,使用随机数的输出直接用于生成加密密钥,以及生成密钥的随机数没有进行加密传输(SSL/TLS和IPSec)也会招致DUHK攻击。而这些主要影响使用了X9.31 RNG算法以及硬编码种子密钥的设备。