安全芯片多模块随机组合验证方法的设计与实现

2025-02-26 00:00:00董攀王延斌陈汶永
化工自动化及仪表 2025年1期
关键词:解密密钥加密

摘 要 安全芯片的功能隐患可能造成重大事故。安全芯片的内部功能模块很多,运行过程中是多个模块并行随机工作,采用顺序执行方式很难发现芯片的潜在问题。因此,提出一种多模块随机组合验证方法,在多款芯片上的验证结果表明:所提方法能够高效率、高概率地发现芯片的多模块组合问题,提高了发现和解决安全芯片问题的效率。

关键词 安全芯片 多模块 随机组合 密钥 加密 解密 可编程逻辑阵列

中图分类号 TN06"" 文献标志码 A"" 文章编号 1000 3932(2025)01 0131 07

随着网络的发展,数据的传输与存储更加频繁。在信息安全领域,安全芯片成为了一种关键技术。安全芯片是指在硬件层面上实现加密、安全等功能的芯片。安全芯片可以有效保护信息的安全性,提高安全技术的可靠度[1]。安全芯片的原理是通过密钥的生成和使用实现加密和解密操作。由于加密和解密的密钥是由芯片本身生成,且密钥操作过程不会外泄,攻破安全芯片的难度极大,因而保证了数据的安全性。同时,安全芯片采用硬件安全设计方案,难以破解,以更安全的物理方式进行加密来抵抗攻击。硬件安全芯片大多应用于金融、交通、通信、医疗、军事等领域。随着车联网、物联网、智能家居等新业务的逐渐扩大,安全芯片的需求量也随之增多[2,3]。由于安全芯片应用广泛,场景复杂,如果芯片存在功能隐患未被发现和解决,影响很大甚至会造成财产损失或危及生命。

由于安全芯片的算法模块和外设模块较多,应用场景也很复杂,单一发送命令考核安全芯片的验证方法存在很多局限性,难以发现芯片的潜在问题。目前,各安全芯片公司均采用PC机发送单一命令调用安全模块验证芯片的安全功能和稳定性的方法。安全模块运行过程中几乎不会被任何外部事件打断运行,验证结果只要正确即可。在整个验证过程中与其他主控芯片同时通信验证的场景也较少,很难覆盖所有应用场景,因此设计一种高效且贴近应用场景的验证方法十分必要。

1 安全芯片的传统评估方法

安全芯片的传统评估方法有3种:

a. 方法1,PC机通过单一接口发送多条命令;

b. 方法2,安全芯片内部模块随机运行;

c. 方法3,主控芯片[4]透传命令且提供外部激励。

1.1 方法1

PC机通过单一接口发送多条命令的原理如图1所示。这种方式是在PC机上开发验证脚本,通过USB接口转换成安全芯片可对接的接口(SPI、UART、I2C等)[5],验证脚本发送命令给安全芯片,安全芯片逐条接收命令执行并给出响应,PC机接收响应并进行判断,如果正确则继续执行,否则停止验证。

方法1的评估步骤如下:

a. PC机控制安全芯片上电,发送命令获取芯片随机数,并检验随机数的正确性;

b. PC机发送命令验证,用PC机的软件算法验证各算法模块的正确性;

c. PC机发送命令验证外设模块功能的正确性;

d. PC机判断是否达到验证时间,若未达到验证时间则重复步骤b、c,反之验证停止。

该方法的优点是简单易实施,多个算法和外设模块都可以验证。但所有命令都顺序执行,虽然遍历次数较多,一旦开始运行各模块都相互独立运行,相互之间没有交集,做不到多个模块组合运行,难以覆盖使用较为复杂的场景,尤其是外设中断场景的验证很难覆盖到。因此该方法的验证效果较差。

1.2 方法2

安全芯片内部模块随机运行的原理如图2所示。这种方式与方法1类似,PC机通过USB接口转换成安全芯片可对接的接口,验证脚本发送命令给安全芯片执行;区别是PC机发送验证指令后,安全芯片内部产生随机数,使用随机数对内部模块随机顺序调用,每次收到命令后,内部模块的调用顺序先后不同,内部对各个模块运算结果进行校对,最后给出命令响应。PC机接收响应并判断是否正确,如果正确则继续执行,反之停止验证。

相对于方法1,方法2的脚本开发简单,虽然达到了随机调用效果,但其缺点也突出:内部随机管理,嵌入式软件开发难度增加;内部各个模块顺序执行,外设与算法模块间无交互;一旦芯片内部随机源出问题,而模块调用顺序不变,外部是无法发现的;一旦芯片内部运行当机卡死,问题追溯困难。

