一种基于机器学习的门级信息流模型生成方法及装置
技术领域
本发明涉及芯片领域,更具体涉及一种基于机器学习的门级信息流模型生成方法及装置。
背景技术
信息流追踪是一种基于端口的,用于追踪关键信息流向以及分析隐蔽路径的方法,具有较好的灵活性与可扩展性,被广泛应用于集成电路信息安全的检测领域。
近年来,基于信息流追踪技术的信息安全检测方法大多以语言设计的形式被提出。文献《X.Li,M.Tiwari,J.K.Oberg,V.Kashyap,F.T.Chong,T.Sherwood,andB.Hardekopf,“Caisson:a hardware description language for secure informationflow,”in ACM SIGPLAN Notices,vol.46,no.6.ACM,2011,pp.109–120.》公开的Caisson语言和文献《X.Li,V.Kashyap,J.K.Oberg,M.Tiwari,V.R.Rajarathinam,R.Kastner,T.Sherwood,B.Hardekopf,and F.T.Chong,“Sapper:A language for hardware-levelsecurity policy enforcement,”in ACM SIGARCH Computer Architecture News,vol.42,no.1.ACM,2014,pp.97–112.》公开的Sapper语言在安全综合电路中实现了信息流追踪的安全等级分离与传播隔离特性。然而,Caisson和Sapper语言设计中,在实现信息流逻辑时会在生成的硬件中复制大量线网和寄存器,这极大地增加了原本电路设计的硬件开销。
文献《D.Zhang,A.Askarov,and A.C.Myers,“Language-based control andmitigation of timing channels,”ACM SIGPLAN Notices,vol.47,no.6,pp.99–110,2012.》记载了康奈尔大学开发的SecVerilog语言,其通过在编译阶段检测信息泄露来避免产生过大的硬件开销。SecVerilog语言扩展了标准Verilog语言的类型库,尽量减少了对原始电路设计引入额外的干扰。然而,SecVerilog语言在检测信息泄露时设计了一个较为复杂的安全标签系统以提高精度,这需要电路设计者具备相当的安全领域知识来指定信息流策略。
加利福尼亚大学的Mohit Tiwari等人发表的文献《M.Tiwari,H.M.Wassel,B.Mazloom,S.Mysore,F.T.Chong,and T.Sherwood,“Complete information flowtracking from the gates up,”in ACM Sigplan Notices,vol.44,no.3.ACM,2009,pp.109–120.》提出了门级信息流的方法,来检测硬件电路运行中的恶意逻辑。门级信息流追踪的方法对逻辑门建模,并在门级标记安全标签。西北工业大学的Hu Wei等人发表文献《W.Hu,J.Oberg,A.Irturk,M.Tiwari,T.Sherwood,D.Mu,and R.Kastner,“On thecomplexity of generating gate level information flow tracking logic,”IEEETransactions on Information Forensics and Security,vol.7,no.3,pp.1067–1080,2012.》提出的基于门级信息流的安全验证方法,将信息流传播逻辑与原始功能电路一起在硬件中实现,这种方式带来了较大的硬件开销。
综上,整体而言,目前基于信息流追踪的安全检测方法较多地集中在对硬件设计语言的开发与扩展上。门级信息流追踪技术是一种支持在门级阶段对电路设计进行安全验证的信息流追踪技术,能够支持在电路设计阶段对信息机密性进行高层次验证。然而目前的方法缺乏全流程自动化的模型构建手段,难以在大规模电路的验证中应用。同时,针对门级网表的信息流模型构建,需要验证者具有对网表中逻辑单元功能的先验知识。而在实际的工业生产中,逻辑单元库具有较高的知识产权保密性,验证者往往难以得到逻辑单元具体的功能描述。因此,目前的方法和技术难以在产业界进行大规模的推广,相关的技术与工具亟需补充研究与开发。
发明内容
本发明所要解决的技术问题在于现有技术基于信息流追踪的安全检测方法缺乏全流程自动化的模型构建手段,难以在大规模电路的验证中应用,难以在产业界进行大规模的推广的问题。
本发明通过以下技术手段实现解决上述技术问题的:一种基于机器学习的门级信息流模型生成方法,包括:
步骤一:将开源逻辑单元库中门级网表逻辑单元集合作为训练集,待分类的无先验知识门级网表作为测试集;
步骤二:将训练数据作为面向分类的机器学习模型的输入,面向分类的机器学习模型输出训练数据对应的逻辑表达式,对该模型进行训练并利用测试集对该模型进行验证;
步骤三:对于训练好的面向分类的机器学习模型,基于python语言编写自动化脚本,实现面向无先验知识门级网表的信息流追踪模型构建;
步骤四:将实时获取的无先验知识门级网表输入信息流追踪模型,获取该门级网表对应的逻辑表达式。
有益效果:本发明利用开源逻辑单元库中门级网表逻辑单元集合对面向分类的机器学习模型进行训练,得到面向无先验知识门级网表的信息流追踪模型,能够实现面向门级网表的信息流追踪模型全自动化构建,能够在大规模电路的验证中应用,不需要验证者具有对网表中逻辑单元功能的先验知识,直接将实时获取的无先验知识门级网表输入构建的模型中即可得出该门级网表对应的逻辑表达式,有利于在产业界进行大规模的推广。
进一步地,所述开源逻辑单元库包括Cadence Genus标准逻辑单元库与Open CellLibrary逻辑单元库。
进一步地,所述门级网表逻辑单元集合包括不同的逻辑单元,各个逻辑单元的特征包括逻辑单元种类、逻辑单元名称、逻辑单元端口。
进一步地,所述面向分类的机器学习模型包括支持向量机模型、K-最近邻模型或者随机森林模型。
进一步地,所述步骤二中对该模型进行训练,包括:
所述面向分类的机器学习模型的标准输出是输入的训练数据对应的正确逻辑表达式,不断调整面向分类的机器学习模型的参数,直到面向分类的机器学习模型的实际输出与标准输出之间的偏差在预设范围内,则停止训练。
进一步地,所述步骤四包括:
实时获取无先验知识门级网表,解析无先验知识门级网表的语法结构,标定其中决定逻辑单元操作的关键元素,将关键元素作为门级网表逻辑单元集合输入信息流追踪模型,获取该门级网表对应的逻辑表达式。
本发明还提供一种基于机器学习的门级信息流模型生成装置,包括:
数据集获取模块,用于将开源逻辑单元库中门级网表逻辑单元集合作为训练集,待分类的无先验知识门级网表作为测试集;
模型训练模块,用于将训练数据作为面向分类的机器学习模型的输入,面向分类的机器学习模型输出训练数据对应的逻辑表达式,对该模型进行训练并利用测试集对该模型进行验证;
模型构建模块,用于对于训练好的面向分类的机器学习模型,基于python语言编写自动化脚本,实现面向无先验知识门级网表的信息流追踪模型构建;
结果输出模块,用于将实时获取的无先验知识门级网表输入信息流追踪模型,获取该门级网表对应的逻辑表达式。
进一步地,所述开源逻辑单元库包括Cadence Genus标准逻辑单元库与Open CellLibrary逻辑单元库。
进一步地,所述门级网表逻辑单元集合包括不同的逻辑单元,各个逻辑单元的特征包括逻辑单元种类、逻辑单元名称、逻辑单元端口。
进一步地,所述面向分类的机器学习模型包括支持向量机模型、K-最近邻模型或者随机森林模型。
进一步地,所述模型训练模块中对该模型进行训练,包括:
所述面向分类的机器学习模型的标准输出是输入的训练数据对应的正确逻辑表达式,不断调整面向分类的机器学习模型的参数,直到面向分类的机器学习模型的实际输出与标准输出之间的偏差在预设范围内,则停止训练。
进一步地,所述结果输出模块还用于:
实时获取无先验知识门级网表,解析无先验知识门级网表的语法结构,标定其中决定逻辑单元操作的关键元素,将关键元素作为门级网表逻辑单元集合输入信息流追踪模型,获取该门级网表对应的逻辑表达式。
本发明的优点在于:本发明利用开源逻辑单元库中门级网表逻辑单元集合对面向分类的机器学习模型进行训练,得到面向无先验知识门级网表的信息流追踪模型,能够实现面向门级网表的信息流追踪模型全自动化构建,能够在大规模电路的验证中应用,不需要验证者具有对网表中逻辑单元功能的先验知识,直接将实时获取的无先验知识门级网表输入构建的模型中即可得出该门级网表对应的逻辑表达式,有利于在产业界进行大规模的推广。
附图说明
图1为现有技术2-AND门级信息流追踪结构示意图;
图2为门级网表与逻辑表达式的拆分示意图;
图3为本发明实施例1所提供的一种基于机器学习的门级信息流模型生成方法的流程图;
图4为本发明实施例1所提供的一种基于机器学习的门级信息流模型生成方法中一段门级网表示意图;
图5为本发明实施例1所提供的一种基于机器学习的门级信息流模型生成方法中Cadence Genus门级网表示意图;
图6为本发明实施例1所提供的一种基于机器学习的门级信息流模型生成方法中Open Cell Library门级网表示意图;
图7为本发明实施例1所提供的一种基于机器学习的门级信息流模型生成方法中通过门级网表归纳的逻辑单元功能结果示意图;
图8为本发明实施例1所提供的一种基于机器学习的门级信息流模型生成方法中门级网表与逻辑集合的映射关系示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
门级信息流的一个显著优点是为每个bit的信息都配置一个安全标签,能够保证安全标签在电路中的精准传播,降低误报率。传统信息流追踪方法如下式所示。
output:=AND-2(secret,0x00000000)
其中AND-2函数对两个32位输入执行“与”操作,secret信号被标记为高安敏感信号。在传统的信息流方法中,敏感标签将被传播到输出端口,然后被检测为信息泄漏。然而,由于“与”操作中涉及的另一个信号为零,因此该操作实际上不会泄露任何敏感信息,这就会导致误报。
在门级信息流追踪(Gate Level Information Flow Tracking,GLIFT)方法中,在标签传播过程中同时考虑了初始信号值和安全标签的值。相比只跟踪原始设计中的数据流,额外考虑输入值对输出的影响。为了实现这一目标,门级信息流追踪方法需要引入额外的逻辑门。以二输入与门为例。如图1所示为2-AND门级信息流追踪结构示意图。
对于每个二输入与门,插入如图1所示的额外逻辑门。A和B均为1位输入,O为1位输出。对应的,将A、B和O的标签表示为At、Bt和Ot。按照该结构所示的逻辑,一旦安全标签值为低的输入为0,输出标签Ot将保持0,无论其他安全标签值为高的输入是什么。只有在安全标签值为高的输入为1的情况下,Ot才会受到安全标签值为高的输入的影响,具体的传播逻辑如下:
Ot==(At&Bt)|(At&B)|(A&Bt)
相似地,对于而二输入或门、异或门、非门等逻辑门有:
Ot==(At&Bt)|(At&~B)|(~A&Bt)
Ot==At|Bt
Ot==At
对于逻辑较为复杂的多输入逻辑门,可由分析推理可以得到相对应的信息流追踪逻辑,如三输入与非门,其信息流追踪逻辑如下:
Ot==(At&B&C)|(A&Bt&C)|(A&B&Ct)|(A&Bt&Ct)|(At&B&Ct)|(At&Bt&C)|(At&Bt&Ct)
通过上述分析可知,门级信息流追踪的逻辑与母本电路的逻辑门具有一一对应的关系。在对于门级网表格式的电路进行门级信息流模型生成时,需要明确网表中逻辑单元的具体执行逻辑,才能进行对应的信息流追踪逻辑映射。为了提高模型构建的效率,实现在无先验知识的情况下完成门级信息流追踪模型构建,同时保障模型在电路设计层级与形式化抽象层次的等价性,本发明提出一种基于机器学习的门级信息流追踪模型构建方法。具体技术流程如下:
(1)首先,如图2所示,解析门级网表的语法结构,标定其中决定逻辑单元执行操作的关键元素,并分析其与二进制逻辑表达式之间的对应关系。
(2)如图3所示,以开源逻辑单元库进行上述步骤(1)的操作得到关键元素也即逻辑单元集合作为训练集,训练分类模型,形成多元分类判别模型f,所述多元分类判别模型f为面向分类的机器学习模型,本实施例中,面向分类的机器学习模型包括支持向量机模型、K-最近邻模型或者随机森林模型。设无逻辑单元先验知识的门级网表为测试集X,对其进行逻辑单元对应逻辑功能的分类与归纳,得到门级网表对应的逻辑表达式集合:
(3)依据母本电路逻辑与信息流追踪逻辑之间的对应关系,构建以母本电路逻辑为定义域,以信息流追踪逻辑为值域的离散映射,也即将母本电路逻辑(门级网表对应的逻辑单元集合)作为面向分类的机器学习模型的输入,将信息流追踪逻辑(门级网表对应的逻辑表达式)作为面向分类的机器学习模型的输出,基于python语言形成自动化映射脚本,实现信息流追踪模型的精准高效构建。
以下以一段门级网表为例对本发明的方案进行详细说明。如图4所示,在并不知道其逻辑单元端口定义及具体的逻辑表达式时,无法得知其具体的逻辑操作,因而无法生成其对应的信息流追踪模型。为了在无先验知识的情况下生成其对应的信息流追踪模型,需要利用面向分类的机器学习算法。首先以开源逻辑单元库作为训练集,以Cadence Genus标准逻辑单元库与Open Cell Library逻辑单元库为例,其语法结构与对应逻辑如图5和图6所示。
对于已知细节的门级网表,其分类结果如图5和图6所示。将门级网表依据其语法结构进行拆解,可以得到逻辑单元种类、逻辑单元名称、逻辑单元端口等元素,将上述元素设置为“特征”。将已知细节的门级网表逻辑单元集合设置为训练集,将待分类的无先验知识门级网表设置为测试集,导入面向分类的机器学习算法,如支持向量机、K-最近邻、随机森林等,进行逻辑单元功能的推导与归纳。结果如图7所示。
在完成逻辑归纳的基础上,按照上述步骤(1)至步骤(3)中所述信息流追踪逻辑生成关系,构建定义域为逻辑单元集合,值域为GLIFT逻辑集合非空子集的离散映射G,如图8所示。按照上述转译与映射逻辑,基于python语言编写自动化脚本,即可实现面向无先验知识门级网表的信息流追踪模型构建。
通过上述技术方案,本发明可以对门级网表格式的电路设计进行相应的门级信息流模型构建。该方法不受电路规模的约束,其时间与资源开销随着电路规模的增大呈线性增长,有较好的收敛性,能够应用于较大规模的门级电路。此外,该方法不需要门级网表逻辑单元的参数说明与电路功能的详细解释,能够在保障电路设计知识产权的同时,更方便地进行网表级电路信息流向追踪,以及基于信息流的安全性分析。
实施例2
基于实施例1,本发明实施例2还提供一种基于机器学习的门级信息流模型生成装置,包括:
数据集获取模块,用于将开源逻辑单元库中门级网表逻辑单元集合作为训练集,待分类的无先验知识门级网表作为测试集;
模型训练模块,用于将训练数据作为面向分类的机器学习模型的输入,面向分类的机器学习模型输出训练数据对应的逻辑表达式,对该模型进行训练并利用测试集对该模型进行验证;
模型构建模块,用于对于训练好的面向分类的机器学习模型,基于python语言编写自动化脚本,实现面向无先验知识门级网表的信息流追踪模型构建;
结果输出模块,用于将实时获取的无先验知识门级网表输入信息流追踪模型,获取该门级网表对应的逻辑表达式。
具体的,所述开源逻辑单元库包括Cadence Genus标准逻辑单元库与Open CellLibrary逻辑单元库。
具体的,所述门级网表逻辑单元集合包括不同的逻辑单元,各个逻辑单元的特征包括逻辑单元种类、逻辑单元名称、逻辑单元端口。
具体的,所述面向分类的机器学习模型包括支持向量机模型、K-最近邻模型或者随机森林模型。
具体的,所述模型训练模块中对该模型进行训练,包括:
所述面向分类的机器学习模型的标准输出是输入的训练数据对应的正确逻辑表达式,不断调整面向分类的机器学习模型的参数,直到面向分类的机器学习模型的实际输出与标准输出之间的偏差在预设范围内,则停止训练。
具体的,所述结果输出模块还用于:
实时获取无先验知识门级网表,解析无先验知识门级网表的语法结构,标定其中决定逻辑单元操作的关键元素,将关键元素作为门级网表逻辑单元集合输入信息流追踪模型,获取该门级网表对应的逻辑表达式。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。