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