非對稱加密算法介紹

非對稱加密算法在保護(hù)通信安全方面有很大的優(yōu)勢

和對稱加密算法一樣,非對稱加密算法也提供兩個加密函數(shù):數(shù)據(jù)加密和數(shù)據(jù)解密,但該算法和對稱加密算法有兩個重要的區(qū)別。首先,用于數(shù)據(jù)解密的密鑰值與用于數(shù)據(jù)加密的密鑰值不同;其次,非對稱加密算法比對稱加密算法慢數(shù)千倍,但在保護(hù)通信安全方面,非對稱加密算法卻具有對稱密碼難以企及的優(yōu)勢。

為說明這種優(yōu)勢,來回顧一下前面使用對稱加密算法的例子。

Alice使用密鑰K加密數(shù)據(jù)并將其發(fā)送給Bob,Bob收到加密的數(shù)據(jù)后,使用密鑰K對其解密以恢復(fù)原始消息。這里存在一個問題,即Alice如何將用于加密數(shù)據(jù)的密鑰值發(fā)送給Bob?

答案是,Alice發(fā)送密鑰值給Bob時必須通過獨(dú)立的安全通信信道(即沒人能監(jiān)聽到該信道中的通信)。

這種使用獨(dú)立安全信道來交換對稱加密算法密鑰的需求會帶來更多問題。

首先,如果有獨(dú)立的安全信道,為什么不直接用它發(fā)送原始數(shù)據(jù)?答案通常是安全信道的帶寬有限,如安全電話線或可信的送信人。

其次,Alice和Bob能假定他們的密鑰值可以保持多久而不泄露(即不被其他人知道)以及他們應(yīng)在何時交換新的密鑰值?

對這兩個問題的回答屬于密鑰管理的范疇。

密鑰管理

密鑰管理是使用加密算法時最棘手的問題,它不僅涉及如何將密鑰值安全地分發(fā)給所有通信方,還涉及密鑰的生命周期管理、密鑰被破解時應(yīng)采取什么措施等問題。Alice和Bob的密鑰管理需求可能并不復(fù)雜,他們可以通過電話(如果確定沒人監(jiān)聽)或通過掛號信來交換密碼。但如果Alice不僅需要與Bob安全通信,還需要與許多其他人安全通信,那么她就需要與每個人交換密鑰(通過可靠的電話或掛號信),并管理這一系列密鑰,包括記住何時交換新密鑰、如何處理密鑰泄漏和密鑰不匹配(由于使用的密鑰不正確,接收方無法解密消息)等。

當(dāng)然,這些問題不只Alice會遇到,Bob和其他每個人都會遇到,他們都需要交換密鑰并處理這些令人頭痛的密鑰管理問題(事實(shí)上,X9.17是一項(xiàng)DES密鑰管理ANSI標(biāo)準(zhǔn)[ANSIX9.17])。如果Alice要給數(shù)百人發(fā)送消息,那么事情將更麻煩,她必須使用不同的密鑰值來加密每條消息。例如,要給200個人發(fā)送通知,Alice需要加密消息200次,對每個接收方加密一次消息。顯然,在這種情況下,使用對稱加密算法來進(jìn)行安全通信的開銷相當(dāng)大。

非對稱加密算法的優(yōu)勢

非對稱加密算法的主要優(yōu)勢是使用兩個而不是一個密鑰值:一個密鑰值用來加密數(shù)據(jù),另一個密鑰值用來解密數(shù)據(jù)。這兩個密鑰值在同一個過程中生成,稱為密鑰對。用來加密消息的密鑰稱為公鑰,用來解密消息的密鑰稱為私鑰。用公鑰加密的消息只能用與之對應(yīng)的私鑰來解密,私鑰除了持有者外無人知道,而公鑰卻可通過非安全管道來發(fā)送或在目錄中發(fā)布。

仍用前面的例子來說明如何使用非對稱加密算法來交換數(shù)據(jù),Alice需要通過電子郵件給Bob發(fā)送一個機(jī)密文檔。首先,Bob使用電子郵件將自己的公鑰發(fā)送給Alice。然后Alice用Bob的公鑰對文檔加密并通過電子郵件將加密數(shù)據(jù)發(fā)送給Bob。由于任何用Bob的公鑰加密的消息只能用Bob的私鑰解密,因此即使窺探者知道Bob的公鑰,消息也仍是安全的。Bob在收到加密消息后,用自己的私鑰進(jìn)行解密從而恢復(fù)原始文檔。

下圖說明了分別使用公鑰和私鑰來加密和解密消息的過程。

非對稱加密算法介紹

如果Bob需要將編輯后的文檔發(fā)回給Alice,他可以讓Alice先將其公鑰發(fā)送給他,然后再用該公鑰對編輯后的文檔加密,并通過電子郵件將加密的文檔發(fā)回給Alice。由于只有Ali
ce的私鑰能解密該消息,并且只有Alice才有該私鑰,因此消息是安全的,不能被其他人窺探。

非對稱加密算法介紹

非對稱加密算法和對稱加密算法的重要差別

