武警甘肅省總隊(duì) 高 明
淺談對(duì)稱(chēng)加密算法與非對(duì)稱(chēng)加密算法的應(yīng)用
武警甘肅省總隊(duì) 高 明
隨著信息技術(shù)和互聯(lián)網(wǎng)絡(luò)的不斷發(fā)展與進(jìn)步,如何使重要信息在網(wǎng)絡(luò)中安全傳輸而不被竊取成為了一個(gè)重要問(wèn)題,而最有效的方法就是數(shù)據(jù)加密技術(shù)。數(shù)據(jù)加密的算法種類(lèi)很多,其加密方式主要可分為對(duì)稱(chēng)加密和非對(duì)稱(chēng)加密,本文主要對(duì)這兩種方式的基本原理和應(yīng)用進(jìn)行簡(jiǎn)要分析。
數(shù)據(jù)加密;加密算法;數(shù)字簽名
隨著信息技術(shù)和互聯(lián)網(wǎng)絡(luò)的不斷發(fā)展與進(jìn)步,對(duì)網(wǎng)絡(luò)信息的非法竊取與反竊取的斗爭(zhēng)也開(kāi)始變得愈演愈烈。如何使信息在傳輸過(guò)程中更加高效和安全、如何證實(shí)收到信息的真實(shí)性等問(wèn)題都已成為了當(dāng)今的研究課題。本文重點(diǎn)介紹了數(shù)據(jù)加密的基本概念,同時(shí)還簡(jiǎn)述了對(duì)稱(chēng)加密算法以及非對(duì)稱(chēng)加密算法的基本原理并介紹了相關(guān)應(yīng)用。
對(duì)于數(shù)據(jù)加密來(lái)說(shuō),在處理過(guò)程中最基本過(guò)程是依據(jù)某種特定的算法對(duì)原來(lái)的明文文件或者是數(shù)據(jù)進(jìn)行加密處理,從而將這段明文其轉(zhuǎn)變?yōu)橐欢尾豢勺R(shí)別的代碼,也就是密文。想要顯示密文的原本內(nèi)容,只有使用與之對(duì)應(yīng)的密鑰解密之后才能實(shí)現(xiàn)。通過(guò)數(shù)據(jù)加密的方法對(duì)文件進(jìn)行處理可以使得文件不被人非法竊取或者是進(jìn)行閱讀。
加密技術(shù)一般分為對(duì)稱(chēng)式加密以及非對(duì)稱(chēng)式加密兩類(lèi)。目前采用的比較廣泛的是對(duì)稱(chēng)式加密,主要特點(diǎn)是加密和解密使用同一個(gè)密鑰。而非對(duì)稱(chēng)式加密在進(jìn)行加密時(shí)則使用了兩個(gè)密鑰,加密和解密過(guò)程中分別使用不同的密鑰,這兩個(gè)密鑰分別為“公鑰”以及“私鑰”,想要能正常完成加密解密過(guò)程,就必需配對(duì)使用,而在使用過(guò)程中,“公鑰”是公開(kāi)的,“私鑰”則必須由發(fā)送人保密,同時(shí)只能由持有人所有。對(duì)稱(chēng)式的加密方法如果用于通過(guò)網(wǎng)絡(luò)傳輸加密文件,那么不管使用任何方法將密鑰告訴對(duì)方,都有可能被竊聽(tīng),而非對(duì)稱(chēng)式的加密方法則具有一定的優(yōu)越性,因?yàn)樗袃蓚€(gè)密鑰,且僅有其中的“公鑰”是可以被公開(kāi)的,接收方只需要使用自己已持有的私鑰進(jìn)行解密,這樣就可以很好的避免密鑰在傳輸過(guò)程中產(chǎn)生的安全問(wèn)題。
在目前常用的加密算法主要有:
DES:即對(duì)稱(chēng)算法,數(shù)據(jù)加密程度標(biāo)準(zhǔn),速度較快,適用場(chǎng)合為加密大量數(shù)據(jù);
3DES:基于DES基礎(chǔ)的對(duì)稱(chēng)算法,采用三個(gè)不同的密鑰對(duì)一塊數(shù)據(jù)進(jìn)行三次加密,從而達(dá)到更高的強(qiáng)度;
RC2、RC4:也是對(duì)稱(chēng)算法,但采用了變長(zhǎng)的密鑰對(duì)大量數(shù)據(jù)進(jìn)行加密,計(jì)算速度比DES快;
IDEA:國(guó)際數(shù)據(jù)加密算法,所使用128位密鑰能夠提供非常強(qiáng)的安全性能;
RSA:非對(duì)稱(chēng)算法,由RSA公司發(fā)明,是一個(gè)支持變長(zhǎng)密鑰的公共密鑰算法,需要加密的文件塊的長(zhǎng)度也是可變的;
DSA:數(shù)字簽名算法,是一種標(biāo)準(zhǔn)的DSS(數(shù)字簽名標(biāo)準(zhǔn)),嚴(yán)格來(lái)說(shuō)不算加密算法;
AES:AES為高級(jí)加密標(biāo)準(zhǔn),屬于對(duì)稱(chēng)算法的一種,也是下一代加密算法的標(biāo)準(zhǔn),他具有速度快,安全級(jí)別高的特點(diǎn),Rijndael算法是AES標(biāo)準(zhǔn)的一個(gè)實(shí)現(xiàn);
BLOWFISH:使用變長(zhǎng)的密鑰,長(zhǎng)度可達(dá)448位,運(yùn)行速度很快;
MD5:嚴(yán)格來(lái)說(shuō)不算加密算法,只能說(shuō)是摘要算法。
對(duì)稱(chēng)加密算法也叫做私鑰加密算法,他的特點(diǎn)是可以從解密密鑰中推算出來(lái)加密密鑰,與此同時(shí)解密密鑰也可以從加密密鑰通過(guò)推算而得出。問(wèn)題是,在大多數(shù)的對(duì)稱(chēng)加密算法使用中,加密密鑰與解密密鑰是相同的,真是因?yàn)檫@樣,所以這種加密算法也被稱(chēng)為秘密密鑰算法或單密鑰算法。這種算法要求發(fā)送方以及接收方在進(jìn)行通信之前,首先商定一個(gè)密鑰。由前文可知對(duì)稱(chēng)加密算法的安全性很大程度上依賴(lài)于密鑰,一旦密鑰泄漏,任何人都可以對(duì)他們發(fā)送或接收的消息進(jìn)行解密,所以在進(jìn)行通信時(shí),對(duì)密鑰的保護(hù)十分重要。
對(duì)稱(chēng)加密算法的特點(diǎn)是計(jì)算量小,進(jìn)行加密時(shí)加密速度快,同時(shí)加密的效率高。但同時(shí)缺點(diǎn)為:發(fā)送方和接收方均使用相同密鑰,所以會(huì)導(dǎo)致密鑰傳輸?shù)陌踩詿o(wú)法得到保證。除此之外,每當(dāng)用戶(hù)使用對(duì)稱(chēng)加密算法時(shí),都需要使用不同的密鑰,這樣就會(huì)直接導(dǎo)致雙方所擁有的密鑰的數(shù)量極快的增加,而大量的密鑰就會(huì)造成用戶(hù)在對(duì)密鑰進(jìn)行管理時(shí)十分困難。同時(shí),對(duì)稱(chēng)加密算法也很難在分布式網(wǎng)絡(luò)系統(tǒng)中進(jìn)行應(yīng)用,這是因?yàn)槊荑€管理難度大,從而使用成本高。
非對(duì)稱(chēng)加密算法在使用時(shí)需要同時(shí)擁有公開(kāi)密鑰和私有密鑰,公開(kāi)密鑰與私有密鑰相對(duì)應(yīng),如果在對(duì)數(shù)據(jù)的加密過(guò)程中使用了公開(kāi)密鑰,那么只有使用相對(duì)應(yīng)的私有密鑰才能解密;反之,如果在對(duì)數(shù)據(jù)進(jìn)行加密時(shí)使用了私有密鑰,也只有使用與之相對(duì)應(yīng)的公開(kāi)密鑰才能解密。非對(duì)稱(chēng)加密算法對(duì)傳信息進(jìn)行加密的基本過(guò)程是:甲方首先生成一對(duì)密鑰同時(shí)將其中的一把作為公開(kāi)密鑰;得到公開(kāi)密鑰的乙方再使用該密鑰對(duì)需要加密的信息進(jìn)行加密后再發(fā)送給甲方;甲方再使用另一把對(duì)應(yīng)的私有密鑰對(duì)加密后的信息進(jìn)行解密,這樣就實(shí)現(xiàn)了機(jī)密數(shù)據(jù)傳輸。非對(duì)稱(chēng)加密算法的另一種加密過(guò)程是:甲方使用自己的私有密鑰對(duì)信息進(jìn)行加密后再發(fā)送給乙方;乙方使用甲方提供的公開(kāi)密鑰對(duì)加密后的信息進(jìn)行解密,如果成功解密即可證實(shí)信息確實(shí)是由甲方所發(fā),并非他人冒充,這就是現(xiàn)在常用的數(shù)字簽名技術(shù)。
非對(duì)稱(chēng)加密算法的特點(diǎn)是算法強(qiáng)度復(fù)雜,其安全性依賴(lài)于算法與密鑰。由于其算法復(fù)雜,而使得加密解密的速度遠(yuǎn)遠(yuǎn)低于對(duì)稱(chēng)加密算法,因此不適用于數(shù)據(jù)量較大的情況。由于非對(duì)稱(chēng)加密算法有兩種密鑰,其中一個(gè)是公開(kāi)的,所以在密鑰傳輸上不存在安全性問(wèn)題,使得其在傳輸加密數(shù)據(jù)的安全性上又高于對(duì)稱(chēng)加密算法。
保發(fā)送者無(wú)法否認(rèn)曾發(fā)送過(guò)該信息。非對(duì)稱(chēng)加密的缺點(diǎn)則是加密解密的速度,非對(duì)稱(chēng)加密的計(jì)算速度遠(yuǎn)遠(yuǎn)慢于對(duì)稱(chēng)加密,在一些比較極端情況下,非對(duì)稱(chēng)加密的計(jì)算耗時(shí)則是對(duì)稱(chēng)加密的運(yùn)算耗時(shí)的1000倍以上。
對(duì)稱(chēng)加密算法和非對(duì)稱(chēng)加密算法在性能上各有其利弊,綜合應(yīng)用兩種算法的優(yōu)勢(shì),可以在加密數(shù)據(jù)傳輸過(guò)程中實(shí)現(xiàn)高效和安全。下面以常用的SSH加密通訊方式的加密解密過(guò)程為例進(jìn)行說(shuō)明。SSH加密通訊方式主要包括以下幾個(gè)步驟:
(1)甲方使用非對(duì)稱(chēng)加密算法生成一對(duì)密鑰并將其中的一把作為公鑰向乙方公開(kāi)。
(2)乙方使用對(duì)稱(chēng)加密算法生成一對(duì)密鑰,然后將其中的一把用甲方提供的公鑰加密后發(fā)送給甲方。
(3)甲方收到乙方發(fā)送的加密密鑰后用私鑰進(jìn)行解密,獲得乙方提供的密鑰。
(4)雙方均使用對(duì)稱(chēng)加密算法生成的兩把密鑰進(jìn)行加密數(shù)據(jù)通訊。
通過(guò)綜合使用兩種類(lèi)型的加密方式進(jìn)行加密數(shù)據(jù)通訊,既保證了密鑰傳輸過(guò)程的安全性,又兼顧了數(shù)據(jù)加密的效率。
[1]段鋼.加密與解密[J].程序員,2003(9):53-53.
[2]耿國(guó)華.算法設(shè)計(jì)與分析[M].高等教育出版社,2012.
[3]秦志光.密碼算法的現(xiàn)狀和發(fā)展研究[J].計(jì)算機(jī)應(yīng)用,2004,24(2):1-4.
[4]韋寶典,劉東蘇,王新梅.AES算法Rijndael的原理、實(shí)現(xiàn)和攻擊[J].通信技術(shù),2002(12):1002-0802.
[5]劉傳領(lǐng),范建華.RSA非對(duì)稱(chēng)加密算法在數(shù)字簽名中的應(yīng)用研究[J].通信技術(shù),2009,42(3).
[6]黃志清.網(wǎng)絡(luò)安全中的數(shù)據(jù)加密技術(shù)研究[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2000,16(5):20-21.
非對(duì)稱(chēng)加密算法最大的優(yōu)勢(shì)就在于密鑰分發(fā)手段相對(duì)簡(jiǎn)單。假設(shè)兩個(gè)用戶(hù)要互相傳輸數(shù)據(jù),首先雙方交換公鑰,如果一方用對(duì)方的公鑰加密,另一方只需用自己的私鑰解密即可。如果在一個(gè)企業(yè)中已有n個(gè)用戶(hù),那么企業(yè)需要生成n對(duì)密鑰,同時(shí)分發(fā)這n個(gè)公鑰。因?yàn)楣€是可以被公開(kāi)的,用戶(hù)所要做的只是保管好自己的私鑰,這樣密鑰的分發(fā)將變得十分簡(jiǎn)單。由于每個(gè)用戶(hù)擁有的私鑰是唯一的,所以其他用戶(hù)不但可以通過(guò)信息發(fā)送者的公鑰來(lái)驗(yàn)證信息的來(lái)源是否真實(shí),同時(shí)還可以確