1.3 方法3

主控芯片透传命令且提供外部激励的原理如图3所示。

方法3是在PC机和安全芯片间使用主控芯片桥接(SOC、MCU或FPGA)[6]芯片,主控芯片发送命令给安全芯片,调用安全芯片的算法模块,同时给安全芯片的算法模块施加激励。相比于方法1、2,方法3能够将外部激励和内部模块有效组合起来,做到了外部激励和内部模块交互,但是也存在不足:模块调用顺序随机性难以满足;外部激励和内部模块的工作都由主控芯片产生,难以做到并行;当发现错误时难以定位问题。

方法1采用顺序方式,并没有随机调用各个模块,因此很难贴近实际应用场景。方法2在芯片内部随机调用模块,如果芯片随机源产生问题,随机性无法保证,芯片内部的软件开发复杂度较大,问题定位困难,同时未考虑外设中断。方法3的主控芯片未必能产生随机数去随机调用安全芯片的各个模块,也不能产生任意的外部激励,因此3种方法均存在验证不全面的问题。综上所述,目前的3种评估方法存在的共性问题是:模块顺序运行,随机调用效果差;外设激励与模块随机并行效果差;难以贴近芯片实际应用场景。可见,目前设计一种高效率的安全芯片多模块组合验证方法迫在眉睫。

2 多模块组合验证方案设计

根据以上分析可知,要解决安全芯片的多模块组合验证存在的问题,验证方法需要覆盖随机性、交互性和全面性,每个模块的功能需要随机调用,每个模块的安全功能需要覆盖全面,模块运行之间存在交互性,这样才能覆盖应用场景。

首先了解安全芯片的主要功能模块。安全芯片主要涵盖随机数模块、算法模块、中断模块及外设模块等[7,8](表1),这些模块相互独立,将它们随机调用起来需要使用随机数。由表1可知,安全芯片可以产生真随机数[9],PC机端口也可以产生随机数[10],如果将两个随机数利用起来随机调用算法模块和外设模块,同时外部激励和内部中断也随机产生,就能保证安全芯片的内部模块和外部激励达到很好的交互性。

综上可知,可以由PC机和芯片分别产生两组随机数,PC机产生的随机数用来决定每个模块运行的顺序,芯片产生的随机数用来决定每个模块运行时的次数,外部产生的随机数和内部产生的随机数可以组成随机组合,这样芯片每次在运行时,内部模块和外部激励就成了随机组合,能够很容易发现问题并贴近应用场景。同时,芯片可以使用串口(若无则模拟串口)将内部运行过程打印出来,实现随时观测芯片运行状况的目标。

搭建的验证系统如图4所示。该系统的工作原理是,PC1通过USB接口连接主控芯片,将命令透传给安全芯片,同时主控芯片也可施加外部激励给安全芯片;PC1通过USB接口控制激励设备1,产生随机激励给安全芯片;PC2通过USB接口控制激励设备2产生随机激励给安全芯片;安全芯片通过串口连接PC2,将芯片运行状态输出给PC2,外部激励设备数目可根据应用场景添加。

3 多模块随机组合验证流程设计

根据图4,结合整个安全芯片功能模块验证项梳理出的工作流程如图5、6所示。

由于各厂商的安全芯片功能不同,本研究以其中某安全芯片举例说明:该芯片支持SHA 1、SHA 256、MD5、DES、TDES、RSA、ECC、CRC等算法,具有GPIO接口、RNG随机数、看门狗定时器(WDT)、定时器(Timer)、计数器(Systick)等模块。在验证工作开始前先初始化,该芯片共有SHA 1、SHA 256、MD5、DES、RSA、TDES、ECC、CRC共N(N=8)个算法,可以建立一个长度为N(N=8)的数组A[N],初始化A[N]中数据全部为0,即A[N]={0,0,0,0,0,0,0,0};将N个安全模块分别编号为:

SHA 1:"" (1)

SHA 256:" (2)

MD5:""""" (3)

DES:""" (4)

RSA:""" (5)

TDES:""" (6)

