所屬的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的存儲裝置、處理裝置的具體工作過程及有關(guān)說明,可以參考前述方法實(shí)施例中的對應(yīng)過程,在此不再贅述。本領(lǐng)域技術(shù)人員應(yīng)該能夠意識到,結(jié)合本文中所公開的實(shí)施例描述的各示例的模塊、方法步驟,能夠以電子硬件、計算機(jī)軟件或者二者的結(jié)合來實(shí)現(xiàn),軟件模塊、方法步驟對應(yīng)的程序可以置于隨機(jī)存儲器(ram)、內(nèi)存、只讀存儲器(rom)、電可編程rom、電可擦除可編程rom、寄存器、硬盤、可移動磁盤、cd-rom、或內(nèi)所公知的任意其它形式的存儲介質(zhì)中。為了清楚地說明電子硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以電子硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。本領(lǐng)域技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不是用于描述或表示特定的順序或先后次序。術(shù)語“包括”或者任何其它類似用語旨在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備/裝置不僅包括那些要素,而且還包括沒有明確列出的其它要素,或者還包括這些過程、方法、物品或者設(shè)備/裝置所固有的要素。至此,已經(jīng)結(jié)合附圖所示的優(yōu)選實(shí)施方式描述了本發(fā)明的技術(shù)方案,但是,本領(lǐng)域技術(shù)人員容易理解的是,本發(fā)明的保護(hù)范圍顯然不局限于這些具體實(shí)施方式。在不偏離本發(fā)明的原理的前提下,本領(lǐng)域技術(shù)人員可以對相關(guān)技術(shù)特征做出等同的更改或替換,這些更改或替換之后的技術(shù)方案都將落入本發(fā)明的保護(hù)范圍之內(nèi)。
背景技術(shù):
1、可編程邏輯門陣列(field-programmable?gate?arrays,fpga)因其高度的靈活性和在各種應(yīng)用中扮演著關(guān)鍵角色。設(shè)計人員和工程師也因其可重新配置的性質(zhì)而廣泛選擇使用fpga。但是,高度的可編程性也為潛在的安全風(fēng)險敞開大門,不可信的第三方可能會在其中插入惡意模塊,也就是硬件木馬。
2、硬件木馬可能具有改變功能、竊取信息、降低可靠性等攻擊功能,對個人信息安全乃至國家國防安全都會產(chǎn)生巨大的威脅性。而且硬件木馬通常具有隱蔽性和罕見觸發(fā)性,增加了木馬檢測的難度。因此硬件木馬檢測已經(jīng)成為近年來的研究熱點(diǎn)。
3、在木馬檢測的研究中,非木馬節(jié)點(diǎn)的可測試性值會明顯低于木馬節(jié)點(diǎn)的可測試性值。為解決這一問題,goldstein于1980年提出的scoap(sandia?controllability/observability?analysis?program)可測試性度量被廣為接受,而基于scoap的木馬檢測方法也層出不窮,但是scoap可測試性度量中并未提及fpga綜合網(wǎng)表中的可測試性度量計算方式。
技術(shù)實(shí)現(xiàn)思路
1、為了解決現(xiàn)有技術(shù)中的上述問題,即現(xiàn)有的fpga綜合網(wǎng)表的可測試性值獲取方法無法在早期的設(shè)計階段進(jìn)行計算的問題,本發(fā)明提供了一種面向fpga木馬檢測的可測試性值計算方法,所述方法包括:
2、步驟s1,初始化fpga綜合網(wǎng)表的全部節(jié)點(diǎn),獲得初始網(wǎng)表;
3、步驟s2,對初始網(wǎng)表的所有主輸入i置cc0(i)=cc1(i)=1,對初始網(wǎng)表的所有主輸出o置co(o)=0;
4、步驟s3,對設(shè)置好主輸入和主輸出的初始網(wǎng)表進(jìn)行拓?fù)浠?,獲得拓?fù)浠W(wǎng)表;
5、步驟s4,根據(jù)拓?fù)浠W(wǎng)表計算拓?fù)浠W(wǎng)表的拓?fù)浯涡颍?/p>
6、步驟s5,基于所述拓?fù)浯涡颍瑥闹鬏斎腴_始依次計算各節(jié)點(diǎn)的可控性值;
7、步驟s6,基于所述拓?fù)浯涡颍谒隹煽匦灾祻闹鬏敵鲩_始依次計算各節(jié)點(diǎn)的可觀測性值;所述可控性值和可觀測性值作為可測試性值。
8、進(jìn)一步的,所述各節(jié)點(diǎn)的可控性值和各節(jié)點(diǎn)的可觀測性值具體為:
9、所述各節(jié)點(diǎn)的可控性值,包括查找表lut的可控性值、進(jìn)位邏輯鏈carry的可控性值、觸發(fā)器的可控性值和鎖存器的可控性值;
10、所述各節(jié)點(diǎn)的可觀測性值,包括查找表lut的可觀測性值、進(jìn)位邏輯鏈carry的可觀測性值、觸發(fā)器的可觀測性值和鎖存器的可觀測性值。
11、進(jìn)一步的,所述可控性值的計算方法根據(jù)可以確定邏輯門的輸出時的輸入可控性值的數(shù)量不同進(jìn)行區(qū)分;
12、當(dāng)設(shè)置1個輸入可控性值可確定邏輯門的輸出時:
13、輸出可控性=min(輸入可控性)+邏輯深度
14、當(dāng)所有輸入都設(shè)置為控制值可確定邏輯門的輸出時:
15、輸出可控性=∑(輸入可控性)+邏輯深度
16、當(dāng)設(shè)置輸出由多個控制集可確定邏輯門的輸出時:
17、輸出可控性=min(輸入可控性集)+邏輯深度。
18、進(jìn)一步的,所述查找表lut的可控性值計算方法為:
19、根據(jù)查找表lut找到所有使輸出的取值bi=0(1)的索引記為搜索索引i;
20、對于每一個搜索索引i對應(yīng)的輸入集合(ain,ai(n-1),…,ai1)計算n位寬的查找表lutn的輸入可控性值,加上查找表當(dāng)前的邏輯深度1,獲得n位寬的超招標(biāo)lutn的輸入可控性值:
21、
22、
23、其中,cc0lut(o)表示lut當(dāng)前節(jié)點(diǎn)的0-可控制性值,cc1lut(o)lut當(dāng)前節(jié)點(diǎn)的1-可控制性值,aij表示的lut輸入的取值,ik表示輸入,ij表示n位寬的查找表lutn的第j位輸入,bi表示所有輸入的第i個元素對應(yīng)輸出的取值,i=1,2,…,2n,其中i表示輸入的元素的序號,ij∈ik,cc表示輸入可控性值。進(jìn)一步的,所述查找表lut的可觀測性值計算方法為:
24、colut(ik)=1+colut(o)+min(∑(ccxlut(im)+ccylut(o)))
25、其中,ccxlut(im)代表真值表中除了當(dāng)前輸入值ik以外的每一個非當(dāng)前輸入值im在取值為x(x=0,1)時的可控制性值,ccylut(o)中的y代表真值表中對應(yīng)的一行中輸出取值,ccylut(o)代表輸出取值為y時的可控制性值。
26、進(jìn)一步的,所述進(jìn)位邏輯鏈carry的可控性值計算方法為:
27、搜索所有使進(jìn)位邏輯鏈carry的加法/減法結(jié)果輸出端為零o[0]=0的第一輸入組合對;
28、基于所述第一輸入組合對中可控性值的最小值的一對的可控性值,加上邏輯深度,獲得進(jìn)位邏輯鏈carry的可控性值:
29、cc0carry(o[0])=
30、min(cc0carry(s[0])+cc0carry(cyinit),cc1carry(s[0])+
31、cc1carry(cyinit))+1
32、cc1carry(o[0])=
33、min(cc0carry(s[0])+cc1carry(cyinit),cc1carry(s[0])+
34、cc0carry(cyinit))+1
35、cc0carry(co[0])=
36、min(cc0carry(s[0])+cc0carry(di[0]),cc1carry(s[0])+
37、cc0carry(cyinit))+1
38、cc1carry(co[0])=
39、min(cc0carry(s[0])+cc1carry(di[0]),cc1carry(s[0])+
40、cc1carry(cyinit))+1
41、cc0carry(o[1])=
42、min(cc0carry(s[1])+cc0carry(co[0]),cc1carry(s[1])+
43、cc1carry(co[0]))+2
44、cc1carry(o[1])=
45、min(cc0carry(s[1])+cc1carry(co[0]),cc1carry(s[1])+
46、cc0carry(co[0]))+2
47、cc0carry(co[1])=
48、min(cc0carry(s[1])+cc0carry(di[1]),cc1carry(s[1])+
49、cc0carry(co[0]))+2
50、cc1carry(co[1])=
51、min(cc0carry(s[1])+cc1carry(di[1]),cc1carry(s[1])+
52、cc1carry(co[0]))+2
53、cc0carry(o[2])=
54、min(cc0carry(s[2])+cc0carry(co[1]),cc1carry(s[2])+
55、cc1carry(co[1]))+3
56、cc1carry(o[2])=
57、min(cc0carry(s[2])+cc1carry(co[1]),cc1carry(s[2])+
58、cc0carry(co[1]))+3
59、cc0carry(co[2])=
60、min(cc0carry(s[2])+cc0carry(di[2]),cc1carry(s[2])+
61、cc0carry(co[1]))+3
62、cc1carry(co[2])=
63、min(cc0carry(s[2])+cc1carry(di[2]),cc1carry(s[2])+
64、cc1carry(co[1]))+3
65、cc0carry(o[3])=
66、min(cc0carry(s[3])+cc0carry(co[2]),cc1carry(s[3])+
67、cc1carry(co[2]))+4
68、cc1carry(o[3])=
69、min(cc0carry(s[3])+cc1carry(co[2]),cc1carry(s[3])+
70、cc0carry(co[2]))+4
71、cc0carry(co[3])=
72、min(cc0carry(s[3])+cc0carry(di[3]),cc1carry(s[3])+
73、cc0carry(co[2]))+4
74、cc1carry(co[3])=
75、min(cc0carry(s[3])+cc1carry(di[3]),cc1carry(s[3])+
76、cc1carry(co[2]))+4
77、cc0carry()表示進(jìn)位邏輯鏈carry的0-可控制性值,cc1carry(o[0])表示進(jìn)位邏輯鏈carry的1-可控制性值,s表示進(jìn)位邏輯鏈carry的同步設(shè)定端,cyinit表示進(jìn)位邏輯鏈carry的初始化值,di表示進(jìn)位邏輯鏈carry的數(shù)據(jù)輸入,co[]表示進(jìn)位邏輯鏈carry的輸出,[]中的1、2和3表示索引。
78、進(jìn)一步的,所述進(jìn)位邏輯鏈carry的可觀測性值計算方法為:
79、cocarry(cyinit)=
80、min(cc0carry(o[0])+cc0carry(s[0]),cc1carry(o[0])+
81、cc0carry(s[0]),cc0carry(o[0])+cc1carry(s[0]),cc1carry(o[0])+
82、cc1carry(s[0]))+cocarry(o[0])+1
83、cocarry(s[0])=
84、min(cc0carry(o[0])+cc0carry(cyinit),cc1carry(o[0])+
85、cc0carry(cyinit),cc0carry(o[0])+cc1carry(cyinit),cc1carry(o[0])+cc1carry(cyinit))+cocarry(o[0])+1
86、cocarry(s[1])=
87、min(cc0carry(o[1])+cc0carry(co[0]),cc1carry(o[1])+
88、cc0carry(co[0]),cc0carry(o[1])+cc1carry(co[0]),cc1carry(o[1])+
89、cc1carry(co[0]))+cocarry(o[1])+1
90、cocarry(s[2])=
91、min(cc0carry(o[2])+cc0carry(co[1]),cc1carry(o[2])+
92、cc0carry(co[1]),cc0carry(o[2])+cc1carry(co[1]),cc1carry(o[2])+
93、cc1carry(co[1]))+cocarry(o[2])+1
94、cocarry(s[3])=
95、min(cc0carry(o[3])+cc0carry(co[2]),cc1carry(o[3])+
96、cc0carry(co[2]),cc0carry(o[3])+cc1carry(co[2]),cc1carry(o[3])+
97、cc1carry(co[2]))+cocarry(o[3])+1
98、cocarry(di[0])=
99、min(cc0carry(s[0])+cc0carry(co[0]),cc0carry(s[0])+
100、cc1carry(co[0]))+cocarry(co[0])+1
101、cocarry(di[1])=
102、min(cc0carry(s[1])+cc0carry(co[1]),cc0carry(s[1])+
103、cc1carry(co[1]))+cocarry(co[1])+1
104、cocarry(di[2])=
105、min(cc0carry(s[2])+cc0carry(co[2]),cc0carry(s[2])+
106、cc1carry(co[2]))+cocarry(co[2])+1
107、cocarry(di[3])=
108、min(cc0carry(s[3])+cc0carry(co[3]),cc0carry(s[3])+
109、cc1carry(co[3]))+cocarry(co[3])+1
110、其中,cocarry()表示可觀測性值,cc0carry()表示0-可控制性值,cc1carry()表示1-可控性值,s表示進(jìn)位邏輯鏈carry的同步設(shè)定端,cyinit表示進(jìn)位邏輯鏈carry的初始化值,di表示進(jìn)位邏輯鏈carry的數(shù)據(jù)輸入,o表示進(jìn)位邏輯鏈carry的輸出,co[]表示進(jìn)位邏輯鏈carry的輸出,[]中的1、2和3表示索引。
111、進(jìn)一步的,所述觸發(fā)器的可控性值和鎖存器的可控性值計算方法為:
112、對于第一類觸發(fā)器fdce的可控性值和第一類鎖存器ldce的可控性值:
113、cc0(q)=min(cc0(clr)+cc0(d)+cc0(c)+cc1(c)
114、+cc1(ce),cc1(clr))
115、cc1(q)=min(cc0(clr)+cc1(d)+cc0(c)+cc1(c)
116、+cc1(ce),cc0(ce))
117、對于第二類觸發(fā)器fdpe和第二類鎖存器ldpe的可控性值:cc0(q)=min(cc0(pre)+cc0(d)+cc0(c)+cc1(c)
118、+cc1(ce),cc0(ce))
119、cc1(q)=min(cc0(pre)+cc1(d)+cc0(c)+cc1(c)
120、+cc1(ce),cc1(pre))
121、對于第三類觸發(fā)器fdre的可控性值:
122、cc0(q)=min(cc0(r)+cc0(d)+cc0(c)+cc1(c)+cc1(ce),cc1(r))
123、cc1(q)=min(cc0(r)+cc1(d)+cc0(c)+cc1(c)+cc1(ce),cc0(ce))
124、對于第四類觸發(fā)器fdse的可控性值:
125、cc0(q)=min(cc0(s)+cc0(d)+cc0(c)+cc1(c)+cc1(ce),cc0(ce))
126、cc1(q)=min(cc0(s)+cc1(d)+cc0(c)+cc1(c)+cc1(ce),cc1(s))
127、其中,cc0()表示0-可控制性值,cc1()表示1-可控性值,q表示觸發(fā)器或鎖存器的輸出數(shù)據(jù),r表示同步復(fù)位端,c表示時鐘端,ce表示時鐘使能端,pre表示異步預(yù)設(shè)端。
128、進(jìn)一步的,所述觸發(fā)器的可觀測性值和鎖存器的可觀測性值計算方法為:
129、對于第一類觸發(fā)器fdce的可觀測性值和第一類鎖存器ldce的可觀測性值:
130、co(d)=co(q)+cc1(c)+cc0(c)+cc0(clr)+cc1(ce)
131、對于第二類觸發(fā)器fdpe的可觀測性值和第二類鎖存器ldpe的可觀測性值:
132、co(d)=co(q)+cc1(c)+cc0(c)+cc0(pre)+cc1(ce)
133、對于第三類觸發(fā)器fdre的可觀測性值:
134、co(d)=co(q)+cc1(c)+cc0(c)+cc0(r)+cc1(ce)
135、對于第四類觸發(fā)器fdse的觀測性值:
136、co(d)=co(q)+cc1(c)+cc0(c)+cc0(s)+cc1(ce)
137、其中,co()表示可觀測性值,cc0()表示0-可控制性值,cc1()表示1-可控性值,d表示輸入數(shù)據(jù),q表示觸發(fā)器或鎖存器的輸出數(shù)據(jù),r表示同步復(fù)位端,c表示時鐘端,s表示同步設(shè)定端,ce表示時鐘使能端,pre表示異步預(yù)設(shè)端。
138、本發(fā)明的另一方面,提出了一種面向fpga木馬檢測的可測試性值計算系統(tǒng),
139、初始網(wǎng)表獲取模塊,配置為初始化fpga綜合網(wǎng)表的全部節(jié)點(diǎn),獲得初始網(wǎng)表;
140、輸入輸出初始化模塊,配置為對初始網(wǎng)表的所有主輸入i置cc0(i)=cc1(i)=1,對初始網(wǎng)表的所有主輸出o置co(o)=0;
141、拓?fù)浠K,配置為對設(shè)置好主輸入和主輸出的初始網(wǎng)表進(jìn)行拓?fù)浠?,獲得拓?fù)浠W(wǎng)表;
142、拓?fù)浯涡颢@取模塊,配置為根據(jù)拓?fù)浠W(wǎng)表計算拓?fù)浠W(wǎng)表的拓?fù)浯涡颍?/p>
143、可控性值計算模塊,配置為基于所述拓?fù)浯涡?,從主輸入開始依次計算各節(jié)點(diǎn)的可控性值;
144、可觀測性值計算模塊,配置為基于所述拓?fù)浯涡颍谒隹煽匦灾祻闹鬏敵鲩_始依次計算各節(jié)點(diǎn)的可觀測性值;所述可控性值和可觀測性值作為可測試性值。
145、本發(fā)明的有益效果:
146、(1)本發(fā)明能夠在fpga設(shè)計的初級階段就精確計算出網(wǎng)表的可測試性指標(biāo),使設(shè)計工程師能夠及時識別可能存在的硬件木馬。這一早期介入策略降低了后期修改的成本與風(fēng)險,加速了產(chǎn)品開發(fā)進(jìn)程。
147、(2)通過在設(shè)計初期即融入可測試性值,確保了硬件結(jié)構(gòu)既滿足功能需求,又便于后續(xù)的測試與驗(yàn)證,提升了整體系統(tǒng)的可靠性與維護(hù)性。
148、(3)對于木馬檢測,可以使研究人員獲取更多的網(wǎng)表電路特征值,在fpga綜合網(wǎng)表上實(shí)現(xiàn)更好的特征提取與木馬檢測。