设计应用

基于PUF的可信根及可信计算平台架构设计

吴 缙,徐金甫 2018/9/13 11:44:00

0 引言

    为有效防御恶意用户非法访问SoC中的敏感数据或危害其他部件,文献[1]提出了基于双核的通用计算与安全管控隔离的SoC架构(下面简称“双核安全架构”),实现了安全核对计算核的安全启动、主动度量、实时监控、访问控制等安全服务。但这一架构只能提供“隔离”而不是“可信”的执行环境,因为它无法向用户或外部验证者证明运行在执行环境中的软件是不可篡改的。当前主流的验证技术是利用认证密钥对软件度量值进行签名和验签,而认证密钥和软件度量值都通过可信根来安全存储[2]。因此,一个隔离的执行环境只有配备了可信根才能真正构成可信执行环境(Trusted Execution Environment,TEE)。

    国内外针对可信根构建技术进行了许多研究。ARM公司基于GlobalPlatform TEE API标准定义了TrustZone应用平台架构,利用硬件密钥、密码加速器、安全芯片等硬件资源来构建可信根[3-4]。文献[5]提出使用PUF来保护TEE的方法,但只考虑了TrustZone应用平台上的安全启动过程,而忽视了认证、加密等安全防护功能,且没有给出具体设计实现。文献[6]提出了一种便携式可信计算模块TEEM,可为各种计算平台提供可信计算功能,但没有实现TEEM与Rich OS的隔离,TEEM运行于整个Linux操作系统,使得可信计算基(Trusted Computing Base,TCB)非常庞大,且没有考虑如何建立TEEM的信任链

    鉴于上述方法均无法构建高效灵活安全的可信根,本文提出了利用PUF技术为双核安全架构提供可信根PRoT,设计了基于PRoT的信任链,以保证可信关系的逐级扩展。实验结果表明,PUF为嵌入式系统提供的可信根具有安全性,并根据PRoT部署了密钥更新协议,进一步增强了系统的灵活性和攻击抗性。

1 基于PUF的可信根PRoT

    具有轻量级属性的PUF适用于资源受限的嵌入式设备[5],基于PUF构建可信根PRoT可为操作系统(Operating System,OS)和安全服务提供可信计算功能,而无需额外的安全硬件资源,并允许用户在设备被物理攻击破坏后重新部署可信根。PRoT的核心模块为可信构建模块(Trust Building Module,TBM)和Seal/Unseal服务。

1.1 可信构建模块TBM

    本文利用模糊提取算法[7]从PUF响应值中提取唯一设备密钥,模糊提取算法结构如图1所示。模糊提取算法的工作过程分为生成阶段和重现阶段。TBM实现于重现阶段,由BCH纠错码、密钥提取算法(Key Derivation Function,KDF)和密钥生成算法(Key Generation Algorithm,KG)组成。

wdz1-t1.gif

1.1.1 生成阶段

    生成阶段由制造商在设备生产中执行。首先,制造商选择随机数PS,用BCH纠错码对PS进行编码以获得代码C(PS)=BCHEnc(PS)。PUF的响应R作为输入,与C(PS)异或得到代码S送入辅助数据H,在重现阶段中H用于生成相同的初始种子PS。

    然后,R与PS异或得到TRS,再注入KDF中生成对称密钥k,PS被传递到KG中生成唯一的公钥/私钥对(pk,sk)。对称密钥对安全OS的镜像进行加密来保护其机密性。制造商通过签名公钥pk、TBM镜像和安全OS镜像的标准度量值来生成证书 Certpk。这两个度量值将用于构建双核安全架构安全启动的信任链。

    最后,制造商将辅助数据H、加密后的安全OS镜像和证书Certpk存储在设备的非易失性存储器中。在生成阶段,制造商将初始种子PS隐含地嵌入到设备中,即初始种子没有物理存储在设备上,但可以在运行时重新生成。

1.1.2 重现阶段

    重现阶段将PUF在相同激励下产生的响应值R′作为输入。由于环境因素干扰,PUF的响应值R′和生成阶段中PUF的响应值R之间存在噪声偏差,故BCH纠错码用来消除噪声。R′先与辅助数据中的S进行异或以产生噪声BCH码C(PS)′=R′⊕S,代码C(PS)′传递给BCH解码器,消除噪声并产生在生成阶段中随机选择的PS,最后从PS中提取唯一设备密钥和对称密钥,对称密钥用于解密安全OS镜像。

    TBM产生的唯一设备密钥为安全服务和通用操作系统提供可信根。首先是利用唯一设备密钥为安全服务提供Seal/Unseal服务,确保只有指定的安全服务和平台才能访问用户数据,Seal/Unseal服务可视为安全服务的可信根。其次,TPM服务使用唯一设备密钥作为认证密钥,为通用计算核提供诸如安全存储、认证、度量等丰富的可信计算功能,这些功能可用于启动一个可信的通用OS并帮助该OS将信任链扩展到应用,即帮助非安全域运行在可信状态。TPM服务可视为通用操作系统的可信根。

