基于JTAG和SM3的嵌入式仪表设备可信启动技术研究与实现

2021-10-29 12:18陈鑫刘贤达张博文王庆辉
网络安全技术与应用 2021年10期
关键词:固件度量嵌入式

◆陈鑫 刘贤达 张博文 王庆辉

基于JTAG和SM3的嵌入式仪表设备可信启动技术研究与实现

◆陈鑫1,2,3,4刘贤达2,3,4张博文2,3,4王庆辉1

(1.沈阳化工大学信息工程学院 辽宁 110142;2.中国科学院网络化控制系统重点实验室 辽宁 110016;3.中国科学院机器人与智能制造创新研究院 辽宁 110169;4.中国科学院沈阳自动化研究所 辽宁 110016)

以可信计算理论为基础,针对尺寸、成本、能源或其他方面受限而不适合植入可信根的嵌入式设备在启动过程中代码执行漏洞带来的安全威胁等问题,提出外置可信度量环境进行校验的观点,探讨了基于JTAG和SM3的可信启动方法。该方法首先用JTAG控制信号将ZYNQ平台CPU挂起,依托JTAG传输协议对存储在Flash中的启动信息进行读取,之后在PC端搭建基于SM3的可信度量环境,对读取固件程序进行验证,校验成功之后,允许平台启动,否则,需要重新配置与烧录,直至达到安全启动的标准。经过在ZYNQ平台上进行实验,论证了在没有可信根的情况下依然可以实现可信启动的可行性,可以实现对启动程序的可信度量,提高该ZYNQ平台的安全性。该方案能够对以后通过FPGA编程将外置改进为内嵌来实现启动校验设备一体化具有非常重要的意义。

ZYNQ;JTAG技术;可信度量环境;杂凑算法(SM3)

1 背景

随着计算机技术和通信技术的发展,特别是互联网的普及,嵌入式设备在世界范围内得到了越来越广泛的应用。嵌入式设备领域正在迅速发展,包括仪表、PDA等设备。随着嵌入式设备功能需求的不断增加,芯片的连接越来越多,它们也越来越容易受到攻击(包括网络攻击和物理攻击)[1]。大部分的防火墙、入侵检测、病毒防御等网络安全防护手段都侧重于保护服务器的信息安全,相对脆弱的终端平台就越来越成为信息系统安全的主要薄弱环节。

引导期间的安全攻击可以说是最难防御的,因为在设备生命周期的这个阶段,防火墙和防病毒等传统防御措施不到位,攻击很难检测到。因此,在引导期间保护设备仍然是一个活跃的研究领域[2-6]。针对引导攻击的常见防御措施是认证或安全引导[7]。在这种形式的引导中,设备只读存储器被提供公钥,该公钥用于认证下一层固件。这确保了设备只能用由授权实体(例如设备制造商)签名的固件来引导。虽然认证引导形成了许多系统的第一道防线,但它仍然容易受到许多攻击[8-9]。例如,经过身份验证的引导并不能阻止攻击者使用具有已知漏洞的旧版本固件来引导设备。为了防止这种攻击,许多系统部署了一种更强、更安全的引导协议,称为测量引导[9-10]。在许多系统中,测量引导使用TPM[11]来支持,TPM是连接到主机CPU的专用硬件芯片。在具有TPM的系统中,每一层固件都被配置为测量和记录TPM中下一层固件的散列。启动后,TPM可以使用由TPM制造商提供的唯一签名密钥生成固件测量的签名日志。可以从外部验证该日志,以确定设备是否使用预期的固件启动。

但有许多设备(如低成本仪表设备)并没有搭载用于度量验证的TPM芯片,为了满足这种情况下设备可信启动的需求,我们提出了一种基于JTAG的外置可信度量方案,能够解决一些无法搭载TPM系统的嵌入式仪表设备的可信度量问题,需要的硬件支持少得多。

2 JTAG技术

JTAG以编码它的联合测试行动小组命名,是一个工业标准,用于在制造后验证设计和测试印刷电路板,被广泛使用于SoCs中[12]。通常,测试信号作为输入信号发送到系统芯片的不同部分,相关的输出信号将通过JTAG接口发送回来。换句话说,JTAG可以向集成电路的任何可寻址部分发送信号或数据,或者从集成电路的任何可寻址部分读取数据。大多数SoCs集成了JTAG接口,因此用户可以通过JTAG接口访问SoCs中的任何部分。由于能够访问片上系统内部电路,通过通用串行总线或以太网端口的JTAG接口被广泛用于系统调试、片上系统编程和片上系统程序调试。

