研究人员披露了数十亿物联网(IoT)设备中使用的随机数生成器严重漏洞,这意味着大量用户面临潜在攻击风险。
网络安全组织Bishop Fox的研究人员Dan Petro和Allan Cecil在上周发表的一项分析中表示:
“事实证明,在物联网设备中,这些’随机’选择的数字并不总是像你希望的那样随机,在许多情况下,设备会随机选择0或更弱的加密密钥,这可能导致任何上游服务器出现崩溃,从而面临安全问题。”
随机数生成(RNG)是一个支撑加密应用的关键过程,其中包括密钥生成、随机数和加盐。在传统的操作系统中,RNG是由加密安全伪随机数生成器 (CSPRNG)分化而来,后者使用了高质量种子源中的熵。
在物联网设备中,系统级芯片(SoC)装有一个专门的硬件RNG外设,称为真随机数生成器(TRNG),用于从物理过程或现象中捕获“随机性”。
研究人员指出,当前调用外部设备的方式是不正确的,他们注意到因缺乏对错误代码响应的全面检查,导致产生的随机数不是简单的随机,更糟糕的是可预测的情况,包含部分熵、未初始化的内存,甚至包含纯零的密码密钥泄露。
“RNG外围设备的HAL功能可能因各种原因而失效,但到目前为止最常见的或者说最可利用的设备已经耗尽了熵。硬件RNG外设通过各种方式(如模拟传感器或电磁场读数)从宇宙中提取熵,但并不能够无限供应。”
RNG每秒钟只能产生这么多的随机位。如果在RNG HAL函数没有任何随机数可以给你的时候调用它,它就会失败并返回一个错误代码。因此,如果设备试图过快的获得太多的随机数,调用将失败。
这个是物联网领域的独有的问题。因为物联网设备通常缺乏带有随机性API的操作系统(例如,类似Unix的操作系统中的”/dev/random “或Windows中的BCryptGenRandom),研究人员认为与CSPRNG子系统相关的熵池有更大的好处,从而消除了 “熵源中的任何单点故障”。
虽然这些问题可以通过软件更新来补救,但理想的解决方案是物联网设备制造商和开发人员从一组不同的熵源中生成CSPRNG API,并确保代码不会忽略错误条件,或在没有更多的熵可用时能阻止对RNG的调用。
研究人员强调:“这不是一个简单的漏洞。为了防范这种风险,物联网操作系统中确实需要一个类似CSPRNG的复杂功能设计。”
A CriticalRandomNumber Generator Flaw Affects Billions of IoT Devices