非對稱加密算法和對稱加密算法之間有一個重要的差別:Alice和Bob不需要使用獨(dú)立的安全管道交換用于加密消息的密鑰值,從而解決了對稱加密算法中一個重要的密鑰管理問題:如何將密鑰值告訴對方。

在非對稱加密算法中,用于加密消息的密鑰值是對所有人公開的。這還解決了對稱密鑰管理中另一個令人頭疼的問題:必須與每個通信方交換密鑰值。在非對稱加密算法中,任何需要給Alice發(fā)送安全消息的人都可以使用Alice的公鑰。

非對稱加密算法的加密速度慢

回想一下,非對稱加密算法和對稱加密算法之間的一個差別是,非對稱加密算法的加密速度慢得多,比對稱加密算法慢數(shù)千倍[WeiDai02]。在實(shí)際應(yīng)用中,這種問題可以通過如下方式解決:用非對稱加密算法來傳送臨時對稱密鑰值,然后使用對稱加密算法和該臨時密鑰來加密消息。這種對稱密鑰之所以是臨時的(只持續(xù)一段時間),是因?yàn)樗皇褂靡淮?,而不像傳統(tǒng)的對稱密鑰機(jī)制要求的那樣持續(xù)可用或可重復(fù)使用。

再回到前面的例子,Alice通過電子郵件給Bob發(fā)送機(jī)密文檔。Alice首先需要生成一個臨時密鑰值,用于使用對稱加密算法加密文檔。然后創(chuàng)建另一個數(shù)據(jù),即用Bob的公鑰加密該臨時密鑰值,再將這兩個數(shù)據(jù)都發(fā)送給Bob。收到數(shù)據(jù)后,Bob首先用自己的私鑰解密出臨時密鑰值,再使用該臨時密鑰值(使用對稱加密算法)來解密密文文檔以恢復(fù)原始文檔。

下圖給出了如何結(jié)合使用非對稱加密算法和對稱加密算法。

非對稱加密算法介紹

非對稱加密算法的例子有RSA、Elgamal和ECC(橢圓曲線加密算法)。

RSA是目前最常用的算法。Elgamal是另一種常用的非對稱加密算法,由Taher Elgamal于1985年發(fā)明,其基礎(chǔ)是DiffieˉHellman密鑰交換算法,后者使通信雙方能通過公開通信來推導(dǎo)出只有他們知道的 秘密密鑰值[DiffieˉHellman]。

DiffieˉHellman是Whitfield Diffie和Martin Hellman于1976年發(fā)明的,被視為第一種 非對稱加密算法,盡管非對稱加密算法的概念于6年前就已在英國提出了。DiffieˉHellman 與RSA的不同之處在于,DiffieˉHellman不是加密算法,它只是生成可用作對稱密鑰的秘密數(shù)值。在DiffieˉHellman密鑰交換過程中,發(fā)送方和接收方分別生成一個秘密的隨機(jī)數(shù),并根據(jù)隨機(jī)數(shù)推導(dǎo)出公開值,然后,雙方再交換公開值。

DiffieˉHellman算法的基礎(chǔ)是具備生成共享密鑰的能力。只要交換了公開值,雙方就能使用自己的私有數(shù)和對方的公開值來生成 對稱密鑰,稱為共享密鑰,對雙方來說,該對稱密鑰是相同的,可以用于使用對稱加密算法 加密數(shù)據(jù)。與RSA相比,DiffieˉHellman的優(yōu)勢之一是每次交換密鑰時都使用一組新值,而 使用RSA算法時,如果攻擊者獲得了私鑰,那么他不僅能解密之前截獲的消息,還能解密之后 的所有消息。然而,RSA可以通過認(rèn)證(如使用X.509數(shù)字證書)來防止中間人攻擊,但Diff ieˉHellman在應(yīng)對中間人攻擊時非常脆弱。

加密算法的常見挑戰(zhàn)

將安全應(yīng)用于諸如Web應(yīng)用服務(wù)器等計算系統(tǒng)時,安全設(shè)計人員必須克服因使用本章前 面所討論的安全工具而面臨的挑戰(zhàn)。在實(shí)施加密算法(如對稱加密算法)時,設(shè)計人員必須 首先對工具進(jìn)行研究并避開其弱點(diǎn),例如,某些加密算法使用一組“弱”密鑰,即比較容易 被狡猾攻擊者破解的密鑰值。使用安全解決方案時,安全設(shè)計人員所面臨的挑戰(zhàn)有,恰當(dāng)?shù)?生成用作密鑰值的隨機(jī)數(shù)、密鑰管理、證書撤銷問題、信任模型和威脅建模。

小知識之對稱加密算法:

對稱加密算法是一種隱藏數(shù)據(jù)含義的數(shù)據(jù)變換機(jī)制,該算法提供兩個函數(shù):數(shù)據(jù)加密和數(shù)據(jù)解密。它們之所以稱為對稱的,是因?yàn)橄l(fā)送方和接收方必須使用相同的密鑰來加密和解密數(shù)據(jù)。

點(diǎn)擊對稱加密算法介紹