一个关键的随机数生成器缺陷影响了数十亿物联网设备

数十亿物联网(IoT)设备中使用的硬件随机数生成器存在一个严重漏洞,无法正确生成随机数,从而破坏了它们的安全性,并使它们面临攻击风险。
Fox主教的研究人员Dan Petro和Allan Cecil在上周发表的一份分析报告中说:“事实证明,这些‘随机’选择的数字在物联网设备上并不总是像你希望的那样随机。”。“事实上,在许多情况下,设备选择的加密密钥为0或更差。这可能会导致任何上游使用的安全性灾难性崩溃。”
随机数生成(RNG)是一个关键的过程,它支持多种密码应用,包括密钥生成、nonce和salt。在传统操作系统上,它源自一个加密安全的伪随机数生成器(CSPRNG),该生成器使用从高质量种子源获得的熵。
说到物联网设备,这是由一个片上系统(SoC)提供的,其中包含一个专用硬件RNG外围设备,称为真随机数发生器(TRNG),用于捕捉物理过程或现象的随机性。
研究人员指出,外设当前被调用的方式是不正确的,他们指出,缺乏对错误代码响应的全面检查,导致产生的随机数不仅仅是随机的,更糟糕的是,是可预测的,导致部分熵、未初始化的记忆,甚至包含纯零的加密密钥。
研究人员指出:“RNG外围设备的HAL功能可能会因各种原因而失效,但到目前为止,最常见的(也是可利用的)是该设备已经耗尽了熵。”。“硬件RNG外围设备通过各种方式(如模拟传感器或EMF读数)将熵从宇宙中拉出来,但并没有无限量的供应。
“它们每秒只能产生这么多随机位。如果你试图在RNG HAL函数没有随机数的情况下调用它,它将失败并返回错误代码。因此,如果设备试图太快地获取太多随机数,调用将开始失败。”
这个问题在物联网领域是独一无二的,因为他们缺乏一个通常带有随机性API的操作系统(例如,在类似Unix的操作系统中是“/dev/random”,在Windows中是BCryptGenRandom),研究人员强调了与CSPRNG子系统相关的更大熵池的好处,从而消除了“熵源中的任何单一故障点”
虽然这些问题可以通过软件更新来解决,但理想的解决方案是,物联网设备制造商和开发人员应包括一个CSPRNG API,该API从一组不同的熵源中播种,并确保代码不会忽略错误条件,或在没有更多熵可用时无法阻止对RNG的调用。
研究人员说:“这个漏洞的难点之一是,它不是一个简单的‘本该曲折的地方就曲折前进’的情况,很容易修补。”他们强调了在物联网操作系统中实现CSPRNG的必要性。“为了解决这个问题,必须在物联网设备中设计一个重要而复杂的功能。”