保护互联嵌入式设备上的数据是当今软件开发人员和架构师的首要任务。似乎每周都会宣布另一个重大数据泄露事件。嵌入式软件开发人员正在迅速获得工具和技术,以设计更安全、更安全的连接设备。开发人员可以使用 ARM TrustZone 技术来保护其设计中的数据,此外还可以通过 Type 1 虚拟机管理程序进行嵌入式虚拟化,通过实时操作系统 (RTOS) 和开源软件将安全数据、连接和实时操作相结合,以充分利用新兴的多核和异构片上系统 (SoC) 架构。
连接设备的功能正在迅速增加,存储在这些设备上的信息或可通过这些设备访问的信息的价值也在迅速增加。我们今天使用的大多数设备都连接到至少一种类型的网络或服务。汽车通常通过蓝牙或移动数据网络连接到设备;便携式医疗设备相互连接,连接到医院网络,连接到云,甚至更远的地方;智能能源网络将电力公司连接到家庭内的众多消费设备。
在多个方面保护数据
在解决如何保护嵌入式连接设备时,首先考虑容易受到攻击的表面区域非常重要。攻击区域因设备而异,但通常,设备越复杂,攻击区域就越大。其次,重要的是要了解当今大多数威胁的目标数据不是为了数据,而是为了操纵数据的能力。第三,通过分层各种安全功能来设计和开发既健壮又安全的设备至关重要。
操作数据
操纵数据的一个例子可能是对算法的攻击,该算法会影响其所依赖的系统操作,例如ATM终端上的银行应用程序或控制设备在汽车内如何工作的参数。在保护数据方面,开发人员需要了解三个关键阶段:静态数据、使用中的数据和传输中的数据。
静态数据最好描述为设备断电时。此阶段的注意事项包括:
可启动映像存储在何处?
是否有用于通知设备是否被篡改的防篡改方法,以及防止其启动到易受攻击状态的方法?
可执行文件是否已加密,或者任何获得访问权限的人都可以删除 EEPROM、转储内存或尝试对应用程序进行反向工程?
使用中的数据是指设备正常运行并生成和处理数据。一些注意事项包括:
混淆方法是否已用于敏感数据?
设备是否在已验证状态下执行?是否建立了信任链?
传输中的数据描述进入或离开设备的数据。一个好的设计应该解决以下问题:
如果数据被劫持,如何保护数据?
加密或隧道协议是否到位?
是否已部署防火墙,拒绝服务攻击的策略是什么?
创建安全层
在保护设备中的层时,您可能会听到“深度防御”或“分层安全性”。无论术语如何,它归结为创建可以防御攻击的安全层,或者至少延迟攻击穿透后续层。分层安全模型可能包括:
策略和程序 – 管理设备访问和使用的规则
物理 - 从字面上看,物理屏障,如栅栏,警卫或锁门
网络 – 确保与外部世界的连接
应用程序 – 确保恶意应用程序不会危及系统
数据 – 确保系统中使用或存储的数据的完整性
在片上系统 (SoC) 中实施的 ARM 信任区技术可用于解决分层安全模型的网络、应用和数据方面问题。
ARM 信任区技术
ARM 信任区体系结构提供了一种解决方案,该解决方案能够划分或隔离完整 SoC 的硬件子集。它通过定义处理器、外设、内存地址,甚至L2缓存区域来做到这一点,以作为“安全”或“非安全”硬件运行。利用 TrustZone 技术的 SoC 能够动态地向安全软件公开完整的 SoC,或者向普通软件公开该 SoC 的子集(图 1)。
图 1:ARM 的信任区技术允许开发人员将 SoC 中的功能指定为“安全世界”或“正常世界”。
由 TrustZone 创建和实施的正常世界(非安全世界)通常是 SoC 的已定义硬件子集。例如,普通世界硬件子集可能包括 UART、以太网和 USB 接口,但不包括控制器局域网 (CAN) 访问。相反,CAN可能专用于安全世界,其中单独的RTOS或应用程序运行的唯一目的是管理CAN流量,独立于正常的世界软件堆栈。
与运行正常世界软件的硬件子集不同,在安全世界中运行的软件可以完全访问所有 SoC 硬件。因此,从安全软件执行的角度来看,系统的外观和行为与没有TrustZone的处理器上看到的几乎相同。这意味着安全软件可以访问与安全和正常世界相关的所有资源。
可信执行环境(TEE)是指在安全世界中运行的软件堆栈,以及允许安全软件与正常世界软件进行交互的通信。TEE软件通常由一个小型微内核和应用程序以及允许安全软件与更大的、以用户为中心的软件(例如Android)进行通信的API组成。其中一个规范定义了一个TEE产品,有些人可能称之为“典型的RTOS”API和功能,以及非常适合TEE用例的其他功能和API。
我们中的许多人经常使用安全世界和正常世界处理而没有意识到这一点。例如,在线购物通常需要用户名和密码。当系统提示输入此身份验证信息时,移动设备(Android 手机、Apple iPad 等)将切换到安全世界模式,在该模式下,数据在安全键盘上输入并在允许发生任何其他操作之前进行安全处理。银行应用程序本身可能完全在安全世界中运行,但设备也可以从安全世界切换到正常世界以访问其他应用程序,例如浏览器,电子邮件或执行其他非安全任务。
保护多核架构中的 SoC
单个基于 ARM 的核心可以执行正常的世界上下文或安全的世界上下文,但是在具有多个内核的 SoC 中会发生什么情况?开发人员可能会遇到多个内核访问同一安全应用程序的情况,这不仅扩展了攻击的表面,而且可能会使代码暴露于难以调试的令人讨厌的计时问题。为了纠正这一点,开发人员可以如图 2 所示配置其设备,其中只允许一个内核执行安全的世界内容。在此设计中,当在任何一个内核上运行的应用程序需要启动安全应用程序时,它必须连接到内核 0,在那里会发生向安全世界的过渡。这将使多核设计更简单、更稳健。
图 2:使用指定的核心 (CPU0) 在多核环境中执行安全的世界内容。
在正常世界中运行一个应用程序并在安全世界中隐藏安全密钥和算法确实很有意义,但不幸的是,它不是很实用。最近出现了一个趋势,即硅制造商正在出货更多的多核部件。在许多设计中,使用了多个操作系统 (OS),这就是 SoC 中的虚拟机管理程序模式和虚拟化扩展变得有用的地方。可以在包含对 ARM 信任区技术支持的虚拟机管理程序之上构建更完整的体系结构。然后,设计人员可以在虚拟机之间对应用程序和外围设备进行分区,同时在安全世界中保护密钥和专有算法。
将它们放在一起
例如,部署在 ARM Cortex-A15 设备上的设计如图 3 所示。在正常世界中,我们有虚拟机管理程序与两个虚拟机一起执行。在正常世界空间中运行虚拟机的两个 Linux 实例被设置为具有内核和驱动程序,以便在内核模式上下文中执行,而用户应用程序则映射到用户模式。TEE 和安全应用程序映射到安全世界空间。目前有许多基于 ARM 的 SoC 处理器围绕 Cortex-A15 架构构建,可以支持这种类型的配置。TI OMAP5 和哈辛托 6 参考平台就是两个例子。
图 3:将虚拟机管理程序整合到 ARM 的正常和安全世界中。
保护连接的设备
连接的嵌入式设备不仅在功能上,而且在它们生成和传输的数据方面都变得越来越丰富。随着这些设备无缝融入我们的日常生活,软件开发人员有责任设计每个新设备,将安全性作为首要关注点。通过使用 ARM 的 TrustZone 技术以及 Type 1 虚拟机管理程序,开发人员可以为 SoC 设计提供强大、强大且安全的基础,以满足我们不断扩展的互联世界的需求。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !