一種基於CPLD的SRAM工藝FPGA的加密方法與流程
2023-09-10 01:49:35

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