一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

面向FPGA安全分析的位流解压缩方法

2022-07-02 08:47:31 来源:中国专利 TAG:

面向fpga安全分析的位流解压缩方法
技术领域
1.本发明涉及fpga硬件安全分析领域,具体涉及一种面向fpga安全分析的位流解压缩方法。


背景技术:

2.随着fpga在各个领域的广泛应用,其安全问题也引起了广泛关注与研究。目前,面向fpga安全性分析的方法可以分为两类,一类是通过分析fpga运行时泄露的边信道信息,例如功耗,电磁辐射以及时间消耗来判断是否含有木马(参考文献:基于ica和svm的fpga电磁泄露分析[j],米芳,张洪欣,《滨州学院学报》,2017,33(02):66-69;基于侧信道分析的硬件木马检测技术研究[d],刘长龙,天津大学,2013)。这类方法对检测较大的硬件木马很有效。例如在文献“基于功耗特征的硬件木马检测方法”中,张毅军等人提出了基于神经网络的硬件木马特征识别算法,对去噪后的数据进行硬件木马检测。另一类是通过分析设计代码和网表,来判断目标芯片是否被插入了木马(参考文献:“overcoming an untrusted computing base:detecting and removing malicious hardware automatically”[c],m.hicks,m.finnicum,s.t.king et al.,2010ieee symposium on security and privacy,oakland,2010,159-172;“pre-silicon security verification and validation:a formal perspective”[c],x.guo,r.g.dutta,y.jin et al.,proceedings of the 52nd annual design automation conference,san francisco,2015,145)。这类方法虽然流程复杂、耗时长,但能检测到电路中的很小的硬件木马。例如在文献“hardware trojan detection through structural checking”中,jordan r.yust通过分析rtl代码,对电路结构及其功能的完整性进行了评估,实现了对rtl代码中恶意逻辑的查找。
[0003]
分析设计代码和网表的方法已经取得了一定的研究成果,但是一般的fpga终端用户只能获得用来配置fpga的位流文件,而不能直接获取设计代码和网表。解决这一困境,必须通过比特流逆向工程将位流文件进一步转换为代码和网表。例如在文献“deriving an ncd file from an fpga bitstream:methodology,architecture and evaluation”中,ding等人通过位置分析来收集比特流映射信息,将比特流逆向网表精度提高到88%。在文献“fpga逆向工程关键技术研究”中,章韬设计并实现了一条fpga逆向工程工具链,将比特流转换成了网表和代码,验证了基于位流文件进行fpga安全性分析的可行性。
[0004]
虽然比特流逆向工程有效地解决了用户无法获取代码和网表的困境,但其只能处理未压缩位流文件。如果终端用户拿到的是一份压缩位流文件,那么首先要对压缩文件进行解压缩,之后才能进行比特流逆向工程。考虑到终端用户只能基于位流文件对fpga进行安全性分析,为此本发明提出了一种面向fpga安全分析的位流解压缩方法。


技术实现要素:

