TinyTEE系列之二:TinyTEE与云服务,软硬结合保障物联网设备全链路安全
北京方研矩行科技有限公司(简称:青莲云)是业界领先的物联网安全解决方案提供商,成立于2016年,具有10年以上企业级安全产品和大规模云计算平台研发及服务经验。
青莲云依托多年来在网络安全领域的攻防实战经验,以及完整的智能硬件产品研发经验,将“安全”与“业务”无缝融合,为企业提供端到端的物联网安全整体解决方案。
本文是TinyTEE系列文章的第二篇,系列文章组成如下:
一《TinyTEE基本功能介绍》
介绍TinyTEE的基本功能及特点、TinyTEE解决了哪些物联网安全风险。
二《TinyTEE与云服务,软硬结合保障物联网设备全链路安全》
介绍如何将TinyTEE与物联网云服务结合,研发高安全等级的物联网产品。
三《TinyTEE与OTA,如何为LPC55Sxx安全远程升级?》
介绍如何将TinyTEE与固件升级功能结合,实现高安全等级远程升级方案。
四《手把手教你使用TinyTEE的安全存储功能》
介绍TinyTEE安全存储功能的方案实现与应用。
五《手把手教你使用TinyTEE的数据加解密功能》
介绍TinyTEE数据加解密功能的方案实现与应用。
1、简介
在使用物联网云服务研发物联网产品时,我们要考虑很多安全问题。
其中最重要的就是设备的身份认证。设备连接云平台后的第一件事,就是身份认证,只有设备与云端进行双向身份认证,才能保证两端的合法性。云端应当只为合法设备提供服务,不能随意伪造一台设备就连到平台上;设备也应当只能连接到合法的云平台上,不能随意向其他平台发送敏感、隐私的信息。
身份认证其实就是物联网方案中设备与云服务互相证明“我是我”的技术手段,那么该如何证明“我是我”呢?
在现实生活中,我们使用国家颁发的身份证证明“我是我”。我们默认一个人拥有一张身份证,如果身份证上的照片和这个人一致,那么就能证明这个人的身份,他是一个合法公民,能够享受国家公民权利。
物联网世界中其实也一样,每个设备也有一张唯一的“身份证”来证明它的合法身份,只不过我们不叫它身份证,而是称之为“数字证书”,数字证书是一个物联网设备的唯一合法标识,拥有数字证书的设备,也就具备了合法性与唯一性。
另外一个非常重要的问题,是网络链路数据的保密性。我们知道,所有的网络数据在网络空间中随时都有被窃听、抓取的风险,如果物联网设备传输的数据内容包含金融、个人或企业隐私、商业版权信息等重要数据,则方案中数据的保密通信设计尤为重要。在通信过程中,从设备端到云端这个端到端链路上的数据应只传输密文,设备的密钥不应在网络上传输,并且对密钥要妥善保管、定期更新。
青莲云利用LPC55SXX系列芯片的部分安全特性,将设备的身份认证、密钥协商等功能,设计成了TinyTEE中的一个“身份认证TA”(Trusted Application),该TA运行在MCU的安全区域内,为非安全区的CA(Client Application)提供相应的接口。
用户不用关心实现细节,只要调用相应接口就能实现身份的合法认证、传输数据的加密处理。
TinyTEE的架构图如下:
2、实践操作
2.1 Demo说明
我们提供了一个设备与云端建立连接并传输模拟数据的Demo,可到青莲云的官网下载。
Demo中的大部分代码都在Non-Secure (非安全)区域执行,而涉及到身份认证、密钥存储、数据加解密、Flash写入等较为敏感的代码和数据,则在 Secure (安全)区域执行和存储。Secure和Non-Secure两个区域之间的调用通过TEE (可信执行环境) 接口完成。
在Non-Secure区域中,SDK的使用和我们支持的其他平台版本基本一致,具体请参考Demo中的接口文档。使用上的差异主要有以下几点:
LPC55S69平台上产品密钥存储于Secure区域,数据的加密、解密也都在Secure区域进行,保证了密钥的安全性;
LPC55S69平台Demo已将OTA功能完整实现,便于用户直接使用;
LPC55S69需通过外接WiFi模块接入网络,为此SDK增加了对ESP8266 AT固件模块的支持。
同时,当前版本的SDK在使用时有如下限制:
Flash和RAM的Secure和Non-Secure区域划分不可更改;
UART0在Secure初始化,UART2在Non-Secure初始化 ,需要修改对应的权限(本demo中已经修改,详情请使用MCUXpressoConfig Tools 软件配置修改)
流控配置必须为WIFI_ESP8266_FLOW_CONTROL_TYPE_RTS_ONLY,详情请看初始化代码。
2.2 Flash和RAM空间划分
当前版本的SDK对LPC55S69的Flash空间划分如下图所示,Secure区域大小为64KB, Non-Secure区域大小为542KB。
Non-Secure区域中含有当前使用的非安全区固件(称为active固件)、新下载的非安全区固件或备份的升级前旧版本非安全区固件(称为stored固件)、固件信息以及本地存储这4个部分。各部分的起始地址和大小如下表所示:
RAM空间划分如下表所示,Secure区域大小为32KB, Non-Secure区域大小为 = 172KB。(可根据具体情况自行修改)
在使用当前版本SDK时,这些区域的划分都应和Demo项目的默认配置一致。
2.3 视频演示
文章出处:恩智浦MCU加油站
|