1.2 Seal/Unseal服务

    Seal/Unseal服务利用唯一设备密钥(pk,sk)进行加密算法和哈希操作,与平台和特定安全服务绑定安全数据。用户通过步骤1和2将数据data密封到安全服务S中,其中hash(S)表示二进制代码S的哈希值,B代表存储于安全服务中的双重加密代码。

     wdz1-t1-s1.gif

          wdz1-t1-x1.gif

    由步骤Sealing和Unsealing可知,只有具有唯一设备密钥和运行合法安全服务的设备才能获取用户数据data,而唯一设备密钥只能被运行合法OS的平台获得,所以Seal/Unseal服务保证了只有处于安全状态的平台才可以访问用户数据。换句话说,Seal/Unseal服务向用户隐含地证明了执行环境处于可信状态。安全服务还可以使用此机制来存储关键数据。

2 基于PROT的可信计算平台架构

2.1 可信计算平台架构

    安全启动是保证SoC系统安全的一个重要前提。安全OS和安全服务的镜像通常从非安全永久性存储(如闪存或SD卡)加载,可能会受到恶意应用程序的篡改[8]。本文构建了基于PRoT的可信计算平台架构(如图2所示),并进一步寻求建立基于PRoT的信任链(如图3所示),实现信任关系从可信根到整个计算平台的扩展,保护运行代码的安全性和完整性,完成双核安全系统的安全启动。

wdz1-t2.gif

wdz1-t3.gif

2.2 信任链

    信任链是通过实现一个实体与预期值的充分匹配来了解信息平台的可信程度[8]。基于PROT的信任链传递过程如图3所示。

    当设备通电时,处理器立即从BootROM执行一级启动代码(First Stage Boot Loader,FSBL),该代码通常在芯片制造过程中已被置信。在简单的系统初始化后,FSBL首先对TBM镜像进行完整性验证,使用制造商的公钥进行验签。若验签成功,则度量TBM的镜像,并与标准度量值进行比较。如果完整性验证通过,则读取PUF的响应值R,并将R传输到TBM,运行TBM,否则停止启动。

    由于片内存储器的存储空间对于传统的引导进程不够大,需要将Second Stage Bootloader代码(即U-boot)的镜像加密存储在外部DDR存储器上,因此,在验证U-boot前,用TBM生成的密钥K对U-boot和安全OS的镜像进行解密。所以TBM不仅保证了安全OS的完整性,还增加了其安全性。再依次完成镜像度量值验证,并在验证成功后,沿信任链度量方向传递控制权。在运行安全OS之前,要擦除片上存储器中的所有信息。安全OS启动时将初始化安全服务、TPM服务等,然后通过这些服务将信任链扩展到整个可信平台。

2.3 密钥更新机制

    当前,设备密钥的安全存储机制通常依赖于Battery-backed RAM或eFuse技术[2]。与这些机制相比,基于PUF技术构建的可信根能够部署灵活的密钥更新机制,具体协议流程如图4所示。设备所有者可以通过定期更改设备密钥来提高系统的安全等级。

wdz1-t4.gif

    令wdz1-2.3-x1.gif表示将集合S中随机选择的值分配给x,{0,1}n表示长度为n的二进制字符串集合。设备D具有唯一设备公钥/私钥对(pk,sk),且制造商M具有用于签名的密钥对(pkM,skM)。三元组(KG,SIG,VER)表示签名方案,其中SIG是签名算法,VER是验签算法。imB和imS分别表示TBM和OS的镜像。

    新的初始种子PS′的随机选取与旧设备密钥无关,旧设备密钥的泄露不会对PS′造成危害。但是,敌手可以将先前的辅助数据和加密的操作系统镜像复制回设备中,使得设备密钥回溯为旧设备密钥,即通过降级攻击来破坏密钥更新协议。图4的密钥更新协议中增加了计数器c,用于抵抗降级攻击。c在协议重新执行后计数加1,TBM就不能计算先前的对称密钥K,所以操作系统镜像无法解密。只有新部署的软件才能启动系统,从而防止降级攻击。

3 实验与评估

3.1 TBM及PRoT实现

    基于Xilinx公司的Zynq-7000 AP SoC实现了上述设计,TBM中的PUF模块使用基于环形振荡器的PUF[9]实现,采用C语言对TBM和PRoT进行了描述。模糊提取算法基于可以配置不同参数的开源BCH纠错码来实现[10]。本文将BCH参数[n,k,d]配置为[256,21,55],其中n表示编码位宽,k表示数据位宽,且d≥2t+1,t表示可纠错的位数。[256,21,55]-BCH纠错码可以解码错误位少于wdz1-3.1-x1.gif=27比特的噪声信息。初始种子的长度为131比特,在TBM中需要运行BCH纠错码wdz1-3.1-x2.gif=7次才能重新获取初始种子。

    使用RSAREF库[11](其MD5散列函数用SM3替代)来实现KG。安全启动的对称密钥的生成与TPM 2.0[12]中的对称初始密钥的生成相似。PRoT中的Seal/Unseal服务通过修改的RSAREF库、KDF、SHA3和面向字节的AES来实现。在安全管控核中通过整合软件模拟器来实现的TPM服务,具体细节可参考文献[13]。

    TBM及PRoT各模块的编译结果如表1所示。从中可以看出,TBM和Seal/Unseal服务的TCB都非常小,TBM的总体大小只有2 579条代码,Seal/Unseal服务只用了1 873条,编译后的二进制代码量只增加了65.3 KB的ROM和381.5 KB的Flash。TPM服务的TCB较大是因为它提供丰富的可信计算功能。

