一種sm2算法程序的檢測(cè)方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計(jì)算機(jī)技術(shù)、信息安全技術(shù)領(lǐng)域,具體涉及一種密碼算法SM2算法的檢測(cè)方法和系統(tǒng)。
【背景技術(shù)】
[0002]隨著計(jì)算機(jī)和信息安全技術(shù)的發(fā)展,硬件處理速度和解密手段也在不斷的提高,現(xiàn)有的密碼算法為提高數(shù)據(jù)的安全性,需增加密鑰的長(zhǎng)度,而同時(shí)卻會(huì)降低算法的處理速度。基于上述問題的存在,2010年12月17日國(guó)家密碼安全局發(fā)布了 SM2橢圓曲線公鑰密碼算法,該算法基于橢圓曲線上點(diǎn)群離散對(duì)數(shù)難題。
[0003]SM2橢圓曲線公鑰密碼算法主要應(yīng)用在數(shù)字簽名、公鑰加密以及密鑰交換協(xié)議等方面。數(shù)字簽名可對(duì)信息的完整性及有效性進(jìn)行驗(yàn)證,公鑰加密算法可以對(duì)信息進(jìn)行加解密運(yùn)算,防止重要信息的泄露,密鑰交換協(xié)議主要用于密鑰的管理和協(xié)商。
[0004]目前,對(duì)于系統(tǒng)中是否實(shí)現(xiàn)SM2算法的檢測(cè)方法主要包括兩類:(1)離線的數(shù)據(jù)傳遞方式。在預(yù)設(shè)SM2算法橢圓曲線參數(shù)、密鑰和算法輸入數(shù)據(jù)(待加密、解密、簽名或驗(yàn)證簽名等的數(shù)據(jù))的情況下,計(jì)算相應(yīng)的結(jié)果,被測(cè)系統(tǒng)對(duì)預(yù)設(shè)的輸入數(shù)據(jù)執(zhí)行相應(yīng)的SM2算法操作,產(chǎn)生輸出結(jié)果,將此結(jié)果與預(yù)先計(jì)算得到的結(jié)果進(jìn)行比較,以此判定系統(tǒng)中是否正確實(shí)現(xiàn)了 SM2算法;(2)實(shí)時(shí)調(diào)用訪問的方式。檢測(cè)設(shè)備或檢測(cè)程序直接與被檢測(cè)對(duì)象建立數(shù)據(jù)通信連接,通過主動(dòng)訪問、調(diào)用被測(cè)對(duì)象中的SM2算法功能進(jìn)而檢測(cè)SM2算法的實(shí)現(xiàn)。以實(shí)現(xiàn)SM2算法的1C卡例,根據(jù)IS07816.4規(guī)定,智能卡與外界的通信數(shù)據(jù)接口為APDU,利用PC規(guī)范,實(shí)現(xiàn)PC與智能卡的最底層通信,進(jìn)而檢測(cè)密碼算法,但需要獲取智能卡的APDU指令集。
【發(fā)明內(nèi)容】
[0005]本發(fā)明針對(duì)SM2算法的軟件實(shí)現(xiàn),提出一種SM2算法程序的檢測(cè)方法及系統(tǒng),簡(jiǎn)單準(zhǔn)確的確定存儲(chǔ)單元中是否有實(shí)現(xiàn)SM2算法的程序。
[0006]本發(fā)明SM2算法程序的檢測(cè)系統(tǒng)包含檢測(cè)機(jī)和待檢測(cè)的存儲(chǔ)單元(存儲(chǔ)單元為計(jì)算機(jī)的系統(tǒng)硬盤或其他類型存儲(chǔ)介質(zhì)等),通過檢測(cè)機(jī)對(duì)存儲(chǔ)單元中文件包含的數(shù)據(jù)進(jìn)行掃描,采用逐字節(jié)匹配判斷的掃描方式,如圖1所示。
[0007]本發(fā)明SM2算法的檢測(cè)方法之一為,在已知SM2算法橢圓曲線參數(shù)的情況下,逐字節(jié)掃描存儲(chǔ)單元中文件包含的數(shù)據(jù),當(dāng)存在數(shù)據(jù)與SM2算法中至少一個(gè)橢圓曲線參數(shù)完全匹配,則判定存儲(chǔ)單元中有實(shí)現(xiàn)SM2算法的程序。
[0008]SM2算法橢圓曲線參數(shù)選自p、a、b、n、xG^P y c,其中,p是大于3的素?cái)?shù),F(xiàn)p由{0,1,2,..., p-1}中p個(gè)元素組成,稱之為素域;a、b為橢圓曲線方程中的常數(shù)項(xiàng),a,beFp;G為SM2算法橢圓曲線上的一個(gè)基點(diǎn),Xc和y c為二維坐標(biāo)系下基點(diǎn)G的坐標(biāo);n為基點(diǎn)G的階。
[0009]SM2算法橢圓曲線優(yōu)選為國(guó)家密碼局推薦使用素?cái)?shù)域256位橢圓曲線及推薦曲線參數(shù),所述橢圓曲線參數(shù)選自b、n、xGiPyGo其中,b為橢圓曲線方程中的常數(shù)項(xiàng);6為SM2算法橢圓曲線上的一個(gè)基點(diǎn),Xc和y c為二維坐標(biāo)系下基點(diǎn)G的坐標(biāo);n為基點(diǎn)G的階。
[0010]在SM2算法檢測(cè)過程中,需要根據(jù)小端模式(Little-Endian)或大端模式(Big-Endian)對(duì)待檢測(cè)存儲(chǔ)單元中文件包含的數(shù)據(jù)進(jìn)行逐字節(jié)匹配判斷。若存在數(shù)據(jù)與SM2算法中至少一個(gè)橢圓曲線參數(shù)完全匹配,則判定存儲(chǔ)單元中有實(shí)現(xiàn)SM2算法的程序。
[0011]本發(fā)明SM2算法的檢測(cè)方法之二為,在SM2算法中數(shù)字簽名,消息加解密等都需要計(jì)算橢圓曲線點(diǎn)[K]G,因此在運(yùn)行計(jì)算的過程中通常會(huì)預(yù)存G的倍點(diǎn)[K]G列表(G、2G、3G……KG),計(jì)算過程中通過查表[K]G加速運(yùn)算。其中,[K]G為橢圓曲線上點(diǎn)G的K倍點(diǎn),[K]G = G+G+……G ;倍點(diǎn)[K]G在二維坐標(biāo)系下的坐標(biāo)表示為xjP y K,(xK, yK) = [K]G,[Κ]G列表為xK項(xiàng)和yK項(xiàng)的集合,K為正整數(shù),且K〈n。因此掃描存儲(chǔ)單元中文件包含的數(shù)據(jù),若存在數(shù)據(jù)與倍點(diǎn)[K]G列表中X!(項(xiàng)或y κ項(xiàng)中至少一項(xiàng)完全匹配時(shí),貝ij判定存儲(chǔ)單元中有實(shí)現(xiàn)SM2算法的程序。
[0012]SM2算法橢圓曲線優(yōu)選為國(guó)家密碼局推薦使用素?cái)?shù)域256位橢圓曲線及推薦曲線參數(shù),所述橢圓曲線參數(shù)選自xe和ye。其中,G為SM2算法橢圓曲線上的一個(gè)基點(diǎn),X(;和y(;為二維坐標(biāo)系下基點(diǎn)G的坐標(biāo),(xK, yK) = [K]G。
[0013]在SM2算法檢測(cè)過程中,需要根據(jù)小端模式或大端模式對(duì)待檢測(cè)存儲(chǔ)單元中文件包含的數(shù)據(jù)進(jìn)行逐字節(jié)匹配判斷。若存在數(shù)據(jù)與SM2算法橢圓曲線基點(diǎn)G的倍點(diǎn)[K]G列表中xK項(xiàng)或7><項(xiàng)中至少一項(xiàng)完全匹配,其中,K為正整數(shù),K〈n,則判定該存儲(chǔ)單元中有實(shí)現(xiàn)SM2算法的程序。
[0014]一種SM2算法程序的檢測(cè)系統(tǒng),包括檢測(cè)機(jī)和待檢測(cè)的存儲(chǔ)單元(存儲(chǔ)單元為計(jì)算機(jī)的系統(tǒng)硬盤或其他類型存儲(chǔ)介質(zhì)等)。其中,檢測(cè)機(jī)用于掃描存儲(chǔ)單元中文件包含的數(shù)據(jù),當(dāng)存在數(shù)據(jù)與SM2算法中至少一個(gè)橢圓曲線參數(shù)完全匹配、或者存在數(shù)據(jù)與SM2算法橢圓曲線基點(diǎn)G的倍點(diǎn)[K]G列表中χκ項(xiàng)或71(項(xiàng)中至少一項(xiàng)完全匹配,其中,Κ為正整數(shù),Κ〈η,則判定存儲(chǔ)單元中有實(shí)現(xiàn)SM2算法的程序。
[0015]與現(xiàn)有技術(shù)相比,本發(fā)明的積極效果為:
[0016]本發(fā)明主要利用SM2算法獨(dú)特的橢圓曲線參數(shù)特征,以及計(jì)算的過程中預(yù)存基點(diǎn)G的倍點(diǎn)[K]G列表的特征,實(shí)現(xiàn)對(duì)SM2算法的檢測(cè)。僅需檢測(cè)機(jī)對(duì)存儲(chǔ)單元中文件包含的數(shù)據(jù)進(jìn)行逐字節(jié)匹配判斷,不受操作系統(tǒng)和運(yùn)行環(huán)境的限制,操作簡(jiǎn)單便利,準(zhǔn)確率較高。
[0017]本發(fā)明的檢測(cè)方法還可以輔助檢測(cè)SM2算法是否為硬件實(shí)現(xiàn)。對(duì)于硬件實(shí)現(xiàn)的SM2算法,安全性比軟件實(shí)現(xiàn)更高,在很多關(guān)鍵系統(tǒng)及應(yīng)用中,均要求使用硬件實(shí)現(xiàn)的密碼算法。在訪問硬件實(shí)現(xiàn)的SM2算法設(shè)備時(shí),同時(shí)還需要軟件實(shí)現(xiàn)配合,以密碼機(jī)為例,其構(gòu)成包括密碼卡、操作系統(tǒng)、應(yīng)用程序、接口軟件包等。在應(yīng)用中,調(diào)用者無法區(qū)分SM2密碼算法是由硬件系統(tǒng)(如密碼卡)實(shí)現(xiàn),還是由軟件系統(tǒng)(如操作系統(tǒng)、應(yīng)用程序、接口軟件包等)實(shí)現(xiàn)。本發(fā)明的檢測(cè)方法,通過對(duì)軟件系統(tǒng)的存儲(chǔ)單元進(jìn)行檢測(cè),若未檢測(cè)出與SM2算法參數(shù)匹配的數(shù)據(jù),則可以有效排除SM2算法是由軟件實(shí)現(xiàn)的可能性。由此本發(fā)明的檢測(cè)方法可以輔助檢測(cè)SM2算法是否為硬件實(shí)現(xiàn)。
【附圖說明】
[0018]圖1為SM2算法檢測(cè)系統(tǒng)示意圖。
[0019]圖2為數(shù)據(jù)切分示意圖:
[0020](a)為曲線參數(shù)按機(jī)器位切分示意圖(以256位曲線參數(shù),32位操作系統(tǒng)為例),
[0021](b)為小端模式數(shù)據(jù)存儲(chǔ)示意圖,
[0022](c)為大端模式數(shù)據(jù)存儲(chǔ)示意圖。
【具體實(shí)施方式】
[0023]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下通過實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)說明。
[0024]對(duì)于SM2算法橢圓曲線公鑰密碼算法,國(guó)家密碼局推薦使用素?cái)?shù)域256位橢圓曲線及推薦曲線參數(shù),橢圓曲線方程:y2= x3+ax+b
[0025]p = FFFFFFFE FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF 00000000 FFFFFFFFFFFFFFFF
[0026]a = FFFFFFFE FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF 00000000 FFFFFFFFFFFFFFFC
[0027]b = 28E9FA9E 9D9F5E34 4D5A9E4B CF6509A7 F39789F5 15AB8F92 DDBCBD414D940E93
[0028]n = FFFFFFFE FFFFFFFF FFFFFFFFFFFFFFFF 7203DF6B 21C6052B 53BBF40939D54123
[0029]xG= 32C4AE2C 1F198119 5F990446 6A39C994 8FE30BBF F2660BE1 715A4589334C74C7
[0030]yG= BC3736A2 F4F6779C 59BDCEE3 6B692153 D0A9877C C62A4740 02DF32E52139F0A0
[0031]對(duì)于SM2算法256位橢圓曲線參數(shù)p,a,b, n,xG^P y Go p是大于3的素?cái)?shù),F(xiàn)p由{0,1,2,...,p-l}中ρ個(gè)元素組成,稱之為素域。a,b e Fp,且(4a3+27b2)modp乒0,橢圓曲線E(FP)的定義為E(FP) = {(x, y) x, y e Fp},且滿足上述橢圓曲線方程及無窮遠(yuǎn)點(diǎn)的情況。G是橢圓曲線上的一個(gè)基點(diǎn),基點(diǎn)G = (xG, yG) e E (Fp),因此G點(diǎn)是二維坐標(biāo)系下的一個(gè)點(diǎn)對(duì),包含xs和y s兩個(gè)參數(shù);n為基點(diǎn)G的階。
[0032]在SM2算法檢測(cè)過程中,掃描存儲(chǔ)單元中文件包含的數(shù)據(jù),與橢圓曲線參數(shù)p,a,b,n,X(;和y