搜索
写经验 领红包
 > 情感

为物联网设备选择一颗“安全”的MCU

如今,已遍布我们生活中,常见的连接到物联网的设备包括路由器,打印机,恒温器,冰箱,网络摄像头以及由人工智能驱动的家庭自动化控制中心,智能锁,智能手表等,随着连接的设备数量越来越多,我们面对的物联网威胁隐患就越大,除了使用软件的防护之外,依靠基于硬件的防护开始被许多厂商重视。

和常规MCU控制器相比,LPC5500系列(LPC55S69)的性能有了显著提升,最值得一提的就是它的安全性:

为物联网设备选择一颗“安全”的MCU

在一个物联网设备中,除了传感器子系统、执行子系统、用户交互子系统,还需要一个完备的安全子系统,如下图:

为物联网设备选择一颗“安全”的MCU

这个安全子系统可以划分为四个层次:

作为基础的密码模块和可信根,这是所有其它安全机制的基础。

调试安全,用于保障开发调试期间的安全和代码本身的安全。

运行时安全机制,能够确保在系统运行期间抵御外部的攻击。

物理安全层,则着重在物理层面保护系统,防范各种物理攻击。

通过以上层层防护,以期望协助产品实现更高系统安全性。在这里,我们重点给大家分析LPC5500系列4大基础安全防护特性:安全启动、TrustZone、PRINCE和PUF。最先的是提供信任根基的安全启动,然后是能将用户工作区隔离成安全和非安全区域的TrustZone,接着是能提供在线加解密代码的PRINCE,最后是保障密钥存储安全的PUF,像安全启动和PRINCE等都需要进行密钥的存储。

01安全启动机制

在一段代码中嵌入密码学哈希算法、加解密算法和签名验签算法功能。在开机上电或任何需要时,就利用密码学算法对安全区程序代码进行检查,认证通过后才能执行这些代码的功能。在系统未开机期间,如果可执行的代码被恶意篡改了,整个系统就会面临巨大的风险,这是芯片的物理安全范畴,不在本文讨论。如果安全启动机制被破,那么其他所有的密钥、加解密设施、TrustZone的划分等,他们的可靠性都将受到影响。

使用LPC55S69的安全启动,需要PC配置工具的协助,在NXP SDK下的目录:.\middleware\mcu-boot,可以找到。

安全启动步骤如下:

为物联网设备选择一颗“安全”的MCU

02 TrustZone

Arm Cortex-M33中一个可选的以硬件实现的安全隔离机制,而使用Arm Cortex-M33内核的LPC55S69中就带有这个硬件功能。TrustZone技术将CPU的运行分为安全和非安全两种状态,由特定的指令使CPU在两种状态之间切换:

为物联网设备选择一颗“安全”的MCU

CPU在安全状态时,只能运行处于安全存储区的代码以及可以访问安全存储区和非安全存储区的数据;

CPU在非安全状态时,只能运行处于非安全存储区的代码以及只能访问非安全存储区的数据。

为物联网设备选择一颗“安全”的MCU

简单,如果是admin用户登陆,TrustZone会认为安全状态,可以管理各类资源权限。而如果是普通用户登陆,TrustZone会认为非安全状态,只能有通用访问权限。

NXP提供了TrustZone配置工具,有以下特点:

1)图形化的配置工具

2)配置存储、总线、外设的访问策略

3)直接输出C代码

4)解决所有冲突与对齐的问题

03 PUF

PUF(Physical Unclonable Functions)是物理不可克隆功能的缩写。对于安全应用,密钥管理机制至关重要。在传统的通用MCU中,最普遍的做法是将密钥的明文存储在片内的OTP或者Flash中。但实际上,攻击者只需要通过比较低的代价($200-$5000)就能从片内OTP或者Flash中获取到密钥。

LPC5500内置的PUF是SRAM PUF。由于SRAM的硅结构特征,每个芯片的SRAM的数字特征都是独一无二的,因此每个芯片中读出的内容也是独一无二的。

即使是NXP,也不可能制造出两颗数字特征一模一样的SRAM PUF。所以,我们称芯片内SRAM的独一无二的数字特征为芯片的指纹。利用芯片的指纹,就可以生成根密钥和储存所需的密钥。

04 PRINCE

一般情况下,我们的程序和数据都是以明文的形式存在于Flash中的。如果通过剖片或者其他技术可以很容易读出Flash里面的内容。这就让我们的程序和数据暴露无疑,技术得不到保护,很容易被他人盗用或者模仿。而有了PRINCE,就可以解决这个问题。

PRINCE是位于CPU和存储器之间的加解密引擎,能够在CPU从代码存储器读取可执行指令时,实时地进行解密;也能够在烧写Flash时,对烧录内容进行实时加密。由于是纯硬件的实现,PRINCE不影响CPU运行效率。

为物联网设备选择一颗“安全”的MCU

PRINCE的密钥是由片内的PUF管理,软件无法读取,掉电之后密钥自动消失,进一步保障了密钥的安全。

总结:

LPC55S69四种安全机制从不同层次保证了系统安全可靠的运行:

1)安全启动机制保证了芯片执行的程序是可靠的,未经过篡改的,是其他安全机制的最基础保证;

2)TrustZone让系统被隔离为安全区和非安全区,识别不同的人执行不同的代码,有效防止重要代码被公开;

3)PUF为每片芯片生成独立的芯片身份证号,保证了系统中所有密钥的安全;

4)PRINCE保护flash中代码的安全,即使代码被恶意获取,得到的也是一堆乱码。

以上说的是产品或系统已经上线运营之后,LPC55S69所提供的安全保护。其实在系统调试、更新等多个阶段,LPC55S69都在保护系统的安全,比如安全调试机制——可以保证在调试阶段的系统安全;安全更新机制——在设计实现结束后,能够根据应用要求进行一定升级修改,节省开发时间成本;安全标准外设——是有特殊设计的非常推荐配置于安全域的某些标准外设,可以协助更安全的系统资源隔离。