對(duì)稱與非對(duì)稱加密算法有何不同?
問:對(duì)稱加密(encryption)和非對(duì)稱加密算法之間有什么區(qū)別,尤其是涉及到加密、簽名和哈希(hash)時(shí)?
答:在談到加密的時(shí)候,最新的不一定是最好的。你應(yīng)該選擇那種合適的、已經(jīng)被大量公開分析和測試過的加密算法,因?yàn)樵诿艽a學(xué)領(lǐng)域是沒有機(jī)會(huì)去嘗試一個(gè)新算法的。讓我們來看看一些已經(jīng)被廣泛應(yīng)用的算法。
對(duì)絕大多數(shù)人來說,加密就是將明文轉(zhuǎn)換為密文的過程,用密鑰(key)或者密碼(secret)來對(duì)內(nèi)容進(jìn)行加密和解密。這就是對(duì)稱加密,相對(duì)于其他類型的加密方法(如,非對(duì)稱加密),它速度更快。在對(duì)稱密匙加密中,應(yīng)用最為廣泛的是AES(高級(jí)加密標(biāo)準(zhǔn)),它包含三個(gè)加密模塊:AES-128、AES-192和AES-256,其中任何一種都足以有效保護(hù)政府的機(jī)密(SECRET)信息,最高機(jī)密(TOP SECRET)采用的是192位或者256位長度的密鑰。
對(duì)稱密匙加密最大的缺點(diǎn)是:所有參與的部門在他們解密前必須交換他們用于加密的密鑰。這要求必須安全地發(fā)布和管理大量密鑰數(shù)據(jù),也意味著大多數(shù)的密碼服務(wù)還需要其他類型的加密算法。例如為了具備不可抵賴性(non-repudiation),Secure MIME(S/MIME)采用了一種非對(duì)稱算法(公鑰/私鑰算法),還使用了一種對(duì)稱算法來對(duì)隱私和數(shù)據(jù)進(jìn)行有效地保護(hù)。
非對(duì)稱加密算法采用兩個(gè)相互依賴的密鑰:一個(gè)進(jìn)行加密,另一個(gè)進(jìn)行解密。這種相互依賴的關(guān)系提供了一些不同特性,其中最重要的也許是數(shù)字簽名,它可以確保一條信息被某個(gè)特定的實(shí)體或者遠(yuǎn)程授權(quán)的系統(tǒng)或者用戶創(chuàng)建。RSA(Rivest,Shamir and Adleman)非對(duì)稱加密算法被廣泛地應(yīng)用于電子商務(wù)協(xié)議(如SSL),考慮到RSA提供了充分長的密鑰并利用了最新的實(shí)現(xiàn)方式,它被認(rèn)為是安全的。由于RSA比對(duì)稱密碼要慢很多,所以典型的做法是對(duì)數(shù)據(jù)使用對(duì)稱算法進(jìn)行加密,然后再使用RSA算法對(duì)較短的對(duì)稱密匙進(jìn)行加密。這使得解密數(shù)據(jù)所需的密鑰可以安全地隨對(duì)稱加密數(shù)據(jù)一起傳到另一方。
在某種程度上,一個(gè)加密哈希的功能與其他加密算法有所不同。例如,它可以返回一個(gè)數(shù)據(jù)、一個(gè)文件或者信息的值。一個(gè)好的哈希算法能夠避免針對(duì)某個(gè)哈希值產(chǎn)生一個(gè)初始輸入,并禁止通過哈希值逆推出初始輸入。MD5和SHA-1曾是被廣泛應(yīng)用的哈希算法,但現(xiàn)在它們的加密強(qiáng)度都不夠了,已被SHA-244、SHA-256、SHA-384或SHA-512所代替(這些算法有時(shí)會(huì)被統(tǒng)一看成是SHA-2算法)。微軟甚至表示,早在2005年它就禁止開發(fā)者在任何場合都使用DES、MD4和MD5,在某些情況下甚至禁止使用SHA-1加密算法。雖然針對(duì)SHA-2的各個(gè)版本還未出現(xiàn)任何攻擊報(bào)告,但它們在算法上和SHA-1很相似,所以SHA-3在未來幾年將會(huì)以一種和AES相似的方式被選擇成為新的哈希方式。正如你所能看到的,密碼學(xué)領(lǐng)域總是在不斷的變化,并始終和最新的技術(shù)發(fā)展保持一致,你需要做的是緊跟美國國家標(biāo)準(zhǔn)與技術(shù)研究院(National Institute of Standards and Technology)這類機(jī)構(gòu)所發(fā)出的消息和建議。
【編輯推薦】