TinyTEE系列之四:手把手教你使用TinyTEE的安全存储功能
本文是TinyTEE系列文章的第四篇,系列文章组成如下:
___________________________________________________________
一《TinyTEE基本功能介绍》
介绍TinyTEE的基本功能及特点、TinyTEE解决了哪些物联网安全风险。
二《TinyTEE与云服务,软硬结合保障物联网设备全链路安全》
介绍如何将TinyTEE与物联网云服务结合,研发高安全等级的物联网产品。
三《TinyTEE与OTA,如何为LPC55Sxx安全远程升级?》
介绍如何将TinyTEE与固件升级功能结合,实现高安全等级远程升级方案。
四《手把手教你使用TinyTEE的安全存储功能》
介绍TinyTEE安全存储功能的方案实现与应用。
五《手把手教你使用TinyTEE的数据加解密功能》
介绍TinyTEE数据加解密功能的方案实现与应用。
___________________________________________________________
1、简介
物联网产品研发过程中,可能需要将一些重要数据持久的保存在flash中。
比如我们在本系列第二篇《TinyTEE系列之二:软硬结合保障物联网设备全链路安全》这篇文章中提到过,每个物联网设备都有一个唯一的“数字证书”来证明自己的合法身份,云端只为合法设备提供服务,这个“数字证书”一般在出厂前写死在设备中,是不能泄露的,不然会有伪造设备上传非法数据的风险。
再比如,给我们生活带来极大便利的智能门锁,用户无需随身携带钥匙,用APP生成一个密码就可以开锁了。在门锁端,开锁密码的生成一般与用户的用户ID、用户口令以及本地系统时间相关。用户ID与用户口令是非常敏感的数据,如何保证它们能安全的存储于芯片中,关系到整个智能门锁方案的安全等级。
以上两个例子中的数据,数字证书、用户ID、口令,当然不能明文存储于flash中。那么,能否对它们进行加密,然后再保存至flash中呢?也不能,这样对加密密钥的存储又成了问题。
安全存储是TinyTEE提供的一项基础且重要的功能,为用户提供一个安全存取数据的方式,可以用来保存密钥、隐私信息、敏感数据等内容,用户不用关心“怎么存”、“存在哪”等实现细节,只要调用相应接口就能轻松实现密钥的生成与管理,数据的加密与存储。
2、GP规范
GlobalPlatform(GP)是一个跨行业的国际标准组织,致力于开发、制定并发布安全芯片的技术标准,其工作重心主要集中在安全单元(SE)、可信执行环境(TEE)和系统消息(Mobile Messaging)等领域。GP规范规定了TEE解决方案的架构、接口、使用流程,无论是安全区还是非安全区,函数、参数、数据类型与结构体都有明确的定义,开发者可以使用这些规定的统一标准开发实际应用,由于标准统一,开发好的应用可以运行于不同的TEE解决方案中。
TinyTEE中安全存储的接口遵循GP规范开发,支持的接口如下:
3、安全存储
TinyTEE的安全存储模块帮助用户实现了密钥的生成与管理,数据的加密与存储功能。在生成密钥时,首先利用LPC55SXX系列的PUF生成HUK,由于PUF具备不可克隆特性,由其生成的HUK具有每个芯片独一无二的特点;接着使用芯片ID和HUK经HMAC算法计算得到SSK,SSK在每个芯片中也不同;最后使用SSK和TA的UUID经HMAC算法计算得到TSK,每个TA拥有不同的TSK,密钥生成方式及关系如下图:
用户基于不同TA调用安全存储接口存储重要数据时,安全存储模块会利用不同TA的TSK对数据进行AES加密,接着将加密后的数据存储于芯片非安全区flash中的文件系统中,加密及存储过程如下图:
4、视频演示
5、名词解释
PUF(PhysicalUnclonable Functions)物理层防克隆功能
HUK(Hardware Unique Key) 硬件唯一密钥
SSK(Secure Storage Key) 安全存储密钥
TSK(Trustedapp Storage Key) 可信应用存储密钥
HMAC(Hash-based Message AuthenticationCode)哈希运算消息认证码
文章出处:恩智浦MCU加油站
|