ECC:""" (7)

CRC:"""""""" (8)

…:"""""" (N)

PC1初始化完成后,验证工作开始,步骤如下:

a. 初始化状态,PC1发送命令关闭安全芯片内部和外部中断,先关闭Timer、Systick、WDT和外部GPIO触发中断,同时关闭激励设备1。

b. 产生安全模块调用顺序数组数值,PC1循环产生一组数值各不相同的随机数B遍历1~N,并将其赋值给数组A[N],当N=8时产生的数组A[8]={7,4,1,2,8,3,6,5}。要求数组内的数据遍历1~8,且在每次给数组赋值均需要给数组A[N]赋一次值,并保证后续数组顺序尽量不同,如第2次给数组赋值时A[8]={6,3,5,7,8,1,2,4}。

c. 外部中断初始化随机数和安全模块运行随机数生成。PC1调用安全芯片的RNG模块,产生一组随机数C,利用该随机数初始化Timer、WDT、Systick初始化配置以及外部GPIO触发中断的初始化配置;同时从C中取出部分数据建立数组D[N],D[N]确定了A[N]中每个安全模块调用时的次数;从C中取出部分数据建立数组E[N],E[N]确定了每个安全模块的配置使能,同时初始化配置激励设备1。

d. 启动外部中断和安全功能配置。PC1发送命令启动Timer、WDT、Systick、外部GPIO触发中断,并根据E[N]配置每个安全模块功能使能,同时启动激励设备1产生激励。

e. 调用和执行安全模块。建立变量X,依次按照数组A[N]和D[N]的数值来决定安全模块的调用顺序和调用次数,直至X遍历1~N,如A[8]={7,4,1,2,8,3,6,5},D[8]={8,10,3,4,5,9,5,7},根据之前的编号,当X=1时A[1]=7、D[1]=8表明调用ECC安全模块运行8次;当X=2时A[2]=4、

D[2]=10表明调用DES安全模块运行10次;…;当X=8时A[8]=5、D[8]=7表明调用RSA安全模块运行7次。在调用安全模块运行过程中,Timer、WDT、Systick安全模块所使用的数据均来自C;如果安全模块运行过程中出错就停止验证;PC1会使用随机数控制激励设备1产生随机激励,同时安全芯片通过串口向PC2输出打印测试日志,PC2检测到串口有数据时,生成随机数控制激励设备2产生激励提供给安全芯片,这些随机激励会触发安全芯片产生中断并给予外部激励响应。

f. 当X遍历1~N后,若达到验证时间或运行次数则停止验证,否则回到步骤a继续验证。

上述步骤在执行过程中安全芯片功能模块发生异常或者发生外部激励设备报警,则实验结束。

4 验证实验与效果

4.1 硬件

根据图4搭建如图7所示的芯片验证实验硬件系统,STM32F446作为主控芯片,脉冲发生器和FPGA作为激励设备。其中,PC1通过USB接口和STM32F446连接透传命令给安全芯片,同时PC1控制脉冲发生器产生激励源[11],PC2控制FPGA产生激励给安全芯片[12]。整个过程中安全芯片内部模块需要响应STM32F446传递过来的命令,同时对激励设备1和激励设备2产生响应。

图8是验证过程中打印的日志,右边窗口显示W表示WDT中断,S表示Systick中断,T表示Timer中断,I1表示外部中断1,I2表示外部中断2。左边是安全芯片运行过程中算法模块的运行状态。

4.2 实验结果与对比

图7所示的验证环境已在射频识别芯片检测技术北京市重点实验室进行了系统级验证并取得了良好的效果。对两款安全芯片进行验证,均发现应用上的问题。表2汇总了4种方法下发现芯片问题的数目,这些问题均是在对芯片所有模块单独验证后再使用笔者方法验证后发现的。这些问题在模块单独运行时很难发现,只有在多模块组合时才能显现出来,一旦这些问题遗漏到终端客户使用时可能会造成重大损失。

表2中,Chip X的问题是某一模块的寄存器标志位A为读清零,A和另一个标志位B在同一寄存器中。在模块正常运行过程中,如果该模块一直在被访问,A标志位可以被读取到。但读取过程中被中断去读B时,该标志位因为读B会被清零,导致A标志丢失从而使数据传输失败。对Chip X,方法2和笔者方法都复现了该问题,但笔者方法复现该问题场景的概率高达90%,而方法2的复现概率仅10%。方法1由于顺序执行无法复现,方法3则因外部激励单一而难以复现(表3)。

在Chip Y芯片发现了两个问题:

a. 某一安全功能被打开时,如果在FIFO传输数据的某时刻被外部中断打断,就会导致数据传输失败。仅固定中断并不能触发该问题,需要随机中断才能触发该问题,仅有方法2和笔者方法发现了该问题。

b. 芯片系统时钟在分频切换时受外部中断影响出现死机现象,仅方法3和笔者方法发现了问题。

实验后总结出笔者方法与传统3种方法的效果对比,详见表4。

综上所述,笔者提出的多模块随机组合验证方法与现有方法相比具有以下优点:

a. 全面性。能够覆盖安全芯片的多种应用场景,安全功能随机关闭和打开可以全面验证。

b. 随机性。各模块能够随机先后组合调用。

c. 交互性。内外部中断和各功能模块都能随机交互运行。

d. 应用性。贴近安全芯片的实际应用场景。

5 结束语

笔者利用PC机产生随机数和安全芯片产生随机数的功能,设计并实现了一套多模块随机组合验证方法,根据目前的结果分析,笔者方法相对于其他3种方法,可以对安全芯片进行全面的功能验证,能够高效率和高概率地发现芯片的多模块组合问题,弥补了现有方法存在的不足,提高了发现和解决安全芯片问题的效率。

但笔者方法还存在两个问题:一是流程复杂,软件开发有一定难度,需花费时间调试软件;二是外部激励产生和内部模块运转时间尚未说明,需要软件开发人员根据各安全芯片情况确定。

参 考 文 献

[1] 汪钊旭,邹雪城,江鸿,等.一块用于V2X通信的国密安全芯片设计与验证[J].汽车科技,2023(3):65-70.

[2] CHEN F,LUO D M,LI J Q.Arm PSA Certified IoT Chip Security:A Case Study[J].Tsinghua Science and Technology,2023,28(2):244-257.

[3] 李玉凯,白焰,高喜奎,等.智能分析仪表PROFIBUS DP接口的研发[J].化工自动化及仪表,2011,38(1):56-64.

[4] 闫丽琴,冯建呈,王占选,等.国产超大规模集成电路测试系统综合试验验证方法[J].计算机测量与控制,2022,30(8):277-282.

[5] 沈志春,夏玥,农凯政.基于物联网高安全MCU芯片的回样验证[J].数字通信世界,2022(8):75-83.

[6] 杨帆,王哲.一种多种接口时序兼容性验证设计方法[J].化工自动化及仪表,2023,50(3):392-395.

[7] 刘伟.SoC的安全存储器模块分析与设计[D].合肥:合肥工业大学,2009.

[8] 黄晓咪.基于ARM架构的安全加密专用SOC的研究与实现[D].桂林:桂林电子科技大学,2022.

[9] NAGATA M,MIURA N,MIKI T.Analog Techniques for Digital Security:My Gratitudes to Visionary Discussions[J].IEEE Solid state Circuits Magazine,2023,15(1):25-31.

[10] 赵俭.基于USB接口的真随机数生成平台设计[J].微处理机,2016,37(6):76-84.

[11] 邢国鹏.高性能ADC/DAC性能测试系统研究与实现[D].杭州:中国计量大学,2021.

[12] 秦友伦,袁强,刘峰,等.一种全国产化多接口便携式测试设备[J].兵工自动化,2023,42(2):42-45.

(收稿日期:2024-04-24,修回日期:2024-05-15)

Design and Implementation of Multi module Random Combination Verification Method for Security Chips

DONG Pan, WANG Yan bin, CHEN Wen yong

(Beijing Key Laboratory of RFID Chip Test Technology, CEC Huada Electronic Design Co., Ltd.)

Abstract Considering the fact that the hidden trouble in the security chip may cause some accidents. the security chip has many internal function modules which works randomly in parallel during the operation and it’s difficult for sequential execution to find out chip’s potential problems. In this paper, a multi module random combination verification method was proposed and verified on multiple chips to show that, the proposed method can find out multi module combination problem of the chip with high efficiency and high probability.

Key words security chip, multiple modules, random combination, secret key, encryption, decryption, FPGA

猜你喜欢
解密密钥加密
探索企业创新密钥
解密“热胀冷缩”
解密“一包三改”
少先队活动(2020年9期)2020-12-17 06:17:31
密码系统中密钥的状态与保护*
炫词解密
一种基于熵的混沌加密小波变换水印算法
一种对称密钥的密钥管理方法及系统
基于ECC的智能家居密钥管理机制的实现
电信科学(2017年6期)2017-07-01 15:45:06
认证加密的研究进展
基于ECC加密的电子商务系统