TinyTEE系列之五:手把手教你使用TinyTEE的数据加解密功能
本文是TinyTEE系列文章的第五篇,系列文章组成如下:
一《TinyTEE基本功能介绍》
介绍TinyTEE的基本功能及特点、TinyTEE解决了哪些物联网安全风险。
二《TinyTEE与云服务,软硬结合保障物联网设备全链路安全》
介绍如何将TinyTEE与物联网云服务结合,研发高安全等级的物联网产品。
三《TinyTEE与OTA,如何为LPC55Sxx安全远程升级?》
介绍如何将TinyTEE与固件升级功能结合,实现高安全等级远程升级方案。
四《手把手教你使用TinyTEE的安全存储功能》
介绍TinyTEE安全存储功能的方案实现与应用。
五《手把手教你使用TinyTEE的数据加解密功能》
介绍TinyTEE数据加解密功能的方案实现与应用。
1、简介
在互联网的世界中,我们在购物网站购物、用社交软件聊天、工作中收发邮件都需要进行身份登录认证,并且我们的密码、交易信息、聊天及邮件内容都是经过加密处理后才在网络上传输的。
物联网世界也是如此,我们现在可以通过手机APP控制许多智能硬件了,小到一个智能灯泡,大到冰箱、洗衣机、智能汽车,这些硬件在连接云平台后也要做身份登录认证,APP对他们控制时的数据也要做加密处理。
那么认证与加密处理是如何实现的呢?其实有几种密码算法为我们解决了这些问题。
加密解密很好理解,数据发送方使用密钥将一串明文数据进行加密运算,将运算后的密文发送给接收方,如果没有准确的密钥,是无法通过密文反向推算出明文的。接收方使用密钥解密,可以得到明文。
加解密算法可以分成两种,对称算法和非对称算法。对称算法指的是通信双方使用相同的密钥进行加密和解密,DES、3DES、AES均是对称算法;非对称算法指的是通信双方使用不同的密钥进行加密和解密,如RSA、ECC等。
字签名算法可用来对联网设备、数据做“签名”,发送端持有私钥,接收端持有公钥,发送端利用私钥对数据“签名”处理,接收端收到后利用公钥对数据做“验签”处理。私钥只有签名者自己知道,其他人不可能构造出正确的私钥,如果接收端“验签”通过,那么一定是合法的发送端发来的数据。
“签名”后的信息可用于做信息认证,TinyTEE中安全启动的bootloader会验证固件的合法性,其中就用到了数字签名算法,只有经过有效私钥签名的固件才是合法固件,私钥由固件开发者保存,不可泄露。常用数字签名算法包括RSA、DSA、ECDSA等。
单向散列函数可根据数据内容计算出其对应的散列值,无论数据是1比特,还是100MB、100GB,单向散列函数都可以计算出一个固定长度的散列值。源数据中如果有一个比特位发生变化,则计算出的散列值也会发生巨大变化。
向散列函数可用于验证数据的完整性,发送数据时将源数据及对应的散列值一同发送给接收端,接收端可以通过单向散列算法验证数据是否被篡改。常用的单向散列算法包括MD5、SHA等。
随机数生成算法的作用在整个密码学中非常重要,几乎处处需要用到,比如生成密码、生成密钥对、生成密钥等。良好的随机数生成算法需要具备随机性、不可预测性及不可重现性3个特点。
随机性指的是生成的随机数序列是杂乱无章的;不可预测指即使知道过去所有的随机数序列,依然无法预测下一个生成出的随机数;不可重现指的是除了将这次的随机数列保存下来,没有任何办法重现该数列。这三种特性越往后,对算法的要求就越严格。
物联网应用方案中,我们常常以为“安全=加密”,通过以上各类密码算法功能的分析我们可以知道,只为数据做加密是远远不够的,只有将各类密码学算法结合使用才能实现完整的安全解决方案。
2、TinyTEE的加解密功能
TinyTEE加解密功能就是为用户提供一套完整的“密码学工具箱”,这个“工具箱”提供对称加解密算法、非对称加解密算法、单向散列函数、数字签名算法、真随机数生成算法给用户使用。用户不用关心实现细节,直接调用标准的接口即可。
其中签名、验签、密钥交换等需要做椭圆曲线计算的算法由于需要进行大数运算,在低资源芯片上用软件实现运行速度非常慢,而基于LPC55SXX系列处理器的密码学硬件加速器CASPER,TinyTEE可以提供相比软件实现快4-8倍的硬件非对称算法,这极大提高了非对称运算的运行效率。
另外,对于随机数生成算法,仅靠软件是无法生成具备不可重现性的随机数列的,因为运行软件的处理器本身具备有限的内部状态,内部状态相同时,软件必然只能生成相同的数。TinyTEE基于LPC55SXX系列提供的硬件真随机数生成器对外提供随机数接口,保证了随机数的随机性、不可预测以及不可重现性。
下图是TinyTEE基于LPC55SXX系列处理器实现的加解密框架:
3、支持接口
TinyTEE中数据加解密的接口遵循GP规范开发,支持的接口如下:
4、视频演示
文章出处:恩智浦MCU加油站
|