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