新四季網

用於sm2數字籤名驗證算法的fpga晶片的製作方法

2023-05-07 14:21:16

專利名稱:用於sm2數字籤名驗證算法的fpga晶片的製作方法
技術領域:
本發明涉及計算機技術領域,特別是涉及一種用於SM2數字籤名驗證算法的FPGA
-H-* I I
心/T O
背景技術:
國家密碼管理局於2010年底提出我國相關的密碼學算法標準,包括SM2標準、SM3標準、SM7標準。其中SM2標準是基於橢圓曲線離散對數的數學問題基礎,在國際相關ECC (橢圓曲線密碼)相關標準算法基礎上演化而來的國內標準。目前國內外應用較多的非對稱密碼算法主要還是RSA算法。但是從理論分析和應用需求角度看,ECC算法(包含SM2標準算法)的安全強度要高於RSA算法,同時密鑰長度更短,應用前景較好。但是基於SM2算法的系統實現,甚至在終端晶片研發方面產品不多。另一方面,國家密碼管理局要求國內所有應用非對稱密碼算法的系統和終端,於2015年前必須使用國內標準,包括SM2算法標準。因此,在SM2產品研發和系統方案方面可以進行系統研究。

發明內容
為了解決現有技術中的上述問題,本發明提供一種用於SM2數字籤名驗證算法的FPGA晶片。本發明提供一種用於SM2數字籤名驗證算法的FPGA晶片,包括系統總線接口,用於與FPGA晶片的外部系統進行通信,從外部系統獲取SM2數字籤名驗證所需的參數和數據,並寫入SM2控制器,接收外部系統發送的控制消息、工作狀態查詢消息、以及運算結果查詢消息,並發送到SM2控制器;SM2控制器,與系統總線接口和SM2運算單元連接,用於根據控制消息觸發SM2運算單元,在接收到工作狀態查詢消息和運算結果查詢消息後,通過系統總線接口向外部系統發送SM2運算單元的工作狀態和驗證結果;SM2運算單元,用於在SM2控制器的觸發下,從SM2控制器中讀取本次SM2數字籤名驗證所需的參數和數據,進行根據SM2數字籤名驗證算法進行驗證計算,將驗證結果發送到SM2控制器。優選地,系統總線接口包括符合通用工業總線標準的系統總線接口、或者,符合用戶自定義總線接口協議的系統總線接口。優選地,SM2控制器具體包括控制寄存器,用於在通過系統總線接口接收到外部系統發送的控制消息的情況下,根據控制消息,通過SM2啟動信號觸發SM2運算單元啟動,通過SM2復位信號觸發SM2運算單元復位;數據寄存器,用於通過系統總線接口接收外部系統發送的本次SM2數字籤名驗證所需的參數和數據,並進行存儲,在控制寄存器復位SM2運算單元後,清空本次SM2數字籤名驗證所需的參數和數據;狀態寄存器,用於在接收到工作狀態查詢消息的情況下,查詢SM2運算單元的工作狀態,並通過系統總線接口將工作狀態發送到外部系統;主動通知外部系統SM2運算單元已完成本次SM2數字籤名驗證;在接收到運算結果查詢消息的情況下,通過系統總線接口向外部系統發送本次SM2數字籤名驗證的驗證結果。優選地,SM2運算單元具體包括第一狀態機模塊,用於進行SM2數字籤名驗證運算流程控制,並與SM2控制器進行通信;第一模加運算模塊,用於在仿射坐標系下完成SM2數字籤名驗證算法中的t = (r 1 +s 1 )modn的計算,以及R = (e 1 +X11 )modn的
計算,其中,(r' +s')為籤名碼字,計算消息的摘要值=為摘要計算函
數,=ZgOAT,「□」表示前後兩個字符串的拼接,η為橢圓曲線的階,χ/為橢圓曲線點(x; ,Y1 )坐標元素之一;第一倍點運算模塊,用於在底層素數域加減法運算、素數域乘法運算、以及素數域除法運算的支持下,在仿射坐標系下計算SM2數字籤名驗證算法中的[s' ]6和[t' ]PA,其中,G是橢圓曲線的基點,G = (xe, ye) (G古O), Xe和ye是Fp中的兩個元素,橢圓曲線E (Fq)方程的兩個元素a、b e F,、Pa是用戶公鑰,也是橢圓曲線上的一個點,[s' ]G是指G的s'倍 點,[t' ]PA是指?4的1倍點;第一點加運算模塊,用於在底層素數域加減法運算、素數域乘法運算、以及素數域除法運算的支持下,在仿射坐標系下完成SM2數字籤名驗證算法中的[s' ]6和[1 ]PA兩個點的點加運算,即,(X' ,y')=[s' ]G+[t' ]PA,其中,(X' ,y')為橢圓曲線上的點。優選地,第一狀態機模塊具體用於讀取SM2控制器中本次SM2數字籤名驗證所需的參數和數據;接收SM2控制器發送的SM2啟動信號,啟動SM2運算單元;根據SM2數字籤名驗證算法的運算流程調用第一倍點運算模塊、第一點加運算模塊、第一模加運算模塊,並根據本次SM2數字籤名驗證所需的參數和數據進行驗證計算;在本次SM2數字籤名驗證完成後,獲取驗證結果,將驗證結果和完成標誌返回給SM2控制器;接收SM2控制器發送的SM2復位彳目號,復位SM2運算單兀。優選地,第一狀態機模塊具體用於調用第一模加運算模塊計算t= (r' +s')modn;調用第一倍點運算模塊計算[s' ]6和[1 ]PA ;調用第一點加運算模塊計算(X' , y' ) = [s' ]G+[t' ]PA ;調用第一模加運算模塊計算R = (e, +x/ )modn,檢驗R = r,是否成立,若成立則驗證通過,否則驗證不通過。優選地,SM2運算單元具體包括坐標轉換模塊,用於對橢圓曲線上的點坐標數據由仿射坐標系向雅可比坐標系進行轉換;第二狀態機模塊,用於進行SM2數字籤名驗證運算流程控制,並與SM2控制器進行通信;第二模加運算模塊,用於在雅可比坐標系下完成SM2數字籤名驗證算法中的t = (r 1 +s 1 )modn的計算,以及R = (e 1 +X11 )modn
的計算,其中,(r' +s')為籤名碼字,計算消息的摘要值y = //,.(f)5Hv為摘要計算函
數,A/V『□」表示前後兩個字符串的拼接,η為橢圓曲線的階,χ/為橢圓曲線點U' ,Y')坐標元素之一;第二倍點運算模塊,用於在底層素數域加減法運算、素數域乘法運算、以及素數域除法運算的支持下,在雅可比坐標系下計算SM2數字籤名驗證算法中的[s']PA,其中,G是橢圓曲線的基點,G = (xe, ye) (G古O), Xe和ye是Fp中的兩
個元素,橢圓曲線E (Fq)方程的兩個元素a、b e F,、Pa是用戶公鑰,也是橢圓曲線上的一個點,[s' ]G是指G的s'倍點,[t' ]PA是指?4的1倍點;第二點加運算模塊,用於在底層素數域加減法運算、素數域乘法運算、以及素數域除法運算的支持下,在雅可比坐標系下完成SM2數字籤名驗證算法中的[s' ]6和[1 ]PA兩個點的點加運算,即,(X' ,y')=[s' ]G+[t' ]PA,其中,(X' ,y')為橢圓曲線上的點。
優選地,將素數域乘法運算替換為Montgomery乘法運算。優選地,通過FPGA晶片中的數位訊號處理器DSP資源代替Montgomery乘法運算所需的乘法器。優選地,第二狀態機模塊具體用於讀取SM2控制器中本次SM2數字籤名驗證所需的參數和數據;接收SM2控制器發送的SM2啟動信號,啟動SM2運算單元;調用第二模加運算模塊計算t=(r' +s' )modn;調用第二倍點運算模塊計算[s' ]6和[1 ]PA ;調用第二點加運算模塊計算(X' ,1' ) = [S' ]G+[t' ]PA ;調用第二模加運算模塊計算R =(e' +X1 / )modn,檢驗R = r'是否成立,若成立則驗證通過,否則驗證不通過;在本次SM2數子籤名驗證完成後,犾取驗證結果,將驗證結果和完成標誌返回給SM2控制器;接收SM2控制器發送的SM2復位信號,復位SM2運算單元。本發明有益效果如下藉助於本發明實施例的技術方案,充分利用了 FPGA晶片資源,可以有效提升SM2算法的運算速度;本發明實施例的技術方案可以應用於各類安全認證領域,同時根據具體的應用場景和技術需求,採取靈活配置方式,實現系統資源和運算效率的合理分配。上述說明僅是本發明技術方案的概述,為了能夠更清楚了解本發明的技術手段,而可依照說明書的內容予以實施,並且為了讓本發明的上述和其它目的、特徵和優點能夠更明顯易懂,以下特舉本發明的具體實施方式



通過閱讀下文優選實施方式的詳細描述,各種其他的優點和益處對於本領域普通技術人員將變得清楚明了。附圖僅用於示出優選實施方式的目的,而並不認為是對本發明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中圖1是本發明實施例的SM2數字籤名驗證算法流程圖;圖2是本發明實施例的用於SM2數字籤名驗證算法的FPGA晶片的結構示意圖;圖3是本發明實施例的SM2籤名驗證FPGA晶片內部結構的示意圖;圖4是本發明實施例的仿射坐標系下SM2籤名驗證運算單元實現示意圖;圖5是本發明實施例的雅可比坐標系下SM2籤名驗證運算單元實現示意圖。
具體實施例方式下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現本公開而不應被這裡闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,並且能夠將本公開的範圍完整的傳達給本領域的技術人員。本發明提供了一種用於SM2數字籤名驗證算法的FPGA晶片,基於FPGA晶片實現SM2國家密碼標準中數字籤名的驗證運算。應用場景或者應用需求為各類安全終端系統。本發明實施例基於國家密碼管理局SM2標準中數字籤名驗證算法,在FPGA晶片上實現素數域算法計算。此外通過仿射坐標系與雅可比坐標系的數據轉換,可以對SM2算法進行優化設計,由此可以提高FPGA晶片的運算效率。同時,由FPGA晶片具有可編程特性與可配置特性,晶片總線接口可以根據具體系統需求進行研發設計,降低成本,提高效率。
如上所述,SM2籤名算法的FPGA實現在運算功能方面等同於現有專用安全晶片。但是由於FPGA晶片具有可配置、可編程、可升級等特性,使得SM2數字籤名算法的FPGA實現可以根據具體的應用場景和應用需求,進行靈活實現算法計算效率與系統實現成本的選擇。即在算法實時性要求不高的應用需求環境下,可以選擇內部資源較為節省的FPGA晶片,進行基於仿射坐標系的算法實現;另一方面,針對實時性要求較高的應用需求環境,可以選擇內部資源較為豐富的FPGA晶片,並且可以採用算法優化,或者提高晶片時鐘等技術手段,來進一步提高運算速度和系統效率。同時,又可以按照具體的系統總線類型,靈活配置晶片對外系統總線,提高晶片的系統自適應性,也是FPGA實現相比於專用安全晶片的另一個優勢。以下結合附圖以及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,並不限定本發明。在對本發明實施例的技術方案進行詳細說明之前,首先對SM2國家標準數字籤名驗證算法進行詳細的說明。《SM2橢圓曲線公鑰密碼算法》國家標準分為四個部分,包括總則、數字籤名算法、密鑰交換協議、公鑰加密算法。數字籤名算法又包括橢圓曲線系統參數、用戶密鑰對、輔助函數、用戶其它信息、數字籤名的生成算法及流程、數字籤名的驗證算法及流程等。

本發明實施例主要完成數字籤名驗證算法的FPGA實現及性能效率優化。下面主要闡述SM2數字籤名驗證算法基本情況,後續再對FPGA實現及優化作出說明。SM2數字籤名驗證算法,具體如下輸入1、橢圓曲線參數包括有限域Fp的規模q、定義橢圓曲線E(Fq)方程的兩個元素a、b e Fq> E(Fq)上的基點G = (xG, yG) (G幸O),其中xG和ye是Fp中的兩個元素、橢圓曲線基點E (Fq)上的G的階η、以及其它可選項(如η的餘因子h等);2、Za :用戶的可辨別標識、部分橢圓曲線系統參數和用戶A公鑰的雜湊值;3、PA:用戶的公鑰;4、M』待驗證消息;5、(r',S,):系統收到的籤名碼字。輸出驗證結果驗證通過或者驗證不通過。步驟圖1是本發明實施例的SM2數字籤名驗證算法流程圖,如圖1所示,為了檢驗收到的消息M』及其數字籤名(r』,s』),作為驗證者的用戶需要實現以下運算步驟步驟1,檢驗r』 e [l,n-l]是否成立,若不成立,則驗證不通過,其中η為橢圓曲線的階;步驟2,檢驗s』 e [l,n-l]是否成立,若不成立,則驗證不通過,其中η為橢圓曲線的階;步驟3,置Ι/=Ζ, ΛΤ其中「□」運算符表示前後兩個字符串的拼接;
3步驟4,計算e' =//,(f ),即計算消息的摘要值,其中HvO為摘要計算函數;步驟5,將籤名碼字數據類型轉換為整數,計算t = (r' +s' )modn,若t = 0,則驗證不通過;步驟6,計算橢圓曲線點(X' ,y' ) = W ]G+[t' ]PA,其中(X' ,1')為橢圓曲線上的點,[s' ]6和[1 ]PA為倍點運算[s' ]G+[t' ]PA為點加運算;步驟7,計算R= (e' +x/ )modn,檢驗R = r'是否成立,若成立則驗證通過;否則驗證不通過,其中X/為上述步驟6計算得到的橢圓曲線點(X' ,J')坐標元素之一。以下對本發明實施例的技術方案進行詳細說明。根據本發明的實施例,提供了一種用於SM2數字籤名驗證算法的FPGA晶片,圖2是本發明實施例的用於SM2數字籤名驗證算法的FPGA晶片的結構示意圖,如圖2所示,根據本發明實施例的用於SM2數字籤名驗證算法的FPGA晶片包括系統總線接口 20、SM2控制器22、以及SM2運算單元24,以下對本發明實施例的各個模塊進行詳細的說明。系統總線接口 20,用於與FPGA晶片的外部系統進行通信,從外部系統獲取SM2數字籤名驗證所需的參數和數據,並寫入SM2控制器22,接收外部系統發送的控制消息、工作狀態查詢消息、以及運算結果查詢消息,並發送到SM2控制器22 ;其中,系統總線接口 20包括符合通用工業總線標準的系統總線接口 20、或者,符合用戶自定義總線接口協議的系統總線接口 20。SM2控制器22,與系統總線接口 20和SM2運算單元24連接,用於根據控制消息觸發SM2運算單元24,在接收到工作狀態查詢消息和運算結果查詢消息後,通過系統總線接口 20向外部系統發送SM2運算單元24的工作狀態和驗證結果;SM2控制器22具體包括控制寄存器,用於在通過系統總線接口 20接收到外部系統發送的控制消息的情況下,根據控制消息,通過SM2啟動信號觸發SM2運算單元24啟動,通過SM2復位信號觸發SM2運算單元24復位;數據寄存器,用於通過系統總線接口 20接收外部系統發送的本次SM2數字籤名驗證所需的參數和數據,並進行存儲,在控制寄存器復位SM2運算單元24後,清空本次SM2數字籤名驗證所需的參數和數據;狀態寄存器,用於在接收到工作狀態查詢消息的情況下,查詢SM2運算單元24的工作狀態,並通過系統總線接口 20將工作狀態發送到外部系統;主動通知外部系統SM2運算單元24已完成本次SM2數字籤名驗證;在接收到運算結果查詢消息的情況下,通過系統總線接口 20向外部系統發送本次SM2數字籤名驗證的驗證結果。SM2運算單元24,用於在SM2控制器22的觸發下,從SM2控制器22中讀取本次SM2數字籤名驗證所需的參數和數據,進行根據SM2數字籤名驗證算法進行驗證計算,將驗證結果發送到SM2控制器22。下面將以2個實例對SM2運算單元24的結構進行說明。實例ISM2運算單元24具體包括第一狀態機模塊,用於進行SM2數字籤名驗證運算流程控制,並與SM2控制器22進行通信;第一狀態機模塊具體用於讀取SM2控制器22中本次SM2數字籤名驗證所需的參數和數據;接收SM2控制器22發送的SM2啟動信號,啟動SM2運算單元24 ;根據SM2數字籤名驗證算法的運算流程調用第一倍點運算模塊、第一點加運算模塊、第一模加運算模塊,並根據本次SM2數字籤名驗證所需的參數和數據進行驗證計算;在本次SM2數字籤名驗證完成後,犾取驗證結果,將驗證結果和完成標誌返回給SM2控制器22 ;接收SM2控制器22發送的SM2復位信號,復位SM2運算單元24。其中,據SM2數字籤名驗證算法的運算流程調用第一倍點運算模塊、第一點加運算模塊、第一模加運算模塊,並根據本次SM2數字籤名驗證所需的參數和數據進行驗證計算具體包括如下處理調用第一模加運算模塊計算t = (r' +s' )modn ;調用第一倍點運算模塊計算[s' ]6和[1 ]PA;調用第一點加運算模塊計算(X' ) = [s' ]G+[t' ]PA;調用第一模加運算模塊計算R = (e' +x/ )modn,檢驗R = r'是否成立,若成立則驗證通過,否則驗證不通過。第一模加運算模塊,用於在仿射坐標系下完成SM2數字籤名驗證算法中的t =(r' +s' )modn的計算,以及R = (e' +x/ )modn的計算,其中,(r' +s')為籤名碼字,
計算消息的摘要值V = "..(V)5HvO為摘要計算函數,M =Z^ikT,「 □」表示前後兩個字
符串的拼接,η為橢圓曲線的階,X/為橢圓曲線點(X',y')坐標元素之一;第一倍點運算模塊,用於在底層素數域加減法運算、素數域乘法運算、以及素數域除法運算的支持下,在仿射坐標系下計算SM2數字籤名驗證算法中的[s' ]6和[1 ]PA,其中,G是橢圓曲線的基點,G = (xG, yG) (G關O), xG和ye是Fp中的兩個元素,橢圓曲線E(Fq)方程的兩個元素a、b e Fq、PA是用戶公鑰,也是橢圓曲線上的一個點,[s' ]G是指G的s'倍點,[C ]Pa是指倍點;第一點加運算模塊,用於在底層素數域加減法運算、素數域乘法運算、以及素數域除法運算的支持下,在仿射坐標系下完成SM2數字籤名驗證算法中的[s' ]6和[1 ]PA兩個點的點加運算,即,U1 ,J1 ) = [s' ]G+[t' ]PA,其中,U1 ,j')為橢圓曲線上的

