对于许多物联网应用程序,安全漏洞的代价是攻击者可以访问物联网网络以及跨其安装的设备。这可能会导致智能家居中的隐私丢失、数据泄露和设备的潜在滥用。然而,在商业、工业和医疗应用中,风险可能要高得多。在商业应用中,对手可能会在非工作时间打开HVAC系统,并导致能源成本显着增加。在工业环境中,用于管理库存的机械臂可以在其预期工作空间之外运行,从而危及附近的工人。受损的医疗设备对患者可能是致命的。
实现安全性的一个基本要素是采取整体方法,不仅确保整个系统受到保护,而且确保每个单独的设备(以及具有该设备的子系统)也受到保护。考虑一下系统中通过第三方库编写的大多数代码是由外部供应商编写的现实。换句话说,典型的物联网设备依赖于数百万行代码 - 操作系统,固件,堆栈,库,中间件等 - 不是由制造商编写的。
如图 1 所示,所有这些代码都编译为 MPU 中的单个整体式应用程序。这意味着所有这些不同的代码功能块共享相同的 MPU 硬件资源。特别是,这些块共享相同的内存。
如果没有内存管理单元 (MMU) 和物理内存保护 (PMP) 等集成硬件机制,系统中的任何功能块都可能导致系统崩溃。同样,错误的代码可能会写入另一个功能块使用的内存,最终可能导致灾难性的系统故障。
如果您正在构建嵌入式物联网系统并使用 Linux 作为其庞大生态系统的首选平台,那么您有 17+ 百万行代码可供您的 Linux 内核选择。这是相当多的代码,假设是没有错误的,即使在开源环境中也是如此。设备中包含的每个软件子系统都必须没有错误。当您不能假设自己的代码没有错误时,您如何假设您所依赖的每个第三方供应商都有无错误的代码?
比必须信任系统中的所有软件更好的是拥有一个平台,其中一个功能块根本无法影响其他功能块。这需要一种将安全性深深嵌入硬件本身的设计方法。一个功能不会影响系统中的其他功能,因为硬件不允许这样做。
这是多区域安全性的核心。每个功能块都与其他功能块严格分离。由于这是在硬件层强制执行的,因此软件无法破坏保护层 - 无论是通过开发人员错误还是故意黑客攻击。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !