当今闪电般快速、互联程度日益增强的世界为我们提供了为我们每天使用的嵌入式系统大幅增加价值的机会。然而,同样的连接也可能对作为嵌入式系统基础一部分的物联网应用程序和设备的完整性构成威胁。解决方案是什么?更智能、更安全的设计。一旦奠定了坚实的基础,互联网连接的嵌入式和物联网设备就可以确保长期安全并保护网络,即使单个节点受到损害也是如此。为了达到所需的安全级别,必须预测和解决多种威胁:实现这一目标的一个很好的工具是微软的Azure Sphere及其嵌入式Pluton安全子系统。
物联网安全要点
物联网设备安全的基本要求是确保系统正确集成。由于黑客是出了名的足智多谋,并且乐于利用任何和所有弱点,因此必须保护设备免受未经授权的修改和入侵。聪明的 OEM 可以通过分层安全性来减少对受感染系统的脆弱性。例如,黑客用来渗透系统的一种常用机制是缓冲区溢出。它允许黑客利用存储在内存外部并分配给网络缓冲区的数据,这有时会导致目标系统无意中执行代码。从黑客的角度来看,这是个好消息。它不仅提供了一个可以上传新可执行映像的点,而且一旦设备重新启动以便它可以执行该新映像,他或她就可以完全控制系统并访问有价值的数据。
安全启动机制是避免此问题的好方法。它通过确保只有授权方提供的可执行文件才能运行来提供关闭潜在攻击的方法。实现安全启动机制的基本要求是非易失性存储器区域,该区域在制造后被视为只读 - 其中包含引导加载程序代码,强制处理器检查加载到系统中的引导映像的完整性。如果它未通过完整性检查,则设备在获得有效的启动映像之前不会启动。有效的完整性检查将制造商 ID 与设备自己的 ID 相结合,方法是确保加载到闪存中以供下次启动的代码使用使用本地存储的唯一 ID 生成的哈希进行签名。为了防止可能用于查找此 ID 的攻击,设备还需要具有硬件信任根。
硬件信任根
安全性正日益成为设计社区所有成员的重要问题。例如,在一次道路测试审查中,element14社区成员David Long指出,Pluton安全子系统的信任根是作为Azure Sphere模块的核心部分实现的,可通过Newark获得,这是关键功能之一。
硬件信任根是用于运行安全敏感操作的受保护区域。它通过实施一个安全处理器来提供针对物理篡改和远程攻击的保护,该处理器可以单独访问片上代码和数据存储器。加密密钥和其他安全数据存储在这些区域中,并且信任根配置为永远不允许从外部访问这些元素。安全处理器通常由加密处理器和真随机数生成器 (TRNG) 支持,以加快这些操作,真随机数生成器 (TRNG) 用于生成在信任根之外运行的软件和系统,以确定它们是否应有权访问系统资源。
有了硬件信任根,设备不仅可以保护自己和它发送的任何数据,还可以证明它是一个合法的设备,向云中的其他物联网设备或服务器发送可信数据。反过来,这有助于提高安全性,因为设备可以拒绝与任何没有可接受凭据的网络连接设备互动。这也减少了缓冲区溢出和类似攻击的可能性。Pluton 安全子系统有助于控制本身可能受到损害的外围设备的操作。处理器内的防火墙可防止未经授权访问敏感功能,并防止潜在黑客使用假冒外围设备接管系统的尝试。
软件或远程设备可以通过证明来证明其身份或真实性。通常,这是在基于公钥基础结构 (PKI) 机制的协议的帮助下处理的。在PKI下,消息使用公钥进行加密,公钥可以自由分发而不会影响协议,因为只有相应的私钥才能解密消息。此类私钥是那些将存储在信任安全内存的硬件根中的私钥,通常在制造过程中加载。
通信安全
当设备想要建立通信或证明其身份时,它将使用协议使用一个或多个私钥生成证书和签名。签名和认证协议将随机值(理想情况下是在 TRNG 的帮助下创建的)与私钥相结合,以创建会话密钥等值,这些值在被丢弃之前短时间使用一次,以避免黑客拦截消息并在所谓的重放攻击中重新创建它们的可能性。创建后,PKI 协议可确保永远不需要在安全区域之外访问私钥。
在 Azure Sphere 的情况下,两个核心私钥由设备上的 Pluton 子系统在制造过程中生成,之后甚至无法被软件直接读取。从私钥派生的所有消息都由 Pluton 子系统中的加密处理器创建。这弥补了许多系统中的关键弱点,其中私钥在外部生成并编程到设备中,从而产生了拦截的可能性。
下一个问题是确定设备首次出现在网络中时密钥是否有效。Azure Sphere 通过生成匹配的公钥来实现此目的:一个用于证明,一个用于用户定义的安全服务。这些公钥在制造时提供给微软,供其Azure云服务使用。设备中还存储了使用 PKI 机制生成的数字证书,这些证书用于检查声称来自 Azure 服务器的消息。
当 Azure Sphere 设备连接到云时,它会根据存储在安全内存中的 Azure 创建的证书检查消息来验证服务器的身份。此时,设备需要向服务器进行身份验证,这是使用远程证明协议完成的任务。在 Azure Sphere 系统中,标识的不仅仅是设备,还有它运行的代码。这是通过基于在安全启动过程中找到的代码序列的加密哈希创建会话密钥来执行的。这些值使用私钥进行签名,以便由板载加密处理器生成证明。由于 Azure 服务可以根据其数据库中设备的公钥生成相应的公钥,因此它可以验证它已使用授权固件启动的设备标识。
云服务对设备进行身份验证的可用性还有其他好处:例如,在 Azure Sphere 下,当发现设备是真实的并且运行正确的软件时,会为其提供一个证书,当该证书与其自己存储的凭据结合使用时,可以提供给其他联机服务和设备以证明设备的身份。该证书的有效期约为一天,这限制了攻击的可能性,并迫使设备定期证明其健康状况,以保持与物联网服务的连接。
如果设备未通过安全启动过程,则无法获得证书,使其作为有效的、经过身份验证的系统运行,并将与物联网切断。此外,身份验证失败提供了一种纠正这种情况的方法,并且可能允许设备连接到 Azure 服务,以便下载和安装真实且最新的启动映像。这提供了额外的保护级别,可抵御利用旧版本真实固件中的弱点的攻击。
element14社区成员Rodrigo Sim将Microsoft Pluton安全子系统描述为Azure Sphere生态系统的基础,并指出Pluton有一个专用的核心,用于加速加密任务,如使用SHA2散列,椭圆曲线加密(ECC)和AES加密。所有这些都允许Pluton为基本操作系统和用户应用程序提供安全启动和远程证明。专用内核还可以控制其他内核中外设的访问。
虽然现在对互联网连接的支持实际上是许多嵌入式系统设计人员的要求,但构成的威胁是可以控制的。通过 Azure Sphere 等平台,互联网连接提供了比未连接设备更强大的解决方案。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !