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