JTAG的主要功能有两种:一种用于测试芯片的电气特性,检测芯片是否有问题;另一种用于Debug,对各类芯片及其外围设备进行调试。一个含有JTAG Debug接口模块的CPU,只要时钟正常,就可以通过JTAG接口访问CPU的内部寄存器、挂在CPU总线上的设备以及内置模块的寄存器,JTAG功能简图如图1所示。

图1 JTAG功能简图

JTAG边界扫描寄存器提供了一种便捷的方式用于观测和控制所需调试的芯片。另外,芯片输入/输出引脚上的边界扫描寄存器单元可以互相连接起来,在芯片的周围形成一个边界扫描链。边界扫描链可以串行输入和输出,通过相应的时钟信号,就可以方便的观察和控制处在调试状态下的芯片。

随着现代集成电路(IC)桥接USB(通用串行接口)和JTAG接口(如FTDI FTx232H class[3])的引入,各大供应商已经决定放弃昂贵的专用JTAG适配器概念,转而开发更便宜更通用的JTAG设备,如图2所示。

图2 FTDI芯片电路板

3 方案设计

针对上述背景中提出的问题以及相关技术的研究,提出以下基于JTAG的外置度量环境的可信启动流程,如图3所示。

图3 ZYNQ可信启动设计流程图

(1)JTAG控制CPU上电后启动

选择JTAG模式启动方式时,ZYNQ平台会自动确认通过JTAG直接从PC端下载启动配置程序,此时PS端的CPU将保持在空闲状态,等待启动镜像的加载。在这段CPU空闲状态期间,利用PC端的J-Flash将保存在Flash中的启动程序通过JTAG读取到PC端。

(2)JTAG读取Flash程序到PC端

由于PC机对目标板的调试就是通过TAP接口完成对相关数据寄存器和指令寄存器的访问,所以该实验设计通过TAP访问芯片提供的所有数据寄存器和指令寄存器,对Flash芯片进行数据读取。该平台片上测试原理图如图4所示。

图4 JTAG边界扫描原理

(3)搭建可信度量环境确认启动程序安全

Ÿ●算法运用

消息验证码算法利用密码杂凑算法SM3,对于给定的消息和验证双方共享的秘密信息产生长度为t个字节的消息验证码。

●SM3测试环境搭建

(4)平台安全启动

启动程序校验无误后,启动模式改为QSPI启动,加载已经确认安全的启动程序,完成可信任的启动过程。

4 实验验证

4.1 可信启动结构

实验被度量开发板搭载的是Xilinx公司的ZYNQ-7000系列芯片,ZYNQ-7000系列的亮点之一在于它包含了完整的ARM处理子系统,每一个ZYNQ-7000系列的处理器都包含了双核的Cortex-A9处理器[13],整个处理器的搭建都以处理器为中心,而且处理器子系统中集成了内存控制器和大量外设,使Cortex-A9的核在ZYNQ-7000中完全独立于可编程逻辑单元。其二,ZYNQ-7000 AP SoC的启动配置是分多级进行的[14],PS-PL启动过程如图5所示。

图5 ZYNQ的启动过程

根据配置程序烧录扇区的不同,能够快速定位问题区域,进行配置更改。根据ZYNQ-7000系列的特点,即使ARM核挂起后,仍能通过程序下载器访问外设Flash,并进行数据提取与度量,来保证平台的安全启动。本实验所度量的启动程序就存储在处理器之外的QSPI FLASH中。用来给核心板发送命令的控制信号则是底板的启动模式控制开关。实验采用的软件为SEGGER公司的J-Flash,该软件不仅可以向开发板中烧写固件程序,同时也可以从开发板中回读运行的固件程序。整体架构如图6所示。

图6 ZYNQ可信启动的结构框架图

4.2 可信度量环境

可信计算PC规范指出SRTM是BIOS中的模块,SRTM的安全性直接和BIOS相关[15],在信任链中起着信任锚点的作用。基于SM3杂凑算法的可信度量环境作为静态可信度量根对数据进行可靠性度量,使其进行的计算具有真实性、机密性、可控性等特性,并利用这些特性来弥补仅依靠传统安全防护方式的不足,从而更好地解决计算机安全面临的挑战和问题[16]。

4.2.1 SM3简要介绍

