基于TEE的机载嵌入式数据安全技术研究
2024-01-15陈水忠张宗正
张 萌, 陈水忠, 徐 恺, 张宗正
(1.空基信息感知与融合全国重点实验室,河南 洛阳 471000;2.中国航空工业集团公司洛阳电光设备研究所,河南 洛阳 471000)
0 引言
随着嵌入式系统智能化与开放化的发展,飞机业务复杂多变,交互数据从类型、大小、安全等级等方面变得越来越复杂,其面临的数据安全问题和威胁越来越突出,机载嵌入式系统将会面临多个维度的数据安全威胁[1]。
机载嵌入式系统存在多个参与方[2],各持不同的敏感数据,如何在保证数据安全的前提下实现数据的安全存储、传输和使用,对于传统的以加密为主的边界防御是一个巨大的挑战。机载嵌入式系统面临的信息共享风险主要来源于协同场景下的多机协同任务,需要可信执行环境(TEE)的可信隔离特性来增强飞机之间的协同可信能力。
为了提高机载嵌入式系统的安全可信能力,针对机载嵌入式系统高实时要求和硬件资源受限的特点,机载嵌入式数据安全技术的研究主要包括数据存储和数据传输两个角度。从数据存储角度出发,韩康等[3]针对机载计算资源有限的特点,设计了结合加密算法,既减少了数据计算量又保证了数据的安全性;杨世豪[4]提出了一种机载高安全、高可靠的数据存储模块设计方法,保障了数据存储模块的高安全性和高可靠性。从数据传输的角度出发,郝玉锴等[5]选用小体积、高灵活性的嵌入式信号处理架构,基于现场可编程门阵列(FPGA)实现密码算法并对数据进行加解密处理来实现机载信息高效率的安全传输;杨佳等[6]针对数据传输中的网络威胁,提出可应用于核心数据防护的安保技术,从而来保护数据信息的机密性、完整性和可用性这3个安保特性。
以上研究虽然提高了当前机载嵌入式数据的保密性,优化了性能,但是不同任务之间通过各种方式使用数据时隔离性不足,任务的内部管理或错误配置等情况可能会引发相互间的数据窃取或敏感信息泄露,安全防护能力有待加强。陈森浩[7]从保护无人机关键模块安全的角度出发,提出了基于TEE的安全保护方法,从完整性角度保护无人机关键模块的安全,然而,其只针对无人机的动力模块进行了安全保护,无法整体部署于机载嵌入式系统。
为了应对数据安全威胁,基于机载嵌入式系统的特点,本文设计了一个基于TEE的机载嵌入式数据安全模型,包括以下3个模块。
数据加解密模块。解决数据的存储安全问题,并为数据传输安全模块和数据使用安全模块提供加密基础功能,基于TEE的保护机制,采用轻量化的数据加密算法,提高了加解密效率,节省了软硬件资源。
数据传输安全模块。负责保证数据在传输过程中的安全,并为数据使用安全模块提供必要的传输功能,基于传统的密钥协商算法,在TEE中部署签名验签程序,防止传输中的窃听和篡改风险。
数据使用安全模块。基于TEE的隔离性质,从硬件到软件实现了多级的敏感信息防护,重点对机载嵌入式系统中的敏感数据和关键接口进行隔离防护,防止数据使用过程受其他非法程序或任务干扰,保证了数据和任务的隔离性。
基于TEE的机载嵌入式数据安全模型保证了机载数据的安全以及关键模块的隔离,从3个维度保证了机载数据的安全,并进行了系统测试与验证。相较于以往安全防护技术,该模型安全性高、实时性较好,能更好地保护机载嵌入式系统中的敏感数据。
1 基于TEE的机载嵌入式数据加解密模块
1.1 基本设计思路
传统的数据加解密算法中,非对称加密算法复杂度高、安全性高,但计算量大,对算力的需求高,而对称加密算法则与其相反。为了在保证加解密效率的前提下解决机载数据存储安全问题,本文设计一个基于TEE的机载嵌入式系统数据加解密模块,其基本设计思路为基于TEE的隔离环境保证安全性,将传统的非对称加密算法RSA轻量化更换为对称加密算法:由通用执行环境(Rich Execution Environment,REE)到TEE的访问控制机制配合高级加密标准(Advanced Encryption Standard,AES)共同完成数据加解密。AES算法的密钥长度设为128 bit,模型设计结构见图1。
图1 数据加解密模块
REE对TEE通过硬件评估发起调用,随后完成AES加密,将密文返回给REE侧的应用程序。由于AES对称加密的特性,解密流程刚好为加密的逆操作,该操作包含密文分组、逆列混淆、逆行移位、逆字节替换和去除填充。解密后,TEE同样经由共享内存将明文返回给REE侧应用程序。
1.2 原理分析
1.2.1 安全性
通用执行环境中,机载嵌入式系统不同任务之间缺少隔离性,使用AES算法或非对称加密算法(RSA)生成的密钥可能被其他任务非法窃取。其中,RSA虽然一定程度上避免了对称加密直接传递密钥所造成的被破解的风险,但在混合执行环境中,RSA依然存在私钥被窃取的风险,因此,需要部署基于TEE的加密算法来保护密钥。在图1中,加解密用到的密钥在TEE的隔离环境中受到保护,访问AES加密模块只能通过特定的调用流程,保证了密钥的安全性。由此可以认为,基于TEE的AES算法的安全性不低于RSA。
在物理实验的操作中,因为各方面的原因,出现数据偏差,实验现象与教材不符的几率非常的高,这些都是无法避免的。教师不应该“讳疾忌医”,而应该正视这些“意外”,在课堂上巧妙的应对实验误差和失败。当实验操作过程中,出现与课本不符的内容时,教师要改变既定方案,利用差错,生成更高价值的教学资源,培养学生的科学精神和科学态度。
1.2.2 性能
从时间复杂度来说,AES算法的轮数是固定的,因此,AES算法的加密和解密过程都具有恒定的时间复杂度O(N)[8],N为数据块的大小,而RSA的加密和解密过程涉及大素数的幂模运算,在解密过程中会使用较大的私钥,幂指数大导致幂模效率必然很低[9],其加密和解密操作的时间复杂度可以近似表示为O(log3N)[10]。相同的时间条件下,AES算法解密的文件大小是MiB级,而RSA解密的文件大小只有KiB级,两者解密速度差异较大。
从REE到TEE的访问调度时间受到硬件(处理器性能、TEE的实现方式)和软件(可信软件基、通信开销)等影响,通常来说,对于1 MiB以下的数据传输,TEE的访问可以达到ms级的响应时间,远小于对数据进行一次加解密的时间。
综上,本文算法省去了占用时间和资源较大的非对称加密算法,用REE和TEE之间的调用和数据传递,实现了加解密的轻量化,随着数据量的增大,本文算法与传统RSA加密时间差距越来越明显,时间复杂度比值为O(N)∶O(log3N)。由于TEE安全隔离的特性,数据加解密模块同时还保证了AES算法最薄弱的密钥传递环节的安全性。解密时,REE侧用户必须先通过同样的路径申请进入TEE,对加密数据进行解密,足以保证整个加解密流程的安全性。
2 基于TEE的机载嵌入式数据传输安全模块
2.1 设计思路
传统的数据传输流程包括建立连接、密钥协商、数据传输3个部分,而对于机载嵌入式系统,其模块内部的数据传输通常不需要考虑建立连接的过程,因此本文主要完成密钥协商和数据传输两个模块的设计。
密钥协商机制是使得通信双方共同建立会话密钥的机制,并且能够规避数据传输过程中被偷窥的风险。密钥协商的实现方法有很多种,包括:1) 依靠非对称加密算法的密钥协商;2) 依靠通讯双方事先已经共享的“秘密”;3) 依靠专门的密钥协商算法。其中:方法1)生成密钥的时间过长;方法2)不适用于机载平台。因此,本文将从Diffie-Hellman密钥交换协议(即D-H算法)入手,为保证传输全流程安全隔离,结合TEE完成密钥协商模块的设计,以保证传输安全。
D-H算法可以在传输双方没有对方预先信息的条件下通过不安全信道创建一个密钥。本文设计了基于TEE机制的平台数据传输安全模块,如图2所示。
图2 数据传输安全模块
图2中,密钥协商算法沿用传统的D-H算法,加密的双方基于自己的私钥生成公钥,加密方用私钥加密,解密方用公钥解密。
2.2 原理分析
传统的D-H算法虽然能防止嗅探者监视网络传输,但是面对中间人攻击(假冒身份篡改)则还需要结合RSA等非对称加密算法进行签名和验签。为了保证签名验签过程的安全统一,本文基于TEE的隔离机制,将RSA签名验签的两个程序部署于TEE中,利用硬件提供的数据加密与隔离执行能力保证了其隔离性。具体分析如下。
设通信双方为A和B,双方共享信息为p和q两个质数(2≤q≤p-1),通信前,A产生一个私有的随机数PA(1≤PA≤p-1),B产生一个私有的随机数PB(1≤PB≤p-1),A计算中间密钥YA=qPAmodp并将其通过公网发送给B,B计算中间密钥YB=qPBmodp并将其通过公网发送给A,根据中间密钥,A计算得出最终密钥KA=(YB)PAmodp,B计算得出最终密钥KB=(YA)PB·modp,KA=KB。
在此过程中,假设存在一个第三方C,C可以从公网窃听到的内容为p,q,YA,YB,由于TEE的隔离性,随机数PA和PB均无法获取,因此双方的公钥KA,KB也无法计算;此外,C可以作为中间人伪造公钥K并发送给A,B双方,但是A,B双方在开始通信之前需要调用TEE中的RSA验签程序,中间人C伪造RSA的签名较为困难,因此可以认为A,B之间的通信不会受到中间人C的影响,本文方法可以保证嵌入式系统数据传输过程中较高的安全性。
因此,本文方法通过密钥协商防止了数据在传输环节被窃取、窃听,通过部署于TEE内部的签名验签程序防止了传输过程中的完整性破坏。
3 基于TEE的机载嵌入式数据使用安全模块
3.1 设计思路
在数据从产生到销毁的全生命周期中,数据使用安全是当前机载嵌入式数据安全中最薄弱的环节。主要体现在使用者身份和使用环境安全性难以保障,需加强安全性防护。基于以上背景,本文设计基于TEE的机载嵌入式数据使用安全模块,如图3所示。
图3 数据使用安全模块
图3中,TEE与REE之间通过硬件和软件隔离,REE无法访问受硬件保护的TEE内存,位于REE中的用户应用(Client Application,CA)只能通过特定的入口与TEE中的可信应用(Trusted Application,TA)进行通信。
在一次完整的交互流程中,CA首先调用客户端API接口(Client API)触发系统调用,进入REE的操作系统内核态,根据CA调用的参数找到对应的REE驱动程序,REE驱动程序通过调用SMC汇编指令进入Monitor模式,并将处理器切换到安全内核状态,进入安全模式。切换进入TEE以后,CA的服务请求通过总线传到TEE侧,然后TEE OS通过TEE Internal Core API调用对应的TA,最后TA运行结束后将运行结果和数据返回给CA(图3中实线部分)。数据使用完毕,回到TEE内核态调用SMC汇编指令,进入Monitor模式使系统回到REE环境(图3中虚线部分)。
3.2 安全性分析
TEE针对机载嵌入式系统中的关键任务数据和资源访问接口等敏感信息进行隔离保护。作为对比,本文以目前常见的机载嵌入式操作系统VxWorks 653为例,其操作系统架构模型如图4所示。
图4 VxWorks 653操作系统架构模型
常规场景下,核心操作系统使用ARINC653规范中的时间抢占调度(TPS)来调度分区,同一个处理器上,每个区具有独立的分区操作系统和资源,通过禁止对超过分区的内存区域的写访问来确保内存分区。分区间消息的传递由核心操作系统统一管理,通过消息、端口或通道实现,端口与通道的对应关系通过 XML 配置文件进行映射[11]。
由于VxWorks 653中分区是基于同一个处理器上操作系统的分区,核心操作系统一旦受到攻击(例如在分配分区内存时篡改配置的XML表),就会导致分区应用之间均可通过核心操作系统获取对方的漏洞,由此实现获取分区属性,修改分区模式、状态等操作。
而本文设计的数据安全使用模块从硬件层面进行隔离,REE侧的CA应用要访问关键数据只能通过隔离于TEE内部的资源访问接口,真正做到了数据的可用不可见。
综上,基于TEE的隔离技术可以阻止任务间的非法入侵与数据窃取,确保多方数据使用者可以在隔离的环境中对各自的数据可用不可见。
4 仿真实验及分析
本文通过仿真对基于TEE的机载嵌入式数据安全模块进行仿真测试,测试平台处理器为基于ARMv8指令集的飞腾FT2000/4,基于飞腾固件实现上层操作系统。其中:TEE操作系统为Ubuntu18.04,在内存中的地址空间为0x8000000-0x8100000,配置密码模块加密TA、传输模块签名验签TA、使用模块安全可信TA等应用;REE操作系统为PBTEE_OS,在内存中的地址空间为0x8100001-0xfffffff,配置传输模块密钥协商CA、仿真测试CA等应用。
4.1 数据加解密模块性能测试
本文设计的数据加解密模块在功能上可以保证加解密过程的安全性,在效率方面则是延长了REE与TEE之间调用信息的传递时间,提高了加解密算法的运算速度。对于整个加解密过程,包含数据传递的时间和数据加解密的时间,因此,本文主要通过总时间的消耗完成加解密效率的对比,对比的对象为没有TEE保护的RSA加密算法。
设置的单个数据包大小为16 B到16384 B不等,测试不同算法在3 s内加解密的次数,统计如图5所示。
图5 加解密性能对比
由图5可见,虽然本文算法在处理16 B的数据包时单位时间内加解密效率不如RSA,但是随着单个数据包大小的增加,从64 B开始,本文算法在3 s内的加密次数(328)就超过了RSA的加密次数(232),随着数据包大小变大,本文算法表现较为稳定,对于16 KiB的数据包,3 s内也能完成94次加解密,而在此种条件下RSA只能完成1次加解密,证明了本文算法的有效性。这是因为,AES算法的加解密时间复杂度约为O(N),而RSA的加密时间复杂度约为O(lbN),解密时间复杂度约为O(log3N),随着单个数据包的增大,RSA的执行效率越来越低。
本文算法的效率损失主要来自于TEE与REE之间数据传递的时间消耗,而这部分数据传输的效率主要受制于TEE架构本身,经过实验验证,基于本文框架完成的REE与TEE之间的数据传输时间为ms级,且数据传输的效率随着单个数据包大小的提高而有所提升(详见4.2节测试结论),因此,从整体效率上,对于较大数据包的加解密,基于TEE的AES加解密模块效率损失更少,优势更明显。
4.2 数据传输安全模块性能测试
在数据传输安全模块中,本文使用了REE侧密钥协商+TEE侧签名的双重安保机制,在安全性上相较于传统的密钥协商有了较大提升,效率上则造成了一定的损失。
本次测试设定3 s为一个周期,测试3 s内传输的数据总量,测试结果如表1所示。
表1 两种算法3 s内数据传输总量对比
测试结果如图6所示。
图6 数据传输效率对比
根据测试可见,本文算法在保证安全性的前提下,3 s内传输的数据总量相比传统的密钥协商算法略微有所减少,随着单个数据包大小变化,减少的幅度为2%~6%不等,经过分析得知,随着数据包大小的提升,在总数据量不变的前提下,REE与TEE之间的访问传输次数减少,数据传输的效率有所提升,本文算法与传统的密钥协商算法在效率上差距有所减小,因此可以得出结论,本文算法能够在不影响机载嵌入式系统完成常规任务的前提下,保证传输过程中的安全性。
5 结 论
本文基于TEE技术对机载嵌入式数据安全技术展开研究。基于TEE,从3个数据安全的方向设计并实现了数据安全保护模块,将TEE技术与传统的数据加解密、数据传输、数据使用有机地融合在一起。首先基于TEE的隔离性实现了轻量级数据加密算法,然后在传统的D-H算法的基础上加入TEE的签名,最后借助TEE实现整个运行环境的安全可信,保证数据与接口在使用过程中的安全性。实验证明本文算法的有效性,在保证效率的前提下,提高机载数据安全能力,能够保证机载嵌入式系统在安全可靠的前提下如期完成任务。