先来看一张图:
上图较好的阐述了ARM公司物联网操作系统Mbed与Mbed如何联动构成IOT应用示意图图。终端物联网设备上使用MbedOS和Mbed云客户端接口,也可以使用其他嵌入式操作系统。Mbed云端连接、识别、管理整个设备的全生命周期,包括软件升级。服务集成商,则只需要集成API到其SDK中,就可以使用Mbed云服务,运营自己的产品和服务。
那mbed uVisor是什么?
简略的说,是最低级别 mbed 操作系统的监督内核。它可以借助内存保护单元 (MPU) 在 ARM Cortex™-M3、M4 和 M7 微控制器上创建独立的安全域。 我们将这些安全域称为“盒子”。 使用 uVisor 来分割和隔离软件堆栈的敏感部分。
通过mbed 操作系统可为您的应用程序提供一系列安全组件盒子。 然后这些盒子就能提供可信的身份、安全的固件更新、Internet 服务访问权限和受保护的加密密钥,保护您的应用程序免遭漏洞利用程序、病毒攻击和恶意软件的侵害。
https://github.com/ARMmbed/uvisor
如果需要有效防止一个系统组件中的未知错误和BUG,我们需要对系统的各个组件进行关注,但是很多时候,我们无能为力,比如说WIFI连接涉及的大量代码,其产生的攻击面无法核实,因此会对设备安全产生危害,尤其是当堆栈的重要部分往往只有二进制格式BIN文件或者第三方库文件时。
更糟糕的是,可能就无法进行远程恢复常见类型的安全漏洞(攻击者执行的任意代码)。
攻击者可能在目标设备上运行感染更新的代码,从而使恶意软件驻留下来。 即使是通过硬件强制执行的可信根和安全引导加载程序也无法解决这个问题:驻留的恶意软件可以作为拒绝服务攻击的一部分躲过 RAM 和块重置命令或闪存擦除安全运行。
攻击者提取安全密钥的情况也是如此;您将无法安全轮换安全密钥,因为在设备上运行代码的攻击者将会像看明文一样实时看到密钥更新。
如此问题,ARM提出的解决方案是通过硬件强制执行的 IoT 安全性!
为了解决这种情况,我们需要使用 uVisor 来隔绝关键外围设备和大多数代码库,以尽可能减少攻击面。 uVisor 的设计理念是通过使用 Cortex-M 微控制器现有的硬件安全功能来限制对内存和外围设备的访问,从而为各个代码块提供通过硬件强制执行的隔间(沙箱)。
将微控制器的常规平面安全模型划分成区间式的构造块,可带来高级别的安全性,因为可以将安全漏洞或外部攻击的影响范围限制在不太敏感的功能块。 攻击者现在只能危害不受信任的一端(包含应用程序逻辑和通信堆栈),而不会影响保存有基础加密函数和实际密钥的私有端的安全性。 因为私有端现在与攻击高度隔离且很难受到危害,因此可以安全推断出公有端的安全状态。
这是手机终端芯片TrustZone在物联网设备上思想的延伸!
https://github.com/ARMmbed/uvisor-lib
mbed 设备的基本硬件是开发板,其中包含一个 AMR 微控制器。该板可执行少量的处理和数据存储以及通信。还有一些附加组件,可提供更多功能。这些附加组件包括传感器、触摸屏、马达、存储扩展甚至轮式机器人。您编写的软件可控制所有这些组件。
因为板和组件都很小,您可以将其部署到任何地方:家里、车里、工厂里甚至街道上。这就意味着只要您能编写出自己需要的软件,板的可能用途和您的原型几乎都是无限的。
支持 mbed 的板上能运行什么?
mbed 板可运行 mbed 操作系统 - 这是能够以简单、一致的方式控制硬件并与云进行交互的内部操作系统。该操作系统还与其他工具(例如我们的自动测试工具)实现了内部集成。mbed 操作系统上还有您的代码,其唯一的限制是由硬件的处理和存储能力强制执行的代码。