随着安全成为物联网 (IoT) 行业日益关注的问题,硬件安全也得到了越来越多的关注,因为硬件在帮助保护设备免受网络攻击方面大有可为。在本文中,我们将了解现有硬件安全的示例,以及如何使用它们来保护物联网设备。
硬件安全的崛起
物联网设备和解决方案的激增为技术发展带来了许多机遇,包括用于训练人工智能的数据以及远程监测和控制流程的能力。然而,物联网技术是一把双刃剑,因为通过大规模分布式拒绝服务 (DDoS) 攻击、数据窃取、网络黑客和隐私侵犯等形式,让网络犯罪分子有机可乘。虽然使用基于软件的安全技术可以防止其中一些攻击,但无法抵御所有攻击。
例如,物联网设备可以用于安全的数据传输,但如果设备的硬件受到物理攻击,那么再多的软件程序也无法提供保护。这就是硬件安全的用武之地,也是硬件安全的重要性越来越与 SoC、微控制器和微处理器比肩的原因。一直以来,硬件安全由能够加快软件安全的硬件组成,如加密引擎,但设计人员正在进一步向前迈进,开始创建保护金属本身的系统。
硬件攻击的类型
硬件攻击并不常出现在我们的视野中,这可能是因为对设备进行物理访问是一项比较难以完成的任务。例如,黑客入侵电子邮件帐户可能会通过互联网连接以各种各样的方式进行,但盗窃笔记本电脑以访问系统中存储的电子邮件则完全是另一回事。但是,即使可以通过物理方式获得设备,通常也不需要太多技能就能获得该设备上的所有数据。
旁道攻击
旁道攻击类型是非常安全的系统因安全系统之外的不安全子系统而受到的间接攻击。例如,如果取出硬盘并插入另一台计算机,可以轻松访问 Windows 上受密码保护的用户帐户中的文件。攻击者只需“获得”文件夹的所有权,一下子所有文件就都可以访问了,完全不需要输入保护用户帐户安全的密码,导致安全系统很容易被绕过。
Rowhammer 攻击
Rowhammer 攻击是一种针对高密度 DRAM 的特殊攻击。由于硅晶圆上晶体管数量的增加和特征尺寸的缩小,现代 DRAM 芯片中的存储单元非常靠近。事实上,DRAM 单元如此接近的距离,让人获得了改变相邻单元的值的一丝机会。
Rowhammer 攻击利用这一问题,通过改动相邻行内存内容的值来更改“受保护”的内存行的值。攻击者将值注入到他们无权访问的受保护空间,理论上可以用来绕过安全系统,并将恶意代码注入到可能具有内核级权限的应用程序中。
硬件安全示例
为保护设备免受硬件攻击,设计人员可以将硬件安全措施部署到在软件领域之外运行的硅片本身。那么目前在硬件领域有哪些安全方面的例子呢?
加密加速
如前所述,这是最早的硬件安全形式之一,与其说是硬件防御,不如说是一种外设。加密加速是在硬件中而不是在软件中执行加密功能的硬件,这不仅可加速应用程序,而且可为硬件提供在软件中无法入侵的系统。
例如,软件版本的 AES 可能会被注入代码,从而使加密结果很容易被攻击者撤消,但硬件版本的 AES 是不可改变的,不可能被攻击。
真随机数发生器
虽然随机数发生器可以被视为加密加速,但它的重要性足以让它自成一个类别。几乎所有形式的加密都依赖于随机数,数字越随机,使用该数字进行加密的效果就越好。软件编写的随机数生成器几乎总是使用时间作为种子,因此很容易被攻击者攻击。
随机数使用不当的一个例子是两名安全专家能够远程入侵一辆吉普车,并完全控制车辆。攻击的方法是连接到汽车的多媒体系统,并利用该连接通过汽车的 CAN 总线发送消息。这导致黑客可控制汽车的转向、刹车和油门。
这种攻击之所以能够成功,离不开被认为是“随机的”汽车 Wi-Fi 密码的生成方法。Wi-Fi 密码是根据车内多媒体系统首次开启的日期和时间生成的。通常情况下,这是安全的,但由于汽车的制造日期和时间可以按年月日轻松确定,因此攻击者只需要处理 1500 万个组合即可。如果能正确猜出日期,那么只有 700 万种可能性,一个小时就可以蛮力攻击 700 万个 Wi-Fi 密码。如果使用真正的随机数,此 Wi-Fi 密码将很难破解。但因为该密码是基于非随机元素,因此很容易被绕过。
内存加密
数据加密可以追溯到几千年前,人们使用加密符隐藏信息,以防被人窥探。计算机信息也是如此,传输的数据在发送前往往会被加密。然而,这种加密方法已开始应用于内存中的数据存储,现在 ROM 和 RAM 都有加密选项。设计者采取这种方法,可以确保攻击者即使获得 RAM 或 ROM 中的内容,如果没有访问正确的硬件,信息本身也无法读取。
内存保护本身并不新鲜,许多微控制器都包含防止他人克隆固件的读保护位。闪存的加密也不是什么新鲜事,很多 FPGA 都支持配置闪存的加密。然而,这种新的内存加密浪潮是即时的,并且允许几乎相同的访问速度。
安全引导
几乎所有处理器都面临一个重大问题:处理器如何确定它所启动的代码是真实的、无恶意的?虽然任何系统的核心引导代码都无法进行真实性检查,但进一步的引导阶段可以进行检查,大多数攻击者会试图将代码注入核心引导代码或随后加载的应用程序中。
为了防止这种情况的发生,设计者在处理器中引入了安全引导方法,首先运行不可改变的引导代码,因此可抵御代码注入攻击。然后,该引导代码查看即将加载的应用程序,并检查代码的完整性。如果检测到注入的代码,系统可以在有限的状态下运行,或者向操作系统提供警告,说明已检测到代码完整性问题。
信任区
信任区对微控制器来说有些陌生,尽管它们是处理器中非常古老的技术。信任区有助于解决处理器的问题,因为处理器不知道自己运行的代码是不是恶意代码。
现在,值得注意的是,并不是所有的 CPU 指令都具有内在的危险性。但有些可能存在危险,包括对硬件、栈指针或关键系统的访问。因此,现代处理器具有权限级别,即操作系统以最高权限运行,可以访问所有指令,而操作系统执行的进程则被赋予较低的权限。这些进程不能访问敏感指令,因此不太可能对处理器上的关键系统造成破坏或攻击。
如今,许多 SoC 和微控制器正在将这些区域引入其内核,以便操作系统在一个内核上运行,而进程要么以更低的权限在同一内核上运行,要么在删除了部分功能的次要内核上运行。
防篡改引脚
防篡改引脚是一种非常有用的硬件功能,因为对其进行检测和防范比较困难。一些硬件攻击要求攻击者物理移除部件以获得对 I/O 的访问,如调试端口和内存通道。根据设备的不同,防篡改引脚是一种可以在出现外部机械事件(例如外壳的打开)时进行检测的引脚。一旦检测到,防篡改引脚可以指示处理器执行一个特殊的例程,包括防止敏感数据被读取的简单重启,以及完全擦除内存等更激烈的操作。防篡改引脚也可在对攻击者而言似乎没有任何作用的隐蔽引脚上使用,因此不会被发现。
高级硬件安全:总线监控器
到目前为止,我们所看到的所有硬件安全的例子,通常都被组合成一个单一封装,以及为用户提供一系列的安全选择。然而,一种新型的硬件安全慢慢问世,将安全带入一种全新的范式,那就是总线监控器。
总线监控器是一种高度先进的安全系统,直接集成在微控制器的 SoC 中,独立于系统运行。总线监控器连接到多个内部总线和连接,包括 I/O 引脚、寄存器、内部数据总线和编程端口。在标称操作下,芯片的内部连接会产生总线监控器可以学习的稳定状态。当注入恶意代码时,或者当引脚受到硬件攻击时,总线监控器的稳定状态就会受到干扰。这将导致总线监控器对异常情况采取行动。根据总线监控器的不同,有些可以向操作系统引发异常,而有些则会导致系统重置。有些总线监控器甚至可以将潜在的恶意寄存器请求从处理器上移走,并返回空值,同时记录试图进行的攻击。
结语
虽然硬件安全的实施将使硅片变得更加昂贵,但基于硬件的安全的优势是,设计将变得更加安全。软件安全能做的有限,因此完全基于软件安全的系统将很容易成为攻击者的目标,而通过集成硬件安全,系统的安全性将大大加强。
事实上,即时加密内存的能力有助于长期保护设备的安全,并让人在不泄露信息的情况下放心处置电子产品。总线监控器等技术将催生更智能的安全系统,这些系统可以了解攻击信息,并能够通过识别模式信号来抢先防范未来的攻击。
总体而言,硬件安全将成为安全实践的标准,没有集成此类功能的设备将仅限于处理基本的操作和任务。