通过更智能的设计促进嵌入式安全性

描述

  当今瞬息万变、日益互联的世界为我们提供了为我们每天使用的嵌入式系统大幅增加价值的机会。然而,同样的连接也可能成为对物联网应用程序和设备的完整性的威胁,这些应用程序和设备的完整性是嵌入式系统基础的一部分。解决方案是什么?更智能、更安全的设计。一旦坚实的基础到位,互联网连接的嵌入式和物联网设备可以确保长期安全并保护网络,即使单个节点受到损害。为了实现所需的安全级别,必须预测和解决多种威胁:实现这一目标的一个很好的工具是微软的Azure Sphere及其嵌入式Pluton安全子系统。

  物联网安全要点

  物联网设备安全的一个基本要求是确保系统正确集成。由于黑客是出了名的足智多谋,并且很乐意利用任何和所有弱点,因此必须保护设备免受未经授权的修改和入侵。智能 OEM 可以通过分层安全性来降低其对受感染系统的脆弱性。例如,黑客用来渗透系统的一种经常被利用的机制是缓冲区溢出。它允许黑客利用存储在内存外部并分配给网络缓冲区的数据,这有时会导致目标系统无意中执行代码。从黑客的角度来看,这是个好消息。它不仅提供了一个可以上传新的可执行映像的点,而且一旦设备重新启动以便它可以执行该新映像,他或她就可以完全控制系统并访问有价值的数据。

  安全启动机制是避免此问题的好方法。它通过确保只有授权方提供的可执行文件才能运行来关闭潜在攻击的方法。实现安全启动机制的一个基本要求是非易失性内存区域,该区域在制造后被视为只读 - 这包含引导加载程序代码,强制处理器检查加载到系统中的引导映像的完整性。如果完整性检查失败,则在向设备提供有效的启动映像之前,设备将无法启动。有效的完整性检查将制造商 ID 与设备自己的 ID 相结合,方法是确保加载到闪存中的代码在下次启动时使用使用本地存储的唯一 ID 生成的哈希进行签名。为了防止可能用于查找此 ID 的攻击,设备还需要具有硬件信任根。

  硬件信任根

  安全性正日益成为设计界所有成员的重要问题。例如,在最近的一次道路测试审查中,e络盟社区成员David Long指出,冥王星安全子系统的信任根是作为Azure Sphere模块的核心部分实现的,可通过纽瓦克获得,这是关键功能之一。

  硬件信任根是运行安全敏感操作的受保护区域。它通过实施仅访问片上代码和数据存储器的安全处理器,提供针对物理篡改和远程攻击的保护。加密密钥和其他安全数据存储在这些区域中,并且信任根配置为永远不允许从外部访问这些元素。安全处理器通常由加密处理器支持以加快这些操作,并由真随机数生成器(TRNG)支持,后者用于生成在信任根之外运行的软件和系统,以确定它们是否应有权访问系统资源。

  有了硬件信任根,设备不仅有可能保护自己及其发送的任何数据,而且可以证明它是向云中的其他物联网设备或服务器发送可靠数据的合法设备。反过来,这有助于提高安全性,因为设备可以拒绝与没有可接受凭据的任何网络连接设备进行交互。这也降低了缓冲区溢出和类似攻击首先通过的可能性。Pluton安全子系统有助于控制本身可能受到损害的外围设备的操作。处理器内的防火墙可防止未经授权访问敏感功能,并防止潜在黑客使用伪造外围设备接管系统。

  软件或远程设备可以通过证明来证明其身份或真实性。通常,这是在基于公钥基础结构 (PKI) 机制的协议的帮助下处理的。在PKI下,消息使用公钥加密,公钥可以自由分发而不会损害协议,因为只有相应的私钥才能解密消息。此类私钥将存储在硬件信任根的安全内存中,通常在制造过程中加载。

  通信安全

  当设备想要建立通信或证明其身份时,它将使用协议来生成证书和签名,使用其中一个或多个私钥。签名和认证协议将随机值(理想情况下是在TRNG的帮助下创建的)与私钥相结合,以创建会话密钥等值,这些值在短时间内使用一次,然后被丢弃,以避免黑客拦截消息并在所谓的重放攻击中重新创建它们。一旦创建,PKI协议确保私钥永远不需要在安全区域之外访问。

  在 Azure Sphere 的情况下,两个核心私钥由设备上的 Pluton 子系统在制造过程中生成,之后甚至不能由软件直接读取。从私钥派生的所有消息都是由Pluton子系统中的加密处理器创建的。这弥补了许多系统中的一个关键弱点,其中私钥在外部生成并编程到设备中,从而产生了拦截的可能性。

  下一个问题是确定当设备首次出现在网络中时密钥是否有效。Azure Sphere 通过生成匹配的公钥来实现此目的:一个用于证明,一个用于用户定义的安全服务。这些公钥在制造时提供给微软,供其 Azure 云服务使用。设备中还存储着使用 PKI 机制生成的数字证书,这些证书用于检查声称来自 Azure 服务器的消息。

  当 Azure Sphere 设备连接到云时,它会根据存储在安全内存中的 Azure 创建的证书检查消息,从而验证服务器的标识。此时,设备需要向服务器验证自身身份,这是使用远程证明协议完成的任务。在 Azure 球体系统中,标识的不仅仅是设备,而是它运行的代码。这是通过基于在安全启动过程中找到的代码序列的加密哈希创建会话密钥来实现的。这些值使用私钥进行签名,用于板载加密处理器生成的证明。由于 Azure 服务可以基于其数据库中设备的公钥生成相应的公钥,因此它可以使用授权固件验证已启动的设备标识。

  云服务可用于对设备进行身份验证还有其他好处:例如,在 Azure Sphere 下,当发现设备是真实的并运行正确的软件时,会向其提供一个证书,当该证书与其自己的存储凭据结合使用时,可以将其呈现给其他在线服务和设备,以证明设备的身份。该证书的有效期约为一天,这限制了攻击的可能性,并迫使设备定期证明其运行状况,以保持与物联网服务的连接。

  如果设备没有通过安全启动过程,则它无法获得证书,该证书将允许它作为有效的,经过身份验证的系统执行,并将与物联网断开连接。此外,身份验证失败提供了一种纠正这种情况的方法,并且可能允许设备连接到 Azure 服务,以便下载和安装真实且最新的启动映像。这提供了额外的保护级别,以防止利用旧版本正版固件中的弱点的攻击。

  e络盟社区成员罗德里戈·西姆(Rodrigo Sim)将微软冥王星安全子系统描述为Azure Sphere生态系统的基础,并指出冥王星有一个专用的核心,用于加速加密任务,如散列SHA2,椭圆曲线加密(ECC)和AES加密。所有这些都允许 Pluton 为基本操作系统和用户应用程序提供安全启动和远程证明。专用内核还可以控制其他内核中外设的访问。

  虽然对互联网连接的支持现在实际上是许多嵌入式系统设计人员的要求,但所带来的威胁是可以控制的。通过 Azure Sphere 等平台,互联网连接提供了比未连接的设备更强大的解决方案。

  审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分