TinyTEE系列之三:TinyTEE与OTA,如何为LPC55Sxx安全远程升级?
北京方研矩行科技有限公司(简称:青莲云)是业界领先的物联网安全解决方案提供商,成立于2016年,具有10年以上企业级安全产品和大规模云计算平台研发及服务经验。
青莲云依托多年来在网络安全领域的攻防实战经验,以及完整的智能硬件产品研发经验,将“安全”与“业务”无缝融合,为企业提供端到端的物联网安全整体解决方案。
本文是TinyTEE系列文章的第二篇,系列文章组成如下:
一《TinyTEE基本功能介绍》
介绍TinyTEE的基本功能及特点、TinyTEE解决了哪些物联网安全风险。
二《TinyTEE与云服务,软硬结合保障物联网设备全链路安全》
介绍如何将TinyTEE与物联网云服务结合,研发高安全等级的物联网产品。
三《TinyTEE与OTA,如何为LPC55Sxx安全远程升级?》
介绍如何将TinyTEE与固件升级功能结合,实现高安全等级远程升级方案。
四《手把手教你使用TinyTEE的安全存储功能》
介绍TinyTEE安全存储功能的方案实现与应用。
五《手把手教你使用TinyTEE的数据加解密功能》
介绍TinyTEE数据加解密功能的方案实现与应用。
1、简介
在使用物联网云服务研发物联网产品时,为了能够及时升级产品功能或者修复产品安全漏洞,研发团队会实现固件远程升级(OTA)功能,针对OTA升级,有很多安全隐患需要解决。
比如固件的完整性。在OTA过程中,从固件的编译生成到上传至云平台,再从云平台下发至设备,整个过程应当保证固件包是完整的,是没有被中间任一个环节修改过的。
另外,固件数据应具保密性。网络传输的过程需要加密,以防止固件在链路上被窃取。
固件还应具备可信性,即不可被伪造。设备在收到云端下发的固件后,应当能够判断出该固件是否是一个合法的、的确是由研发厂家生成的固件,对于不合法的伪造固件应拒绝升级。
最后,设备应当只能将固件升级至高版本,而不能降级。因为老版本的固件可能有安全隐患,如果允许固件降级,可能给黑客可乘之机。
为满足以上4点安全要求,青莲云将设备的OTA功能设计成了TinyTEE中的一个“远程升级 TA”,该TA运行在MCU的安全区域内,为非安全区的CA提供相应的接口。用户不用关心实现细节,只要调用相应接口就能实现一个安全可靠的OTA功能。
TinyTEE的架构图如下:
2、安全引导
在详细介绍OTA操作流程前,我们先来了解一个安全MCU必须具备的安全特性:安全引导(Secure Boot)。
安全引导,顾名思义,就是能够安全、可信的引导用户程序运行的功能。
大部分MCU中都包含一段厂家烧录好的BootLoader程序,这个BootLoader程序一般烧录在只读存储器(ROM)中。ROM的硬件特性是不能被更改,这就保证了BootLoader的可信性。
TinyTEE的安全引导方案如下:
设备上电复位后会先执行BootLoader,BootLoader利用烧录在PFR(Protected Flash Region)中的公钥Hash,对TinyTEE固件中公钥Hash值及证书进行验证,然后利用TinyTEE固件中证书里的公钥对固件进行验签操作,只有验签通过,才能运行TinyTEE,这保证了TinyTEE的完整性与可信性。
接着,TinyTEE会对非安全区的用户固件进行验签操作,同时验证用户固件的完整性,验证通过才会执行用户程序,这保证了用户固件的完整与可信。
整个引导过程利用链式验证电子签名的方式,从根源确保整个系统完整及可信任性。
如果此时有已下载的新版本固件,TinyTEE会比较当前运行的固件与下载的固件版本,如下载版本高,则允许运行新版本固件。
注意:LPC55Sxx芯片开启安全引导后(不可逆),只能通过OTA更新新的固件,无法再进行常规的固件烧录和调试流程了,请读者务必对程序测试完成后,再开启安全引导功能。
3、视频演示
文章出处:恩智浦MCU加油站
|