wdz1-b1.gif

3.2 Seal/Unseal服务

    Seal/Unseal服务和TPM服务中的部分TPM命令的性能评估(100次运行的平均消耗时间)如表2所示。结果显示,Seal/Unseal服务100次运行的平均消耗时间为10 ms,能够快速地绑定敏感数据到安全服务中。部分TPM命令的消耗时间较长,仍属于正常工作的可接受范围。

wdz1-b2.gif

3.3 攻击抗性评估

    下面主要以初始种子和唯一设备密钥为攻击对象进行安全性分析,评估本文设计的攻击抗性。

    在能够控制SoC所有外部接口的情况下,敌手可能通过窃取PUF响应值、软件攻击、附加恶意外围设备等攻击手段危害初始种子,但仍无法被突破本文设计对初始种子的安全防护。

    由于BootROM是通过敌手无法监控的SoC内部总线将响应值传输给TBM,因此敌手无法窃取PUF响应值,也就无法生成初始种子。而且初始种子只在TBM运行时存在,此时TBM是运行在设备上的唯一代码。信任链保证了只有合法的TBM才能在OCM中运行,所以对手无法通过软件攻击来危害初始种子。OCM在器件引脚上没有地址线或数据线,恶意外设无法从设备引脚读取片上存储的内容。OCM是SoC的安全存储,因此利用接口封装等技术手段可以防止恶意外围设备访问OCM。

    系统运行时,设备密钥会短暂地存储在安全OS中,但OS运行在片外主存储器中,可能会受到恶意应用程序的攻击。双核安全架构可以实现安全环境与正常环境的隔离,一般物理攻击无法突破隔离技术的防御能力。如果设备密钥受到物理攻击的危害,可以通过执行密钥更新协议来部署新设备密钥。

4 结束语

    本文利用PUF能够将密钥隐含地嵌入设备而不需要物理存储的特性,构建了双核隔离SoC架构的可信根PRoT,并以PRoT为信任锚点设计了信任链和密钥更新协议。实验结果表明,PRoT能够以较小TCB运行于Zynq-7000 AP SoC中,通过对PRoT中部分TPM命令和Seal/Unseal服务的性能评估,以及对初始种子和唯一设备密钥的安全性分析,证明了PUF能够为嵌入式系统提供安全灵活的可信根。

参考文献

[1] 孙春子.基于双核的系统安全框架的研究与实现[D].南京:南京理工大学,2008.

[2] 利文浩.面向多域计算环境安全的系统软件研究[D].上海:上海交通大学,2015.

[3] ALVES T.TrustZone:integrated hardware and software security[J].White Paper,2004.

[4] ARM.Securing the system with TrustZone ready program[EB/OL].[2013-12-19].http://www.arm.com/products/security-on-arm/trustzone-ready/index.php.

[5] ARENO M,PLUSQUELLIC J.Securing trusted execution environments with PUF generated secret keys[C].IEEE International Conference on Trust,Security and Privacy in Computing and Communications.IEEE Computer Society,2012:1188-1193.

[6] FENG W,FENG D,WEI G,et al.TEEM:a user-oriented trusted mobile device for multi-platform security applications[M].Trust and Trustworthy Computing.Springer Berlin Heidelberg,2013:133-141.

[7] KANG H,HORI Y,KATASHITA T,et al.Cryptographie key generation from PUF data using efficient fuzzy extractors[C].International Conference on Advanced Communication Technology.IEEE,2014:23-26.

[8] 谭良,徐志伟.基于可信计算平台的信任链传递研究进展[J].计算机科学,2008,35(10):15-18.

[9] KUMAR A,MISHRA R S,KASHWAN K R.Challenge-response generation using RO-PUF with reduced hardware[C].International Conference on Advances in Computing,Communications and Informatics.IEEE,2016.

[10] MORELOS Z R.Encoder/decoder for binary BCH codes in C(Version 3.1)[EB/OL].[2017-12-19].http://www.rajivchakravorty.com/source-code/uncertainty/multimedia-sim/html/bch_8c-source.html.

[11] RSA Data Security Inc.RSAREF[EB/OL].[2017-12-19].http://www.homeport.org/adam/crypto/rsaref.phtml.

[12] TCG.Trusted platform module library part 1: architecture,Family 2.0,Level 00 Revision 01.07[Z].2014.

[13] 吴少刚,许华.可信嵌入式龙芯启动加载程序tPMON的设计[J].计算机工程与设计,2008,29(1):5-8.



作者信息:

吴  缙,徐金甫

(解放军信息工程大学,河南 郑州450001)

PUF 可信根 信任链 可信计算