陳永鋒 ,宋 楠
(西安建筑科技大學(xué)管理學(xué)院,陜西 西安 710055)
隨著信息技術(shù)的不斷發(fā)展,信息管理系統(tǒng)為人們帶來(lái)了很多便利.其中分布式系統(tǒng)更是將不同地點(diǎn)的系統(tǒng)連接起來(lái),方便了管理也減少了投入.但是分布式信息管理系統(tǒng)面臨大量的數(shù)據(jù)交互,其安全與效率問(wèn)題一直無(wú)法兼顧.本文以多校區(qū)一卡通系統(tǒng)為例,提出混合加密算法從軟件的角度提供一種解決思路.
保障信息安全的主要手段是進(jìn)行數(shù)據(jù)加密,其由密鑰種類可分為對(duì)稱加密和非對(duì)稱加密[1].對(duì)稱加密算法最具代表性的就是1977年公布實(shí)施的DES算法作為數(shù)據(jù)加密標(biāo)準(zhǔn)[2],在這以后有 3DES算法[3]、Rijndael算法[4]、RC5 算法[5]、IDEA 算法[6]等.而非對(duì)稱加密算法應(yīng)用最廣的是 RSA算法[6],它的特點(diǎn)是易于實(shí)現(xiàn),基于大素?cái)?shù)分解安全性高,既能加密數(shù)據(jù)又能進(jìn)行數(shù)字簽名身份認(rèn)證.其他非對(duì)稱加密算法還有Elgamal算法、ECC算法(橢圓曲線算法)等.
RSA算法由于算法效率問(wèn)題不能應(yīng)用與大數(shù)據(jù)量加密[7],各國(guó)學(xué)者也對(duì)其進(jìn)行了大量的研究以提升運(yùn)算效率.2003年Sung-Ming Yen提出犧牲存儲(chǔ)空間以提升運(yùn)算效率,瑞士科學(xué)家也解決了 768位RSA算法密鑰問(wèn)題[8].我國(guó)學(xué)者也取得了大量成就,王曉云教授破解MD5[9]與SHA-1[10]算法震驚世界,馮登國(guó)院士與陳相寧教授分別提出了運(yùn)用中國(guó)剩余定理[11]和蒙哥馬利算法[12]提高運(yùn)算效率.
目前國(guó)內(nèi)高校一卡通系統(tǒng)基本都采取對(duì)稱加密算法進(jìn)行數(shù)據(jù)加密,其加解密速度快,安全性高,適用于大數(shù)據(jù)量的數(shù)據(jù)加密與傳輸.其中 3DES加密算法發(fā)展成熟,易于實(shí)現(xiàn)且與已有的DES加密應(yīng)用兼容,保護(hù)已有的使用DES的軟件和硬件投資.但是單純的對(duì)稱加密有其不足之處,校園一卡通系統(tǒng)的消費(fèi)終端很多,分布很廣.其安全性具有一定風(fēng)險(xiǎn),對(duì)稱加密無(wú)法識(shí)別消息來(lái)源.這種情況下易遭到第三方惡意篡改消息與偽造消息,同時(shí)密鑰管理和密鑰更換時(shí)的風(fēng)險(xiǎn)也很高.而數(shù)據(jù)簽名認(rèn)證消耗的時(shí)間很多,對(duì)大數(shù)據(jù)傳輸效率造成很大影響.
本文結(jié)合3DES算法與RSA算法以混合加密的方式解決系統(tǒng)數(shù)據(jù)加密面臨的問(wèn)題.
1) 從密鑰管理方面看,3DES算法明顯不如RSA算法.密鑰的生命周期有限,為了保證數(shù)據(jù)安全必須不斷更新密鑰.因?yàn)?DES算法是對(duì)稱加密算法,其密鑰需要在通信前進(jìn)行秘密分配,對(duì)于不同的通信對(duì)象分配不同的密鑰,在密鑰分配管理傳遞的過(guò)程中密鑰泄露的風(fēng)險(xiǎn)高.所以其密鑰更換困難,風(fēng)險(xiǎn)大,密鑰管理難度高.而RSA算法公開(kāi)分配加密密鑰,對(duì)加密密鑰的更新容易,對(duì)不同的通信對(duì)象,也只需保證自己的私鑰安全即可.
2) 從加解密效率來(lái)看,3DES算法高過(guò)RSA算法很多.因?yàn)?DES算法大多數(shù)操作是字節(jié)的位移和替換,使用計(jì)算機(jī)編程可以較快速實(shí)現(xiàn),適用于大量快速的加解密運(yùn)算.而RSA算法是基于大整數(shù)分解困難的計(jì)算進(jìn)行的,加解密過(guò)程中需要進(jìn)行高階模冪運(yùn)算,非常耗時(shí).因此,RSA算法在大量多次數(shù)據(jù)加密過(guò)程中并不適用.
3) 從身份認(rèn)證和消息驗(yàn)證方面來(lái)看,因?yàn)?DES算法是對(duì)稱加密算法,使用一個(gè)密鑰所以無(wú)法進(jìn)行數(shù)字簽名.而RSA算法可以進(jìn)行身份驗(yàn)證和數(shù)字簽名,其簽名過(guò)程也非常容易實(shí)現(xiàn).
4) 安全性方面兩個(gè)算法的安全性都比較高,目前沒(méi)有成熟的攻擊手段破解這兩個(gè)算法.
本文在分析了兩種算法的優(yōu)劣并對(duì) RSA算法的加解密運(yùn)算進(jìn)行了部分優(yōu)化的基礎(chǔ)上,結(jié)合兩種算法的優(yōu)勢(shì),提出一種既能快速進(jìn)行大量數(shù)據(jù)加密也能進(jìn)行身份驗(yàn)證和消息完整度驗(yàn)證的混合加密體制.其運(yùn)行過(guò)程如下:A發(fā)送方,RSA算法公鑰PUA、私鑰PRA,3DES算法密鑰K; B接收方,RSA算法公鑰PUB、私鑰PRB.
如果沒(méi)有進(jìn)行密鑰分配或者需要更換密鑰,A使用PUB采用RSA算法加密K,得到SK;
1) 計(jì)算散列值h=H(M)作為標(biāo)識(shí),并用PRA加密h,得到簽名S;
2) 使用K采用3DES算法加密明文M和S,得到需發(fā)送的消息D;
3) 若沒(méi)有進(jìn)行密鑰分配或者需要更換密鑰,A將SK和D發(fā)送給B;否則,A將D發(fā)送給B;
4) 如果接收到SK, B使用PRB采用RSA算法解密SK,得到K;5) 使用K采用3DES算法解密D,得到M和S;6) 計(jì)算h’=H(M),并使用PUA采用RSA算法解密S,得到h;
7) 如果h’=h,則說(shuō)明消息驗(yàn)證成功;否則,消息可能遭到篡改.
密鑰分配過(guò)程(沒(méi)有進(jìn)行密鑰分配或者需要更換密鑰時(shí)):
1) 公開(kāi)自己的公鑰 PUA,B公開(kāi)自己的公鑰PUB;
2) 使用PUB,采用RSA算法加密3DES算法的密鑰K,生成數(shù)字信封DK;
3) 使用散列函數(shù)H,計(jì)算散列值h=H(DK);
4) 使用私鑰PRA采用RSA算法加密h,產(chǎn)生數(shù)字簽名S;
5) 將S和DK一起發(fā)給B;
6) 用H計(jì)算h’=H(DK),用PUA解密S,若h=h’,說(shuō)明消息來(lái)自A沒(méi)有被篡改;
7) 使用PRB解密DK,得到3DES算法的密鑰K,完成密鑰分配.
RSA算法是一種非常典型的公鑰密碼體制,具有安全性好和密鑰管理方便等優(yōu)點(diǎn)[13].但是它也存在一些不足:一方面,計(jì)算密鑰需要大量的計(jì)算,且在數(shù)據(jù)加密和解密過(guò)程中都需要計(jì)算某整數(shù)的模 n整數(shù)次冪問(wèn)題,這些大量計(jì)算都消耗了大量的時(shí)間,限制了RSA算法的效率.另一方面,大素?cái)?shù)p和q的確定沒(méi)有一個(gè)成熟的方法,一般使用繁瑣的素性檢測(cè)和隨機(jī)生成的辦法產(chǎn)生大素?cái)?shù),效率較低[14].
本文從下列幾個(gè)方面對(duì)RSA算法進(jìn)行優(yōu)化:
1) 模算術(shù)里的求冪運(yùn)算:在RSA中,加密和解密都需要計(jì)算某整數(shù)的模n整數(shù)次冪,如果先求出整數(shù)的冪,再對(duì) n取模,那么中間結(jié)果會(huì)非常大.我們可以利用模算術(shù)的下列性質(zhì)來(lái)計(jì)算
[(a mod n)×(b mod n)]mod n = (a×b)mod n (1)
這樣我們將中間結(jié)果對(duì)n取模,簡(jiǎn)化計(jì)算:
假定要計(jì)算ab,其中a和b是正整數(shù),將b表示為二進(jìn)制數(shù)bkbk-1…b0,則:=∑ 2ibi≠0
2) 用私鑰進(jìn)行有效運(yùn)算:我們不能為了計(jì)算效率而簡(jiǎn)單地選擇一個(gè)小數(shù)值的 d,為了簡(jiǎn)化計(jì)算,這里運(yùn)用中國(guó)剩余定理來(lái)加快運(yùn)算速度.
首先介紹中國(guó)剩余定理[15],也叫孫子定理,是數(shù)論中最有用的定理之一.CRT(中國(guó)剩余定理)說(shuō)明某一范圍內(nèi)的整數(shù)可通過(guò)它的一組剩余類數(shù)來(lái)重構(gòu),這組剩余類數(shù)是對(duì)該整數(shù)用一組兩兩互素的整數(shù)取模得到的[15].令:
其中mi是兩兩互素的,我們可將ZM中的任一整數(shù)對(duì)應(yīng)一個(gè) k元組,該 k元組的元素均在m中,這種對(duì)應(yīng)關(guān)系為:A?(a1,a2,…,ak),其中 A∈ZM,對(duì)1≤i≤k,ai∈m,且 ai=A mod mi.
定理 1:對(duì) 1≤i≤k,令 Mi=M/mi,因?yàn)?Mi=m1×m2×…×mi-1×mi+1×…×mk,所以對(duì)所有的 j≠i,有 Mi≡ 0(mod mj).令
定理2:根據(jù)Mi的定義有Mi與mi互素,所以Mi有唯一的模 mi的乘法逆元,可以得到唯一的ci.計(jì)算
由于 j≠i時(shí),cj≡ Mj≡ 0(mod mi),且 ci≡ 1(mod mi),故ai= A mod mi,上式得證.
由上兩個(gè)定理可以方便求解M = Cdmod n,定義一些中間結(jié)果:Vp= Cdmod p, Vq= Cdmod q
運(yùn)用CRT公式(5)~(6),定義
進(jìn)一步,使用費(fèi)馬定理來(lái)簡(jiǎn)化Vp和Vq的計(jì)算,即依據(jù):如果p和a互素,則ap-1≡ 1(mod p).
這里的d mod(p-1)和d mod(q-1)可以預(yù)先計(jì)算出來(lái),與直接計(jì)算M = Cdmod n相比,上述的計(jì)算速度快了很多.
3) 大素?cái)?shù)生成與檢測(cè):在文獻(xiàn)[16]中已經(jīng)證明隨機(jī)遞增搜索次數(shù)要小于隨機(jī)搜索法,所以我們這里使用隨機(jī)遞增搜索法來(lái)產(chǎn)生大素?cái)?shù).由數(shù)論中的素?cái)?shù)定理可知,在N附近平均每隔lnN個(gè)整數(shù)就有一個(gè)素?cái)?shù),這樣我們?cè)谡业揭粋€(gè)素?cái)?shù)之前,平均要測(cè)試大約lnN個(gè)整數(shù).由于偶數(shù)直接拒絕,所以實(shí)際上只需測(cè)試大約(lnN)/2個(gè)整數(shù)[17].在進(jìn)行素性檢測(cè)前,我們可以先進(jìn)行預(yù)處理以提升檢測(cè)效率,排除掉偶數(shù),使用小素?cái)?shù)整除法進(jìn)一步篩選,然后使用Miller-Rabin算法對(duì)偽素?cái)?shù)的素性進(jìn)行檢測(cè).多次執(zhí)行測(cè)試可使得一個(gè)整數(shù)是素?cái)?shù)的概率接近1.0.測(cè)試一個(gè)給定的數(shù)n是否為素?cái)?shù)的過(guò)程涉及n和一個(gè)隨機(jī)選擇的整數(shù)a,a<n.若n未通過(guò)測(cè)試,則n不是素?cái)?shù);若n通過(guò)了測(cè)試,則n可能是素?cái)?shù),也可能不是.若對(duì)許多隨機(jī)選擇不同的 a,n均能通過(guò)測(cè)試,則我們幾乎可以相信n就是素?cái)?shù).這個(gè)方法看似有些繁瑣,但是只有在需要一對(duì)新的密鑰時(shí)才會(huì)執(zhí)行這個(gè)過(guò)程,所以一般不會(huì)很頻繁.
RSA算法除了加解密外還可用于數(shù)字簽名,進(jìn)行身份認(rèn)證.我們通過(guò)散列函數(shù)H可以生成一個(gè)散列值h作為消息認(rèn)證碼,h=H(M)[18].其中M是需要傳輸?shù)南?,H(M)是定長(zhǎng)的散列值.使用散列函數(shù)作為認(rèn)證碼可以減少數(shù)據(jù)簽名時(shí)間,增加效率.同時(shí)可以不泄露要簽名的消息,提高保密度.簽名過(guò)程如下:
1) 發(fā)送方將要發(fā)送的消息 M用過(guò)散列函數(shù)計(jì)算,產(chǎn)生散列值h=H(M).
2) 發(fā)送方用自己的私鑰加密h,產(chǎn)生數(shù)字簽名S=hdmod n.
3) 發(fā)送方將消息M和簽名S一同發(fā)給接收方.
4) 接收方用發(fā)送方的公鑰解密簽名 S得到h,再用散列函數(shù)H計(jì)算散列值h’.如果h’等于h,則說(shuō)明消息來(lái)源正確,沒(méi)有被篡改;否則,消息來(lái)源可能有問(wèn)題.這樣在消息傳輸過(guò)程中就避免了消息來(lái)源問(wèn)題和中間人篡改消息的可能.
本次實(shí)驗(yàn)的測(cè)試環(huán)境為:i5-4440 CPU、8G內(nèi)存,操作系統(tǒng)為 Windows7,開(kāi)發(fā)工具是 Visual Studio 2010.
首先對(duì)素?cái)?shù)生成效率進(jìn)行測(cè)試,為了測(cè)試大量素?cái)?shù)生成效率,素?cái)?shù)為512位.改進(jìn)算法與經(jīng)典算法的效率對(duì)比如圖 1.可以看出,五次實(shí)驗(yàn)隨著生成素?cái)?shù)的數(shù)量增加,消耗時(shí)間明顯有所改善.通過(guò)改善生成素?cái)?shù)時(shí)間可以提高RSA簽名效率[19].
測(cè)試RSA簽名速率我們生成1 024位素?cái)?shù)單獨(dú)測(cè)試,并對(duì)比傳統(tǒng)RSA簽名和只有CRT的RSA簽名.如圖2所示,本文改進(jìn)的簽名計(jì)算過(guò)程有非常明顯的效率提升,可以大幅度提高RSA加解密速度,使其可以有效的應(yīng)用在大數(shù)據(jù)傳輸?shù)南⒄J(rèn)證中.
圖1 改進(jìn)算法生成大素?cái)?shù)時(shí)間對(duì)比Fig.1 The comparison of generate large prime time
圖2 RSA簽名時(shí)間對(duì)比Fig.2 Comparison of RSA signature time
混合加密體系主要的安全風(fēng)險(xiǎn)在于密鑰管理與消息認(rèn)證.密鑰管理風(fēng)險(xiǎn)是基于RSA算法的安全性上的,而RSA算法在模數(shù)夠大(大于1 024 bits)時(shí)的安全性是有保證的.所以在體系下進(jìn)行密鑰分配和密鑰更換時(shí)嚴(yán)格執(zhí)行密鑰管理方法,即可保證密鑰管理過(guò)程中的安全.消息認(rèn)證方面,我們沒(méi)有直接使用消息進(jìn)行數(shù)字簽名,而是使用了散列函數(shù)H計(jì)算散列值.即使第三方攻擊者獲取發(fā)送方A的兩個(gè)簽名S1,S2.也不能計(jì)算出S3d=((S1dmodn)(S2dmodn))modn.因?yàn)榻o定一個(gè)D很難找到M,使得H(M)=D,這樣就避免了第三者篡改、偽造簽名和中間人攻擊等風(fēng)險(xiǎn).
本文以校園一卡通系統(tǒng)為例,面對(duì)多校區(qū)分系統(tǒng)傳輸信息安全和密鑰管理的需要,綜合分析了目前主流的對(duì)稱加密算法 3DES和非對(duì)稱加密算法RSA.在對(duì)其功能過(guò)程進(jìn)行分析的同時(shí),優(yōu)化部分計(jì)算過(guò)程,結(jié)合兩個(gè)算法功能和運(yùn)算的特點(diǎn)研究混合加密體系.解決系統(tǒng)的密鑰管理與消息認(rèn)證問(wèn)題,提高系統(tǒng)運(yùn)行安全性.對(duì)于分布式信息管理系統(tǒng)數(shù)據(jù)安全問(wèn)題提出一種解決思路.
在后續(xù)的研究中,將會(huì)在實(shí)際系統(tǒng)中檢測(cè)該體系的運(yùn)行并推廣到其他分布式信息管理系統(tǒng).同時(shí)繼續(xù)優(yōu)化加密過(guò)程以提高運(yùn)算速度,并在身份認(rèn)證與消息認(rèn)證方面做更深入的研究.
References
[1] 楊波. 現(xiàn)代密碼學(xué)[M]. 北京: 清華大學(xué)出版社, 2007.YANG Bo. Modern cryptography[M]. Beijing: Tsinghua University press, 2007.
[2] 陳恭亮. 信息安全數(shù)學(xué)基礎(chǔ)[M]. 北京: 清華大學(xué)出版社, 2011.CHEN Gongliang. Mathematical foundations of information security[M]. Beijing: Tsinghua University press, 2011.
[3] STALLINGS W. The advanced encryption standard[J].Cryptologia, 2010, 26(3): 165-188.
[4] JAMIL T. The rijndael algorithm[J]. Potentials, 2004,23(2): 36-38.
[5] RIVEST R L. The RC5 encryption algorithm[J]. Springer Berlin Heidelberg, 1995: 86-96.
[6] RIVEST R L, SHAMIR A. A method for obtaining digital signatures and public key cryptosystems[J]. Communications of the Association for Computer Machinery, 1978,21(2): 120-126.
[7] WIENER M J. Cryptanalysis of short RSA secret exponents[J].IEEE Information Theory Society, 1990, 36(3): 553-558.
[8] BONEH D, DURFEE G. Cryptanalysis of RSA with private key d less than N0. 292[J]. IEEE Information Theory Society, 2000, 46(4): 1339-1349.
[9] WANG Xiaoyun, YU Hongbo. How to Break MD5 and Other Hash Functions[J]. Cryptologia, 2005, 251(7): 357-362.
[10] 饒進(jìn)平, 馮登國(guó). 高速RSA處理芯片的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用, 2003, 39(5): 139-141.RAO Jinping, FENG Dengguo. Research and Implementation of High Speed RSA Crypto Chip[J]. Computer engineering and Applications, 2003, 39(5): 139-141.
[11] 王琴琴, 陳相寧. Montgomery算法在RSA中的應(yīng)用及其優(yōu)化[J]. 計(jì)算機(jī)技術(shù)與發(fā)展, 2007, 17(6): 145-146, 150.WANG Qinqin, CHEN Xiangning. Optimization and Application of Montgomery Algorithm in RSA[J]. Computer Technology and Development, 2007, 17(6): 145-146, 150.
[12] 王安. RSA 公鑰密碼算法的快速實(shí)現(xiàn)[D]. 濟(jì)南: 山東大學(xué), 2008.WANG An. Fast implementation of RSA public key cryptosystem[D]. Jinan: Shandong University, 2008.
[13] 賀克英. 改進(jìn)的RSA算法實(shí)現(xiàn)研究[D]. 成都: 電子科技大學(xué), 2010.HE Keying. Research and implementation of the improved RSA algorithm[D]. Chengdu: University of Electronic Science and technology of China, 2010.
[14] YEN Sungming, KIM Seungjoo, LIM Seongan. RSA Speedup with Chinese Remainder Theorem Immune against Hardware Fault Cryptanalysis[J]. IEEE Transactions on computers, 2003, 52(4): 461-472.
[15] 費(fèi)曉飛, 胡捍英. CRT-RSA算法安全性分析[J]. 微計(jì)算機(jī)信息, 2009, 25(3): 38, 54-55.FEI Xiaofei, HU Hanying. Security of CRT based RSA Algorithm[J]. Micro computer information, 2009, 25(3): 38, 54-55.
[16] 張寶華, 殷新春. RSA密碼算法的安全及有效實(shí)現(xiàn)[J].中山大學(xué)學(xué)報(bào): 自然科學(xué)版, 2008, 40(6): 22-26.ZHANG Baohua, YIN Xinchun. The safe and efficient implementation of RSA algorithm[J]. ACTA Scientiarum Naturalium Universitatis Sunyatseni: Sci. &Tech. , 2008, 40(6): 22-26.
[17] 石井, 吳哲, 譚璐, 等. RSA數(shù)據(jù)加密算法的分析與改進(jìn)[J]. 濟(jì)南大學(xué)學(xué)報(bào): 自然科學(xué)版, 2013, 27(3): 283-286.SHI Jing, WU Zhe, TAN Lu, et al. Analysis and Improvement of RSA Data Encryption Algorithm[J]. Journal of University of Jinan: Sci. & Tech. , 2008, 40(6): 22-26.
[18] 肖振久, 胡馳, 姜正濤. AES與RSA算法優(yōu)化及其混合加密體制[J]. 計(jì)算機(jī)應(yīng)用研究, 2014, 31(4): 1189-1194.XIAO Zhenjiu, HU Chi, JIANG Zhengtao. Optimization of AES and RSA algorithm and its mixed encryption system[J].Application Research of Computers, 2014, 31(4): 1189-1194.
[19] 劉學(xué)軍, 邢玲玲, 林和平, 等. Miller-Rabin素?cái)?shù)檢測(cè)優(yōu)化算法研究與實(shí)現(xiàn)[J]. 信息技術(shù), 2008(12): 141-143.LIU Xuejun, XING Lingling. Research and realization of Miller-Rabin optimizing algorithm for prime testing[J].Information Technology, 2008(12): 141-143.