本發(fā)明涉及數(shù)字邏輯技術(shù),尤其涉及基于CPLD的SRAM工藝FPGA的加密方法的應(yīng)用。
背景技術(shù):
近年來,在現(xiàn)代電子系統(tǒng)設(shè)計(jì)中,基于SRAM工藝的FPGA以其自身速度快、密度高、價格低和靈活在線可升級的優(yōu)勢正在廣泛被使用。由于大規(guī)模高密度可編程邏輯器件多采用SRAM工藝,要求每次上電對FPGA器件進(jìn)行重新配置,這就使得可以通過監(jiān)視配置的位數(shù)據(jù)流,進(jìn)行克隆設(shè)計(jì)。因此,在關(guān)鍵、核心設(shè)備中,必須采用加密技術(shù)來保護(hù)設(shè)計(jì)者的知識產(chǎn)權(quán),所以FPGA的安全問題是設(shè)計(jì)者必須考慮的問題。在傳統(tǒng)的基于CPLD的SRAM工藝FPGA的加密方法中,隨機(jī)序列的生成器位于FPGA內(nèi)部,由用戶自行設(shè)計(jì),這樣以來,每次上電加載程序的過程中,隨機(jī)序列生成器的設(shè)計(jì)部分暴露在保護(hù)模塊外部,很容易被推測出來,同時,為了提高產(chǎn)品的安全性,必須選擇更加復(fù)雜的隨機(jī)序列生成器的方案,這樣不但增加了FPGA內(nèi)部設(shè)計(jì)資源的利用,而且還給用戶設(shè)計(jì)部分帶來一定的復(fù)雜度。
技術(shù)實(shí)現(xiàn)要素:
為了克服現(xiàn)有技術(shù)的不足,本發(fā)明提供一種基于CPLD的SRAM工藝FPGA的加密方法,能夠提高設(shè)計(jì)的安全性,并且減少FPGA設(shè)計(jì)部分邏輯資源的占用。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案包括以下步驟:
1)將隨機(jī)數(shù)生成器模塊、發(fā)送預(yù)處理模塊、減法器1、發(fā)送MAC模塊、128位用戶特征碼、128位內(nèi)置密鑰以及SHA-1加密模塊配置進(jìn)CPLD內(nèi)部;將驗(yàn)證模塊、與CPLD內(nèi)部相同的128位內(nèi)置密鑰、128位用戶特征碼和SHA-1加密模塊配置進(jìn)FPGA內(nèi)部;FPGA的用戶設(shè)計(jì)部分處于等待狀態(tài);
2)隨機(jī)數(shù)生成器由三個長為n的m序列SR1、SR2和SR3交互鐘控組成,32≥n≥8,SR1的輸出作為SR2和SR3的鐘控序列,SR2和SR3的輸出相與后作為SR1的鐘控序列,彼此互相鐘控產(chǎn)生輸出;
3)隨機(jī)數(shù)生成器的輸出在發(fā)送預(yù)處理模塊中經(jīng)過一個串并轉(zhuǎn)換電路轉(zhuǎn)變成長度為256位的分組序列,分組序列經(jīng)過一個QPP交織器,交織長度為256,輸出隨機(jī)序列;
4)發(fā)送預(yù)處理模塊的輸出分別發(fā)送到FPGA和CPLD的加密模塊;256位長的隨機(jī)序列、128位內(nèi)置密鑰以及128用戶特征碼串行排列組成512位的待加密序列,輸入到SHA-1加密模塊后,CPLD和FPGA內(nèi)部的SHA-1加密模塊各自產(chǎn)生一個MAC序列;減法器1由設(shè)定數(shù)字開始計(jì)數(shù),在減法器1計(jì)零前CPLD內(nèi)部SHA-1加密模塊產(chǎn)生的MAC序列發(fā)往FPGA的驗(yàn)證模塊進(jìn)行驗(yàn)證;
5)FPGA的驗(yàn)證模塊包括一個4位寄存器、一個4位的減法器2和一個比較器,4位寄存器的初始值為隨機(jī)序列的前4位;減法器2計(jì)零時進(jìn)行一次CPLD和FPGA內(nèi)部的SHA-1加密模塊各自產(chǎn)生的MAC序列的比較,比較結(jié)果相等時FPGA的用戶設(shè)計(jì)部分開始工作,否則FPGA的用戶設(shè)計(jì)部分繼續(xù)處于等待狀態(tài),同時減法器1的計(jì)數(shù)減1;判斷減法器1的被減數(shù)是否為零,若不為零,則進(jìn)入下一次驗(yàn)證,否則,停止驗(yàn)證工作,操作非法。
本發(fā)明的有益效果是:在不增加FPGA設(shè)計(jì)部分復(fù)雜度的情況下,使得基于CPLD的SRAM工藝FPGA的加密方法更有效,保密性能更好,使得對成本敏感的產(chǎn)品的安全性能得到改善。
本發(fā)明提出了一種新的基于CPLD的SRAM工藝FPGA的加密方案,將隨機(jī)序列生成器部分置于CPLD內(nèi)部,充分利用CPLD的資源,將其專用于加密方案的設(shè)計(jì),這樣不但節(jié)省了FPGA內(nèi)部邏輯資源的使用,而且還降低了設(shè)計(jì)人員的設(shè)計(jì)復(fù)雜度;另外,本發(fā)明的加密方案加入了合法用戶的特征碼,只要是持有設(shè)計(jì)者授權(quán)下的特征碼的合法用戶,均可以使用。同時,在CPLD和FPGA之間數(shù)據(jù)流的傳輸過程中,采取了隨機(jī)交織與驗(yàn)證時間間隔隨機(jī)化的方法,進(jìn)一步提高了設(shè)計(jì)被破解的難度,特別適合于對成本比較敏感的場合的應(yīng)用。
附圖說明
圖1是本發(fā)明的系統(tǒng)方案圖。
圖2是本發(fā)明的隨機(jī)序列生成器模型。
圖3是本發(fā)明的發(fā)送預(yù)處理模塊原理圖。
圖4是驗(yàn)證處理原理圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例對本發(fā)明進(jìn)一步說明,本發(fā)明包括但不僅限于下述實(shí)施例。
本發(fā)明的技術(shù)方案描述如下:
1)首先,將隨機(jī)數(shù)生成器模塊、發(fā)送預(yù)處理模塊、減法器1和發(fā)送MAC模塊、代表用戶身份信息的128位特征碼、128位內(nèi)置密鑰以及采用SHA-1算法的加密模塊配置進(jìn)CPLD內(nèi)部。然后,將驗(yàn)證模塊、用戶設(shè)計(jì)以及與CPLD內(nèi)部相同的128位內(nèi)置密鑰、特征碼和采用SHA-1算法的加密模塊配置進(jìn)FPGA內(nèi)部。此時FPGA內(nèi)的用戶設(shè)計(jì)部分處于等待狀態(tài)。
2)隨機(jī)序列生成器由SR1,SR2和SR3三個長為n(32≥n≥8)的m序列交互鐘控組成,SR1的輸出作為SR2和SR3的鐘控序列;反過來,SR2和SR3的輸出作為SR1的鐘控序列,彼此互相鐘控產(chǎn)生輸出。
3)隨機(jī)序列生成器的輸出經(jīng)過一個串并轉(zhuǎn)換電路轉(zhuǎn)變成長度為256位的分組序列,此時分組序列經(jīng)過一個QPP(二次置換多項(xiàng)式)交織器,交織長度為256。
4)經(jīng)過隨機(jī)交織后的序列分別發(fā)送到FPGA內(nèi)部和CPLD的加密模塊,256位長的隨機(jī)序列和128位內(nèi)置密鑰以及128特征碼,串行排列組成512位的待加密序列,輸入到SHA-1的加密模塊后,CPLD和FPGA內(nèi)部會各自產(chǎn)生一個MAC序列。減法器1被減數(shù)由設(shè)計(jì)者自定義大小,控制著CPLD內(nèi)部產(chǎn)生的MAC是否發(fā)往FPGA內(nèi)部進(jìn)行驗(yàn)證,若減法器1的被減數(shù)非零,則發(fā)送,否則不發(fā)送。
5)FPGA內(nèi)部的驗(yàn)證模塊由一個4位寄存器、一個4位的減法器2和一個比較器組成。4位寄存器的初始值隨機(jī)序列的前4位;減法器2的被減數(shù)為0時進(jìn)行一次比較,否則不進(jìn)行比較;比較器比較結(jié)果相等時置Enable信號和ID_OK為有效值1,F(xiàn)PGA用戶設(shè)計(jì)開始工作,否則置ID_OK為無效置0,F(xiàn)PGA設(shè)計(jì)繼續(xù)處于等待狀態(tài),同時CPLD內(nèi)部減法器1會做一次減1的運(yùn)算,然后判斷減法器1的被減數(shù)若為非零,則進(jìn)入下一次驗(yàn)證,否則,停止驗(yàn)證工作,操作非法。
如圖1所示,本發(fā)明的實(shí)施例包括以下步驟:
(1)首先,將隨機(jī)數(shù)生成器模塊、發(fā)送預(yù)處理模塊、減法器1和發(fā)送MAC模塊、代表用戶身份信息的128位特征碼、128位內(nèi)置密鑰以及采用SHA-1算法的加密模塊配置進(jìn)CPLD內(nèi)部。然后,將驗(yàn)證模塊、用戶設(shè)計(jì)以及與CPLD內(nèi)部相同的128位內(nèi)置密鑰、特征碼和采用SHA-1算法的加密模塊配置進(jìn)FPGA內(nèi)部。此時FPGA內(nèi)的用戶設(shè)計(jì)部分并不能立即開始工作,而是處于等待狀態(tài)。
(2)隨機(jī)序列生成器由SR1,SR2和SR3三個長為16的m序列交互鐘控組成,SR1的輸出序列為z(t),SR1的第一級輸出a1作為SR2和SR3的鐘控序列,SR2和SR3的輸出交錯構(gòu)成的序列c(t)又作為SR1的鐘控序列,系統(tǒng)的輸出序列U(t)=c(t)+z(t)。系統(tǒng)上電后,若SR1的第一級輸出a1為1,則控制SR2向前移位一次,SR2的輸出構(gòu)成c(t)的一位;若SR1的第一級輸出a1為0,則控制SR3向前移位一次,SR3的輸出構(gòu)成c(t)的另一位;依次進(jìn)行下去。同時序列c(t)作為SR1的控制序列,若此時c(t)=1,則SR1向前移位一次,輸出作為z(t)的一位,若此時c(t)=0,則SR1狀態(tài)不變,重復(fù)輸出作為z(t)的另一位;依次進(jìn)行下去。
(3)隨機(jī)序列生成器的輸出U(t)經(jīng)過一個串并轉(zhuǎn)換電路后,轉(zhuǎn)變成長度為256位的分組序列,此時分組序列經(jīng)過一個QPP(二次置換多項(xiàng)式)交織器,其交織多項(xiàng)式為
π(i)=(f1·i+f2·i2)mod N
其中i表示交織器前的位置,π(i)為交織后的位置。f1和f2的選擇取決于交織長度N,在這里f1和f2取值分別為79和160,N取值為256。
(4)經(jīng)過隨機(jī)交織后的序列同時發(fā)送到CPLD內(nèi)部的加密模塊和FPGA內(nèi)部的加密模塊,256位長的隨機(jī)序列和128位內(nèi)置密鑰以及128特征碼,串行排列組成16個字長512位的待加密序列,輸入到SHA-1的加密模塊后,CPLD和FPGA內(nèi)部會各自產(chǎn)生一個MAC序列,CPLD產(chǎn)生的MAC序列是否發(fā)送受控于減法器1中被減數(shù)的值,若被減數(shù)值非0,則將CPLD內(nèi)產(chǎn)生的MAC發(fā)送到FPGA內(nèi)部進(jìn)行驗(yàn)證;否則,停止驗(yàn)證工作。
(5)FPGA內(nèi)部的驗(yàn)證模塊由一個4位寄存器、一個4位的減法器2和比較器組成。4位寄存器的初始值為接收自CPLD送來的隨機(jī)序列的前4位;減法器2控制著比較器什么時候進(jìn)行一次比較;比較器比較結(jié)果相等時置Enable信號和ID_OK為有效值1,否則置為無效置0。當(dāng)進(jìn)行一次驗(yàn)證前,先將寄存器的值賦給減法器2作減1的遞減運(yùn)算,結(jié)果為0進(jìn)行控制比較器進(jìn)行比較,這樣就可以完成驗(yàn)證時間間隔的隨機(jī)化。如果驗(yàn)證成功,則反饋給CPLD一個驗(yàn)證成功的信號ID_OK并置高電平,同時使能FPGA內(nèi)部的用戶設(shè)計(jì);如果驗(yàn)證失敗,置ID_OK信號為低電平,此時CPLD內(nèi)部的減法器1會做一次減1的運(yùn)算,重新進(jìn)入下一次的驗(yàn)證過程,直至減法器1的被減數(shù)為0,則CPLD停止給FPGA發(fā)送驗(yàn)證MAC,認(rèn)為FPGA驗(yàn)證屬于非法操作,這樣就可以防止設(shè)計(jì)被盜竊者進(jìn)行重復(fù)試驗(yàn)工作。