[0005]
本发明提出了一种面向fpga安全分析的位流解压缩方法,对fpga开发环境中生成的压缩位流文件进行解压缩,生成未压缩文件。打破了基于压缩文件无法进行比特流逆向
工程的局限性,提高了比特流逆行工程的实用性。
[0006]
本发明提出了一种面向fpga安全分析的位流解压缩方法,具体包括以下步骤:
[0007]
s1)构建预处理模块,通过所述预处理模块构建配置信息库、识别芯片型号和判断输入位流文件是否为压缩位流文件;
[0008]
s2)若输入位流文件为压缩位流文件,构建帧地址处理模块,通过所述帧地址处理模块查找帧地址并判定帧地址类型、对帧地址进行排序和标记特殊帧地址;
[0009]
s3)构建数据处理模块,通过所述数据处理模块依据帧地址类型进行数据处理,对压缩位流文件进行解压缩。
[0010]
进一步地,所述步骤s1)具体包括:
[0011]
s11)根据官方手册,构建配置信息库
[0012]
对于不同系列的fpga芯片,同一个配置命令对应的二进制信息各不相同,因此根据芯片官方配置手册,构建了一个配置信息库,针对不同系列的fpga芯片,给出了配置命令和二进制信息的对应关系;
[0013]
s12)输入位流文件,识别芯片型号
[0014]
在输入位流文件中,不同系列的fpga芯片对应不同的id编码,对于输入位流文件,将采集到的id序列和配置信息库中id编码进行对照,识别输入位流文件对应的芯片型号;
[0015]
s13)判断输入文件是否为压缩文件
[0016]
通过门限判别法判断输入位流文件是否为压缩位流文件。
[0017]
本发明实现了对压缩位流文件成功解压缩的效果,现有的解压缩技术大多是基于指定的压缩算法进行解压缩。有别于其他技术,本发明针对的是从fpga芯片的开发环境中获得的压缩位流文件,通过本发明,可以完整地还原出压缩位流文件对应的未压缩位流文件。
附图说明
[0018]
图1为本发明解压缩方法的总体结构框图
[0019]
图2为判断输入位流文件是否为压缩位流文件的方法流程图
[0020]
图3为查找帧地址并判定帧地址类型的方法流程图
[0021]
图4为标记特殊帧地址的方法流程图
[0022]
图5为数据处理模块的方法流程图
具体实施方式
[0023]
以下结合附图与附图标记对本发明的实施方式做更详细的说明,使熟悉本领域的技术人员在研读本说明后能据以实施。应当理解本例所描述的实施例仅以解释本发明,并不用与限定本发明。
[0024]
本发明总体结构框图如图1所示,依次构建预处理模块、帧地址处理模块和数据处理模块,并依次通过预处理模块、帧地址处理模块和数据处理模块对压缩位流文件进行解压缩。预处理模块构建配置信息库、识别芯片型号和判断输入文件是否为压缩文件。帧地址处理模块查找帧地址并判定帧地址类型、对帧地址进行排序和标记特殊帧地址。数据处理模块依据帧地址类型进行数据处理。
[0025]
本发明提出的面向fpga安全分析的位流解压缩方法具体包括如下步骤;
[0026]
(1)构建预处理模块
[0027]

根据官方手册,构建配置信息库
[0028]
针对不同系列的fpga芯片,同一个配置命令对应的二进制信息各不相同。本发明根据芯片官方配置手册,构建了一个配置信息库。针对不同系列的fpga芯片,给出了配置命令和二进制信息的对应关系。
[0029]

输入待解压缩文件,识别芯片型号
[0030]
在输入位流文件中,不同系列的fpga芯片对应不同的id编码。输入位流文件,将采集到的id序列和配置信息库中id编码对照,便可识别输入位流文件对应的芯片型号。
[0031]

