定義
1976年,美國學者Dime和Henman為解決信息公開傳送和密鑰管理問題,提出一種新的密鑰交換協定,允許在不安全的媒體上的通訊雙方交換信息,安全地達成一致的密鑰,這就是“公開密鑰系統”。
與對稱加密算法不同,非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)。公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,那么只有用對應的公開密鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加密算法。
工作過程
如下圖所示,甲乙之間使用非對稱加密的方式完成了重要信息的安全傳輸。
![非對稱加密工作過程簡要示意圖](/img/8/87a/wZwpmLxIjM5cTMxEDO2UzM1UTM1QDN5MjM5ADMwAjMwUzLxgzL1AzLt92YucmbvRWdo5Cd0FmLzE2LvoDc0RHa.jpg)
1、乙方生成一對密鑰(公鑰和私鑰)並將公鑰向其它方公開。
2、得到該公鑰的甲方使用該密鑰對機密信息進行加密後再傳送給乙方。
3、乙方再用自己保存的另一把專用密鑰(私鑰)對加密後的信息進行解密。乙方只能用其專用密鑰(私鑰)解密由對應的公鑰加密後的信息。
在傳輸過程中,即使攻擊者截獲了傳輸的密文,並得到了乙的公鑰,也無法破解密文,因為只有乙的私鑰才能解密密文。
同樣,如果乙要回復加密信息給甲,那么需要甲先公布甲的公鑰給乙用於加密,甲自己保存甲的私鑰用於解密。
優缺點
非對稱加密與對稱加密相比,其安全性更好:對稱加密的通信雙方使用相同的秘鑰,如果一方的秘鑰遭泄露,那么整個通信就會被破解。而非對稱加密使用一對秘鑰,一個用來加密,一個用來解密,而且公鑰是公開的,秘鑰是自己保存的,不需要像對稱加密那樣在通信之前要先同步秘鑰。
非對稱加密的缺點是加密和解密花費時間長、速度慢,只適合對少量數據進行加密。
在非對稱加密中使用的主要算法有:RSA、Elgamal、背包算法、Rabin、D-H、ECC(橢圓曲線加密算法)等。
不同算法的實現機制不同,可參考對應算法的詳細資訊。