数十亿物联网 (IoT) 设备中使用的硬件随机数生成器中存在一个严重漏洞,该漏洞致使设备无法正确生成随机数,从而破坏其安全性并使其面临遭受攻击的风险。
当涉及到物联网设备时,‘随机’选择的数字并不总是像希望的那样随机,在许多情况下,设备选择 0 或更差的加密密钥。这可能导致任何上游使用的安全性呈灾难性崩溃。
随机数生成 ( RNG ) 是一个关键过程,支撑着几个加密应用程序,包括密钥生成、随机数和加盐。在传统操作系统上,它源自使用从高质量种子源获得的熵的加密安全伪随机数生成器 (CSPRNG)。
对于 IoT 设备,这是由片上系统 (SoC) 提供的,该系统芯片包含一个称为真随机数发生器 (TRNG) 的专用硬件 RNG 外设,用于从物理过程或现象中捕获随机性。
研究人员指出当前调用外围设备的方式是不正确的,并指出缺乏对错误代码响应的全面检查,导致生成的随机数不仅仅是随机的,更糟糕的是,可预测的,导致部分熵,未初始化的内存,甚至包含纯零的加密密钥。
研究人员指出:RNG 外围设备的 HAL 功能可能因各种原因而失败,但迄今为止最常见(和可利用)的是设备的熵已用尽。硬件 RNG 外围设备通过各种方式(例如模拟传感器或 EMF 读数)将熵从宇宙中提取出来,但并不是无限供应。
这个问题是物联网领域独有的,因为缺乏一个通常带有随机性 API 的操作系统(例如,类 Unix 操作系统中的“ /dev/random ”或Windows 中的BCryptGenRandom),研究人员强调了更大的好处与 CSPRNG 子系统关联的熵池,从而消除“熵源中的任何单点故障”。
尽管可以通过软件更新来修复这些漏洞,但理想的解决方案是物联网设备制造商和开发人员包含从一组不同的熵源中生成的 CSPRNG API,并确保代码不会忽略错误条件或无法阻止当没有更多的熵可用时调用 RNG。
这个漏洞的难点之一是它不是一个简单的“你在你应该去的地方乱跑”的情况,可以很容易地修补。为了解决这个问题,必须在物联网设备中设计一个重要而复杂的功能。
这影响了整个物联网行业。这里的核心漏洞不在于单个设备的 SDK 或任何特定的 SoC 实现。
物联网需要一个 CSPRNG 子系统。仅通过更改文档和责怪用户无法解决此问题。这种 CSPRNG 子系统最优雅的地方是在日益流行的物联网操作系统之一。如果您要从头开始设计新设备,我们建议您在操作系统中实现 CSPRNG。
RNG 代码应该被认为是危险的,自己编写,就像加密代码一样。不管你有多聪明,永远不要编写自己的代码来与 RNG 硬件接口。你几乎肯定会弄错。您应该改为使用由较低抽象层提供的 CSPRNG 子系统。
切勿直接从 RNG 硬件使用熵。总的来说,硬件 RNG 不适合(立即)加密使用。弱熵可以而且应该通过软件,通过 CSPRNG 来修复。
各司其职,找出对策:设备所有者
留意更新情况,在确保在可用时及时更新软件。这是一个可以通过软件解决的问题,可能需要一些时间。与此同时,请小心不要过度信任IoT小工具。对于需要互联网连接的家庭设备,请将放置在只能从外部访问的专用网段中。将有助于遏制传播到网络其他部分的任何违规行为。
物联网设备开发商
选择包含从各种熵源(包括硬件 RNG)播种的 CSPRNG API 的 IoT 设备。如果没有可用的 CSPRNG 且别无选择,请仔细检查所依赖的库以及代码,以确保没有使用从未初始化的内存读取、忽略硬件 RNG 外设寄存器或错误的代码条件,或者在没有更多可用熵时无法阻塞。仔细考虑对阻塞不是可行选项的实时情况的影响。
设备制造商/物联网操作系统
在SDK中弃用和/或禁用RNG HAL函数的任何直接使用。相反,包含一个 CSPRNG API,该 API 使用具有适当硬件 RNG 处理的稳健且多样化的熵源进行播种。Linux 内核的实现/dev/urandom可以作为很好的参考。
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...