APP下载

基于VTCM的分布式可信度量方法

2020-08-19何旺宇王中华李亚晖

计算机工程 2020年8期
关键词:插件嵌入式分布式

何旺宇,王中华,李亚晖

(1.中国航空工业集团公司西安航空计算技术研究所,西安 710065; 2.机载弹载计算机航空科技重点实验室,西安 710068)

0 概述

随着信息技术的高速发展,嵌入式系统被广泛应用于工业、交通、军事以及航天等领域[1],成为国家基础设施与武器装备的重要组成部分。嵌入式计算机作为执行命令的重要单元,容易受到信息攻击,面临着病毒入侵、木马注入、内部人员非法操作等多种安全问题[2-4],因此,需要在平台内嵌入可信平台模块(Trusted Platform Module,TPM)或可信密码模块(Trusted Cryptography Module,TCM)[5-6]以保证其底层硬件环境和平台运行安全可信,从而实现可信启动[7-8]。然而对于多个协同工作的嵌入式计算机而言,如果在其内部使用TCM芯片,则会造成能耗和技术管理上的问题。TCM嵌入会导致计算机安全防护产生较大的时间与能耗开销[6,9],模块更新升级与后期维护也会造成人力和物力方面的负担。此外,由于每个TCM模块对应多个证书和密钥类型,因此配置多个TCM模块会带来证书与密钥的生成、更新和撤销等管理问题[10]。

本文通过引入TCM和虚拟可信密码模块(Virtual Trusted Cryptography Module,VTCM),提出一种分布式可信度量方法。将多台协同工作的嵌入式计算机构建为工作域,将每台嵌入式计算机作为计算节点,选取计算节点嵌入TCM完成可信启动,其他计算节点利用VTCM和TCM验证配置信息进行分布式可信度量,从而实现域内所有嵌入式平台的可信启动。

1 相关研究

近年来,针对嵌入式系统平台的可信启动问题,国内外学者进行大量研究并取得一定成果。文献[11]指出独立TPM芯片不适用于资源受限的嵌入式系统,将基于软件的TPM放置在受保护执行区域更合适。文献[12]提出一种基于嵌入式可信模块的嵌入式设备可信启动方法,在Bootloader启动前对通信设备进行初始化,建立与嵌入式可信计算模块的连接与认证,用可信计算模块度量Bootloader,再用其度量操作系统内核。文献[13]设计基于Vxworks嵌入式操作系统的可信平台,通过TPM完成对该系统可信的完整性度量,增强了嵌入式平台安全性。文献[14]采用双内核架构建立无额外硬件的嵌入式信任根模型,在VTCM基础上实现了FLASH+PMON+可信内核的软件信任根,为构建嵌入式系统信任根提供可行的低成本方法。文献[15]建立基于国产处理器的嵌入式可信平台,在不增加额外硬件的情况下,大幅提高系统性能。文献[16]提出用于多个嵌入式系统完整性验证的架构,在数据中心等服务器站点获取嵌入式系统代码,通过用户应用程序在远程站点对其进行检查,使用计算得到的散列值验证系统完整性,并显示系统是否被更改,然而该方法不能保证系统可信启动。文献[17]针对PDA等手持计算机系统提出一种安全平台体系结构PERSEUS,该结构采用虚拟机实现不同安全级别应用程序之间的隔离。与此类似,文献[18-19]提出嵌入式Xen平台,在TPM嵌入式硬件平台上运行多个VTCM虚拟机实例,但基于虚拟机的体系结构对系统资源要求较高,不适用于资源受限、强实时性的嵌入式系统[9]。

在上述研究中,无论用硬件还是软件构建嵌入式系统环境,均主要针对单个嵌入式系统平台。关于多个协同工作的嵌入式系统平台分布式可信度量,目前国内外研究较少。因此,本文针对工作域内多个嵌入式计算机的可信启动问题,提出一种基于VTCM的分布式可信度量方法,在域内1个可信计算节点嵌入TCM模块,在其他非可信计算节点利用VTCM插件实现分布式可信度量,从而保证域内所有嵌入式计算机安全可信。

2 设计思路