判断输入文件是否为压缩文件
[0032]
判断输入位流文件是否为压缩位流文件的方法流程图如图2所示。在解压缩算法开始之前,必要的一步是通过门限判别法判断输入位流文件是否为压缩位流文件。
[0033]
a.将输入位流文件s每k1位分为一组,k1等于序列w的位宽(序列w为“多帧写入命令”对应的位流序列),总计分为n组(s=s1,s2,...,sn),(其中,si=x1x2…
x
k1
,i=1,2,

,n(xi′
表示1比特数据,i

=1,2,

,k1)。初始化匹配次数v=0。
[0034]
b.取第i组si。
[0035]
c.判断输入si的内容是否等于序列w的内容,序列w为“多帧写入命令”对应的位流信息(多帧写入命令是一种配置命令)。若二者一致,匹配次数v加1,反之v保持不变。
[0036]
d.判断i是否小于组数n。若是,i加1,重复步骤b、c,直至i等于n,执行下一步骤e。
[0037]
e.判断匹配次数v是否大于10倍的预设判决门限值μ,即是否满足式(1)。若满足,说明输入位流文件是压缩位流文件。反之,说明输入位流文件是未压缩位流文件。
[0038]
n》10μ (μ=1)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
[0039]
在未压缩位流文件中不会出现序列w,故设μ值为1。
[0040]
f.结束。
[0041]
(2)构建帧地址处理模块
[0042]

查找帧地址并判定帧地址类型
[0043]
对于压缩位流文件,查找帧地址并判定帧地址类型的方法流程图如图3所示。
[0044]
a.新建并初始化集合{fa},{i}和{d},依次代表帧地址集、帧数据输入地址集和多帧写入地址集。
[0045]
b.将输入的压缩位流文件每k2位分为一组(k2等于序列f的位宽,f为“帧地址输入命令”对应的位流序列),总计分为n

组(s=s
′1,s
′2,

,s
′n′
)。
[0046]
c.取第j组s
′j(j=1,2,

,n

)。
[0047]
d.判断s
′j的内容是否等于序列f的内容,序列f为“帧地址输入命令”对应的位流信息(“帧地址输入命令”是一种配置命令)。若二者一致,则s

j 1
(帧地址只会出现在序列f的后一组)为帧地址,执行步骤e。反之j加1,重新执行步骤c-d。
[0048]
e.将s

j 1
添加到集合{fa}中。
[0049]
f.判断s

j 2
的内容(序列w只会出现在s

j 1
的后一组)是否等于序列w的内容,w为“多帧写入命令”对应的位流序列。若二者一致,则说明s

j 1
(s

j 2
的内容决定s

j 1
所属的帧地址类型)为多帧写入的帧地址,将s

j 1
添入集合{d},反之将s

j 1
添入集合{i}。
[0050]
g.判断j是否小于组数n

。若是,j加1,执行步骤c至f。反之结束帧地址类型判定。
[0051]

帧地址排序
[0052]
在压缩位流文件中,多帧写入命令会导致帧地址乱序排列,集合{fa}中的帧地址是乱序排列的,但未压缩位流文件中帧地址是顺序排列的。通过冒泡排序法对集合{fa}中所有帧地址按从小到大的顺序排序,得到集合{fo}。
[0053]

标记特殊帧地址
[0054]
标记特殊帧地址的方法流程图如图4所示。
[0055]
a.依据不同样本帧(样本帧为压缩位流文件中以帧数据输入的方式出现的部分配置帧),将多帧写入地址集{d}分为k3个子集({d1},{d2},...,{d
k3
},j

=1,2,

,k3),其中,{dj′
}是以同一个帧地址为样本帧的若干个帧地址的集合。
[0056]
b.取集合{dj′
}中最后一个帧地址d
mi

[0057]
c.在集合{fo}中找到d
mi
,其索引记为dex。
[0058]
d.判断d
mi
是否是集合{fo}中最后一个帧地址。若是,结束标记。反之取集合{fo}中第dex 1个帧地址f
dex 1

[0059]
e.判断帧地址d
mi
和帧地址f
dex 1
的行信息指定位是否一致。若不一致,说
[0060]
明帧地址d
mi
和帧地址f
dex 1
存在跨行关系,执行步骤f。若一致,直接执行步骤g。
[0061]
f.将帧地址d
mi
标记为特殊帧地址。
[0062]
g.判断j

是否小于子集个数k3。若是,j

加1,执行步骤b至f。反之结束标记。
[0063]
(3)构建数据处理模块
[0064]
数据处理模块的方法流程图如图5所示。
[0065]
a.取集合{fo}中第i

个帧地址。
[0066]
b.判断第i

个帧地址是否属于集合{d}。若不是,说明该地址为帧数据输入地址,执行步骤c。反之说明该地址为多帧写入地址,执行步骤d。
[0067]
c.在压缩位流文件中找到该帧地址所在包,删去包头信息,将数据部分拷贝至解压缩文件,执行步骤g。
[0068]
d.判断第i

个帧地址是否是特殊帧地址。若不是,令解压缩系数n1等于1,反之,令解压缩系数n2等于3。
[0069]
e.在压缩位流文件中找到第i

帧对应的样本帧。
[0070]
f.将样本帧的数据内容拷贝至解压缩文件,依据步骤d设置拷贝次数为n1或n2次。
[0071]
g.判断i

是否小于n

,n

为集合{fo}中元素个数。若i

小于n

,i

加1,执行步骤a,取{fo}中下一个帧地址。反之,说明已取出{fo}中所有帧地址,输出解压缩文件,解压缩方法结束。
[0072]
为检验本发明方法的正确性,本发明选取了赛灵思厂商的几个不同系列芯片进行了测试,其中包括spartan-6系列、artix-7系列和virtex-5系列。在每个系列中,本发明选取了4款代表性芯片进行解压缩测试,以spartan-6系列为例,针对xc6slx4、xc6slx45、xc6slx100和xc6slx150这四个型号的压缩位流文件进行了解压缩测试。表1给出了测试结果。
[0073]
表1解压缩测试结果
[0074][0075]
表1的测试结果证实了本发明的正确性和可行性。表1表明,针对直接从fpga芯片的开发环境中获得的压缩位流文件,本发明能完整无误地解压缩出压缩位流文件对应的未压缩位流文件。
[0076]
以上所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献