實例2 SM2運算單元24具體包括坐標轉換模塊,用於對橢圓曲線上的點坐標數據由仿射坐標系向雅可比坐標系進行轉換;第二狀態機模塊,用於進行SM2數字籤名驗證運算流程控制,並與SM2控制器22進行通信;第二狀態機模塊具體用於讀取SM2控制器22中本次SM2數字籤名驗證所需的參數和數據;接收SM2控制器22發送的SM2啟動信號,啟動SM2運算單元24 ;調用第二模加運算模塊計算t = (r' +s' )modn ;調用第二倍點運算模塊計算[s' !^和^ ]PA ;調用第二點加運算模塊計算,1' ) = [s' ]G+[t' ]PA;調用第二模加運算模塊計算R=(e' +x/ )modn,檢驗R = r'是否成立,若成立則驗證通過,否則驗證不通過;在本次SM2數子籤名驗證完成後,犾取驗證結果,將驗證結果和完成標誌返回給SM2控制器22 ;接收SM2控制器22發送的SM2復位信號,復位SM2運算單元24。第二模加運算模塊,用於在雅可比坐標系下完成SM2數字籤名驗證算法中的t =(r' +s' )modn的計算,以及R = (e' +x/ )modn的計算,其中,(r' +s')為籤名碼字,
計算消息的摘要值β ν( /),Ην為摘要計算函數,μ =Ζ4ΠΑΤ,「 □」表示前後兩個字
符串的拼接,η為橢圓曲線的階,X/為橢圓曲線點(X',y')坐標元素之一;
第二倍點運算模塊,用於在底層素數域加減法運算、素數域乘法運算、以及素數域除法運算的支持下,在雅可比坐標系下計算SM2數字籤名驗證算法中的[s' ]6和[1 ]PA,其中,G是橢圓曲線的基點,G = (xG, yG) (G ^ O), xG和ye是Fp中的兩個元素,橢圓曲線E(Fq)方程的兩個元素a、b e F,、Pa是用戶公鑰,也是橢圓曲線上的一個點,[s' ]G是指G的s,倍點,[t' ] Pa是指Pa的t'倍點;第二點加運算模塊,用於在底層素數域加減法運算、素數域乘法運算、以及素數域除法運算的支持下,在雅可比坐標系下完成SM2數字籤名驗證算法中的[s' ]6和[1 ]PA兩個點的點加運算,即,U丨,Yr ) = [s' ]G+[t' ]PA,其中,(X',y')為橢圓曲線上的點。需要說明的是,在上述實例I和實例2中,可以將素數域乘法運算替換為Montgomery乘法運算。此外,還可以通過FPGA晶片中的數位訊號處理器DSP資源代替Montgomery乘法運算所需的乘法器。以下結合附圖,對本發明實施例的上述技術方案進行詳細說明。圖3是本發明實施例的SM2籤名驗證FPGA晶片內部結構的示意圖,如圖3所示,基於FPGA晶片完成SM2數字籤名驗證,晶片整體實現包括三個部分系統總線接口 20、SM2控制器22、以及SM2運算單元24。下面分別對系統總線接口 20、SM2控制器22、以及SM2運算單元24進行說明。1、系統總線接口 20系統總線接口 20實現較為靈活,可以是通用的工業總線標準,也可以是用戶自定義總線接口協議,需要根據具體的系統需求進行設計開發。系統總線接口 20的作用主要是基於FPGA的SM2籤名驗證晶片與晶片外部系統進行通信,包括籤名驗證所需參數和數據的寫入、SM2晶片的控制、以及晶片狀態查詢、以及運算結果查詢。

2、SM2 控制器 22SM2控制器22的實現主要為寄存器組。從功能上分,主要包括控制寄存器、數據寄存器、狀態寄存器。SM2控制器22的寄存器組可以看做總線接口和SM2運算單元24的中間橋梁或者中間環節,通過SM2控制器22可以實現外部系統對SM2運算單元24的控制或者訪問。控制寄存器控制寄存器具有兩個信號位,從功能上分為SM2啟動信號和SM2復位信號。SM2啟動信號主要用於SM2晶片的運算啟動功能,該控制功能通過一個觸發信號完成,可以為電平觸發,也可以為沿觸發,根據設計需求進行衡量;外部系統通過總線接口向SM2控制器22的控制寄存器寫入觸發該信號。SM2復位信號主要用於SM2運算單元24的復位,該復位信號為低電平有效,外部系統通過總線接口向SM2控制器22的控制寄存器寫入觸發該信號,該信號一般在SM2運算單元24完成一次SM2籤名驗證運算,外部系統並將驗證結果取走後,進行置位,通過置位,可以復位SM2運算單元24,以備新的一次SM2籤名驗證計算。數據寄存器數據寄存器主要用於存儲SM2運算單元24計算所需的數據,這些數據包括SM2數字籤名驗證算法所需的橢圓曲線參數(規模q、橢圓曲線方程的兩個元素a和b、基點G(主要為基點坐標元素)、基點G的階η、以及其它可選項等)、用於驗證計算的用戶公鑰Pa、待驗證消息的摘要y =用於驗證計算的籤名碼(r』,s』)字等(注意,本發明晶片設計
主要完成SM2數字籤名驗證算法步驟5至步驟7,由於前面幾個步驟的運算量很小,可以在FPGA晶片外部系統中完成,晶片內部完成後面運算量大的步驟,這樣可以節約晶片的面積和成本);其中,橢圓曲線參數可以參考SM2標準中給出的參考參數,也可以通過用戶前期驗證計算自行得出的橢圓曲線參數。數據寄存器作為數據緩存,在SM2運算單元24觸發啟動計算前將數據準備好,因此在SM2運算單元24啟動前,需要外部系統通過外部總線接口將上述數據寫入;在SM2運算單元24啟動運算後,SM2運算單元24將上述數據讀出;數據讀出後,該數據寄存器可以待本次SM2籤名驗證計算結束,並對SM2運算單元24復位後清空,等待新的一次SM2運算前再將新的數據寫入。狀態寄存器狀態寄存器可以用於查詢晶片SM2運算單元24的工作狀態,包括空閒、計算中、計算完成。此外,狀態寄存器可以包含一個運算完成標誌位,用於給出外部系統的中斷標誌,通過該標誌可以主動通知外部系統SM2計算完成。同時,狀態寄存器還有一個標誌位,稱為結果標誌位,用於表示驗證結果,包括兩類驗證成功和驗證失敗,外部系統可以讀取該標誌位,獲取運算結果。3、SM2 運算單元 24本發明實施例主要基於上述SM2籤名驗證FPGA晶片內部結構進行設計實現,主要工作集中在SM2運算單元24。首先在仿射坐標系下進行設計、實現、驗證;然後在雅克比坐標系下,對SM2運算單元24的相關算法、計算結構進行的優化,從而提高了 SM2籤名驗證計算速度。本次發明基於FPGA進行晶片設計,基本結構仍然如圖3所示的三個主要部分,區別在於SM2運算單元24的實現不同。需要說明的是,圖3的SM2運算單元24的實現是基於仿射坐標系的。SM2運算單元24的兩類實現在仿射坐標系下,SM2籤名的驗證運算單元實現為基本實現;雅可比坐標系下,SM2籤名的驗證運算單元實現,是一種可以提高運算速度的優化實現方案,但會佔用更多的FPGA晶片資源。具體情況參考下面的說明。仿射坐標系下SM2籤名驗證運算單元的實現圖4是本發明實施例的仿射坐標系下SM2籤名驗證運算單元實現示意圖,如圖4所示,SM2運算單元24與SM2控制器22進行通信,信號類型包括控制信號寫入、數據寫入、狀態及結果讀出,其信號功能分別對應SM2控制器22中控制寄存器、數據寄存器、以及狀態寄存器的功能。需要特別指出的是,該SM2運算單元24,主要完成SM2數字籤名驗證算法的步驟5至步驟7的運算過程。因為籤名幾步運算過程計算量小,可以在晶片外部完成。按照圖4所示,SM2運算單元24的內部結構包括狀態機模塊、倍點運算模塊、點加運算模塊(點加指的是橢圓曲線上點的點加運算,需要底層素數域運算支持,包括素數域乘法、素數域除法、以及素數域加減法)、模加運算模塊。1、狀態機模塊依照FPGA晶片狀態機設計特點,SM2運算單元24中的狀態機主要功能為SM2運算流程控制,以及與SM2控制器22的通信功能。狀態機的狀態控制轉移流程為讀取SM2控制器22中數據寄存器的數據——> 響應SM2控制器22中控制寄存器的啟動信號——>進行SM2計算——>SM2計算完成,得到運算結果,結果和完成標誌返回給SM2控制寄存器的狀態寄存器——> 等待SM2控制器22的復位信號。狀態機的功能具體如下(1)SM2數據讀取,主要讀取SM2控制器22中數據寄存器的數據,這是狀態機在一次完整SM2運算前,首先要完成的工作。(2) SM2控制信號響應主要響應SM2控制器22給出的啟動信號和復位信號。響應啟動信號,開始SM2計算;響應復位信號,對SM2運算單元24進行復位,準備一次新的計
笪(3)控制SM2計算過程,按照SM2數字籤名驗證算法步驟5至步驟7的計算要求,分別按照順序調度各個運算模塊一次,具體為模加運算,主要完成t = (r' +s' )modn計算;倍點運算先後各一次,[s' ]6和[1 ]PA;點加運算,[s']G+[t' ]PA ;模加運算,R= (e' +x/ )modn。(4)給出驗證SM2籤名驗證結果,並向SM2控制器22的狀態寄存器返回狀態及驗證結果。2、點加運算模塊該模塊主要完成SM2數字籤名驗證算法步驟6的[s' ]6和[1 ]PA兩個點的點力口運算,即(X, ,1' ) = [S' ]G+[t' ]PA。下面列出點加運算規則,如下(I)設兩個點 P1 = (X1, Y1)和 P2 = (x2, y2),求 P3 = (x3, y3) = Pi+P2 ;(2)則尤3 =(麼二^)2 — X1 — 4和·F3 =-χ3)~
X2-X1X2—Xi。根據上述運算規則可知,橢圓曲線點加運算,需要底層素數域加減法運算、素數域乘法運算、以及素數域除法運算的支持。3、倍點運算模塊倍點運算模塊主要負責完成SM2數字籤名驗證算法步驟6中的[s' ]6和[1 ]Pa兩次運算。本發明實施例中,[s' ]G是首先完成的倍點運算,[t' ]PA是隨後要完成的倍點運算。G是橢圓曲線的基點,Pa是用戶公鑰,也是橢圓曲線上的一個點。[s' ]G是指G的s'倍點,[t' ]PA是指?4的1倍點。按照橢圓曲線的相關理論知識可知,橢圓曲線上的點完成倍點運算成後的點,仍然在該橢圓曲線上,也即該點也是橢圓曲線的點,因此[s']G和[t' ]PA是橢圓曲線上的兩個點。這兩個點進行點加運算的結果也是橢圓曲線上的點。從計算過程看,倍點運算的本質可以看成多次的點加運算,因此倍點運算仍然需要調用底層的素數域加減法運算、素數域乘法運算、以及素數域除法運算模塊。4、模加運算模塊模加運算較為簡單,即數據求和後,再進行求模運算。主要負責完成SM2數字籤名驗證算法步驟5的t = (r' +s' )modn計算,以及步驟7的R = (e' +x/ )modn計算。

上述在仿射坐標系下,基於FPGA晶片實現的SM2籤名驗證運算單元,完成一次SM2籤名運算,一般需要500多次加法計算,對應的除法計算則需要兩萬多次。例如,依照SM2點加運算的計算規則,需要I次除法計算和三次乘法計算,但是素數域上的除法計算量是乘法50倍左右,因此可以明確的是最大的計算瓶頸就是大量的除法運算。在此,為了降低仿射坐標系下的除法運算量,可以引入雅可比坐標系。在雅可比坐標系下的坐標可以表示為,其對應著仿射坐標,因此可以將雅克比坐標系中坐標向量視為中間變量,利用可以完成仿射坐標系和雅可比坐標系的相互轉換。通過仿射坐標系與雅可比坐標系的相互轉換,使得SM2籤名驗證計算在雅可比坐標系下實現,可以有效避免大量的除法計算,明顯降低了計算量。並且在完成一次SM2運算的過程中,仿射坐標系與雅可比坐標系的相互轉化僅需I次。即便是一次SM2籤名運算,也僅需要兩三次除法運算,可以極大優化運算單元和運算速度。從本質上看,通過仿射坐標系與雅可比坐標系的轉換,有效消除除法計算量調用次數,主要體現在有效減少了倍點和點加計算過程對素數域除法的調用次數。前面知道,通過仿射坐標系與雅可比坐標系的相互轉化,能夠有效減少除法運算。因此,在除法運算優化實現後,主要的計算瓶頸則在於乘法運算。素數域上的乘法運算都是模乘運算,即c = aXbmodp。傳統的乘法運算要麼需要藉助除法來取餘數,要麼通過低速率的減法運算來實現。本發明採用Montgomery乘法(蒙哥馬利乘法)則能夠有效的優化素數域的乘法計算,將複雜的運算轉化成簡單的低精度的乘法運算來實現。Montgomery乘法運算如下
0122]
權利要求
1.一種用於SM2數字籤名驗證算法的FPGA晶片,其特徵在於,包括 系統總線接口,用於與所述FPGA晶片的外部系統進行通信,從所述外部系統獲取SM2數字籤名驗證所需的參數和數據,並寫入所述SM2控制器,接收所述外部系統發送的控制消息、工作狀態查詢消息、以及運算結果查詢消息,並發送到所述SM2控制器; SM2控制器,與所述系統總線接口和所述SM2運算單元連接,用於根據所述控制消息觸發所述SM2運算單元,在接收到所述工作狀態查詢消息和所述運算結果查詢消息後,通過所述系統總線接口向所述外部系統發送所述SM2運算單元的工作狀態和驗證結果; SM2運算單元,用於在所述SM2控制器的觸發下,從所述SM2控制器中讀取本次SM2數字籤名驗證所需的參數和數據,進行根據所述SM2數字籤名驗證算法進行驗證計算,將驗證結果發送到所述SM2控制器。
2.如權利要求1所述的FPGA晶片,其特徵在於,所述系統總線接口包括符合通用工業總線標準的系統總線接口 ;或者符合用戶自定義總線接口協議的系統總線接口。
3.如權利要求1所述的FPGA晶片,其特徵在於,所述SM2控制器具體包括 控制寄存器,用於在通過所述系統總線接口接收到所述外部系統發送的所述控制消息的情況下,根據所述控制消息,通過SM2啟動信號觸發所述SM2運算單元啟動,通過SM2復位信號觸發所述SM2運算單元復位; 數據寄存器,用於通過所述系統總線接口接收所述外部系統發送的本次SM2數字籤名驗證所需的參數和數據,並進行存儲,在所述控制寄存器復位所述SM2運算單元後,清空本次SM2數字籤名驗證所需的參數和數據; 狀態寄存器,用於在接收到所述工作狀態查詢消息的情況下,查詢所述SM2運算單元的工作狀態,並通過所述系統總線接口將所述工作狀態發送到所述外部系統;主動通知所述外部系統所述SM2運算單元已完成本次SM2數字籤名驗證;在接收到所述運算結果查詢消息的情況下,通過所述系統總線接口向所述外部系統發送本次SM2數字籤名驗證的驗證結果。
4.如權利要求1所述的FPGA晶片,其特徵在於,所述SM2運算單元具體包括 第一狀態機模塊,用於進行SM2數字籤名驗證運算流程控制,並與所述SM2控制器進行通信; 第一模加運算模塊,用於在仿射坐標系下完成SM2數字籤名驗證算法中的t =(r' +s' )modn的計算,以及R = (e' +x/ )modn的計算,其中,(r' +s')為籤名碼字,計算消息的摘要值d = iiv(ii/),HvO為摘要計算函數,M□」表示前後兩個字符串的拼接,η為橢圓曲線的階,X/為橢圓曲線點(X',y')坐標元素之一; 第一倍點運算模塊,用於在底層素數域加減法運算、素數域乘法運算、以及素數域除法運算的支持下,在仿射坐標系下計算SM2數字籤名驗證算法中的[s' ]6和[1 ]PA,其中,G是橢圓曲線的基點,G = (xG, yG) (G關O), xG和ye是Fp中的兩個元素,橢圓曲線E(Ftl)方程的兩個元素a、beFq、PA是用戶公鑰,也是橢圓曲線上的一個點,[s' ]G是指G的s'倍點,[C ]Pa是指倍點; 第一點加運算模塊,用於在底層素數域加減法運算、素數域乘法運算、以及素數域除法運算的支持下,在仿射坐標系下完成SM2數字籤名驗證算法中的[s' ]6和[1 ]PA兩個點的點加運算,即,(X' ,1' ) = W ]G+[t' ]PA,其中,(X' ,Y')為橢圓曲線上的點。
5.如權利要求4所述的FPGA晶片,其特徵在於,所述第一狀態機模塊具體用於讀取所述SM2控制器中本次SM2數字籤名驗證所需的參數和數據;接收所述SM2控制器發送的所述SM2啟動信號,啟動所述SM2運算單元;根據SM2數字籤名驗證算法的運算流程調用所述第一倍點運算模塊、所述第一點加運算模塊、所述第一模加運算模塊,並根據本次SM2數字籤名驗證所需的參數和數據進行驗證計算;在本次SM2數子籤名驗證完成後,犾取驗證結果,將所述驗證結果和完成標誌返回給所述SM2控制器;接收所述SM2控制器發送的所述SM2復位信號,復位所述SM2運算單元。
6.如權利要求5所述的FPGA晶片,其特徵在於,所述第一狀態機模塊具體用於調用所述第一模加運算模塊計算t = Cr' +s' )modn ;調用所述第一倍點運算模塊計算[s' ]6和[1 ]PA;調用所述第一點加運算模塊計算(X' ,1' ) = [s' ]G+[t' ]PA;調用所述第一模加運算模塊計算R = (e' +x/ )modn,檢驗R = r'是否成立,若成立則驗證通過,否則驗證不通過。
7.如權利要求1所述的FPGA晶片,其特徵在於,所述SM2運算單元具體包括坐標轉換模塊,用於對橢圓曲線上的點坐標數據由仿射坐標系向雅可比坐標系進行轉換;第二狀態機模塊,用於進行SM2數字籤名驗證運算流程控制,並與所述SM2控制器進行通信;第二模加運算模塊,用於在雅可比坐標系下完成SM2數字籤名驗證算法中的t = (r' +s' )modn的計算,以及R = (e' +x/ )modn的計算,其中,(r' +s')為籤名碼字,計算消息的摘要值β ν( ^),Ην為摘要計算函數,=ZJIJkT □」表示前後兩個字符串的拼接,η為橢圓曲線的階,X/為橢圓曲線點(X',y')坐標元素之一;第二倍點運算模塊,用於在底層素數域加減法運算、素數域乘法運算、以及素數域除法運算的支持下,在雅可比坐標系下計算SM2數字籤名驗證算法中的[s' ]6和[1 ]PA,其中,G是橢圓曲線的基點,G = (xG, yG) (G關O), xG和ye是Fp中的兩個元素,橢圓曲線E(Fq) 方程的兩個元素a、b e Fq、PA是用戶公鑰,也是橢圓曲線上的一個點,[s' ]G是指G的s' 倍點,[C ]Pa是指倍點;第二點加運算模塊,用於在底層素數域加減法運算、素數域乘法運算、以及素數域除法運算的支持下,在雅可比坐標系下完成SM2數字籤名驗證算法中的[s' ]6和[1 ]PA兩個點的點加運算,即,(X' ,1' ) = [s' ]G+[t' ]PA,其中,(X' )為橢圓曲線上的點。
8.如權利要求7或4所述的FPGA晶片,其特徵在於,將所述素數域乘法運算替換為蒙哥馬利Montgomery乘法運算。
9.如權利要求8所述的FPGA晶片,其特徵在於,通過所述FPGA晶片中的數位訊號處理器DSP資源代替所述Montgomery乘法運算所需的乘法器。
10.如權利要求7所述的FPGA晶片,其特徵在於,所述第二狀態機模塊具體用於讀取所述SM2控制器中本次SM2數字籤名驗證所需的參數和數據;接收所述SM2控制器發送的所述SM2啟動信號,啟動所述SM2運算單元; 調用所述第二模加運算模塊計算t = Cr' +s' )modn ; 調用所述第二倍點運算模塊計算[s' ]G和[t ]PA; 調用所述第二點加運算模塊計算(X' ,1' ) = [s' ]G+[t' ]PA; 調用所述第二膜加運算模塊計算R = (e' +x/ )modn,檢驗R = r'是否成立,若成立則驗證通過,否則驗證不通過; 在本次SM2數子籤名驗證完成後,猶取驗證結果,將所述驗證結果和完成標誌返回給所述SM2控制器; 接收所述SM2控制器發送的所述SM2復位信號,復位所述SM2運算單元。
全文摘要
本發明公開了一種用於SM2數字籤名驗證算法的FPGA晶片。該FPGA晶片包括系統總線接口,用於與FPGA晶片的外部系統進行通信,從外部系統獲取SM2數字籤名驗證所需的參數和數據,並寫入SM2控制器,接收外部系統發送的控制消息、工作狀態查詢消息、以及運算結果查詢消息,並發送到SM2控制器;SM2控制器,用於根據控制消息觸發SM2運算單元,在接收到工作狀態查詢消息和運算結果查詢消息後,通過系統總線接口向外部系統發送SM2運算單元的工作狀態和驗證結果;SM2運算單元,用於在SM2控制器的觸發下,從SM2控制器中讀取本次SM2數字籤名驗證所需的參數和數據,進行根據SM2數字籤名驗證算法完成驗證計算,將驗證結果發送到SM2控制器。
文檔編號G06F21/76GK103049710SQ20121054096
公開日2013年4月17日 申請日期2012年12月13日 優先權日2012年12月13日
發明者瀋陽, 郭沛宇, 王磊, 宮銘豪, 丁森華, 梁晉春, 馬豔, 姚穎穎, 張乃光 申請人:國家廣播電影電視總局廣播科學研究院

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