SM3密码杂凑算法的输入长度为1(1<2^64)比特的消息m,经过填充、迭代压缩,生成杂凑值,杂凑值输出长度为256比特[17]。

(1)填充

假设消息m的长度为l比特,则首先将比特“l”添加到消息的末尾,再添加个“0”,k是满足l+1+k≡448(mod512)的最小非负整数。然后再添加一个64位比特串,该比特串是长度l的二进制表示。填充后的消息的比特长度为512的倍数。

(2)迭代压缩

将填充后的消息按512比特进行分组:m'=B^((0))B^((1))⋅⋅⋅B^((n-1)),其中n=(l+k+65)/512。对m'按下列方式迭代:

FOR i=0 TO n-1

V^((i+1))=CF(V^((i)),B^((i)))

ENDFOR

其中CF是压缩函数,V(0)为256比特值IV,B(i)为填充后的消息分组,迭代压缩结果为V(n)。

将消息分组B(i)扩展生成132个消息字W0,W1,⋯W67,W'0,W'1,⋯W'63,用于压缩函数CF:

B(i)→W0,W1,⋯W15

FOR j=16 TO 67

Wi←Pi(Wi-16⊕Wi-9⊕(Wi-3<<<15)⊕(Wi-13<<<7)⊕Wi-6

ENDFOR

FOR j=0 TO 63

Wi'=Wi⊕Wi+4

ENDFOR

令A,B,C,D,E,F,G,H,为字寄存器,SS1,SS2,TT1,TT2,为中间变量,压缩函数V^(i+1)=CF(V^((i)),B^((i))),0≤i≤n-1。计算过程如下:

ABCDEFG←V^((i))

FOR j=0 TO 63

SS1←((A<<<12)+E+(Ti<<

SS2←SS1⊕(A<<<12)

TT1←FFi(A,B,C)+D+SS2+W'i

TT2←GGi(E,F,G)+H+SS1+Wi

D←C

C←B<<<9

B←A

A←TT1

H←G

G←F<<<19

F←E

E←P_0 (TT2)

ENDFOR

V^((i+1))←ABCDEFGH⊕V^((i))

4.2.2算法接口实现

ulAlgID←SGD_SM3

procedure SKF_DigestInit(hDev,ulAlgID,NULL,NULL,0,&hHash)

if

Print SKF_DigestInit Wrong

fflush(stdin)

getchar()

else

Print SKF_DigestInit OK

endif

procedure SKF_DigestUpdata(hHash,bIndata,ulIndataLen)

if

Print SKF_DigestInit Wrong

fflush(stdin)

getchar()

else

Print SKF_DigestUpdata OK

endif

procedure SKF_DigestFinal(hHash,bOutData, &ulOutdataLen)

if < SKF_DigestFinal!= SAR_OK>

Print SKF_DigestFinal Wrong

fflush(stdin)

getchar()

else< SKF_DigestFinal = SAR_OK>

PrintMsg SKF_DigestFinal OK

endif

5 实验结果与分析

5.1 可信度量环境

选取所读扇区的一部分数据如图7所示。实验验证,当芯片ARM核被挂起时,J-Flash可以通过JTAG下载器访问Flash,并读取固件启动程序,能够预防漏洞程序由于平台上电自启带来的安全风险。

图7 提取数据部分截图

5.2 PC端度量环境测试

经过对所搭建环境的调试,结果如图8所示,实验搭建的基于SM3的度量环境能够对提取数据进行运算,并对其进行消息鉴别。

图8 环境测试信息

5 结束语

本文针对许多嵌入式仪表设备无法搭载用于度量验证的TPM芯片的情况,提出一种基于JTAG传输协议的嵌入式设备可信启动关键技术的设计方案,运用国密SM3算法搭建外置可信度量环境,对通过边界扫描器提取的ZYNQ平台配置信息进行度量,从而得到安全启动可信依据。经过实验验证,本文提出的实验设计能够有效读取ZYNQ平台的配置信息,并能对其进行可信度量,最后实现平台的可信启动。

该技术的创新之处是构建一种连接嵌入式处理器和Flash的桥梁,通过控制传入ZYNQ平台的JTAG信号,挂起CPU;再通过JTAG的边界扫描控制器,对存储在Flash芯片上的启动程序进行读取,最后进行校验。可以确保长期存储在Flash的启动程序与平台配置的动态可信性。在可信环境搭建过程中,SM3算法的使用不仅有助于从根本上解决嵌入式平台面临的信息安全问题,还能提高校验的真实性和自主可控性。为保证工业系统中设备产品化目的,也就是该方案的改进之处就是可以通过FPGA编程实现度量环境内置化,之后再通过JTAG信号的发送控制设备的安全启动。该技术的实现则为上述通过FPGA编程实现基于JTAG的可信启动设备一体化打下坚实基础。

[1]Facon,A.,Guilley,S.,Ngo,X.-T.,Perianin,T.Hardware-enabled AI for embedded security:A new paradigm.(2019)Proceedings - 2019 3rd International Conference on Recent Advances in Signal Processing,Telecommunications and Computing,SigTelCom 2019,art.no. 8696136,pp. 80-84.

[2]Byron Cook,Kareem Khazem,Daniel Kroening,SerdarTasiran,Michael Tautschnig,and Mark R. Tuttle. Model checking boot code from AWS data centers. In 30th International Conference on Computer Aided Verification(CAV),2018.

[3]KarimEldefrawy,Gene Tsudik,Aurélien Francillon,and DanielePerito. SMART:secure and minimal architecture for (establishing dynamic)root of trust. In 19th Network and Distributed System Security Symposium(NDSS). The Internet Society,2012.

[4]Sujit Kumar Muduli,PramodSubramanyan,and SayakRay. V erification of authenticated firmware loaders. In Formal Methods in Computer Aided Design(FMCAD).IEEE, 2019.

[5]Steffen Schulz,André Schaller,Florian Kohnhäuser,and Stefan Katzenbeisser. Boot attestation:Secure remote reporting with off-the-shelf IoT sensors. In European Symposium on Research in Computer Security(ESORICS).Springer,2017.

[6]Shijun Zhao,Qianying Zhang,Guangyao Hu,Yu Qin,and Dengguo Feng. Providing root of trust for ARM TrustZone using on-chip SRAM. In 4th International Workshop on Trustworthy Embedded Devices(TrustED).ACM,2014.

[7]William A. Arbaugh,David J. Farber,and Jonathan M.Smith. A secure and reliable bootstrap architecture. In IEEE Symposium on Security and Privacy(S&P). IEEE Computer Society,1997.

[8]Corey Kallenberg,Sam Cornwell,XenoKovah,and John Butterworth. Setup for failure: defeating secure boot. In The Symposium on Security for Asia Network (SyScan),2014.

[9]Microsoft. Secure the Windows 10 boot process.https://docs.microsoft.com/en-us/Windows/security/information-protection/secure-the-Windows-10-boot-process,2018.

[10]Richard Wilkins and Brian Richardson. Uefi secure boot in modern computer security solutions. In UEFI Forum,2013.

[11]Trusted Computing Group. TPM main specification level 2 version 1.2,revision 116.https://trustedcomputinggroup.org/resource/tpm-main-specification/,2011.

[12]https://en.wikipedia.org/wiki/JTAG.

[13]Zynq-7000 SoC Data Sheet: Overview DS190(v1.12.2)July 2,2018.

[14]Zynq-7000 SoC Technical Reference Manual UG585(v1.12.2)July 1,2018.

[15]徐明迪,明瑞扬,任正伟,沈楚楚. 一种静态可信度量根安全证明方法[A]. 中国造船工程学会电子技术学术委员会.中国造船工程学会电子技术学术委员会2017年装备技术发展论坛论文集[C].中国造船工程学会电子技术学术委员会:中国造船工程学会,2017:5.

[16]程戈,李聪.可信计算环境构建机制研究进展[J].计算机工程与应用,2013,49(13):59-64+197.

[17]王小云,于红波.SM3密码杂凑算法[J].信息安全研究,2016,2(11):983-994.

国家重点研发计划项目:功能安全与信息安全融合的仪表共性关键技术研究与产品开发(2019YFB2006300)

猜你喜欢
固件度量嵌入式
鲍文慧《度量空间之一》
模糊度量空间的强嵌入
Focal&Naim同框发布1000系列嵌入式扬声器及全新Uniti Atmos流媒体一体机
迷向表示分为6个不可约直和的旗流形上不变爱因斯坦度量
TS系列红外传感器在嵌入式控制系统中的应用
搭建基于Qt的嵌入式开发平台
基于SHA1的SCADA系统PLC固件完整性验证方法
基于UEFI固件的攻击验证技术研究*
基于固件的远程身份认证
地质异常的奇异性度量与隐伏源致矿异常识别