本文利用TCM和VTCM插件完成对系统各计算节点分布式可信度量和域内管理密钥生成,基于VTCM的分布式可信度量过程如图1所示。嵌入式平台上电后,首先通过启动网络交换机加载以太网驱动,为实现分布式可信度量提供数据传输通道,然后在嵌入TCM的计算节点完成本地系统平台可信度量,同时在其他非可信计算节点运行VTCM插件计算操作系统镜像和应用镜像等本地平台操作系统(OS)资源的哈希运算消息认证码(Hash-based Message Authentication Code,HMAC),并通过以太网将其发送给可信计算节点验证。在进行可信度量过程中,TCM和每个VTCM通过信息交互生成域内管理密钥GK,并用于域内不同计算节点管理组件之间数据传输,以保证域内传输数据安全。

图1 基于VTCM的分布式可信度量过程Fig.1 Distributed trusted measurement process based on VTCM

3 分布式可信度量方法

工作域内嵌入式系统上电后,嵌入TCM的可信计算节点先完成本地系统可信度量,同时在非可信计算节点运行VTCM插件,计算得到本地系统资源HMAC并发送给TCM,由TCM将该HMAC与预先存储的HMAC进行对比,若验证成功则启动系统,否则将中断系统启动并在可信计算节点打印错误信息。

在上述流程中,VTCM作为插件嵌入到Boot引导程序(存放在ROM中以防止被篡改),VTCM插件主要包括网卡驱动程序以及HMAC和通信3个模块。网卡驱动程序主要由初始化程序、关闭网络设备程序、发送数据包程序以及接收数据包程序等组成;HMAC模块用于系统和应用镜像的签名值计算;通信模块负责与TCM保持通信并监听上层应用请求。与TPM[20-21]相比,VTCM没有加密算法引擎、密钥生成器以及随机数生成器等模块,功能较单一,可考虑在后续应用中对其功能进行扩展。VTCM和TCM分布式可信度量过程如图2所示,具体如下:

图2 TCM和VTCM分布式可信度量过程Fig.2 TCM and VTCM distributed trusted measurement process

1)TCM和每个VTCM分别预置身份标识(Identification,ID)和秘密信息,同时TCM存储每个VTCM预置的IDi、秘密值Si以及正确的系统资源值HMACSi(OSi)′,TCM的预置秘密信息为S0。其中,Si(0≤i≤n)为32位的随机数,S1~Sn为n个VTCM预置的秘密信息,其分别存储在TCM和VTCM的安全空间区域内,H为哈希函数。

2)启动具有嵌入TCM硬件模块的计算节点并完成本地系统平台的可信度量。

3)非可信计算节点运行VTCM插件,VTCM发送IDi到TCM。

4)TCM生成随机数k,利用秘密值S0和对称加密算法E(x)对k进行加密得到ES0(k),发送ES0(k)到各VTCM。

5)VTCM对收到的ES0(k)解密后得到随机数k,利用本地系统资源值和秘密信息Si计算Vi=H(k⊕HMACSi(OSi))(1≤i≤n),并发送Vi到TCM。

6)TCM计算V′i=(k⊕HMACSi(OSi)′)(1≤i≤n),再与Vi进行异或运算,由结果是否为0判断Vi与V′i是否相等。若两者不相等则返回VTCM,度量结果验证失败,终止相应非可信计算节点操作系统启动运行;若两者相等则TCM生成1个随机数r,计算SK=HMACr(S0)和ES0(r),然后发送ID0、IDi和ES0(r)到VTCM。

7)VTCM对收到的ES0(r)进行解密后得到随机数r,计算SK=HMACr(S0)和Zi=H(ID0‖IDi‖r‖Si),发送IDi和Zi到TCM。

8)TCM计算Z′i=H(ID0‖IDi‖r‖Si),通过异或运算,由结果是否为0判断Zi与Z′i是否相等,若两者相等则表示VTCM已成功收到r。

TCM通过对每个VTCM进行完整性度量判断其是否可信。VTCM根据TCM度量结果判断是否可以安全启动系统。此外,通过TCM分发过程,VTCM安全获得域内管理密钥GK=HMACr(S0)。

4 方法分析

4.1 基于BAN逻辑的方法形式化证明

本文采用BAN逻辑分析对分布式可信度量方法进行形式化证明。假设TCM是主体A,VTCM是主体B,证明过程如下:

1)协议形式化

