本發(fā)明涉及信息安全領域中的消息加密和解密技術,特別涉及一種素域fp下的sm2橢圓曲線公鑰加密算法的硬件實現系統(tǒng)。
背景技術:
隨著網絡技術的發(fā)展,人們對網絡安全問題的關注越來越大。信息加密和解密技術在網絡安全領域中應用廣泛,可保證信息的安全,防止信息在傳輸過程中受到攻擊,從而被不法分子截取或破壞。
sm2是國家密碼管理局于2010年12月17日發(fā)布的橢圓曲線公鑰密碼算法,與傳統(tǒng)的公鑰密碼體制(例如rsa密碼體制)相比,橢圓曲線密碼體制使用相對比較短的密鑰就可以達到相同的安全程度。因此,更短的密鑰使得橢圓曲線密碼體制的應用范圍更加廣泛。
雖然國家密碼局早在2010年就公布了sm2橢圓曲線公鑰加密算法,但是目前將其用硬件實現的方案還比較少,并且現有的硬件實現方案的硬件資源消耗較大。
技術實現要素:
本發(fā)明所要解決的技術問題是提供一種素域fp下的sm2橢圓曲線公鑰加密算法的硬件實現系統(tǒng),該系統(tǒng)在素域fp下,采用高層次的模塊化方法,對系統(tǒng)進行了合理的劃分,將系統(tǒng)劃分為多個模塊,采用硬件模塊復用的方法,通過設置上層復選模塊,實現了對隨機數生成模塊、運算控制模塊、比特串處理模塊、密鑰派生模塊、雜湊模塊的復用,通過設置下層復選模塊,實現了對點乘運算模塊、異或運算模塊、比特串轉換模塊、比特串拼接模塊的復用,從而提供了一種所用硬件資源更少,成本更低、運行速度更快、結構簡單、易于實現的sm2橢圓曲線公鑰加密算法的硬件實現系統(tǒng)。
為解決上述技術問題,本發(fā)明提供一種素域fp下的sm2橢圓曲線公鑰加密算法的硬件實現系統(tǒng),該系統(tǒng)可以對傳輸的消息進行加密和解密,該系統(tǒng)所用到的模塊包括:sm2主控模塊、sm2解析模塊、加密控制模塊、解密控制模塊、上層復選模塊、隨機數生成模塊、運算控制模塊、比特串處理模塊、密鑰派生模塊、雜湊模塊、下層復選模塊、點乘運算模塊、異或運算模塊、比特串轉換模塊、比特串拼接模塊,其中:
所述sm2主控模塊:用于與所述sm2解析模塊進行通信,進而調用加密控制模塊和解密控制模塊對消息進行加密和解密;
所述sm2解析模塊:用于解析所述sm2主控模塊發(fā)出的命令,確定系統(tǒng)當前時間要實現的是消息加密還是消息解密功能,并將進行消息加密的命令發(fā)送給所述加密控制模塊,將進行消息解密的命令發(fā)送給解密控制模塊;
所述加密控制模塊:用于在收到所述sm2解析模塊發(fā)送的進行消息加密的命令后,與所述上層復選模塊進行通信,通過所述上層復選模塊調用所述隨機數生成模塊、所述運算控制模塊、所述比特串處理模塊、所述密鑰派生模塊、所述雜湊模塊,通過所述下層復選模塊調用所述點乘運算模塊、所述異或運算模塊、所述比特串轉換模塊、所述比特串拼接模塊,對消息進行加密;
所述解密控制模塊:用于在收到所述sm2解析模塊發(fā)送的進行消息解密的命令后,與所述上層復選模塊進行通信,通過所述上層復選模塊調用所述隨機數生成模塊、所述運算控制模塊、所述比特串處理模塊、所述密鑰派生模塊、所述雜湊模塊,通過所述下層復選模塊調用所述點乘運算模塊、所述異或運算模塊、所述比特串轉換模塊、所述比特串拼接模塊,對消息進行解密;
所述上層復選模塊:用于當系統(tǒng)要進行消息加密時,所述加密控制模塊與所述上層復選模塊進行通信,通過所述上層復選模塊調用所述隨機數生成模塊、所述運算控制模塊、所述比特串處理模塊、所述密鑰派生模塊、所述雜湊模塊進行消息加密,當系統(tǒng)要進行消息解密時,所述解密控制模塊與所述上層復選模塊進行通信,通過所述上層復選模塊調用所述隨機數生成模塊、所述運算控制模塊、所述比特串處理模塊、所述密鑰派生模塊、所述雜湊模塊進行消息解密;
所述隨機數生成模塊:用于生成隨機數k∈[1,n-1];
所述運算控制模塊:用于通過所述下層復選模塊來調用所述點乘運算模塊和所述異或運算模塊,完成點乘運算和異或運算;
所述比特串處理模塊:用于通過所述下層復選模塊來調用所述比特串轉換模塊和所述比特串拼接模塊,完成比特串轉換和比特串拼接;
所述密鑰派生模塊:用于進行密鑰派生運算,生成密鑰數據比特串;
所述雜湊模塊:用于采用sm3密碼雜湊算法,進行密碼雜湊運算,產生相應的雜湊值;
所述下層復選模塊:用于當系統(tǒng)要進行點乘運算和異或運算時,所述運算控制模塊與所述下層復選模塊通信,通過所述下層復選模塊調用所述點乘運算模塊和所述異或運算模塊,完成點乘運算和異或運算;當系統(tǒng)要進行比特串轉換和比特串拼接時,所述比特串處理模塊與所述下層復選模塊通信,通過所述下層復選模塊調用所述比特串轉換模塊和所述比特串拼接模塊,完成比特串轉換和比特串拼接;
所述點乘運算模塊:用于完成消息加密和消息解密過程中所需的點乘運算;
所述異或運算模塊:用于完成消息加密和解密過程中所需的異或運算;
所述比特串轉換模塊:用于將橢圓曲線上的點轉換為與之相對應的比特串,將比特串轉換為橢圓曲線上與之相對應的點;
所述比特串拼接模塊:用于將兩個以上的比特串進行拼接,使之成為一個比特串。
在系統(tǒng)的設計過程中,采用了高層次的模塊化方法,按照硬件占用資源少、成本低、系統(tǒng)運行速度快,結構簡單、易實現的原則,將系統(tǒng)進行了合理的劃分,具體劃分為所述sm2主控模塊、所述sm2解析模塊、所述加密控制模塊、所述解密控制模塊、所述上層復選模塊、所述隨機數生成模塊、所述運算控制模塊、所述比特串處理模塊、所述密鑰派生模塊、所述雜湊模塊、所述下層復選模塊、所述點乘運算模塊、所述異或運算模塊、所述比特串轉換模塊、所述比特串拼接模塊,每個模塊可實現相應的功能。
所述比特串拼接模塊采用首尾依次相接進行拼接。
一種素域fp下的sm2橢圓曲線公鑰密碼算法中利用公鑰加密算法來加密消息的實現方法,包括如下步驟:
步驟一:通過上層復選模塊調用隨機數生成模塊,產生隨機數k∈[1,n-1];
步驟二:運算控制模塊通過下層復選模塊來調用點乘運算模塊,計算c1=[k]g=(x1,y1)和s=[h]pb;
步驟三:檢驗s是否為無窮遠點,若s是無窮遠點,則報錯并退出,若s不是無窮遠點,則執(zhí)行步驟四;
步驟四:運算控制模塊通過下層復選模塊來調用點乘運算模塊,計算[k]pb=(x2,y2);
步驟五:比特串處理模塊通過下層復選模塊來調用比特串轉換模塊,將點(x1,y1)和點(x2,y2)轉換為相應的比特串,調用比特串拼接模塊,拼接比特串x2和y2,得比特串x2||y2;
步驟六:通過上層復選模塊來調用密鑰派生模塊,對比特串x2||y2和整數klen進行密鑰派生運算,得比特串t;
步驟七:檢驗t是否為全為0的比特串,若是則返回步驟一,若否則執(zhí)行步驟八;
步驟八:運算控制模塊通過下層復選模塊來調用異或運算模塊,計算
步驟九:比特串處理模塊通過下層復選模塊來調用比特串拼接模塊,拼接比特串x2、m和y2,得比特串x2||m||y2;
步驟十:通過上層復選模塊調用雜湊模塊,對比特串x2||m||y2進行密碼雜湊運算,得雜湊值c3;
步驟十一:比特串處理模塊通過下層復選模塊來調用比特串拼接模塊,拼接比特串c1、c2和c3,得到密文c=c1||c2||c3。
在加密消息的過程中,采用硬件模塊復用的方法,通過運用上層復選模塊,實現了對隨機數生成模塊、運算控制模塊、比特串處理模塊、密鑰派生模塊、雜湊模塊的復用,通過運用下層復選模塊,實現了對點乘運算模塊、異或運算模塊、比特串轉換模塊、比特串拼接模塊的復用。
一種素域fp下的sm2橢圓曲線公鑰密碼算法中利用公鑰加密算法來解密密文的實現方法,其特征在于,包括如下步驟:
步驟一:從密文c中取出比特串c1,比特串處理模塊通過下層復選模塊來調用比特串轉換模塊,將比特串c1轉換為點c1;
步驟二:檢驗點c1是否滿足橢圓曲線方程,若不滿足則報錯并退出,若滿足則執(zhí)行步驟三;
步驟三:運算控制模塊通過下層復選模塊來調用點乘運算模塊,計算s’=[h]c1;
步驟四:檢驗是s’否為無窮遠點,若s’是無窮遠點,則報錯并退出,若s’不是無窮遠點,則執(zhí)行步驟五;
步驟五:運算控制模塊通過下層復選模塊來調用點乘運算模塊,計算[db]c1=(x2’,y2’);
步驟六:比特串處理模塊通過下層復選模塊來調用比特串轉換模塊,將坐標x2’和y2’轉換為與之相對應的比特串,調用比特串拼接模塊,拼接比特串x2’和y2’,得到比特串x2’||y2’;
步驟七:通過上層復選模塊來調用密鑰派生模塊,對比特串x2’||y2’和整數klen進行密鑰派生運算,得比特串t’;
步驟八:檢驗t’是否為全為0的比特串,若是則報錯并退出,若否則執(zhí)行步驟九;
步驟九:從密文c中取出比特串c2,運算控制模塊通過下層復選模塊來調用異或運算模塊,計算
步驟十:比特串處理模塊通過下層復選模塊來調用比特串拼接模塊,拼接比特串x2’、m’和y2’,得到比特串x2’||m’||y2’;
步驟十一:通過上層復選模塊調用雜湊模塊,對比特串x2’||m’||y2’進行密碼雜湊運算,得到雜湊值u;
步驟十二:從密文c中取出比特串c3;
步驟十三:檢驗u=c3是否成立,若不成立則報錯并退出,若成立則執(zhí)行步驟十四;
步驟十四:輸出解密后的明文m’。
在解密密文的過程中,采用硬件模塊復用的方法,通過運用上層復選模塊,實現了對隨機數生成模塊、運算控制模塊、比特串處理模塊、密鑰派生模塊、雜湊模塊的復用,通過運用下層復選模塊,實現了對點乘運算模塊、異或運算模塊、比特串轉換模塊、比特串拼接模塊的復用。
本發(fā)明相對于現有技術具有如下的優(yōu)點及效果:
(1)本發(fā)明在系統(tǒng)的設計過程中,采用了高層次的模塊化方法,即按照硬件占用資源少、成本低、系統(tǒng)運行速度較快,結構簡單、易實現的原則,將系統(tǒng)進行了合理的劃分,具體劃分為sm2主控模塊、sm2解析模塊、加密控制模塊、解密控制模塊、上層復選模塊、隨機數生成模塊、運算控制模塊、比特串處理模塊、密鑰派生模塊、雜湊模塊、下層復選模塊、點乘運算模塊、異或運算模塊、比特串轉換模塊、比特串拼接模塊,每個模塊可實現相應的功能。通過這種高層次的模塊劃分方法,大大減少了系統(tǒng)硬件資源的使用,降低了成本,加快了系統(tǒng)的運行速度,同時結構簡單、易于實現。
(2)本發(fā)明采用硬件模塊復用的方法,通過運用上層復選模塊,實現了對隨機數生成模塊、運算控制模塊、比特串處理模塊、密鑰派生模塊、雜湊模塊的復用,通過運用下層復選模塊,實現了對點乘運算模塊、異或運算模塊、比特串轉換模塊、比特串拼接模塊的復用,從而大大減少了系統(tǒng)硬件資源的使用,降低了成本。
(3)本發(fā)明采用硬件的方法來實現sm2橢圓曲線加密算法中對消息的加密和解密,與軟件實現方法相比,硬件實現方法的運行速度更快、安全性更高,同時可以集成到多種加密芯片等硬件設備上,應用廣泛,可產生極大的經濟效益和社會效益。
附圖說明
圖1為本發(fā)明提供的一種素域fp下的sm2橢圓曲線公鑰加密算法的硬件實現系統(tǒng)的整體結構圖;
圖2是在素域fp下的sm2橢圓曲線公鑰密碼算法中利用公鑰加密算法來加密消息的流程圖;
圖3是在素域fp下的sm2橢圓曲線公鑰密碼算法中利用公鑰加密算法來解密密文的流程圖。
具體實施方式
下面結合實施例及附圖對本發(fā)明作進一步詳細的描述,但本發(fā)明的實施方式不限于此。
實施例
本發(fā)明提供一種素域fp下的sm2橢圓曲線公鑰加密算法的硬件實現系統(tǒng),本發(fā)明中所涉及到的sm2橢圓曲線和算法均是定義在素域fp上的,其中p為大于3的素數。素域fp上的橢圓曲線方程為y2x3+ax+b,其中a,b∈fp,且(4a3+27b2)modp≠0。
圖1為本發(fā)明提供的一種素域fp下的sm2橢圓曲線公鑰加密算法的硬件實現系統(tǒng)的整體結構圖,該系統(tǒng)能夠從硬件上,實現對消息的加密和解密,保證消息的安全,防止消息在傳輸過程中受到攻擊,從而被不法分子截取或破壞。該系統(tǒng)所用到的模塊包括:sm2主控模塊、sm2解析模塊、加密控制模塊、解密控制模塊、上層復選模塊、隨機數生成模塊、運算控制模塊、比特串處理模塊、密鑰派生模塊、雜湊模塊、下層復選模塊、點乘運算模塊、異或運算模塊、比特串轉換模塊、比特串拼接模塊。
sm2主控模塊:用于與sm2解析模塊進行通信,進而調用加密控制模塊和解密控制模塊對消息進行加密和解密。
sm2解析模塊:用于解析sm2主控模塊發(fā)出的命令,確定系統(tǒng)當前時間要實現的是消息加密還是消息解密功能,并將進行消息加密的命令發(fā)送給加密控制模塊,將進行消息解密的命令發(fā)送給解密控制模塊。
加密控制模塊:用于在收到sm2解析模塊發(fā)送的進行消息加密的命令后,與上層復選模塊進行通信,通過上層復選模塊調用隨機數生成模塊、運算控制模塊、比特串處理模塊、密鑰派生模塊、雜湊模塊,通過下層復選模塊調用點乘運算模塊、異或運算模塊、比特串轉換模塊、比特串拼接模塊,對消息進行加密。
解密控制模塊:用于在收到sm2解析模塊發(fā)送的進行消息解密的命令后,與上層復選模塊進行通信,通過上層復選模塊調用隨機數生成模塊、運算控制模塊、比特串處理模塊、密鑰派生模塊、雜湊模塊,通過下層復選模塊調用點乘運算模塊、異或運算模塊、比特串轉換模塊、比特串拼接模塊,對消息進行解密。
上層復選模塊:用于當系統(tǒng)要進行消息加密時,加密控制模塊與上層復選模塊進行通信,通過上層復選模塊調用隨機數生成模塊、運算控制模塊、比特串處理模塊、密鑰派生模塊、雜湊模塊進行消息加密,當系統(tǒng)要進行消息解密時,解密控制模塊與上層復選模塊進行通信,通過上層復選模塊調用隨機數生成模塊、運算控制模塊、比特串處理模塊、密鑰派生模塊、雜湊模塊進行消息解密。
隨機數生成模塊:用于生成隨機數k∈[1,n-1]。
運算控制模塊:用于通過下層復選模塊來調用點乘運算模塊和異或運算模塊,完成點乘運算和異或運算。
比特串處理模塊:用于通過下層復選模塊來調用比特串轉換模塊和比特串拼接模塊,完成比特串轉換和比特串拼接。
密鑰派生模塊:用于進行密鑰派生運算,生成密鑰數據比特串。
雜湊模塊:用于采用sm3密碼雜湊算法,進行密碼雜湊運算,產生相應的雜湊值。
下層復選模塊:用于當系統(tǒng)要進行點乘運算和異或運算時,運算控制模塊與下層復選模塊通信,通過下層復選模塊調用點乘運算模塊和異或運算模塊,完成點乘運算和異或運算;當系統(tǒng)要進行比特串轉換和比特串拼接時,比特串處理模塊與下層復選模塊通信,通過下層復選模塊調用比特串轉換模塊和比特串拼接模塊,完成比特串轉換和比特串拼接
點乘運算模塊:用于完成消息加密和消息解密過程中所需的點乘運算。
異或運算模塊:用于完成消息加密和解密過程中所需的異或運算。
比特串轉換模塊:用于將橢圓曲線上的點轉換為與之相對應的比特串,將比特串轉換為橢圓曲線上與之相對應的點。
比特串拼接模塊:用于將兩個以上的比特串進行拼接(首尾依次相接),使之成為一個比特串。
圖2是在素域fp下的sm2橢圓曲線公鑰密碼算法中利用公鑰加密算法來加密消息的流程圖,該加密算法由加密方a來實現。在進行消息加密時,采用硬件模塊復用的方法,通過上層復選模塊,實現了對隨機數生成模塊、運算控制模塊、、比特串處理模塊、密鑰派生模塊、雜湊模塊的復用,通過下層復選模塊,實現了對點乘運算模塊、異或運算模塊、比特串轉換模塊、比特串拼接模塊的復用,從而大大減少了系統(tǒng)硬件資源的使用,降低了成本。加密方a的輸入數據包括:素域fp下的橢圓曲線系統(tǒng)參數(方程參數a和b、階n、余因子h、基點g),長度為klen比特的待加密的消息m,解密方b的公鑰pb。如圖2所示,該公鑰加密算法由以下步驟組成:
步驟一:通過上層復選模塊調用隨機數生成模塊,產生隨機數k∈[1,n-1];
步驟二:運算控制模塊通過下層復選模塊來調用點乘運算模塊,計算c1=[k]g=(x1,y1)和s=[h]pb;
步驟三:檢驗s是否為無窮遠點,若s是無窮遠點,則報錯并退出,若s不是無窮遠點,則執(zhí)行步驟四;
步驟四:運算控制模塊通過下層復選模塊來調用點乘運算模塊,計算[k]pb=(x2,y2);
步驟五:比特串處理模塊通過下層復選模塊來調用比特串轉換模塊,將點(x1,y1)和點(x2,y2)轉換為相應的比特串,調用比特串拼接模塊,拼接比特串x2和y2,得比特串x2||y2;
步驟六:通過上層復選模塊來調用密鑰派生模塊,對比特串x2||y2和整數klen進行密鑰派生運算,得比特串t;
步驟七:檢驗t是否為全為0的比特串,若是則返回步驟一,若否則執(zhí)行步驟八;
步驟八:運算控制模塊通過下層復選模塊來調用異或運算模塊,計算
步驟九:比特串處理模塊通過下層復選模塊來調用比特串拼接模塊,拼接比特串x2、m和y2,得比特串x2||m||y2;
步驟十:通過上層復選模塊調用雜湊模塊,對比特串x2||m||y2進行密碼雜湊運算,得雜湊值c3;
步驟十一:比特串處理模塊通過下層復選模塊來調用比特串拼接模塊,拼接比特串c1、c2和c3,得到密文c=c1||c2||c3。
圖3是在素域fp下的sm2橢圓曲線公鑰密碼算法中利用公鑰加密算法來解密密文的流程圖,該解密算法由解密方b來實現。在進行解密密文時,采用硬件模塊復用的方法,通過上層復選模塊,實現了對隨機數生成模塊、運算控制模塊、比特串處理模塊、密鑰派生模塊、雜湊模塊的復用,通過下層復選模塊,實現了對點乘運算模塊、異或運算模塊、比特串轉換模塊、比特串拼接模塊的復用,從而大大減少了系統(tǒng)硬件資源的使用,降低了成本。解密方b的輸入數據包括:素域fp下的橢圓曲線系統(tǒng)參數(方程參數a和b、階n、余因子h、基點g),密文c=c1||c2||c3,解密方b的私鑰db。如圖3所示,該解密密文算法由以下步驟組成:
步驟一:從密文c中取出比特串c1,比特串處理模塊通過下層復選模塊來調用比特串轉換模塊,將比特串c1轉換為點c1;
步驟二:檢驗點c1是否滿足橢圓曲線方程,若不滿足則報錯并退出,若滿足則執(zhí)行步驟三;
步驟三:運算控制模塊通過下層復選模塊來調用點乘運算模塊,計算s’=[h]c1;
步驟四:檢驗是s’否為無窮遠點,若s’是無窮遠點,則報錯并退出,若s’不是無窮遠點,則執(zhí)行步驟五;
步驟五:運算控制模塊通過下層復選模塊來調用點乘運算模塊,計算[db]c1=(x2’,y2’);
步驟六:比特串處理模塊通過下層復選模塊來調用比特串轉換模塊,將坐標x2’和y2’轉換為與之相對應的比特串,調用比特串拼接模塊,拼接比特串x2’和y2’,得到比特串x2’||y2’;
步驟七:通過上層復選模塊來調用密鑰派生模塊,對比特串x2’||y2’和整數klen進行密鑰派生運算,得比特串t’;
步驟八:檢驗t’是否為全為0的比特串,若是則報錯并退出,若否則執(zhí)行步驟九;
步驟九:從密文c中取出比特串c2,運算控制模塊通過下層復選模塊來調用異或運算模塊,計算
步驟十:比特串處理模塊通過下層復選模塊來調用比特串拼接模塊,拼接比特串x2’、m’和y2’,得到比特串x2’||m’||y2’;
步驟十一:通過上層復選模塊調用雜湊模塊,對比特串x2’||m’||y2’進行密碼雜湊運算,得到雜湊值u;
步驟十二:從密文c中取出比特串c3;
步驟十三:檢驗u=c3是否成立,若不成立則報錯并退出,若成立則執(zhí)行步驟十四;
步驟十四:輸出解密后的明文m’。
上述實施例為本發(fā)明較佳的實施方式,但本發(fā)明的實施方式并不受上述實施例的限制,其他的任何未背離本發(fā)明的精神實質與原理下所作的改變、修飾、替代、組合、簡化,均應為等效的置換方式,都包含在本發(fā)明的保護范圍之內。