[發明專利]p元域SM2橢圓曲線公鑰密碼算法的實現系統有效
| 申請號: | 201110107574.5 | 申請日: | 2011-04-27 |
| 公開(公告)號: | CN102761413A | 公開(公告)日: | 2012-10-31 |
| 發明(設計)人: | 徐樹民;屈善新;劉振;王紹麟;田心;劉建巍 | 申請(專利權)人: | 航天信息股份有限公司 |
| 主分類號: | H04L9/30 | 分類號: | H04L9/30 |
| 代理公司: | 北京科龍寰宇知識產權代理有限責任公司 11139 | 代理人: | 孫皓晨 |
| 地址: | 100195 *** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | sm2 橢圓 曲線 密碼 算法 實現 系統 | ||
1.一種p元域SM2橢圓曲線公鑰密碼算法的實現系統,所述橢圓曲線具有階n、基G、余因子h;所述p元域SM2橢圓曲線公鑰密碼算法中的數字簽名算法包括公鑰PA和私鑰dA構成的公私密鑰對;執行所述p元域SM2橢圓曲線公鑰密碼算法中的密鑰交換協議的為發起方和響應方,發起方具有發起方公鑰PA1和發起方私鑰dA1構成的公私密鑰對,響應方具有響應方公鑰PB1和響應方私鑰dB1構成的公私密鑰對;發起方和響應方約定的會話密鑰的長度為klen;所述p元域SM2橢圓曲線公鑰密碼算法中的公鑰加密算法包括公鑰PB2和私鑰db2構成的公私密鑰對;其特征在于,該系統包括:主控模塊、解析模塊、簽名控制中心、驗證控制中心、發起方控制中心、響應方控制中心、加密方控制中心、解密方控制中心、s生成模塊、上層復選模塊、隨機數生成模塊、倍點運算模塊、點加模塊、密鑰派生模塊;其中,
所述主控模塊通過所述解析模塊與所述簽名控制中心、驗證控制中心、發起方控制中心、響應方控制中心、加密方控制中心、解密方控制中心通信,包括:向所述簽名控制中心和驗證控制中心分別發送數字簽名命令和驗證簽名命令,向所述發起方控制中心和響應方控制中心發送密鑰交換命令,向所述加密方控制中心和解密方控制中心分別發送加密命令和解密命令;接收所述簽名控制中心輸出的數字簽名、所述驗證控制中心輸出的數字簽名驗證不通過的消息或數字簽名驗證通過的消息、所述發起方控制中心和響應方控制中心輸出的發起方會話密鑰、響應方會話密鑰、協商成功的消息或協商失敗的消息、所述加密方控制中心輸出的加密因失敗而結束的消息或密文、所述解密方控制中心輸出的解密因失敗而結束的消息或明文;
所述解析模塊用于,解析所述數字簽名命令和驗證簽名命令,并將其分別發送到所述簽名控制中心和驗證控制中心;解析所述密鑰交換命令,并將其分別發送到發起方控制中心和響應方控制中心;解析所述加密命令和解密命令,并將其分別發送到所述加密方控制中心和解密方控制中心;將所述簽名控制中心輸出的數字簽名、所述驗證控制中心輸出的數字簽名驗證不通過的消息或數字簽名驗證通過的消息、所述發起方控制中心和響應方控制中心輸出的發起方會話密鑰、響應方會話密鑰、協商成功的消息或協商失敗的消息、所述加密方控制中心輸出的加密因失敗而結束的消息或密文、所述解密方控制中心輸出的解密因失敗而結束的消息或明文轉發給所述主控模塊;
所述簽名控制中心用于,根據所述數字簽名命令,與所述s生成模塊、并通過所述上層復選模塊與所述隨機數生成模塊、倍點運算模塊交換數據,包括:將待簽名消息m與簽名方雜湊值進行拼接,對得到的拼接消息m’進行密碼雜湊運算,生成拼接消息雜湊值e;通知所述隨機數生成模塊提供隨機數k;將G和k作為一組倍點運算數據發送到所述倍點運算模塊,并接收其返回的運算結果(x1,y1);根據r=(e+x1)mod?n計算得到r;將r、k發送到所述s生成模塊;在r=0、r+k=n或s=0的情況下,通知所述隨機數生成模塊重新生成并提供k;將r和s作為m的數字簽名輸出;
所述驗證控制中心用于,根據所述驗證簽名命令,通過所述上層復選模塊與所述倍點運算模塊、點加模塊交換數據,包括:將接收的r’和s’作為接收的待驗證消息M’的數字簽名;判斷r’和s’是否均在1與(n-1)之間;將M’與簽名方雜湊值進行拼接,對得到的驗證方拼接消息進行密碼雜湊運算,生成驗證方拼接消息雜湊值e’;根據t=(r′+s′)mod?n確定t,判斷t是否為0;將s’和G作為一組倍點運算數據、t和PA作為另一組倍點運算數據分別發送到所述倍點運算模塊,將所述倍點運算模塊分別返回的點[s′]G和點[t]PA作為一組點加運算數據發送到所述點加模塊,并接收其返回的運算結果(x1′,y1′);根據R=(e′+x1′)mod?n確定R,并判斷R是否與r’相等;判斷出r’不在1與(n-1)之間、s’不在1與(n-1)之間、t為0、R不等于r’中的任一情況時,輸出數字簽名驗證不通過的消息,上述各情況均不出現時,輸出數字簽名驗證通過的消息;
所述發起方控制中心用于,根據所述密鑰交換命令,與其他所述實現系統中的響應方控制中心、并通過所述上層復選模塊與所述隨機數生成模塊、倍點運算模塊、點加模塊、密鑰派生模塊交換數據,包括:通知所述隨機數生成模塊提供隨機數rA;將rA和G作為一組倍點運算數據發送到所述倍點運算模塊,接收其返回的坐標為(xx1,yy1)的點RA,并將RA發送到其他所述實現系統中的響應方控制中心;根據x10=2w+[xx1&(2w-1)]和x20=2w+[xx2&(2w-1)]分別確定x10和x20,其中的根據tA=(dA1+x10·rA)mod?n計算得到tA;判斷RB是否為所述橢圓曲線上的點;將x20和RB作為一組倍點運算數據發送到所述倍點運算模塊,接收其返回的點[x20]RB;將PB1和[x20]RB作為一組點加運算數據發送到所述點加模塊,接收其返回的點(PB+[x20]RB);將h·tA和(PB+[x20]RB)作為一組倍點運算數據發送到所述倍點運算模塊,判斷其返回的坐標為(xU,yU)的點U是否為無窮遠點;將xU、yU、發起方雜湊值ZA和響應方雜湊值ZB拼接成的比特串Z與長度klen作為一組密鑰派生數據發送到所述密鑰派生模塊,將其返回的比特串KA作為發起方會話密鑰輸出,并輸出協商成功的消息;在判斷出RB不為所述橢圓曲線上的點、U為無窮遠點的情況之一時,輸出協商失敗的消息;
所述響應方控制中心用于,根據所述密鑰交換命令,與其他所述實現系統中的發起方控制中心、并通過所述上層復選模塊與所述隨機數生成模塊、倍點運算模塊、點加模塊、密鑰派生模塊交換數據,包括:通知所述隨機數生成模塊提供隨機數rB;將rB和G作為一組倍點運算數據發送到所述倍點運算模塊,接收其返回的坐標為(xx2,yy2)的點RB;根據x10=2w+[xx1&(2w-1)]和x20=2w+[xx2&(2w-1)]分別計算得到x10和x20;根據tB=(dB1+x20·rB)mod?n計算tB;判斷RA是否為所述橢圓曲線上的點;將x10和RA作為一組倍點運算數據發送到所述倍點運算模塊,接收其返回的點[x10]RA;將點PA1和點[x10]RA作為一組點加運算數據發送到所述點加模塊,接收其返回的點(PA+[x10]RA);將h·tB和(PA+[x10]RA)作為一組倍點運算數據發送到所述倍點運算模塊,判斷其返回的坐標為(xV,yV)的點V是否為無窮遠點;將xV、yV、發起方雜湊值ZA和響應方雜湊值ZB拼接成的比特串Z’與長度klen作為一組密鑰派生數據發送到所述密鑰派生模塊,將其返回的比特串KB作為響應方會話密鑰輸出;將RB發送到其他所述實現系統中的發起方控制中心;在判斷出RA不為所述橢圓曲線上的點、V為無窮遠點的情況之一時,輸出協商失敗的消息;
所述加密方控制中心用于,根據所述加密命令,通過所述上層復選模塊與所述隨機數生成模塊、倍點運算模塊、密鑰派生模塊交換數據,包括:接收長度為klen1比特的待加密消息M;通知所述隨機數生成模塊提供隨機數k;將k和點G作為一組倍點運算數據發送到所述倍點運算模塊,接收其返回的點C1;將點C1轉換為比特串C1;將余因子h和點PB作為一組倍點運算數據發送到所述倍點運算模塊,并接收其返回的點S;判斷S是否為無窮遠點,在判斷結果為是的情況下輸出本次加密因失敗而結束的消息;將k和點PB2作為一組倍點運算數據發送到所述倍點運算模塊,并接收其返回的點的坐標(x2,y2);將x2和y2拼接為比特串x2-y2;將標量klen1與比特串x2-y2作為一組密鑰派生數據發送到所述密鑰派生模塊,并接收其返回的比特串t1;判斷t1是否為全0比特串,在判斷結果為是的情況下,通知所述隨機數生成模塊重新生成隨機數k,在判斷結果為否的情況下,對M與t1進行按位異或運算,得到比特串C2;將x2、M和y2拼接而成的比特串x2-M-y2進行密碼雜湊運算,生成雜湊值C3;將比特串C1、C2和C3拼接為新的比特串C1-C2-C3,并將其作為密文C輸出;
所述解密方控制中心用于,根據所述解密命令,通過所述上層復選模塊與所述倍點運算模塊、密鑰派生模塊交換數據,包括:接收形式為由C1’、C2’、C3’拼接而成的比特串C1’-C2’-C3’的待解密的密文C’,其中的比特串C1’與所述比特串C1對應,比特串C2’與所述比特串C2對應且其長度為klen1比特,比特串C3’與所述比特串C3對應;從C’中取出比特串C1’,并將其轉換為點C1’;判斷點C1’的坐標是否滿足所述橢圓曲線的方程,在判斷結果為是的情況下,將余因子h和點C1’作為一組倍點運算數據發送到所述倍點運算模塊,并接收其返回的點S’;判斷S’是否為無窮遠點,在判斷結果為否的情況下,將私鑰dB2和點C1’作為一組倍點運算數據發送到所述倍點運算模塊,并接收其返回的點的坐標(x2’,y2’),將x2’、y2’拼接而成的比特串x2’-y2’與標量klen1作為一組密鑰派生數據發送到所述密鑰派生模塊,并接收其返回的比特串t1’;判斷t1’是否為全0比特串,在判斷結果為否的情況下,從C’中取出比特串C2’;對C2’和t1’進行按位異或運算,得到比特串M1’;對比特串x2’-M1’-y2’進行密碼雜湊運算,得到雜湊值u;從C’中取出比特串C3’;判斷u是否與C3’相等,在判斷結果為是的情況下,將M1’作為C’對應的明文輸出;在點C1’的坐標不滿足所述橢圓曲線的方程、S’為無窮遠點、t1’為全0比特串、u不等于C3’中的任一種情況發生時,輸出解密因失敗而結束的消息;
所述s生成模塊用于,根據s=[(1+dA)-1·(k-r·dA)]mod?n生成s,將生成的s發送到所述簽名控制中心;
所述上層復選模塊為所述簽名控制中心與所述隨機數生成模塊、倍點運算模塊之間,所述驗證控制中心與所述倍點運算模塊、點加模塊之間,所述發起方控制中心與所述隨機數生成模塊、倍點運算模塊、點加模塊、密鑰派生模塊之間,所述響應方控制中心與所述隨機數生成模塊、倍點運算模塊、點加模塊、密鑰派生模塊之間,所述加密方控制中心與所述隨機數生成模塊、倍點運算模塊、密鑰派生模塊之間,以及所述解密方控制中心與所述倍點運算模塊、密鑰派生模塊之間的數據轉發模塊;
所述隨機數生成模塊用于,生成1與(n-1)之間的隨機數并通過所述上層復選模塊轉發;
所述倍點運算模塊用于,對倍點運算數據中的點進行其中的標量倍點運算,將運算結果通過所述上層復選模塊轉發;
所述點加模塊用于,對所述點加運算數據中的兩個點的坐標進行點加運算,將運算結果通過所述上層復選模塊轉發;
所述密鑰派生模塊用于,對密鑰派生數據中的比特串進行密鑰派生運算,將得到的長度為密鑰派生數據中的標量的比特串通過所述上層復選模塊轉發。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于航天信息股份有限公司,未經航天信息股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201110107574.5/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:用于液晶面板的自動化加工系統
- 下一篇:用以產生紅外線光偵測器的方法