消息1:A◁IDi。

消息2:B◁ES0(k)。

消息3:A◁Vi=H(k⊕HMACSi(OSi))。

消息4:B◁ID0,IDi,ES0(r)。

消息5:A◁IDi,Zi=H(ID0‖IDi‖r‖Si)。

2)安全目标

目标1:A|≡HMACSi(OSi)。

目标2:A|≡Zi。

3)初始假设

假设3:A|≡#(k,r)。

假设4:A|≡B|⟹IDi,Si,HMACSi(OSi)(1≤i≤n)。

假设5:B|≡A|⟹IDi,Si,HMACSi(OSi)′(1≤i≤n)。

4)分析推理及结论

(1)证明A|≡HMACSi(OSi)

由假设1和消息3以及BAN逻辑消息含义规则式[22]可以推导出:

A|≡B|~Vi

(1)

由假设3和新鲜规则式[22]推导出:

A|≡#(Vi),即A|≡#(HMACSi(OSi))

(2)

由随机数验证规则式[22]推导出:

A|≡B|≡HMACSi(OSi)

(3)

由假设5和仲裁规则式[22]推导出:

A|≡HMACSi(OSi)

(4)

(2)证明A|≡Zi

由假设1、消息5以及BAN逻辑消息含义规则式推导出:

A|≡B|~Zi

(5)

由假设3和新鲜规则式推导出:

A|≡#(Zi)

(6)

由随机数验证规则式推导出:

A|≡B|≡Zi

(7)

由假设5和仲裁规则式推导出:

A|≡Zi

(8)

经过BAN逻辑形式化分析,协议预期目标得到证明,即TCM相信其收到的配置信息HMACSi(OSi)和需要验证的信息Zi均为VTCM发送。

4.2 安全性分析

对上述TCM和VTCM分布式可信度量方法的安全性分析如下:

1)防窃听和非法读取

由于哈希函数的单向性以及随机数k、r的可变性,因此即使攻击者得到通信信息也无法从中得到IDi对应的秘密信息Si以及用其加密的信息。

2)防假冒攻击

TCM发送到VTCM的信息经过加密算法加密,且加密内容为随机数,攻击者无法伪造TCM发送的信息ES0(k)和ES0(r)。

VTCM在第1次发送ID后,其与TCM的每次会话都会计算哈希函数值并进行认证,且每次认证时会更新随机数k和r,因此,攻击者假冒VTCM发送的伪造信息无法通过验证。

3)防重放攻击

由于协议目的是在嵌入TCM的可信计算节点验证VTCM所在计算节点的系统资源HMAC是否正确,因此应确保攻击者无法获取HMAC。本文协议VTCM计算Vi=H(k⊕HMACSi(OSi)) (1≤i≤n),发送Vi给TCM,从而攻击者就不会获取到VTCM所计算的本地系统资源HMACSi(OSi),且由于每次所用k为随机数,因而即使攻击者得到之前发送的Vi,也无法在TCM端通过验证,有效防止了重放攻击。

4)防中间人攻击

当TCM和VTCM之间存在中间人时,中间人能窃听TCM和VTCM之间通信,还可将信息进行篡改后发送给另外两方。而采用本文方法即使中间人得到通信信息,也无法从中得到IDi对应的秘密信息Si以及用其加密的信息。即使中间人篡改TCM发送的ES0(k)、ES0(r)或者VTCM发送的Vi、Zi,也无法在TCM端通过验证。

4.3 可信度量功能和性能实验

在11台嵌入式开发板上对本文提出的分布式可信度量方法进行可行性验证。开发板搭载P2020子卡和TPM子卡,P2020子卡包括P2020处理器、100 MHz以太网等对外接口,TPM子卡以Xilinx公司FPGA XC7K325TFBG676芯片为控制核心。开发板外围包括时钟、电源、复位、JTAG、PROM、Flash、CCM3310S电路及两路RS232串行通信接口。TPM子卡通过SPI总线与CPU模块进行通信。所有开发板固化相同镜像,镜像大小为783 280 Byte。

在11台嵌入式开发板中,10台为客户端(非可信计算节点),1台为服务器(可信计算节点),非可信计算节点运行VTCM应用,可信计算节点运行TCM应用,在应用层对分布式可信度量的时间开销进行测试。测试过程如下:

