摘 要: 提出了一種利用外接CPLD提高SRAM工藝FPGA設(shè)計(jì)安全性的方法。該方法利用異步采樣電路的不確定性生成隨機(jī)序列,并且每次上電" title="上電">上電都產(chǎn)生不同的隨機(jī)序列,,斷絕了剽竊者通過克隆序列對(duì)系統(tǒng)進(jìn)行破解的可能性。此外,,芯片之間通信采用了M序列加密,以進(jìn)一步增強(qiáng)系統(tǒng)的安全性。
關(guān)鍵詞: SRAM工藝FPGA 設(shè)計(jì)安全性 異步采樣電路 M序列
隨著FPGA的容量、性能以及可靠性的提高及其在消費(fèi)電子,、汽車電子等領(lǐng)域的大規(guī)模應(yīng)用,F(xiàn)PGA設(shè)計(jì)的安全性問題越來越引起人們的關(guān)注,。相比其他工藝FPGA而言,處于主流地位的SRAM工藝FPGA有一些優(yōu)勢(shì),,但是由于SRAM的易失性,,掉電以后芯片中的配置信息將丟失,所以每次系統(tǒng)上電時(shí)都需要重新配置,。這就使得剽竊者可以通過對(duì)FPGA的配置數(shù)據(jù)引腳進(jìn)行采樣,,得到該FPGA的配置數(shù)據(jù)流,實(shí)現(xiàn)對(duì)FPGA內(nèi)部設(shè)計(jì)電路" title="設(shè)計(jì)電路">設(shè)計(jì)電路的克隆,。為了保護(hù)設(shè)計(jì)者的知識(shí)產(chǎn)權(quán)以及推動(dòng)SRAM工藝FPGA更大規(guī)模的應(yīng)用,,產(chǎn)業(yè)界和學(xué)術(shù)界從加密算法的角度對(duì)SRAM工藝FPGA的設(shè)計(jì)安全性提出了多種解決方案[1~2],。
異步電路的競(jìng)爭(zhēng)和險(xiǎn)象問題所導(dǎo)致的不確定性,是數(shù)字電路設(shè)計(jì)中令人頭疼的問題,。但是,,如果把這種不確定性應(yīng)用在本安全方案中,同樣可以困擾剽竊者,,從而更有效地保護(hù)設(shè)計(jì),。為此,本文提出了利用異步采樣電路的不確定性提高SRAM工藝FPGA設(shè)計(jì)安全性的方法,,以提高系統(tǒng)的安全性,。
1 方案簡(jiǎn)介
1.1 設(shè)計(jì)方案的指導(dǎo)思想
(1) CPLD是難以用反向工程等物理手段進(jìn)行破解的,而且用這些方法破解CPLD的成本和設(shè)計(jì)的開發(fā)成本相近,。Xilinx公司聲稱其CoolRunner-II系列CPLD的安全性完全可以達(dá)到ASIC相當(dāng)?shù)牡燃?jí)[3],。并且,CPLD也可以用抗攻擊性強(qiáng)的小規(guī)模反熔絲FPGA來代替[4],。
(2) CPLD中觸發(fā)器資源較少,,因此應(yīng)盡量降低CPLD中的電路復(fù)雜度。
本方案借助了跳頻的理念,,在FPGA和CPLD中分別保存兩個(gè)密鑰表,,在一開始同步之后,F(xiàn)PGA中的密鑰選擇狀態(tài)機(jī)根據(jù)異步采樣電路輸出的狀態(tài)跳轉(zhuǎn)指示信號(hào)進(jìn)行跳轉(zhuǎn),。同時(shí)CPLD接收FPGA送來的狀態(tài)跳轉(zhuǎn)信號(hào),,其中的密鑰狀態(tài)機(jī)也進(jìn)行相應(yīng)的跳轉(zhuǎn),并將密鑰傳回給FPGA,。在沒有差錯(cuò)的情況下,,這兩個(gè)狀態(tài)機(jī)將一致地跳轉(zhuǎn)。FPGA通過對(duì)CPLD送來的密鑰進(jìn)行確認(rèn)來驗(yàn)證CPLD的合法性:檢驗(yàn)是否和自己的密鑰狀態(tài)機(jī)所選擇的密鑰一致,,如果一致,,則說明所連接的CPLD為合法的CPLD,F(xiàn)PGA電路正常工作,;否則認(rèn)為所連接的CPLD為非法,,停止FPGA電路工作。由以上指導(dǎo)思想設(shè)計(jì)的系統(tǒng)框圖如圖1所示,。
此外,,CPLD向FPGA傳遞的密鑰先利用M序列進(jìn)行加密,這樣使得對(duì)系統(tǒng)的破解首先需要對(duì)M序列加密算法進(jìn)行破解,,從而進(jìn)一步提高了系統(tǒng)的抗攻擊能力,。
1.2 異步采樣電路
溫度的變化、電壓的波動(dòng)等因素都會(huì)使晶振所輸出的時(shí)鐘發(fā)生抖動(dòng),。因此,,用一個(gè)時(shí)鐘去采樣另一個(gè)時(shí)鐘驅(qū)動(dòng)的信號(hào),,其采樣值是不可預(yù)測(cè)的。異步采樣電路的機(jī)理就是利用兩個(gè)時(shí)鐘之間相位和頻率的不確定性,,產(chǎn)生一個(gè)不可預(yù)測(cè)的序列,。單比特異步采樣電路的示意圖如圖2所示。圖中有4個(gè)觸發(fā)器(FF1,、FF2,、FF3、FF4)和兩個(gè)時(shí)鐘(clk,、clks),。FF1、FF2由clks信號(hào)驅(qū)動(dòng),,其中FF1是用于防止亞穩(wěn)態(tài)出現(xiàn)的觸發(fā)器,,它的輸入信號(hào)同步于clk的信號(hào),F(xiàn)F2的輸出信號(hào)則同步于clks的信號(hào),。FF3,、FF4由clk信號(hào)驅(qū)動(dòng),其中FF3的作用和FF1類似,,用于防止亞穩(wěn)態(tài)的出現(xiàn),,它的輸入信號(hào)同步于clks的信號(hào);FF4的輸出信號(hào)則同步于clk的信號(hào),。通過上述處理后,,F(xiàn)F4的輸出產(chǎn)生了一個(gè)隨機(jī)序列,這個(gè)隨機(jī)序列不同于同步電路產(chǎn)生的偽隨機(jī)序列" title="偽隨機(jī)序列">偽隨機(jī)序列,,其狀態(tài)的轉(zhuǎn)移同溫度,、電壓等外界因素有關(guān),是一個(gè)完全不可預(yù)測(cè)的隨機(jī)序列,。此外,,異步采樣電路對(duì)兩個(gè)時(shí)鐘之間的相位敏感,所以在電路板每次上電時(shí)所生成的序列也是不同的,。
異步采樣模塊的VHDL實(shí)現(xiàn)如下:
--this process is triggered by clks
process(rst, clks)
begin
if rst=‘0’ then
ff1 <= (others=>‘0’);
ff2 <= (others=>‘0’);
elsif clks‘event and clks=‘1’ then
ff1 <= din; --din is the signal triggered by clk
ff2 <= ff1;
end if;
end process;
-- this process is triggered by clk
process(rst, clk)
begin
if rst=‘0’ then
ff3 <= (others=>‘0’);
ff4 <= (others=>‘0’);
elsif clk′event and clk=‘1’ then
ff3 <= ff2;
ff4 <= ff3;
end if;
end process;
dout <= ff4; -- dout is output random signal
其中:din為同步于clk的輸入序列,,dout為輸出的隨機(jī)序列。
將本文所設(shè)計(jì)的方法應(yīng)用到Altera公司的Cyclone[5]系列FPGA中,,利用Quartus II中的SignalTapII Logical Analyzer工具,,兩次采樣復(fù)位后FPGA內(nèi)異步采樣電路的輸入輸出信號(hào),得到如圖3所示的波形,,其中兩個(gè)時(shí)鐘:clk為2.000MHz,clks為2.048MHz,。觀察系統(tǒng)復(fù)位后異步采樣電路輸出序列的隨機(jī)性可以發(fā)現(xiàn),,每次將系統(tǒng)復(fù)位后,,采用同步電路設(shè)計(jì)的偽隨機(jī)序列發(fā)生器產(chǎn)生相同的偽隨機(jī)序列(din);但是,,將這個(gè)偽隨機(jī)序列(din)輸入異步采樣電路后,,在輸出(dout)卻得到不同的隨機(jī)序列。這說明同一塊電路板每次上電時(shí)都將生成不同的隨機(jī)序列,。
1.3 密鑰選擇狀態(tài)機(jī)
FPGA和CPLD中各有一個(gè)完全相同的密鑰選擇狀態(tài)機(jī),,該狀態(tài)機(jī)根據(jù)異步采樣電路輸出的隨機(jī)序列進(jìn)行跳轉(zhuǎn),其跳轉(zhuǎn)規(guī)則可以自定義,。在本文設(shè)計(jì)的系統(tǒng)中,,密鑰表中存放有8個(gè)32位長(zhǎng)的密鑰,密鑰狀態(tài)機(jī)共有8個(gè)狀態(tài),,記為狀態(tài)0~狀態(tài)7,,每個(gè)狀態(tài)分別對(duì)應(yīng)一個(gè)密鑰,記為密鑰0~密鑰7,。
假設(shè)當(dāng)前狀態(tài)為狀態(tài)i,,異步采樣電路的輸出為j,其中i,、j∈N,,且0≤i, j≤7。那么可以采用如下簡(jiǎn)單的跳轉(zhuǎn)規(guī)則:當(dāng)采樣電路的輸出為0時(shí),,跳轉(zhuǎn)到狀態(tài)0,;否則,跳轉(zhuǎn)到狀態(tài)(i+j)mod8,。為了提高系統(tǒng)的安全性,,也可以采用各種無序的跳轉(zhuǎn)規(guī)則,通過改變跳轉(zhuǎn)規(guī)則和密鑰表,,可以得到不同的系統(tǒng),。
1.4 M序列加密解密電路
由于CPLD向FPGA傳遞密鑰之前,先利用M序列進(jìn)行加密,,使得對(duì)系統(tǒng)的破解首先需要對(duì)M序列加密算法進(jìn)行破解,,這樣既防止了密鑰的明文傳輸,又提高了系統(tǒng)的安全性,。之所以采用M序列作為加密算法,,主要考慮的是解密的自同步特性。此外根據(jù)本設(shè)計(jì)的假設(shè)即CPLD的破解是不可行的,,考慮到CPLD觸發(fā)器資源緊張,,對(duì)FPGA向CPLD之間的跳轉(zhuǎn)指示信號(hào)的傳輸沒有進(jìn)行加密,為此而節(jié)省了CPLD中的電路。
M序列的級(jí)數(shù)越大,,生成的隨機(jī)序列的周期越長(zhǎng),,破解的難度也越大。這里采用20階的M序列,,其本原多項(xiàng)式為x20+x3+1,。
1.5 密鑰校驗(yàn)
CPLD將其密鑰狀態(tài)機(jī)所對(duì)應(yīng)的密鑰回送給FPGA,F(xiàn)PGA則通過對(duì)CPLD送來的密鑰進(jìn)行確認(rèn)來驗(yàn)證CPLD的合法性,。為了不至于多占用引腳,,32位密鑰是串行傳輸" title="串行傳輸">串行傳輸的。串行傳輸給剽竊者的破解也增加了難度,,但同時(shí)帶來的問題是:FPGA需要先進(jìn)行同步和串并轉(zhuǎn)換之后才能進(jìn)行密鑰校驗(yàn),。
密鑰校驗(yàn)的狀態(tài)機(jī)如圖4所示。狀態(tài)機(jī)共有失步" title="失步">失步,、預(yù)同步,、同步和保護(hù)四種狀態(tài)。預(yù)同步狀態(tài)的設(shè)置是為了防止假同步,,只有連續(xù)三次校驗(yàn)正確才認(rèn)為找到了同步,。保護(hù)狀態(tài)的設(shè)置是為了防止誤碼引起不必要的失步,使得偶爾的誤碼并不會(huì)導(dǎo)致校驗(yàn)狀態(tài)機(jī)失步,。下面分別介紹密鑰校驗(yàn)電路在這四種狀態(tài)的具體工作方式:
(1)失步狀態(tài):系統(tǒng)剛啟動(dòng)時(shí),,F(xiàn)PGA的密鑰校驗(yàn)狀態(tài)機(jī)處于失步狀態(tài),此時(shí)異步采樣電路不工作,,輸出為0,,CPLD一直發(fā)送密鑰0。密鑰校驗(yàn)電路在M序列解密電路輸出的串行密鑰流里搜索密鑰0的碼型,,在搜索到密鑰0的碼型后,,密鑰校驗(yàn)狀態(tài)機(jī)跳轉(zhuǎn)到預(yù)同步狀態(tài)。
(2)預(yù)同步狀態(tài):當(dāng)密鑰校驗(yàn)狀態(tài)機(jī)處于預(yù)同步狀態(tài)時(shí),,異步采樣電路仍然不工作,,輸出跳轉(zhuǎn)指示為0,CPLD仍發(fā)送密鑰0,。密鑰校驗(yàn)電路進(jìn)行密鑰0校驗(yàn),,如果連續(xù)三次密鑰校驗(yàn)正確,則進(jìn)入同步態(tài),;否則返回失步態(tài)重新進(jìn)行密鑰搜索,。
(3)同步狀態(tài):此時(shí)異步采樣電路開始工作,輸出隨機(jī)序列指示FPGA和CPLD中兩個(gè)密鑰狀態(tài)機(jī)進(jìn)行跳轉(zhuǎn),。此時(shí)密鑰校驗(yàn)電路將CPLD送來的密鑰和FPGA內(nèi)部選擇的密鑰進(jìn)行對(duì)比,,如果發(fā)生校驗(yàn)錯(cuò)誤則跳轉(zhuǎn)至保護(hù)狀態(tài);否則繼續(xù)進(jìn)行密鑰校驗(yàn)工作,。
(4)保護(hù)狀態(tài):異步采樣電路依然工作,密鑰校驗(yàn)電路繼續(xù)進(jìn)行密鑰校驗(yàn),,如果連續(xù)三次密鑰校驗(yàn)錯(cuò)誤則跳轉(zhuǎn)到失步狀態(tài)重新進(jìn)行密鑰搜索;否則返回同步狀態(tài),。
在密鑰校驗(yàn)電路中設(shè)有錯(cuò)誤計(jì)數(shù)器,該計(jì)數(shù)器在失步狀態(tài)下計(jì)數(shù),。一旦錯(cuò)誤計(jì)數(shù)器的計(jì)數(shù)超過設(shè)定的閾值,則認(rèn)為密鑰檢驗(yàn)失敗,,停止FPGA電路的工作使能,。
2 安全性分析
這里列舉幾種常見的攻擊方法,并簡(jiǎn)要分析本方案在這些攻擊下的安全性,。由于本設(shè)計(jì)假設(shè)CPLD的破解是不可行的,,所以不考慮對(duì)CPLD進(jìn)行反向工程直接破解等方法。
2.1 對(duì)配置數(shù)據(jù)流進(jìn)行采樣
剽竊者通過對(duì)FPGA的配置數(shù)據(jù)引腳(圖1中的位置①)進(jìn)行采樣,,得到該FPGA的配置數(shù)據(jù)流,,實(shí)現(xiàn)對(duì)FPGA內(nèi)部設(shè)計(jì)電路的克隆。
這種方法顯然是不可行的,,因?yàn)镕PGA只有在確認(rèn)了所連接的為合法CPLD以后才能正常工作,,也就是說,需要同時(shí)克隆一份CPLD內(nèi)的設(shè)計(jì)才能使得FPGA正常工作,。
2.2 對(duì)密鑰數(shù)據(jù)流進(jìn)行采樣
剽竊者利用2.1中所述方法對(duì)FPGA內(nèi)部設(shè)計(jì)電路進(jìn)行克隆以后,,又對(duì)密鑰數(shù)據(jù)流(圖1中的位置②)進(jìn)行采樣,用存儲(chǔ)器將這些密鑰數(shù)據(jù)流存起來,,在FPGA上電后將這個(gè)密鑰數(shù)據(jù)流發(fā)送給FPGA,,企圖模擬一個(gè)合法的CPLD。
這種方法也是不可行的,。因?yàn)楫惒讲蓸与娐穼?duì)兩個(gè)時(shí)鐘之間的相位敏感,,所以在電路板每次上電時(shí)所生成的隨機(jī)序列是不同的,也就是說,,每次上電后產(chǎn)生的密鑰數(shù)據(jù)流是不同的,。因此,經(jīng)過這次采樣得到的密鑰數(shù)據(jù)流,,下次上電時(shí)能用的可能性很小,。
2.3 CPLD工作原理分析
由以上分析可以發(fā)現(xiàn),本方案能夠很好地抵抗克隆攻擊,。所以,,要破解本方案,剽竊者只有同時(shí)對(duì)FPGA和CPLD之間的數(shù)據(jù)進(jìn)行采樣(圖1中的位置②和③),,根據(jù)CPLD的輸入輸出分析CPLD的工作原理,,從算法層面上破解CPLD,但很難成功破解。因?yàn)椋?BR> (1)由于FPGA和CPLD之間的密鑰數(shù)據(jù)流經(jīng)過M序列
加密以后再進(jìn)行傳輸,,所以破解M序列加密算法是分析CPLD的第一步,。同時(shí)加密時(shí)因采用了20階M序列,并且每32個(gè)周期改變一下密鑰,,提高了序列綜合進(jìn)行分析的難度,。
(2)有8個(gè)32位的密鑰,而密鑰的長(zhǎng)度和個(gè)數(shù)對(duì)于剽竊者來說都是未知的,。
(3)在破解了M序列加密算法和獲得所有的密鑰以后,,還需要破解毫無規(guī)律的密鑰選擇狀態(tài)機(jī)。即使一個(gè)8狀態(tài)的狀態(tài)機(jī),,因每個(gè)狀態(tài)有8種轉(zhuǎn)移的可能性,,總的轉(zhuǎn)移關(guān)系就有88=16 777 216種。
因此,,想要破解本系統(tǒng)所需的精力和成本都相當(dāng)高,。剽竊者需要知道足夠的系統(tǒng)設(shè)計(jì)參數(shù),例如M序列生成多項(xiàng)式,、密鑰個(gè)數(shù),、密鑰長(zhǎng)度、密鑰狀態(tài)機(jī)個(gè)數(shù)以及密鑰選擇狀態(tài)機(jī)轉(zhuǎn)移規(guī)則等,,才能對(duì)本方案成功破解,。
對(duì)FPGA設(shè)計(jì)安全性的思考源于所采用的Xilinx公司的Spartan3系列和Altera公司的Cyclone系列FPGA進(jìn)行產(chǎn)品的開發(fā)。本文所提出的方案是利用異步采樣電路的不確定性使得系統(tǒng)不易被克隆,。將該方案融合到其他加密方案中,,可進(jìn)一步提高這些方案的安全性。
參考文獻(xiàn)
1 Xilinx Coporation. Virtex-II platform FPGA Handbook[EB/OL]. Available on www.xilinx.com,,2004
2 Bossuet L, Gogniat G, Burleson W. Dynamically configurablesecurity for SRAM FPGA bitstreams[A]. In Proceedings of the 18th international parallel and distributed processing symposium[C], 2004:146~152
3 Xilinx Coporation. CoolRunner-II CPLD in secure applica-tions[EB/OL]. Available on www.xilinx.com, 2002
4 Actel Corporation.Understanding actel antifuse device security[EB/OL]. Available on www.actel.com, 2004
5 Altera Corporation. Cyclone device handbook datasheet[EB/OL]. http://www.altera.com, 2003