基于國(guó)密算法的移動(dòng)互聯(lián)網(wǎng)信息通信加密方法
【專利摘要】本發(fā)明公開(kāi)了一種基于國(guó)密算法的移動(dòng)互聯(lián)網(wǎng)信息通信加密方法,用戶A通過(guò)移動(dòng)終端向用戶B發(fā)送加密信息,根據(jù)SM2橢圓曲線公鑰密碼算法,用戶A動(dòng)態(tài)創(chuàng)建橢圓曲線;用戶A將該公鑰和橢圓曲線相關(guān)參數(shù)傳遞給用戶B;用戶B使用用戶A傳來(lái)的橢圓曲線相關(guān)參數(shù)生成公鑰kB;加密/解密通信。本發(fā)明使用Montgomery算法對(duì)Miller-Rabin算法底層優(yōu)化,在素?cái)?shù)測(cè)試的最佳選擇上取得較好效果,采用滑動(dòng)窗口算法通過(guò)靈活的控制窗口的大小,并跳躍式的計(jì)算二進(jìn)制串,極大的橢圓曲線倍點(diǎn)運(yùn)算速度和加密/解密速度,結(jié)合非對(duì)稱密鑰算法和對(duì)稱密鑰算法,使移動(dòng)互聯(lián)網(wǎng)通信加解密即迅速又安全可靠。
【專利說(shuō)明】基于國(guó)密算法的移動(dòng)互聯(lián)網(wǎng)信息通信加密方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種信息通信加密技術(shù),特別涉及基于國(guó)密算法的移動(dòng)互聯(lián)網(wǎng)信息通信加密方法。
【背景技術(shù)】
[0002]國(guó)密算法是國(guó)家密碼局公布的中國(guó)自主研發(fā)的商用密碼算法和規(guī)范,用于保障商用密碼的安全。隨著移動(dòng)互聯(lián)網(wǎng)的快速發(fā)展,其相關(guān)信息安全也越來(lái)越受到人們的關(guān)注,如何將國(guó)密算法有效的應(yīng)用于移動(dòng)互聯(lián)網(wǎng),更好的保障移動(dòng)互聯(lián)網(wǎng)通信安全,便成為近期研究熱點(diǎn)。
[0003]移動(dòng)互聯(lián)網(wǎng)具有高便捷,隱私要求高以及應(yīng)用輕便等特性。國(guó)密算法中基于橢圓曲線離散對(duì)數(shù)問(wèn)題(ECDLP)的SM2算法無(wú)疑是比較理想的選擇,但要適應(yīng)移動(dòng)互聯(lián)網(wǎng)通信,特別是在即時(shí)通信(頂)方面對(duì)信息傳遞要求快速、便捷、安全性高,還需要解決好以下問(wèn)題:
(I)如何快速選取最佳的橢圓曲線。
[0004]合適橢圓曲線參數(shù)將直接影響到橢圓曲線加密算法的速度、效率、密鑰長(zhǎng)度以及安全性。
[0005](2)如何加快橢圓曲線多倍點(diǎn)運(yùn)算。
[0006]橢圓曲線加密算法中點(diǎn)加法運(yùn)算,特別是多倍點(diǎn)運(yùn)算。由于高精度大整數(shù)運(yùn)算的復(fù)雜性,使其成為影響算法運(yùn)算速度的瓶頸。
[0007](3)如何避免SM2算法產(chǎn)生的密鑰過(guò)長(zhǎng),加密時(shí)間過(guò)長(zhǎng)問(wèn)題。
[0008]ElGamal公鑰系統(tǒng)是國(guó)際上公認(rèn)比較成功的公鑰系統(tǒng),但對(duì)較長(zhǎng)的明文信息加密時(shí),產(chǎn)生的加密后信息會(huì)很長(zhǎng),導(dǎo)致加密時(shí)間過(guò)長(zhǎng),影響加密效率。
【發(fā)明內(nèi)容】
[0009]本發(fā)明的目的在于提供一種在移動(dòng)互聯(lián)網(wǎng)實(shí)際項(xiàng)目中使用國(guó)密算法行之有效的方法,以解決橢圓曲線參數(shù)的快速選取,橢圓曲線多倍點(diǎn)運(yùn)算的快速實(shí)現(xiàn),以及由于加密明文較長(zhǎng)而導(dǎo)致加密時(shí)間過(guò)長(zhǎng)的問(wèn)題。
[0010]為實(shí)現(xiàn)上述目的,本發(fā)明采取了以下技術(shù)方案。基于國(guó)密算法的移動(dòng)互聯(lián)網(wǎng)信息通信加密方法,其步驟如下:
1)橢圓曲線的動(dòng)態(tài)創(chuàng)建:用戶A通過(guò)移動(dòng)終端向用戶B發(fā)送加密信息,根據(jù)SM2公鑰密碼算法,用戶A動(dòng)態(tài)創(chuàng)建橢圓曲線;
2)密鑰互換:
(1)用戶A創(chuàng)建完所述橢圓曲線后,隨機(jī)產(chǎn)生私鑰dA,再根據(jù)所述橢圓曲線相關(guān)參數(shù)計(jì)算出公鑰kA;
(2)用戶A將公鑰kA和所述橢圓曲線相關(guān)參數(shù)傳遞給用戶B;用戶B隨機(jī)生成自己的私鑰dB,再使用用戶A傳來(lái)的所述橢圓曲線相關(guān)參數(shù)生成公鑰kB ;該過(guò)程如果成功,用戶B發(fā)送公鑰kB和確認(rèn)信息給用戶A,用戶A收到后完成密鑰互換;否則發(fā)送錯(cuò)誤信息,重復(fù)密鑰互換;
3)加密/解密通信:
(1)加密通信時(shí),明文信息使用SM4對(duì)稱密鑰加密算法進(jìn)行加密,SM4算法的加密密鑰嵌入到所述橢圓曲線上一點(diǎn),再使用對(duì)方公鑰對(duì)其進(jìn)行加密;
(2)解密通信時(shí),通過(guò)私鑰把嵌入加密密鑰的橢圓點(diǎn)換算出來(lái),再使用SM4算法進(jìn)行信息解密。
[0011]所述動(dòng)態(tài)創(chuàng)建分為所述橢圓曲線的有限域Fp、大素?cái)?shù)P的確定、參數(shù)Ep (a,b)的確定和基點(diǎn)G的選定。
[0012]所述橢圓曲線的有限域Fp為選取的素域,對(duì)應(yīng)的橢圓曲線方程為:y2 = x3+ax+b,a, b e Fp,且(4a3+27b2) mod p/ = 0。
[0013]所述大素?cái)?shù)p的確定,先隨機(jī)產(chǎn)生大素?cái)?shù)p,然后采用概率素?cái)?shù)測(cè)試算法Miller-Rabin算法測(cè)試,并使用結(jié)合滑動(dòng)窗口算法和Montgomery類算法對(duì)Miller-Rabin算法底層優(yōu)化。
[0014]所述橢圓曲線相關(guān)參數(shù),包括橢圓曲線方程系數(shù)Ep (a, b),大素?cái)?shù)p,基點(diǎn)G。
[0015]所述動(dòng)態(tài)創(chuàng)建橢圓曲線,指在用戶每次使用移動(dòng)終端通信時(shí),都創(chuàng)建一次橢圓曲線,保留本地,在主動(dòng)發(fā)起通信時(shí),發(fā)送相關(guān)參數(shù)給對(duì)方,以保證通信雙方使用同一橢圓曲線參數(shù)加解密信息。
[0016]所述私鑰均為隨機(jī)產(chǎn)生的固定長(zhǎng)度的隨機(jī)數(shù)(一般為16位以上的十六進(jìn)制數(shù))。
[0017]所述加密密鑰嵌入到橢圓曲線上一點(diǎn),是將加密密鑰轉(zhuǎn)成大整數(shù),并作為所述橢圓曲線上某點(diǎn)的X軸坐標(biāo),再根據(jù)所述橢圓曲線方程求出Y軸坐標(biāo),所得的點(diǎn)即為嵌入點(diǎn)。
[0018]所述加密密鑰為隨機(jī)產(chǎn)生的128位比特長(zhǎng)度的十六進(jìn)制數(shù),使用SM2算法對(duì)該加密密鑰加密。
[0019]所述加密/解密通信,其過(guò)程是基于ElGamal (—種常見(jiàn)的加密算法,它是基于1984年提出的公鑰密碼體制和橢圓曲線加密體系)公鑰系統(tǒng)的加密/解密過(guò)程,加密后的橢圓點(diǎn)信息轉(zhuǎn)成十六進(jìn)制串。
[0020]本發(fā)明對(duì)信息的加密/解密通信過(guò)程中大量使用到了橢圓曲線的加法以及倍點(diǎn)運(yùn)算,例如計(jì)算公鑰的公式為=K= dG (K:公鑰,d:私鑰,G:基點(diǎn))。G為取至橢圓曲線上的點(diǎn),d為隨機(jī)選取的私鑰,公鑰K就是G點(diǎn)的d倍點(diǎn)計(jì)算。
[0021]本文提出了一種基于國(guó)密算法的移動(dòng)互聯(lián)網(wǎng)通信有效方法,使用Montgomery算法對(duì)Miller-Rabin算法底層優(yōu)化,在素?cái)?shù)測(cè)試的最佳選擇上取得較好效果,采用滑動(dòng)窗口算法通過(guò)靈活的控制窗口的大小,并跳躍式的計(jì)算二進(jìn)制串,極大的提高了運(yùn)算的速度。采用滑動(dòng)窗口算法提高橢圓曲線倍點(diǎn)運(yùn)算速度,有效地提高了加密解密速度,結(jié)合非對(duì)稱密鑰算法和對(duì)稱密鑰算法,使移動(dòng)互聯(lián)網(wǎng)通信加解密即迅速又安全可靠。
【專利附圖】
【附圖說(shuō)明】
[0022]圖1是本發(fā)明的基于ElGamal公鑰系統(tǒng)移動(dòng)互聯(lián)網(wǎng)通信流程圖。
【具體實(shí)施方式】
[0023]以下結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明。參見(jiàn)圖1,用戶AlOl與用戶Blll通信步驟:
1、橢圓曲線動(dòng)態(tài)創(chuàng)建102
選取素域作為橢圓曲線的有限域,其對(duì)應(yīng)的橢圓曲線方程為:y2 = x3+ax+b, a,b eFp,且(4a3+27b2) mod p/ = 0。用戶A首先隨機(jī)選取大素?cái)?shù)p,再使用Miller-Rabin算法完成對(duì)大素?cái)?shù)P的最佳測(cè)試,使用Montgomery算法對(duì)其底層優(yōu)化。Montgomery算法是一種快速大數(shù)模乘算法,利用c = a * b(mod p)來(lái)簡(jiǎn)化模乘計(jì)算。
[0024]2、密鑰互換(密鑰互換為通信雙方創(chuàng)建公鑰,并相互交換對(duì)方公鑰;加密時(shí),使用對(duì)方公鑰進(jìn)行加密;解密時(shí),使用私鑰解密。)
2.1用戶AlOl創(chuàng)建私鑰dA和公鑰kA103:
隨機(jī)選取指定長(zhǎng)度的字符串作為私鑰dA,根據(jù)公鑰計(jì)算公式計(jì)算出用戶AlOl的公鑰kA = dA*G。
[0025]2.2用戶B111創(chuàng)建私鑰dB和公鑰kB 113:
用戶Blll接受用戶AlOl傳來(lái)的橢圓曲線參數(shù)Ep (a,b),基點(diǎn)G(為所述橢圓曲線上一點(diǎn),滿足(XeJe) e E(Fp), G/ = 0),大素?cái)?shù)P (為隨機(jī)產(chǎn)生的一個(gè)長(zhǎng)度大于192位比特串的素?cái)?shù))。隨機(jī)創(chuàng)建自己的私鑰dB (創(chuàng)建方式同用戶A101),然后根據(jù)上述參數(shù)計(jì)算公鑰kB = dB*G,并將該公鑰以及確認(rèn)信息114傳回用戶A101。
[0026]2.3完成密鑰交換104:
根據(jù)用戶Blll的確認(rèn)信息完成密鑰交換114,收到錯(cuò)誤信息重復(fù)2.1步驟。
[0027]、通信
完成密鑰交換后,通信雙方可以進(jìn)行加密通信。為了解決由于信息過(guò)長(zhǎng),而導(dǎo)致的加密解密速度較慢問(wèn)題。采用國(guó)密算法中的對(duì)稱密鑰算法SM4對(duì)信息進(jìn)行分組加密,使用非對(duì)稱密鑰算法SM2對(duì)加密密鑰進(jìn)行加密。
[0028]3.1橢圓曲線多倍點(diǎn)運(yùn)算
在對(duì)信息的加密解密過(guò)程中,大量使用了橢圓曲線的倍點(diǎn)運(yùn)算。提高其運(yùn)算效率也將直接影響到雙方信息交流的順暢。
[0029]采用滑動(dòng)窗口算法能有效的提高倍點(diǎn)運(yùn)算的效率,計(jì)算多倍點(diǎn)Q = kP,其中P為橢圓曲線上一點(diǎn),k 二進(jìn)制表示:
k = (ktkt-1 …klkO), h 為窗口大小,滿足 h>=l。
[0030]滑動(dòng)窗口算法可以靈活的控制窗口的大小,并跳躍式的計(jì)算二進(jìn)制串,極大的提高了運(yùn)算的速度。
[0031]3.2 加密 105、116
在對(duì)明文加密時(shí),使用國(guó)密算法SM4對(duì)明文進(jìn)行分組加密(由于對(duì)稱密鑰加密算法加解密速度快,所以即使明文很長(zhǎng),也能保證其加解密的速度,這點(diǎn)在即時(shí)通信(頂)中尤為重要),再用SM2算法對(duì)加密密鑰加密(由于SM4算法的加密密鑰為固定長(zhǎng)度為128比特,這樣有效避免了由于加密信息很長(zhǎng)導(dǎo)致的SM2算法產(chǎn)生的密鑰過(guò)長(zhǎng),加密時(shí)間過(guò)長(zhǎng)問(wèn)題,并對(duì)密鑰進(jìn)行管理。這種方式即保證了數(shù)據(jù)的安全又提高了對(duì)信息加解密的速度。),然后將加密密鑰嵌入到橢圓曲線上一點(diǎn)m上(將信息轉(zhuǎn)成大整數(shù),作為橢圓曲線m點(diǎn)的X坐標(biāo),在根據(jù)橢圓方程確定m的Y坐標(biāo))。然后隨機(jī)生成數(shù)r,并計(jì)算加密后的信息M = m + r*kB modP,將M和r*G以及加密后的信息發(fā)送給對(duì)方。
[0032]3.3 解密 106、115
接收方接收到M和r*G,根據(jù)kB = dB*G mod p,算出r*kB = r*G*dB,由此計(jì)算出m =M - r*G*dB mod p,再將SM4算法的加密密鑰從橢圓曲線點(diǎn)中換算出來(lái),然后完成對(duì)加密信息的解密過(guò)程。
[0033]實(shí)施例:以下列舉本發(fā)明基于國(guó)密算法的移動(dòng)互聯(lián)網(wǎng)信息通信加密方法的一個(gè)較佳實(shí)施方式。在針對(duì)醫(yī)療行業(yè)的“我要就醫(yī)”手機(jī)App中,醫(yī)生(用戶Bill)和病人(用戶A101)的即時(shí)通信模塊,對(duì)聊天記錄、病例記錄和用戶密碼等涉及個(gè)人隱私的信息(包括聊天記錄、病例記錄和用戶密碼等)進(jìn)行加密。
[0034]病人(用戶A101)使用移動(dòng)終端設(shè)備(包括手機(jī)、pad、iPad、智能手持設(shè)備以及PC),向醫(yī)生進(jìn)行詢?cè)\。首先打開(kāi)“我要就醫(yī)”App應(yīng)用,進(jìn)入即時(shí)通信功能模塊,選擇醫(yī)生(用戶Bill)進(jìn)行詢?cè)\;此時(shí)應(yīng)用會(huì)動(dòng)態(tài)創(chuàng)建用于加密算法的橢圓曲線102,并根據(jù)所得相關(guān)參數(shù)創(chuàng)建病人(用戶A101)的移動(dòng)終端的公鑰和私鑰103。然后像指定醫(yī)生(用戶Bill)的移動(dòng)終端發(fā)送橢圓曲線相關(guān)參數(shù)(用于創(chuàng)建公鑰和私鑰)和公鑰(用于信息加密),醫(yī)生(用戶Bill)的移動(dòng)終端在接收到上述參數(shù)后,創(chuàng)建醫(yī)生(用戶Bill)的移動(dòng)終端端的公鑰和私鑰113,并發(fā)送確認(rèn)信息114和醫(yī)生(用戶Bill)的移動(dòng)終端的公鑰給病人(用戶A101)的移動(dòng)終端。病人(用戶A101)的移動(dòng)終端根據(jù)接收到的確認(rèn)信息完成密鑰互換104,否則重復(fù)103。
[0035]完成密鑰互換后,雙方便可開(kāi)始通信,發(fā)送方使用SM4對(duì)稱密鑰加密算法對(duì)信息明文進(jìn)行加密,使用SM2非對(duì)稱密鑰加密算法對(duì)SM4的加密密鑰進(jìn)行加密105、116,接收方先使用SM2算法將加密密鑰解密出來(lái),然后使用SM4算法解密信息明文106、115,完成一次信息通信100。
【權(quán)利要求】
1.基于國(guó)密算法的移動(dòng)互聯(lián)網(wǎng)信息通信加密方法,其特征在于,其步驟如下: 1)橢圓曲線的動(dòng)態(tài)創(chuàng)建:用戶A通過(guò)移動(dòng)終端向用戶B發(fā)送加密信息,根據(jù)SM2公鑰密碼算法,用戶A動(dòng)態(tài)創(chuàng)建橢圓曲線; 2)密鑰互換: (1)用戶A創(chuàng)建完所述橢圓曲線后,隨機(jī)產(chǎn)生私鑰dA,再根據(jù)所述橢圓曲線相關(guān)參數(shù)計(jì)算出公鑰kA; (2)用戶A將公鑰kA和所述橢圓曲線相關(guān)參數(shù)傳遞給用戶B;用戶B隨機(jī)生成自己的私鑰dB,再使用用戶A傳來(lái)的所述橢圓曲線相關(guān)參數(shù)生成公鑰kB ;該過(guò)程如果成功,用戶B發(fā)送公鑰kB和確認(rèn)信息給用戶A,用戶A收到后完成密鑰互換;否則發(fā)送錯(cuò)誤信息,重復(fù)密鑰互換; 3)加密/解密通信: (1)加密通信時(shí),明文信息使用SM4對(duì)稱密鑰加密算法進(jìn)行加密,SM4算法的加密密鑰嵌入到所述橢圓曲線上一點(diǎn),再使用對(duì)方公鑰對(duì)其進(jìn)行加密; (2)解密通信時(shí),通過(guò)私鑰把嵌入加密密鑰的橢圓點(diǎn)換算出來(lái),再使用SM4算法進(jìn)行信息解密。
2.根據(jù)權(quán)利要求1所述的基于國(guó)密算法的移動(dòng)互聯(lián)網(wǎng)信息通信加密方法,其特征在于,所述動(dòng)態(tài)創(chuàng)建分為所述橢圓曲線的有限域Fp、大素?cái)?shù)P的確定、參數(shù)Ep (a,b)的確定和點(diǎn)G的選定。
3.根據(jù)權(quán)利要求2所述的基于國(guó)密算法的移動(dòng)互聯(lián)網(wǎng)信息通信加密方法,其特征在于,所述橢圓曲線的有限域Fp為選取的素域,對(duì)應(yīng)的橢圓曲線方程為:y2 = x3+ax+b, a, be Fp,且(4a3+27b2) mod p/ = 0。
4.根據(jù)權(quán)利要求2所述的基于國(guó)密算法的移動(dòng)互聯(lián)網(wǎng)信息通信加密方法,其特征在于,所述大素?cái)?shù)P的確定,先隨機(jī)產(chǎn)生大素?cái)?shù)P,然后采用概率素?cái)?shù)測(cè)試算法Miller-Rabin算法測(cè)試,并使用結(jié)合滑動(dòng)窗口算法和Montgomery類算法對(duì)Miller-Rabin算法底層優(yōu)化。
5.根據(jù)權(quán)利要求1所述的基于國(guó)密算法的移動(dòng)互聯(lián)網(wǎng)信息通信加密方法,其特征在于,所述橢圓曲線相關(guān)參數(shù),包括橢圓曲線方程系數(shù)Ep (a, b),大素?cái)?shù)p,基點(diǎn)G。
6.根據(jù)權(quán)利要求1所述的基于國(guó)密算法的移動(dòng)互聯(lián)網(wǎng)信息通信加密方法,其特征在于,所述動(dòng)態(tài)創(chuàng)建橢圓曲線,指在用戶每次使用移動(dòng)終端通信時(shí),都創(chuàng)建一次橢圓曲線,保留本地,在主動(dòng)發(fā)起通信時(shí),發(fā)送相關(guān)參數(shù)給對(duì)方,以保證通信雙方使用同一橢圓曲線參數(shù)加解密信息。
7.根據(jù)權(quán)利要求1所述的基于國(guó)密算法的移動(dòng)互聯(lián)網(wǎng)信息通信加密方法,其特征在于,所述私鑰均為隨機(jī)產(chǎn)生的固定長(zhǎng)度的隨機(jī)數(shù)。
8.根據(jù)權(quán)利要求1所述的基于國(guó)密算法的移動(dòng)互聯(lián)網(wǎng)信息通信加密方法,其特征在于,所述加密密鑰嵌入到橢圓曲線上一點(diǎn),是將加密密鑰轉(zhuǎn)成大整數(shù),并作為所述橢圓曲線上某點(diǎn)的X軸坐標(biāo),再根據(jù)所述橢圓曲線方程求出Y軸坐標(biāo),所得的點(diǎn)即為嵌入點(diǎn)。
9.根據(jù)權(quán)利要求1或8所述的基于國(guó)密算法的移動(dòng)互聯(lián)網(wǎng)信息通信加密方法,其特征在于,所述加密密鑰為隨機(jī)產(chǎn)生的128位比特長(zhǎng)度的十六進(jìn)制數(shù),使用SM2算法對(duì)該加密密鑰加密。
10.根據(jù)權(quán)利要求1所述的基于國(guó)密算法的移動(dòng)互聯(lián)網(wǎng)信息通信加密方法,其特征在于,所述加密/解密通信,其過(guò)程是基于ElGamal公鑰系統(tǒng)的加密/解密過(guò)程,加密后的橢圓點(diǎn)信息轉(zhuǎn)成十六進(jìn)制串。
【文檔編號(hào)】H04L9/32GK104468125SQ201410814182
【公開(kāi)日】2015年3月25日 申請(qǐng)日期:2014年12月24日 優(yōu)先權(quán)日:2014年12月24日
【發(fā)明者】姚興, 胡世飛, 鄧春輝 申請(qǐng)人:江西倍康信息技術(shù)有限公司