1)系统启动后,VTCM和TCM建立通信连接,VTCM发送ID到TCM。

2)TCM接收到ID后生成随机数k,对其进行AES加密得到E(k),将E(k)发送到VTCM。

3)VTCM对收到的E(k)进行解密后得到随机数k,利用本地系统资源值计算得到Vi=H(k⊕HMACSi(OSi)) (1≤i≤10),并发送Vi到TCM。

4)TCM计算V′i=(k⊕HMACSi(OSi)′) (1≤i≤10),然后再与Vi进行异或运算,若运算结果为0,则在可信计算节点输出VTCM验证成功,计算从可信计算节点和非可信计算节点开始建立通信连接到TCM验证成功所用时间。

经多次测试,单个VTCM分布式可信度量平均时间开销为574 ms,其中加解密以及通信传输数据时间为56 ms,计算客户端系统资源HMAC时间为518 ms。将系统资源值大小修改为10个不同的值进行系统资源值大小对分布式可信度量与VTCM计算HMAC时间开销的影响测试,结果如图3所示。

图3 系统资源值大小对2种方法的影响Fig.3 Influence of system resource value on two kinds of methods

由图3可以看出,系统分布式可信度量时间开销与VTCM计算得到HMAC的时间开销均随系统资源值增大而呈线性增长,其中,打印信息、加解密以及通信传输数据的时间开销保持不变。

为测试分布式度量方法的有效性,现修改操作系统代码中网卡配置信息,构建项目后将可执行文件固化进开发板,重复上述测试步骤,得到客户端系统资源HMAC如表1所示。

表1 网卡配置修改前后的客户端系统资源HMAC对比Table 1 Comparison of HMAC of client system resources before and after network card configuration modification

由表1可以看出,由于修改前后客户端系统资源HMAC发生变化,因此修改后可信计算节点验证配置信息失败,证明分布式度量方法具备有效性。

通过逐渐增加非可信计算节点数量,进行非可信计算节点数量对分布式可信度量时间开销的影响测试,结果如图4所示。可以看出,随着非可信计算节点数量的增加,系统分布式可信度量时间开销逐渐增加。所有非可信计算节点固化相同系统镜像并在启动过程中同步运行,可信计算节点循环接收非可信计算节点连接请求,建立连接后开辟新线程,并与相应非可信计算节点进行通信,相较单个VTCM增加了线程调度、通信以及TCM端打印输出信息的时间开销。在嵌入式系统中,通常5个~6个计算节点构成1个可信的安全域。将其中1个作为可信计算节点,其他作为非可信计算节点,非可信计算节点并行通过可信度量验证并启动,TCM端验证1个非可信计算节点系统资源值时间约为30 ms,完成整个分布式可信度量过程时间开销为707 ms。因此,本文提出的分布式可信度量方法具有嵌入式系统环境下多个计算节点安全启动的可行性。

图4 非可信计算节点数量对分布式可信度量时间开销的影响Fig.4 Influence of the number of non trusted computing nodes on the time cost of distributed trusted measurement

5 结束语

本文提出一种基于VTCM的分布式可信度量方法。对已安装TCM的嵌入式计算机进行可信度量,在非可信计算机上运行VTCM计算得到HMAC并发送给TCM,由TCM将该HMAC与预先存储的相应HMAC进行对比,若验证成功则启动操作系统,否则中断系统启动。实验结果表明,该方法满足嵌入式计算机可信启动过程中的机密性和安全性要求。后续将在机载嵌入式平台上设计和实现VTCM插件功能,进一步对本文提出的分布式可信度量方法进行研究,以实现单个TCM下多台嵌入式计算机的可信启动。

猜你喜欢

插件嵌入式分布式
Focal&Naim同框发布1000系列嵌入式扬声器及全新Uniti Atmos流媒体一体机
自编插件完善App Inventor与乐高机器人通信
TS系列红外传感器在嵌入式控制系统中的应用
搭建基于Qt的嵌入式开发平台
分布式光伏热钱汹涌
分布式光伏:爆发还是徘徊
基于jQUerY的自定义插件开发
基于DDS的分布式三维协同仿真研究
基于Revit MEP的插件制作探讨
西门子 分布式I/O Simatic ET 200AL