
公鑰密碼算法又叫非對稱密碼算法,打破了對稱密碼算法加密與解密必須用相同密鑰的限制,不錯地處理了對稱密碼算法的密鑰管理難題。公鑰密碼算法一般包括公鑰加密算法、數字簽名算法和密鑰協商算法。密鑰協商算法一般基於公鑰加密算法,結合特定密碼協議,來協商通信雙方共同用的密鑰。
(一)公鑰加密算法
公鑰加密算法加密與解密用不一樣的密鑰。其中加密的密鑰被公開,叫做公鑰;解密的密鑰被保密,叫做私鑰。公鑰與私鑰是密切關聯的,從私鑰可推導出公鑰,反之不行。
在應用公鑰加密算法時,每個用戶均有自己的一對公鑰與私鑰,公鑰公開,私鑰保密。需向誰秘密通信,只需用誰的公鑰對消息加密,有相應私鑰的人可解密得到明文,而沒有相應私鑰的人都不能解密。如果說對稱密碼像帶鎖的箱子,加解密用同一個鑰匙,那麼公鑰加密就如同換成帶投遞口的私人報箱,任何人可從投遞口放入消息,但只有擁有鑰匙的人才能打開報箱。
公鑰加密的速度一般比對稱加密慢,主要用於短數據的加密。例如,用公鑰加密算法建立共享密鑰,即把對稱密碼的密鑰當作消息,用公鑰加密後發給對方。對方解密後得到對稱密碼的密鑰,再用它進行數據的對稱加解密。
SM2算法是我國頒佈的商用密碼標準算法中的公鑰密碼算法。SM2算法基於橢圓曲線上離散對數計算困難問題,密鑰長度是256bit,具有密鑰長度短、安全性高等特點。SM2算法中的公鑰加密算法可應用於數據加解密與密鑰協商等。
(二)數字簽名算法
數字簽名算法也叫電子簽名算法,可實現類似於手寫簽名的功能,但藉助數學方法,比手寫簽名更安全、功能更強。
在應用數字簽名算法時,每個簽名者均有一對公鑰與私鑰,公鑰公開,私鑰保密。與公鑰加密用公鑰與私鑰的順序不同,數字簽名用私鑰對消息簽名,這一過程稱為簽名過程;用公鑰驗證簽名,這一過程叫做驗證過程。
數字簽名算法可用於確認數據的完整性、簽名者身份的真實性與簽名行為的不可否認性等。因為數字簽名是用私鑰產生的,沒有私鑰不能產生有效的簽名,所以數字簽名是不可偽造的。因為簽名者和公鑰有一一對應關係,可用公鑰對數字簽名公開驗證,因此合法的簽名是能公開驗證的。因為只能用簽名者的公鑰驗證簽名,所以簽名者不能否認自己簽過的簽名。由於一般需簽名的消息或文件很長,實際中數字簽名算法都要把消息用雜湊算法壓縮,再簽名。
SM2算法中的數字簽名算法已在我國電子認證領域廣泛應用。此外,SM9算法是我國頒佈的商用密碼算法中的另一種公鑰密碼算法,它是一組基於身份標識的公鑰密碼算法,也被叫作標識密碼。SM9算法採用規模為256比特的橢圓曲線。
