楊 虹
(遼寧警察學(xué)院 遼寧 116036)
當(dāng)前,世界計(jì)算機(jī)領(lǐng)域都在努力探索更加安全的數(shù)據(jù)保護(hù)方法,因此產(chǎn)生了很多加密解密算法。其中主要有兩大陣營(yíng),一是DES加密方法,稱為對(duì)稱加密方法;二是非線性加密解密方法,即以公式為主要計(jì)算方法。DES方法沒(méi)有可利用的公式,要想破解,需要采用窮舉法;非線性加密解密方法通過(guò)公式求解密鑰,最大特點(diǎn)是不可逆,其中以RSA算法和橢圓曲線算法為典型計(jì)算方法。
此外還有很多加密解密方法,雖然沒(méi)有公開(kāi)(即被破解),但其中的原理基本相同。為了提高加密解密的難度,通常采用DES與非線性加密解密兩種方法的組合,以達(dá)到不被破解的目的。
RSA算法是一種非對(duì)稱密鑰算法。所謂非對(duì)稱就是指該算法需要一對(duì)密鑰,其中一個(gè)用于加密,另一個(gè)用于解密。
RSA算法涉及3個(gè)參數(shù):n、e1、e2。其中,n是兩個(gè)大質(zhì)數(shù)p、q的積。n是二進(jìn)制表示所占用的位數(shù),即密鑰的長(zhǎng)度。e1和e2是一對(duì)相關(guān)的值,e1可以任意取值,但要求e1與(p-1)*(q-1)互質(zhì);再選擇e2,要求(e2*e1)mod((p-1)*(q-1))=1。
(n 及e1),(n及e2)就是密鑰對(duì)。
RSA的加密算法和解密算法完全相同。設(shè)A為明文,B為密文,則:
e1和e2可以互換使用,即:
以上就是RSA算法。
橢圓曲線理論是代數(shù)幾何、數(shù)論等多個(gè)數(shù)學(xué)分支的一個(gè)交叉點(diǎn),一直被認(rèn)為是純理論學(xué)科。近年來(lái),由于公鑰密碼學(xué)的產(chǎn)生與發(fā)展,該學(xué)科也找到了它的應(yīng)用領(lǐng)域。在 RSA 密碼體制的基礎(chǔ)性問(wèn)題——大整數(shù)分解和素性檢測(cè)——的研究方面,橢圓曲線是一個(gè)強(qiáng)有力的工具。特別以橢圓曲線上的(有理)點(diǎn)構(gòu)成的 Abel 群為背景結(jié)構(gòu),實(shí)現(xiàn)各種密碼體制已是公鑰密
碼學(xué)領(lǐng)域的一個(gè)重要課題。由于橢圓曲線密碼體制本身的優(yōu)點(diǎn),自20世紀(jì)80年代中期被引入以來(lái),橢圓曲線密碼體制逐步成為一個(gè)十分令人感興趣的密碼學(xué)分支,1997年以來(lái)形成了一個(gè)研究熱點(diǎn),特別是移動(dòng)通信安全方面的應(yīng)用更是加快了這一趨勢(shì)。
橢圓曲線算法是在有限域Fp約束下,其中p為一個(gè)大質(zhì)數(shù),橢圓曲線可定義成所有滿足方程式E:y2=x3+ax+b(x,y,a,b∈F)的點(diǎn)(x,y)所構(gòu)成的集合。若方程式x3+ax+b沒(méi)有重復(fù)因式或4 a3+27 b2≠0,則E:y2=x3+ax+b 能成為群。定義:
(1)橢圓曲線中存在一個(gè)無(wú)限遠(yuǎn)的點(diǎn)O,但它并不在橢圓曲線上。
(2)若P 的負(fù)點(diǎn)稱為?P,則點(diǎn)P=(x,y)相對(duì)X坐標(biāo)軸反射的點(diǎn)為?P=(x,?y)。
(3)若橢圓曲線上點(diǎn)P 的域?yàn)閚,則n是最小的使得nP=0的正整數(shù)。
(4)橢圓曲線上的運(yùn)算結(jié)果可以生成橢圓曲線上的所有點(diǎn),但點(diǎn)O除外。
(5)E(Fp)為在Fp之下,由橢圓曲線E上全部點(diǎn)所構(gòu)成的集合。
(6)若有兩個(gè)點(diǎn)P=(x1,y1)∈E(Fp)及Q=(x2,y2)∈E(Fp),且P≠±Q,則P+Q=R=(x3,y3)。其中,X3=((y2-y1)/(x2-x1))2-x2-x1’,Y3=((y2-y1)/(x2-x1))(x1-x3)-y1。
(7)若有兩個(gè)點(diǎn) P=(x1,y1)∈E(Fp)且 P≠-P,則 P+P=2P=(x3,y3),其中,X3=((3x12+a)/2y1)2-2x1,Y3=((3x12+a)/2y1)(x1-x3)-y1。
(8)若對(duì)所有點(diǎn)(Fp)P∈E,則P+O=O+P=P、P+(?P)=O、O=?O。
(9)分配律成立,即若n∈F,則(m+n)P=mP+nP。
(10)交換律成立,即若pm,n∈F,則m(nP)=mn(P),其中kP=P+...+P。
以上就是橢圓曲線算法。
這兩種算法的特點(diǎn)如下:
(1)都需要求出兩個(gè)或兩個(gè)以上的未知數(shù)作為密鑰。
(2)公式可以重復(fù)使用。
(3)用素?cái)?shù)做模進(jìn)行計(jì)算。
(4)計(jì)算較復(fù)雜。
(5)不可逆運(yùn)算。
由此得出結(jié)論,如果能找到一種算法具備以下特點(diǎn),這個(gè)算法將會(huì)更加實(shí)用、有效:
(1)能夠求出兩個(gè)以上未知數(shù)。
(2)公式可以重復(fù)使用并簡(jiǎn)單。
(3)用計(jì)算機(jī)里的數(shù)據(jù)(或任意整數(shù))能求解出密鑰或多個(gè)密鑰。
(4)計(jì)算簡(jiǎn)單,為不可逆運(yùn)算。
(5)提高在計(jì)算機(jī)中的運(yùn)算速度。
將任意進(jìn)制數(shù)N轉(zhuǎn)換成十進(jìn)制數(shù)的方法為:N=10s+m。式中,10表示十進(jìn)制;s表示10的倍數(shù);m是余數(shù)。
由此可見(jiàn),將任意進(jìn)制整數(shù)N轉(zhuǎn)換成所需要的某進(jìn)制整數(shù),可以寫成:
其中,N是范圍為 0,1,2,3,……的任意進(jìn)制整數(shù);p是范圍為2,3,……的任意整數(shù);s是p的倍數(shù),表示范圍為0,1,2,3,……的任意整數(shù);m是余數(shù),范圍為0,1,……p-1,該值與p有關(guān)。
例如,一個(gè)十進(jìn)制數(shù)為254,選定p=14,根據(jù)公式(1),得到s=18,m=2。
如果選定p=15,根據(jù)公式(1),得到s=16,m=14。
通過(guò)改變p的值,可以得到不同的s、m的值。
如果上式中的p可以任意選定,那么公式(1)可以表示任意進(jìn)制轉(zhuǎn)換的數(shù)。由于公式(1)中有3個(gè)未知數(shù)(3個(gè)變量),且這3個(gè)未知數(shù)可以變化,恰好符合計(jì)算機(jī)密鑰的變化規(guī)律,因此這3個(gè)未知數(shù)可以作為密鑰。
數(shù)字被p、s、m 三個(gè)因子所分解,每個(gè)因子所表達(dá)的含義與原數(shù)字(或代碼)所表達(dá)的含義完全不同,即改變了原數(shù)字。
知道p、s、m三個(gè)參數(shù)中的一個(gè)或兩個(gè)參數(shù),都不能求出原數(shù)據(jù),符合非對(duì)稱加密特點(diǎn)。由于公式簡(jiǎn)單,所以計(jì)算速度較快。
例如,一個(gè)十進(jìn)制數(shù)為200,令p=13,利用公式(1)經(jīng)過(guò)計(jì)算得到N=13×15﹢5。
其中,p=13,s=15,m=5。由此可見(jiàn),數(shù)字 200完全變形為三個(gè)因子13、15和5。
這種算法的特點(diǎn)是密鑰的計(jì)算方法簡(jiǎn)單,且采用的進(jìn)制數(shù)越大,被解密的可能就越小。
由公式(1)計(jì)算出三個(gè)參數(shù)p、s、m,將三個(gè)參數(shù)分別代入x、y、z坐標(biāo)中,數(shù)字N可記做N(x、y、z),根據(jù)x、y、z坐標(biāo)點(diǎn),將數(shù)字隱藏到三維坐標(biāo)表示的點(diǎn)內(nèi),形成三維加密方法。
因?yàn)橛?jì)算公式簡(jiǎn)單,容易被破解。在加密算法中,采用如此簡(jiǎn)單的公式并不多見(jiàn)。一個(gè)數(shù)據(jù)用三維坐標(biāo)表示,或多維坐標(biāo)表示,其解密難度呈非線性增長(zhǎng)。因此每增加一維參數(shù),對(duì)解密工作者需要千百萬(wàn)次窮舉法才能破解,所以增加破解難度。按照這個(gè)思路,還可以將數(shù)字N用更多維進(jìn)行表述。利用多參數(shù)變化,也能達(dá)到加密目的。
由公式(1)可以看出計(jì)算公式的參數(shù)非常簡(jiǎn)單,比任何非線性加密解密計(jì)算方法都簡(jiǎn)單。不僅如此,采用公式(1)進(jìn)行迭代運(yùn)算,也可以獲得多個(gè)參數(shù)。其他非線性加密方法采用迭代法,會(huì)影響計(jì)算機(jī)運(yùn)行速度,而泛進(jìn)制計(jì)算方法不會(huì)影響計(jì)算機(jī)中該算法的運(yùn)行速度。
通過(guò)增加參數(shù)降低數(shù)學(xué)公式的運(yùn)算難度,這是非線性加密解密最好的解決問(wèn)題方法。不僅避免了許多深?yuàn)W的數(shù)學(xué)計(jì)算和數(shù)學(xué)變化,還達(dá)到了不可逆計(jì)算的目的。
實(shí)際應(yīng)用中,公式(1)中參數(shù)是可以選擇的。根據(jù)需要,一般把p選擇得大一些,這樣可以增加破解難度。由于公式(1)對(duì)三個(gè)參數(shù)表示范圍進(jìn)行了界定,且這三個(gè)參數(shù)的取值范圍與其在計(jì)算機(jī)中所需存儲(chǔ)單元的位數(shù)有關(guān),即若公式(1)中參數(shù)p的位數(shù)為xp,參數(shù)s的位數(shù)為xs,參數(shù)m的位數(shù)為xm,令xp=w,xs=y,xm=z,則理論上公式(1)中參數(shù)(即密鑰)有2w×2y×2z種可能,所以,采用窮舉法很難進(jìn)行破解。
每種加密解密方法都需要通過(guò)計(jì)算機(jī)編程得到密鑰,編程難度與程序是否容易實(shí)現(xiàn)相關(guān)??梢钥闯觯剑?)無(wú)論用什么語(yǔ)言編程都很容易實(shí)現(xiàn),因?yàn)樵谟?jì)算機(jī)語(yǔ)言中,都有除法運(yùn)算語(yǔ)句(指令),只要選定公式(1)中的p值,就很容易計(jì)算出s和m值。
公式(1)中的p值選定非常關(guān)鍵。p值不能固定不變,如果p值固定不變,將會(huì)導(dǎo)致破解難度降低。計(jì)算機(jī)中的數(shù)字本身就是隨機(jī)的。利用計(jì)算機(jī)數(shù)字的特點(diǎn),將一個(gè)數(shù)字分解成兩組數(shù)據(jù),如果將某組數(shù)據(jù)作為p值,即指定計(jì)算機(jī)里某幾位數(shù)字作為p值,s和m的值就很容易求出。
前面已經(jīng)定義公式(1)三個(gè)參數(shù)的取值范圍,根據(jù)需要還可以采用超范圍定義方法定義泛進(jìn)制參數(shù),將數(shù)字N中某參數(shù)取負(fù)值,同樣也可以得到數(shù)字N。具體計(jì)算方法如下:
令數(shù)字N為正整數(shù),N=ps+m,取p為負(fù)數(shù),則p寫成-p,即N=-ps+m,得m=(N+ps),所以,出現(xiàn)m大于N值顯現(xiàn);同理可以得出很多結(jié)果,如果把三維坐標(biāo)分成8個(gè)象限,一個(gè)數(shù)字N,就會(huì)有8個(gè)三維坐標(biāo)象限表示的數(shù)組,因此解密難度遠(yuǎn)遠(yuǎn)大于兩維坐標(biāo)表示的4象限數(shù)組。
公式(1)代入p,則有:
公式(1)代入s,則有:
公式(1)代入m,則有:
公式(1)分別代入p,s和m,則有:
公式(1)還可以繼續(xù)代入 pp,sp,mp……,即可得到更多參數(shù)(或密鑰)。
由RSA算法與橢圓曲線算法可以看出,雖然橢圓曲線算法比RSA算法簡(jiǎn)單,但非線性密鑰生成卻是很復(fù)雜的。計(jì)算機(jī)信息安全技術(shù)人員一直在尋找簡(jiǎn)單且行之有效的密鑰生成方法。那么,密鑰變化主要與哪些因素有關(guān)呢?一是未知數(shù)變量有多少,即密鑰有多少。未知變量的增加實(shí)際就是密鑰的增加。在加密過(guò)程中,采用哪幾個(gè)密鑰進(jìn)行加密,哪些密鑰不參與加密,只有加密人員根據(jù)迭代計(jì)算基本公式(1)選取參數(shù)的合理性而定,所以破解起來(lái)非常繁瑣,不易成功;二是隨機(jī)性,即在加密過(guò)程中參數(shù)需要隨機(jī)選定,這樣有利于加密,起到增加破解難度的目的;三是對(duì)稱加密與非對(duì)稱加密方法的結(jié)合。若p值固定,即是對(duì)稱加密方法;四是整數(shù)求解公式的表達(dá)完整性。該迭代計(jì)算公式只適用于整數(shù)計(jì)算,因此加密計(jì)算簡(jiǎn)單、方便。只要滿足上述條件,加密會(huì)變得相對(duì)簡(jiǎn)單,而解密則變得相對(duì)復(fù)雜。
泛進(jìn)制計(jì)算方法與RSA和橢圓曲線加密算法比較,泛進(jìn)制計(jì)算簡(jiǎn)單,有三個(gè)以上參數(shù);而RSA和橢圓曲線加密算法計(jì)算公式比泛進(jìn)制算法復(fù)雜,只有兩個(gè)參數(shù)。
泛進(jìn)制計(jì)算方法可以迭代,而RSA和橢圓曲線加密計(jì)算不適合多次迭代,其原因是RSA和橢圓曲線加密計(jì)算復(fù)雜,如果再次迭代,速度會(huì)更慢,顯然不適合反復(fù)迭代。
泛進(jìn)制加密方法可以實(shí)現(xiàn)三維空間數(shù)據(jù)加密,這種運(yùn)算方法決定加密數(shù)據(jù)是存放在三維坐標(biāo)之中的,因此三維數(shù)據(jù)隱藏方式要比二維隱藏方法要有難度,而泛進(jìn)制很好的避開(kāi)三位加密運(yùn)算復(fù)雜的問(wèn)題,很容易得到三維坐標(biāo)點(diǎn),所以采用泛進(jìn)制加密方法為今后加密指出另一條加密思路。
泛進(jìn)制加密方法是一種非線性的多密鑰計(jì)算方法,解決了非線性計(jì)算復(fù)雜的問(wèn)題,同時(shí)可以大大地提高其在計(jì)算機(jī)中的處理速度,能實(shí)現(xiàn)三維空間加密,利用公式(1),還能進(jìn)行迭代擴(kuò)展。在RSA加密和橢圓曲線加密中的密鑰,計(jì)算公式很復(fù)雜,只能獲得兩個(gè)密鑰。相比較而言,采用泛進(jìn)制加密方法的多密鑰計(jì)算公式求解方法方便、簡(jiǎn)單、實(shí)用,是一個(gè)較理想加密解密算法。
[1]李寧.基于正規(guī)基的橢圓曲線密碼算法的研究和IP核實(shí)現(xiàn)[D].西安電子科技大學(xué).2010.
[2]陸志彬.淺析橢圓曲線密碼系統(tǒng)的應(yīng)用原理[J].計(jì)算機(jī)光盤軟件與應(yīng)用.2010.
[3]程華.一種基于構(gòu)造法的橢圓曲線改進(jìn)算法[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用.2009.
[4]張京京,閆曉蔚,蔡建順,郭曙光.基于 Android系統(tǒng)的手機(jī)隱私安全的研究與實(shí)現(xiàn)[J].信息網(wǎng)絡(luò)安全.2012.
[5]龐遼軍,李慧€賢,裴慶祺,柳毅,王育民.一個(gè)單方加密-多方解密的公鑰加密方案[J].計(jì)算機(jī)學(xué)報(bào).2012.
[6]黃東偉.移動(dòng)可編程數(shù)據(jù)加密系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].青島科技大學(xué).2010.
[7]符浩,陳靈科,郭鑫.基于Web網(wǎng)絡(luò)安全和統(tǒng)一身份認(rèn)證中的數(shù)據(jù)加密技術(shù)[J].軟件導(dǎo)刊.2011.
[8]楊義先,鈕心忻.應(yīng)用密碼學(xué)[M].北京郵電大學(xué)出版社.2005
[9]章照止.現(xiàn)代密碼學(xué)基礎(chǔ)[M].北京郵電大學(xué)出版社.2004.
[10]許春香,李發(fā)根,聶旭云,禹勇.現(xiàn)代密碼學(xué)[M].電子科技大學(xué)出版社.
網(wǎng)絡(luò)安全技術(shù)與應(yīng)用2014年2期