本發(fā)明涉及計算機信息安全技術領域,尤其涉及一種加密芯片、加密方法及加密系統(tǒng)。
背景技術:
為了避免軟件被抄板和私密數(shù)據(jù)被非法截取,現(xiàn)有電子產品采用加密芯片進行加密保護?,F(xiàn)有的加密芯片可分為兩類:一種采用硬件解密處理器內置解密算法,另一種采用內置MCU進行加解密。雖然現(xiàn)有的加密芯片可實現(xiàn)軟件和數(shù)據(jù)的加密保護,但是這兩類的加密芯片在運行保密程序的目標設備CPU內部提前寫入密鑰或密碼,在解密認證后都會給目標設備CPU一個保密程序是否執(zhí)行的判斷標志,而這個判斷標示時可以被模擬和破解的,因此目標設備CPU系統(tǒng)存在較大的安全漏洞,導致加密芯片的安全性和可靠性較低。同時,現(xiàn)有加密芯片主要采用DES算法和IIC接口,無法根據(jù)實際的安全等級需要靈活地調取合適的以及高安全等級的加密算法,而單一類型的接口也會導致加密芯片的兼容性不佳,導致加密芯片的拓展性和適應性較低。
技術實現(xiàn)要素:
鑒于此,本發(fā)明提供一種加密芯片、加密方法及加密系統(tǒng),解決現(xiàn)有加密芯片的安全性和可靠性較低的技術問題。
根據(jù)本發(fā)明的實施例,提供一種加密芯片,包括RISC CPU、數(shù)據(jù)總線、SHA 256算法模塊、接口模塊以及時鐘和定時器模塊,所述時鐘和定時器模塊用于生成時鐘數(shù)據(jù),所述SHA 256算法模塊用于根據(jù)SHA 256算法進行解密運算,所述RISC CPU用于調取所述時鐘和定時器模塊生成的時鐘數(shù)據(jù)和第一密鑰進行加密運算以生成第一暗文數(shù)據(jù)、調取第二密鑰對第二暗文數(shù)據(jù)進行解密運算以生成明文數(shù)據(jù),以及控制所述接口模塊向目標設備CPU發(fā)送所述明文數(shù)據(jù)進行比較。
優(yōu)選的,所述SHA 256算法模塊包括控制電路、Wt生成電路、Kt常數(shù)寄存器、填充電路、運算電路、HASH值暫存寄存器和移位寄存器。
優(yōu)選的,所述控制電路包括計數(shù)器和譯碼電路,所述計數(shù)器用于根據(jù)時鐘數(shù)據(jù)進行計數(shù),所述譯碼電路用于根據(jù)所述計數(shù)器的計數(shù)值運算生成控制信號。
優(yōu)選的,所述Wt生成電路包括移位寄存器、數(shù)據(jù)選擇器、模邏輯電路、循環(huán)移位電路和Wt寄存器。
優(yōu)選的,所述模邏輯電路選用二級CSA和一級CLA的級聯(lián)結構。
優(yōu)選的,所述RISC CPU包括運算器、控制器、比較器和寄存器組。
優(yōu)選的,所述加密芯片還包括總線控制器、慢速總線接口、eFLASH總線接口和eSRAM總線接口,所述eFLASH總線接口用于控制FLASH模塊的讀寫操作,所述eSRAM總線接口用于控制SRAM模塊的讀寫操作。
優(yōu)選的,所述接口模塊包括SPI接口單元,IIC接口單元或1-Wire接口單元。
根據(jù)本發(fā)明另一個實施例,提供一種利用上述加密芯片進行加密的方法,包括:RISC CPU調取時鐘和定時器模塊生成的時鐘數(shù)據(jù)和第一密鑰進行加密運算以生成第一暗文數(shù)據(jù);目標設備CPU獲取第一暗文數(shù)據(jù),并調取保密程序中的第一密鑰對所述第一暗文數(shù)據(jù)進行解密運算以生成第一明文數(shù)據(jù);目標設備CPU調取保密程序中的第二密鑰對所述第一明文數(shù)據(jù)進行加密運算以生成第二暗文數(shù)據(jù);RISC CPU獲取第二暗文數(shù)據(jù),并調取第二密鑰對所述第二暗文數(shù)據(jù)進行解密運算以生成第二明文數(shù)據(jù);當所述第二明文數(shù)據(jù)在預設時間范圍內時,目標設備CPU將所述第二明文數(shù)據(jù)與所述第一明文數(shù)據(jù)進行比較;以及當所述第二明文數(shù)據(jù)與所述第一明文數(shù)據(jù)相同時,目標設備CPU控制執(zhí)行保密程序;否則,目標設備CPU控制退出保密程序。
根據(jù)本發(fā)明又一個實施例,提供一種加密系統(tǒng),所述加密系統(tǒng)包括上述的加密芯片以及目標設備CPU,所述目標設備CPU的保密程序設置有第一密鑰和第二密鑰,所述目標設備CPU用于獲取所述RISC CPU生成的第一暗文數(shù)據(jù)并調取保密程序中的第一密鑰對所述第一暗文數(shù)據(jù)進行解密運算以生成第一明文數(shù)據(jù)、調取保密程序中的第二密鑰對所述第一明文數(shù)據(jù)進行加密運算以生成第二暗文數(shù)據(jù)、當所述第二明文數(shù)據(jù)在預設時間范圍內時將所述第二明文數(shù)據(jù)與所述第一明文數(shù)據(jù)進行比較、當所述第二明文數(shù)據(jù)與所述第一明文數(shù)據(jù)相同時控制執(zhí)行保密程序、以及當所述第二明文數(shù)據(jù)與所述第一明文數(shù)據(jù)不相同時控制退出保密程序。
本發(fā)明提供的加密芯片、加密方法及加密系統(tǒng),加密芯片根據(jù)動態(tài)的時鐘數(shù)據(jù)和第一密鑰進行加密而生成第一暗文數(shù)據(jù),目標設備CPU根據(jù)保存在保密程序中的第一密鑰對第一暗文數(shù)據(jù)進行解密而獲得第一明文數(shù)據(jù),然后根據(jù)保存在保密程序中的第二密鑰對第一明文數(shù)據(jù)進行加密而獲得第二暗文數(shù)據(jù),加密芯片調取第二密鑰解密第二暗文數(shù)據(jù)而獲得第二明文數(shù)據(jù),當?shù)诙魑臄?shù)據(jù)在預設時間范圍內,目標設備CPU將第二明文數(shù)據(jù)與第一次解密后得到第一明文數(shù)據(jù)對比,如果相同則控制繼續(xù)執(zhí)行保密程序,否則控制退出保密程序,根據(jù)動態(tài)時鐘數(shù)據(jù)生成報文數(shù)據(jù),并通過加密芯片和目標設備CPU保密程序中的兩個密鑰兩次加密和解密動態(tài)的報文數(shù)據(jù),對目標設備PCU內的保密程序進行嚴密保護而使其難以破解,提高了目標設備的安全性。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單的介紹。顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明一個實施例中加密芯片的結構示意圖。
圖2為本發(fā)明一個實施例中RISC CPU的結構示意圖。
圖3為本發(fā)明一個實施例中SHA 256算法模塊的結構示意圖。
圖4為本發(fā)明一個實施例中SHA 256算法模塊的控制電路的結構示意圖。
圖5為本發(fā)明一個實施例中SHA 256算法模塊的Wt生成電路的結構示意圖。
圖6為本發(fā)明一個實施例中加密芯片的加密方法的原理示意圖。
圖7為本發(fā)明另一個實施例中加密方法的流程示意圖。
具體實施方式
下面結合附圖和具體實施方式對本發(fā)明的技術方案作進一步更詳細的描述。顯然,所描述的實施例僅僅是本發(fā)明的一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都應屬于本發(fā)明保護的范圍。
在本發(fā)明的描述中,需要理解的是,術語“第一”、“第二”等僅用于描述目的,而不能理解為指示或暗示相對重要性。在本發(fā)明的描述中,需要說明的是,除非另有明確的規(guī)定和限定,術語“相連”、“連接”應做廣義理解,例如,可以是固定連接,也可以是可拆卸連接,或一體地連接;可以是機械連接,也可以是電連接;可以是直接相連,也可以通過中間媒介間接相連。對于本領域的普通技術人員而言,可以結合具體情況理解上述術語在本發(fā)明中的具體含義。此外,在本發(fā)明的描述中,除非另有說明,“多個”的含義是兩個或兩個以上。
流程圖中或在此以其他方式描述的任何過程或方法描述可以被理解為,表示包括一個或更多個用于實現(xiàn)特定邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本發(fā)明的優(yōu)選實施方式的范圍包括另外的實現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時的方式或按相反的順序,來執(zhí)行功能,這應被本發(fā)明的實施例所屬技術領域的技術人員所理解。
圖1為本發(fā)明一個實施例中加密芯片的結構示意圖。如圖所示,所述加密芯片100,包括RISC CPU 10、SHA 256算法模塊20、時鐘和定時器模塊30、數(shù)據(jù)總線40以及接口模塊90。
在本實施例中,所述時鐘和定時器模塊30用于生成可供各個功能模塊工作的時鐘數(shù)據(jù),同時還可以給所述RISC CPU 10和目標設備CPU提供精確的定時數(shù)據(jù)。所述數(shù)據(jù)總線40為16位總線,總線控制器50掛接在所述數(shù)據(jù)總線上。所述接口模塊90通過慢速總線接口60與所述數(shù)據(jù)總線40進行通訊,實現(xiàn)所述加密芯片100對外部設備的數(shù)據(jù)輸入和輸出。同時,所述數(shù)據(jù)總線40還掛載eFLASH總線接口70和eSRAM總線接口80,所述eFLASH總線接口70用于控制FLASH模塊的讀寫操作,所述eSRAM總線接口80用于控制SRAM模塊的讀寫操作。
在本實施例中,為了提升所述加密芯片100的兼容性,所述接口模塊90可集成SPI接口單元901,IIC接口單元902和1-Wire接口單元903,目標設備CPU可根據(jù)實際需要調用不同的接口單元,以滿足不同目標設備接口的實際需求,提升了所述加密芯片100的拓展性和適應性。其中,所述SPI接口單元901采用主從模式架構,包括比特讀緩沖器、移位寄存器、控制寄存器、狀態(tài)寄存器、從選擇寄存器、SCK產生控制模塊和SPI控制器。所述IIC接口單元902為雙向同步串行總線接口,包括時鐘分頻模塊、接收數(shù)據(jù)模塊、時序控制模塊、發(fā)送數(shù)據(jù)模塊、輸出緩沖器模塊和寄存器組。所述1-Wire接口單元903為半雙工雙向通信接口。
圖2為本發(fā)明實施例中RISC CPU 10的結構示意圖。如圖所示,所述RISC CPU 10包括運算器、控制器、比較器和寄存器組。所述運算器用于加密和解密運算,所述控制器用于控制所述運算器調取所述時鐘和定時器模塊30生成的時鐘數(shù)據(jù)和第一密鑰進行加密運算以生成第一暗文數(shù)據(jù)、調取第二密鑰對第二暗文數(shù)據(jù)進行解密運算以生成明文數(shù)據(jù)、以及控制向目標設備CPU發(fā)送所述明文數(shù)據(jù)進行比較。所述RISC CPU 10內可預先配置多種主流加密算法,比如DES算法、3DES算法、AES算法、RSA算法、SHA-1算法等,所述加密芯片100可根據(jù)實際安全等級需要調用合適的加密算法,提高了所述加密芯片100的安全性、可拓展性和適用性。
參見圖3,所述SHA 256算法模塊20用于根據(jù)SHA 256算法進行解密運算,所述SHA 256算法報文最大長度為264bit,輸入按512-bit分組進行處理,輸出256-bit的報文摘要,加密解密安全性極高,因此廣泛應用于數(shù)字加密和數(shù)字簽名。在本實施例中,所述SHA 256算法模塊20,包括控制電路201、Wt生成電路202、Kt常數(shù)寄存器203、填充電路204、運算電路205、HASH值暫存寄存器206和移位寄存器207。在安全和保密要求較高時,可通過SHA 256算法模塊20進行高安全等級的加解和解密運算,提高了所述加密芯片100的安全性和可靠性。
如圖4所示,所述控制電路201包括計數(shù)器和譯碼電路,所述計數(shù)器用于根據(jù)時鐘數(shù)據(jù)進行計數(shù),所述譯碼電路用于根據(jù)所述計數(shù)器的計數(shù)值運算生成控制信號。所述控制電路201通過一個7位的計數(shù)器,根據(jù)接收的時鐘信號進行加1計數(shù)操作,譯碼電路根據(jù)所述計數(shù)器計數(shù)的不同計數(shù)值可給出不同的控制信號。根據(jù)SHA 256算法,對每組512bit分組數(shù)據(jù)進行處理時,若執(zhí)行SHA-1算法則需要80步運算;若執(zhí)行SHA-224或SHA-256算法則需要64步。為實現(xiàn)邏輯資源的可重構并達到計數(shù)器資源重用的目的,需要所述控制電路201在不同的算法下產生不同的控制信號。為此,所述控制電路201采用增加選擇算法信號(SEL)來實現(xiàn),其中READY信號表示每一分組運算完成信號,ADD信號表示分組運算的最后一步各寄存器的值與第一步計算時的各寄存器的輸入值相加信號,START信號表示移位寄存器移位信號。
如圖5所示,所述Wt生成電路包括移位寄存器、數(shù)據(jù)選擇器、模邏輯電路、循環(huán)移位電路和Wt寄存器。Wt的前16個字直接取自當前分組中的16個字,即Wt=Mt,其余Wt的值由不同算法來決定。對SHA-1算法,Wt=(Wt-3⊕Wt-8⊕Wt-14⊕Wt-16)<<<1;對SHA-224/256/384/512算法,Wt=σ1(Wt-2)+Wt-7+σ0(Wt-15)+Wt-16。SHA-1/384/512算法生成80個Wt,而SHA-224/256算法生成64個Wt。SHA-1/224/256算法的Wt為32bit,SHA-384/512的Wt為64bit。
在本實施例中,通過所述數(shù)據(jù)選擇器實現(xiàn)16個64bit寄存器的重構設計。前16步,外部數(shù)據(jù)Mt經由數(shù)據(jù)選擇器送入16級移位寄存器和Wt寄存器;從第16步以后,所述移位寄存器的外部輸入是之前寄存器值的函數(shù)運算,并同時送入Wt鎖存,而后Wt寄存器輸出數(shù)據(jù)送入運算模塊,直接參與每一步運算。
在本實施例中,所述模邏輯電路選用二級CSA(進位保留加法器)和一級CLA(超前進位加法器)的級聯(lián)結構,將原來9級CSA的延遲(3個CLA級聯(lián),一級CLA的延時相當于三級CSA的延時)縮短到5級,提高了Wt生成電路的運算速度。采用8個64bit位寬的移位寄存器ABCDEFGH來實現(xiàn)對不同算法邏輯單元的重構設計
SHA-256算法使用8個寄存器的低32bit,高32bit置0,當復位信號RESET有效時,寄存器將根據(jù)不同算法進行初始化。數(shù)據(jù)路徑設計的關鍵是計算每步寄存器A的值,主要包括非線性函數(shù)運算、加法運算和移位運算。其中,非線性函數(shù)運算只是完成信號在不同輸入輸出之間的切換,只需用組合邏輯電路設計,不會產生太大的延遲;移位只占用布線資源,同樣不會對電路的速度有影響;而由于加法運算的進位會產生延遲,因此應盡量對其進行優(yōu)化,否則會影響電路的運算速度。SHA-256算法執(zhí)行7個連續(xù)32bit加法,SHA-384/512執(zhí)行7個連續(xù)64bit加法,而且5種算法使用的邏輯函數(shù)和輸入寄存器的值不同,這就需要將各個不同的函數(shù)變換的值提前計算出來,再根據(jù)算法選擇進入CSA加法器的輸入端。
圖6為本發(fā)明實施例中利用加密芯片進行加密的方法原理示意圖。如圖所示,整個加密程序保護需要兩個密鑰和兩種加解密算法,在所述加密芯片100的RISC CPU 10和目標設備CPU 200上都需要進行一次加密和解密動作。
具體的,首先所述RISC CPU10調取所述時鐘和定時器模塊30生成的當前時鐘數(shù)據(jù)和所述RISC CPU10中的第一密鑰,進行加密運算以生成第一暗文數(shù)據(jù),并將所述第一暗文數(shù)據(jù)發(fā)送到所述目標設備CPU 200上。所述目標設備CPU 200從保密程序中調取預先存儲的第一密鑰對接收的所述第一暗文數(shù)據(jù)進行解密運算以獲取第一明文數(shù)據(jù),然后將所述第一明文數(shù)據(jù)與保密程序中的第二密鑰進行加密運算以獲取第二暗文數(shù)據(jù),并將所述第二暗文數(shù)據(jù)發(fā)送到所述加密芯片100。所述加密芯片100將所述第二暗文數(shù)據(jù)與加密芯片100中預先存儲的第二密鑰進行解密運算,以獲取第二明文數(shù)據(jù),然后對所述第二明文數(shù)據(jù)進行時間范圍斷定,如果在時間范圍內,則將其發(fā)送到所述目標設備CPU 200端進行比較。所述目標設備CPU 200將所述第二明文數(shù)據(jù)與第一次解密后得到所述第一明文數(shù)據(jù)對比,如果相同則控制繼續(xù)執(zhí)行保密程序,否則控制退出保密程序。
在本發(fā)明實施例中,所述加密芯片100根據(jù)動態(tài)的時鐘數(shù)據(jù)和第一密鑰進行加密而生成第一暗文數(shù)據(jù),所述目標設備CPU 200根據(jù)保存在保密程序中的第一密鑰對所述第一暗文數(shù)據(jù)進行解密而獲得第一明文數(shù)據(jù),然后根據(jù)保存在保密程序中的第二密鑰對所述第一明文數(shù)據(jù)進行加密而獲得第二暗文數(shù)據(jù),所述加密芯片100調取第二密鑰解密所述第二暗文數(shù)據(jù)而獲得第二明文數(shù)據(jù),當所述第二明文數(shù)據(jù)在預設時間范圍內,所述目標設備CPU 200將所述第二明文數(shù)據(jù)與第一次解密后得到所述第一明文數(shù)據(jù)對比,如果相同則控制繼續(xù)執(zhí)行保密程序,否則控制退出保密程序,根據(jù)動態(tài)時鐘數(shù)據(jù)生成報文數(shù)據(jù),并通過加密芯片100和目標設備CPU 200保密程序中的兩個密鑰兩次加密和解密動態(tài)的報文數(shù)據(jù),對目標設備CPU 200內的保密程序進行嚴密保護而使其難以破解,提高了目標設備的安全性。
基于上述實施例,參見圖7,在本發(fā)明另一實施例中,還提供一種上述加密芯片100進行加密的方法,包括:
步驟S101:RISC CPU調取時鐘和定時器模塊生成的時鐘數(shù)據(jù)和第一密鑰進行加密運算以生成第一暗文數(shù)據(jù)。
步驟S102:目標設備CPU獲取第一暗文數(shù)據(jù),并調取保密程序中的第一密鑰對所述第一暗文數(shù)據(jù)進行解密運算以生成第一明文數(shù)據(jù)。
步驟S103:目標設備CPU調取保密程序中的第二密鑰對所述第一明文數(shù)據(jù)進行加密運算以生成第二暗文數(shù)據(jù)。
步驟S104:RISC CPU獲取第二暗文數(shù)據(jù),并調取第二密鑰對所述第二暗文數(shù)據(jù)進行解密運算以生成第二明文數(shù)據(jù)。
步驟S105:當所述第二明文數(shù)據(jù)在預設時間范圍內時,目標設備CPU將所述第二明文數(shù)據(jù)與所述第一明文數(shù)據(jù)進行比較;以及當所述第二明文數(shù)據(jù)與所述第一明文數(shù)據(jù)相同時,目標設備CPU控制執(zhí)行保密程序;否則,目標設備CPU控制退出保密程序。
在本實施例中,加密芯片根據(jù)動態(tài)時鐘數(shù)據(jù)生成報文數(shù)據(jù),并通過加密芯片和目標設備CPU保密程序中的兩個密鑰兩次加密和解密動態(tài)的報文數(shù)據(jù),對所述目標設備CPU內的保密程序進行嚴密保護而難以破解,提高了目標設備的安全性。
基于上述實施例,在本發(fā)明又一實施例中,還提供一種加密系統(tǒng),其包括上述加密芯片100和目標設備CPU 200,所述目標設備CPU 200的保密程序設置有第一密鑰和第二密鑰,所述目標設備CPU 200用于獲取所述RISC CPU 10生成的第一暗文數(shù)據(jù)并調取保密程序中的第一密鑰對所述第一暗文數(shù)據(jù)進行解密運算以生成第一明文數(shù)據(jù)、調取保密程序中的第二密鑰對所述第一明文數(shù)據(jù)進行加密運算以生成第二暗文數(shù)據(jù)、當所述第二明文數(shù)據(jù)在預設時間范圍內時將所述第二明文數(shù)據(jù)與所述第一明文數(shù)據(jù)進行比較、當所述第二明文數(shù)據(jù)與所述第一明文數(shù)據(jù)相同時控制執(zhí)行保密程序、以及當所述第二明文數(shù)據(jù)與所述第一明文數(shù)據(jù)不相同時控制退出保密程序。
在本實施例中,加密芯片100根據(jù)動態(tài)時鐘數(shù)據(jù)生成報文數(shù)據(jù),并通過加密芯片100和目標設備CPU 200保密程序中的兩個密鑰兩次加密和解密動態(tài)的報文數(shù)據(jù),對目標設備CPU 200內的保密程序進行嚴密保護而使其難以破解,提高了目標設備的安全性。
應當理解,本發(fā)明的各部分可以用硬件、軟件、固件或它們的組合來實現(xiàn)。在上述實施方式中,多個步驟或方法可以用存儲在存儲器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來實現(xiàn)。例如,如果用硬件來實現(xiàn),和在另一實施方式中一樣,可用本領域公知的下列技術中的任一項或他們的組合來實現(xiàn):具有用于對數(shù)據(jù)信號實現(xiàn)邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(PGA),現(xiàn)場可編程門陣列(FPGA)等。
在本說明書的描述中,參考術語“一個實施例”、“一些實施例”、“示例”、“具體示例”、或“一些示例”等描述意指結合該實施例或示例描述的具體特征、結構、材料或者特點包含于本發(fā)明的至少一個實施例或示例中。在本說明書中,對上述術語的示意性表述不一定指的是相同的實施例或示例。而且,描述的具體特征、結構、材料或者特點可以在任何的一個或多個實施例或示例中以合適的方式結合。
盡管已經示出和描述了本發(fā)明的實施例,本領域的普通技術人員可以理解:在不脫離本發(fā)明的原理和宗旨的情況下可以對這些實施例進行多種變化、修改、替換和變型,本發(fā)明的范圍由權利要求及其等同物限定。