◆黃素萍 弋改珍 李延香
(咸陽師范學(xué)院 計(jì)算機(jī)學(xué)院 陜西 712000)
網(wǎng)絡(luò)通信中主流加密算法比較研究
◆黃素萍 弋改珍 李延香
(咸陽師范學(xué)院 計(jì)算機(jī)學(xué)院 陜西 712000)
本文首先介紹了當(dāng)前網(wǎng)絡(luò)通信中主流加密算法的使用狀況和研究成果,基于每種算法的原理,實(shí)現(xiàn)由Java語言編寫的算法程序;并分別從各算法速度、CPU占用率和內(nèi)存占用率三個(gè)方面對(duì)各算法的性能進(jìn)行實(shí)驗(yàn);最后通過分析實(shí)驗(yàn)數(shù)據(jù)進(jìn)行比較,總結(jié)出每種算法的應(yīng)用特點(diǎn),為具體應(yīng)用選擇加密算法提供了有力的依據(jù)。
加密算法;算法性能;網(wǎng)絡(luò)安全
在互聯(lián)網(wǎng)廣泛應(yīng)用的今天,網(wǎng)絡(luò)通信中的安全保密問題一直是大家最為關(guān)注的問題之一。互聯(lián)網(wǎng)是一個(gè)面向大眾的開放環(huán)境,各種信息系統(tǒng)的建立和使用造成我們對(duì)計(jì)算機(jī),尤其是對(duì)數(shù)據(jù)庫和網(wǎng)絡(luò)的依賴。由于數(shù)據(jù)庫中存儲(chǔ)的數(shù)據(jù)和網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)都是具有一定價(jià)值的信息,在互聯(lián)網(wǎng)的各個(gè)結(jié)點(diǎn)上有懷惡意企圖的用戶隨時(shí)會(huì)發(fā)起對(duì)互聯(lián)網(wǎng)的攻擊,以達(dá)到竊取信息的目的。對(duì)這些信息的非法訪問、竊取、篡改等行為必然導(dǎo)致計(jì)算機(jī)信息安全問題的出現(xiàn),因此網(wǎng)絡(luò)信息安全是大家最關(guān)注的問題之一。對(duì)于網(wǎng)絡(luò)信息安全,最有效的手段就是信息加密技術(shù)。為了解決這些問題,數(shù)字簽名、身份驗(yàn)證、數(shù)據(jù)加密技術(shù)應(yīng)運(yùn)而生,尤其是數(shù)據(jù)加密技術(shù)給計(jì)算機(jī)信息安全帶來了生機(jī)。
基于網(wǎng)絡(luò)安全問題以及數(shù)據(jù)的重要性,多數(shù)用戶進(jìn)行網(wǎng)絡(luò)通信時(shí)需要選擇應(yīng)用一種或多種加密技術(shù),為了保證安全而高效的加密數(shù)據(jù)通信,用戶在選擇時(shí)需要了解各種加密技術(shù)在不同應(yīng)用中的特點(diǎn)。所以,很有必要對(duì)當(dāng)前常用的加密技術(shù)的算法進(jìn)行較深入的實(shí)驗(yàn)和性能分析。
到目前為止,實(shí)現(xiàn)加密的算法約有200多種[1]。加密算法按照雙方收發(fā)的密鑰是否相同分為兩大類:一類為對(duì)稱加密算法(又稱私鑰加密算法),即加密密鑰和解密密鑰是相同的。常用的對(duì)稱加密算法有DES和AES;另外一類是非對(duì)稱加密算法(又稱公鑰加密算法),即加密密鑰和解密密鑰互不相同,而且要從加密密鑰推導(dǎo)出解密密鑰幾乎是不可能的。影響力最大的非對(duì)稱加密算法是RSA。
另外,還有一種用于特殊情景和范圍的加密算法——Hash算法。通信雙方通過hash算法將信息加密成固定長度的一段字符編碼,但是卻不能從這段編碼中恢復(fù)出原來的信息。常見的Hash算法有MD5和SHA。
(1)DES算法
DES是對(duì)稱密鑰分組密碼的一個(gè)典型代表,由IBM公司研制的[2]。它使用分組密碼體制。在加密時(shí),將加密數(shù)據(jù)按64位進(jìn)行分組,使用64位的密鑰分別加密每一個(gè)分組,獲得一組64位密文數(shù)據(jù),所有分組的密文連接起來,即為整個(gè)的密文。DES從公布起一直廣泛用于國際上計(jì)算機(jī)通信以及商用保密通信等安全領(lǐng)域。
(2)AES算法
AES加密算法即高級(jí)加密標(biāo)準(zhǔn),是一種對(duì)稱加密算法。此算法是美國聯(lián)邦政府采用的一種區(qū)塊加密標(biāo)準(zhǔn)[2]。AES算法基于排列和置換運(yùn)算。它的密鑰長度可以是128位、192位 或者256位,并且按128位分組,并且進(jìn)行分組迭代,在迭代加密的循環(huán)結(jié)構(gòu)中重復(fù)替換和置換輸入數(shù)據(jù)。AES加密算法在設(shè)計(jì)結(jié)構(gòu)及密鑰的長度上都已達(dá)到保護(hù)機(jī)密信息的標(biāo)準(zhǔn)。
(3)RSA算法
RSA加密算法屬于公鑰加密算法體制。它是1977年美國麻省理工學(xué)院研究開發(fā)。RSA算法原理是:將兩個(gè)大素?cái)?shù)相乘,但是想要對(duì)其乘積進(jìn)行因式分解卻很難辦到,因此可以將乘積公開作為加密密鑰。目前它是公鑰加密算法中影響力最大的算法,它是ISO對(duì)外推薦的公鑰數(shù)據(jù)加密算法的標(biāo)準(zhǔn)[3]。
(4)MD5算法
MD5算法是一個(gè)安全的散列算法,它把加密信息計(jì)算成為固定長度的字符編碼,但是它是單向的,不能由密文得到明文。要解密MD5只能用窮舉法[4]。
2.1 實(shí)驗(yàn)方法
基于每種算法的原理,首先實(shí)現(xiàn)了由Java語言編寫的RSA算法、DES算法、MD5算法、AES算法的程序,并對(duì)各算法在算法速度、CPU占用率、內(nèi)存占用率三方面進(jìn)行實(shí)驗(yàn)。所有實(shí)驗(yàn)都是在Win7旗艦版系統(tǒng)環(huán)境下進(jìn)行。在測(cè)試算法速度時(shí),通過反復(fù)多次算法程序運(yùn)行,記錄程序執(zhí)行時(shí)間的平均值來比較各算法的運(yùn)行速度。測(cè)試CPU占用率和內(nèi)存占用率用的是在多次運(yùn)行各算法程序時(shí)使用Windows系統(tǒng)性能監(jiān)視程序獲得占用情況的數(shù)據(jù)。
2.2 實(shí)驗(yàn)結(jié)果
(1)在進(jìn)行算法速度實(shí)驗(yàn)中,讓各算法程序?qū)用?00字以內(nèi)的西文字符串,100字以內(nèi)的中文字符串和10字以內(nèi)的短字符串,分別進(jìn)行50次的運(yùn)行,各算法程序的運(yùn)行平均時(shí)間分別如表1,表2和表3所示:
表1 算法加解密西文字符耗時(shí)表
表2 算法加解密中文字符耗時(shí)表
表3 算法加解密短字符耗時(shí)表
通過算法速度測(cè)試的實(shí)驗(yàn)結(jié)果可以看到,分別用四種算法對(duì)100字以內(nèi)的西文字符串和中文字符串,以及10字以內(nèi)的短字符串進(jìn)行加解密,各種算法的速度存在較大的差異,對(duì)于加密速度,MD5的速度最快,AES比DES稍快些,RSA的速度最慢;對(duì)于解密,MD5沒有固定的解密算法,AES比DES稍快,RSA的解密速度最慢。
(2)實(shí)驗(yàn)采用perfmon.exe工具測(cè)試各算法程序的CPU占用率。四種算法的CPU占用率如表4所示:
表4 算法運(yùn)行時(shí)CPU占用率表
通過算法CPU占用率的實(shí)驗(yàn)結(jié)果可以看到,四種算法運(yùn)行時(shí)CPU占用率從高到底依次為RSA、DES、AES、MD5。
(3)實(shí)驗(yàn)采用perfmon.exe工具測(cè)試各算法程序的內(nèi)存占用率。依次運(yùn)行RSA、DES、MD5、AES,在perfmon.exe程序中的Privileged Time插件窗口中可得到圖1。圖中的4個(gè)小曲線分別是RSA、DES、MD5、AES算法運(yùn)行時(shí)的內(nèi)存占用量的動(dòng)態(tài)曲線,圖中四種個(gè)算法運(yùn)行時(shí)內(nèi)存占用量差別較小,由曲線峰值由高到低依次為RSA、MD5、DES、AES。