理解IOT安全的硬件依赖关系
扫描二维码
随时随地手机看文章
在嵌入式系统或物联网项目上工作的工程师必须与影响设计各个方面的性能和成本之间的权衡作斗争。安全性与处理速度和存储能力一样,也是这个方程的一部分。
当涉及到在任何成本限制的应用程序中强制执行安全性时,需要在应用程序所需的保护和满足目标市场成本概况的设备的性能之间取得平衡。可以很容易地假设,一个集成了某些安全机制的单片机将提供所需的保护。
但是,硬件、固件和系统环境相互作用的方式有很多,可能导致不可预见的漏洞。开发人员需要意识到不同形式的嵌入式系统安全硬件支持之间的区别。理想的情况是,硬件平台将包含几个被设计用来保护固件、数据和通信的元素,这些元素一起提供信任的基础。
制造商通常会将这些功能整合到一个模块中,将其集成到集成到iot设备中的主处理器或系统芯片上。或者,连接到主处理器串口的安全元素提供所需的功能。
硬件供应商必须做出平衡成本和功能的选择,这将影响开发,如果开发商不考虑实现的细节,可能会对安全性造成超出预期的影响。即使在同一个产品家族中,对硬件安全的支持也会有很大差异。
例如,ESP32SOC被用于许多国际物流平台。有些设备将配备单独的安全元件,如微芯片的ACT608。一些版本的esp32包括一个芯片控制器,管理设备的安全基础设施。这种芯片上控制器通常包括一些功能,比如带有电源支持的数字签名外围设备,这提高了设备的安全性。
电子引信技术有助于永久存储安全关键数据,如加密密钥或设备专用信息,使攻击者更难破坏系统。然而,有些平台既不包括芯片控制器,也不包括单独的安全元素,这意味着需要在软件中实现更多的安全装置。
基本保护
多年来,微控制器提供了基本的内存保护,例如保护固件和配置内存,防止应用程序代码非法写入。另一个常见的保护机制,通常是保护知识产权(IP),是加密固件,通常存储在闪存中。这保护了基本的反向工程技术,并提供了一种保护数据的方法,如数据加密键,应该是私有的。
单片机通常会在芯片配置存储器中存储存储解密键,可能会使用电子流体来保证不可变性和强保护。在休息时,使用该密钥加密的数据位于闪存中。这保护它不被试图直接读取该块的攻击者使用。
然而,一旦加密闪存块中的敏感数据和键被移到内存中,它们就可以以纯文本形式提供。如果攻击者能够探测正在运行的设备的内存,那么副本的存在会使密钥比那些有更先进的安全措施的设备更容易受到攻击。
即使对于闪存加密的基本选项,开发者的选择也会影响安全性的效果。从历史上看,设备制造商使用的加密密钥对产品家族的所有成员都是共同的。如果一个设备上的钥匙被破坏了,那么这个家庭中的其他所有人都同样脆弱。理想的做法是,OEM和积分器使每个设备的内存加密键具有独特性。它们还需要遵循更高级别函数的各个键。
单个设备级别的管理对于一个多站点服务的整体安全至关重要。当设备进入网络与云交换数据时,运营商和用户需要确保所有连接的设备都是合法的,没有受到损害。
在线服务核实使用一套数字证书和使用公用钥匙基础设施(公钥基础设施)实现的签名的设备的身份和合法性。每个设备都需要自己独特的钥匙和证书,最好在制造时插入,以便向其他合法用户显示,它不是假冒的,而且正在运行经批准的固件。
固件检查
有效的证书本身不能保证单个设备没有受到损害。但是,它们确实支持安全或被测量的引导等进程。这些过程为设备运行中的固件的真实性提供了很高的信心。安全引导使用数字证书和签名来检查设备接收的任何软件更新的来源。它确保只使用有效的图像来引导设备准备就绪。
如果使用安全引导执行的检查有任何失败,则设备将拒绝固件,如果可用,将尝试加载已知的好版本。除非有有效的固件可用,否则该设备无法启动并连接到保护网络其余部分的iot。
安全引导依赖于是否存在引导加载器映像,用户在没有所需凭证的情况下无法更改该映像。为了实现这一点,硬件平台将引导加载器与根键和证书一起存储在一次性可编程存储器中,以提供不可变性。
为了最大限度地防止发生变化,制造商将使用电子流体实现此存储器。然而,一些设备却保留了一部分闪光灯,一旦保险丝被引爆,就可以在或者是被引爆的情况下使用。
原则上,安全引导是可能的,没有进一步的硬件支持.然而,完全基于软件的启动管理流程无法防止运行时的干扰,因为攻击者可以篡改引导加载程序代码可能需要加载到的SRAM或DRAM中才能运行。
基于硬件的安全和非安全操作模式分离的微控制器提供了更高程度的保护。一个例子是ARM的信任区,它以不同的形式在嵌入式处理器的皮层A和皮层M系列中实现。信任区提供基于安全属性限制对外围设备和内存区域访问的能力。
只有在I/O或内存访问命令的属性到位的情况下,才应该授予访问权限。默认情况下,处理器以其安全模式启动,提供对安全区域的访问。当处理器完成启动过程并离开安全模式时,它将拒绝返回安全区域,除非代码通过身份验证检查。原则上,像信任区这样的系统可以成功地保护引导过程。
然而,需要注意确保攻击者没有机会以纯文本形式窥探数据。例如,在解密之前,处理器应该将加密的数据加载到内部的单极存储器中,以避免内存-Bus的窥探。
硬件安全元素提供了一种方式,可以为引导和加密过程提供更大的安全性,无论是否有安全的执行模式。它最大的保证来自于它能够实现一种信任的基础,这种信任可以保护存储在非易失性内存中的键和证书。每一个涉及密钥的境外交易都要加密。
安全元件可在单片机或嵌入式处理器系统中实现,例如在ESP32上的数字签名单元或在多核SOCS上的完全可信平台模块(TPM),或部署在外部设备中,例如ACT-608,并通过直接串口访问。
即使在有安全人员在场的情况下,如果不直接处理,一些攻击仍有可能发生。一是回滚攻击。这是攻击者试图加载一个旧的但有效的软件映像的地方,其中包含一个可以被利用的漏洞。反回滚使用设备的安全存储器来保持一个只能单调地增加的计数器。一些IC供应商使用硬件和固件相结合的方式支持这一点。
解决硬件依赖
虽然硬件供应商可能提供大致相似的功能,但在标准的实施和支持方面往往存在重大差异。例如,设计了一些安全的元素,以便与AES一起为公钥基础设施执行RSA协议。其他人将使用椭圆曲线技术,甚至是更新的技术。
为了访问和控制这些功能,开发人员需要理解和使用不同的API,这增加了总体项目时间,此外还需要进行必要的分析,以评估安全模型中每个硬件和软件组件的重要性。
解决这些复杂设备安全问题的一种方法是部署一个与不同的硅架构接口的通用安全框架。它决定了目标平台上的哪些硬件特性,例如是否存在信任执行模式或TPM,并使用这些特性来交付一个框架,为这些特性的组合实现尽可能高的安全性。
虽然硬件供应商在其产品上实现安全特性时有许多选择,其中每一个都对固件和生命周期管理产生连锁影响,但是一个全面的集成平台使开发人员能够在一个共同的编程接口上工作,并充分利用他们使用的每一个设备上实现的硬件安全特性。