
常見的加密算法包括對稱加密算法,公鑰加密算法和加密哈希算法,具體詳情如下:
對稱密碼算法
對稱密碼算法其加密和解密兩方的密鑰是“對稱”的。這如同往個上了鎖的箱子裏放物品,放入時需要用鑰匙打開;想要取出物品時,還需要用同樣的鑰匙開鎖。
從傳統的習慣看,加密和解密必然使用同一個密鑰,因為只能用同樣的鑰匙開一把鎖。因此,傳統的密碼算法都是對稱形式的密碼算法。
針對不同的數據類型和應用環境,對稱密碼有兩種主要形式。
(一)序列密碼
序列密碼適用於實時性要求高的場景,如電話、視頻通信等序列密碼加密過程很簡單,就是將密鑰和明文數據的字母逐個進行“相加”運算;解密再用同樣的密鑰對密文進行逐個字母的“相減”運算。序列密碼需要快速產生一個足夠長的密鑰,因為有多長的明文,就要有多長的密鑰。為此,序列密碼的主要任務是從一個短的初始密鑰,快速產生一個足夠長的“密鑰流”。因此,序列密碼也叫作“流密碼”。
ZUC中國發佈的算法商業密碼標準算法中的序列密碼算法也稱為祖先算法。ZUC算法體現了序列密碼設計上的开展趨勢,具有較大安全餘量,並且算法速度快,軟硬件實現性能都比較好。ZUC算法已作為國際第四代移動通信加密標準使用。
(二)分組密碼
分組密碼是將明文數據分成多個等長度的塊,這樣的數據塊叫作分組它的加解密過程一般採用混淆和擴散部件的多次選代方式。但分組密碼不用產生很長的密鑰流。它的特點是適應能力強,可用於多種計算平台,易於標準化,多用於大數據量的加密場景。
SM4算法是我國頒佈的商用密碼標準算法中的分組密碼算法。SM4算法包長度為128位,密鑰長度為128位,解密算法與加密算法相同。它具有算法速度快、實現效率高、安全性好等優點,主要用於保護數據的機密性。
二、公鑰密碼算法
公鑰密碼算法,又稱非對稱密碼算法,該算法很好地解決了對稱密碼算法存在的密鑰管理難題。
(一)公鑰加密算法
公鑰加密算法加密和解密使用不同的密鑰。其中加密的密鑰被公開,稱為公鑰;解密的密鑰被保密,稱為私鑰。公鑰和私鑰是密切關聯的,從私鑰可推導出公鑰,但從公鑰不能推導出私鑰。
用戶使用公鑰加密算法時,公鑰公開,私鑰保密。需要向誰秘密通信,只需用誰的公鑰對消息進行加密,使用相應私鑰對密文進行解密。
公鑰加密的速度一般比對稱加密慢,主要用於短數據的加密。例如,用公鑰加密算法建立共享密鑰,即將是對稱密碼該密鑰被視為一條消息,用公鑰加密並發送給另一方。然後另一方對解密得到對稱密碼密鑰,用於對數據進行對稱加密和解密。
SM2算法是中國發佈的商業加密標準算法中的公鑰加密算法。SM2算法基於橢圓曲線上離散對數計算困難問題,密鑰長度為256位,密鑰長度短,安全性高的性特徵。
(二)數字簽名算法
數字簽名算法也稱電子簽名算法,可以實現類似於手寫簽名的功能,但藉助數學方法,比手寫簽名更安全、功能更強。
在數字簽名算法中,每個簽名者都有一對公鑰和私鑰,公鑰是公共的,私鑰是保密的。與公鑰加密使用公鑰和私鑰的順序不同,數字簽名使用私鑰對消息進行簽名,這一過程稱為簽名過程;使用公鑰對簽名進行驗證,這一過程稱為驗證過程。
數字簽名算法可用於確認完整性數據,簽名者的身份簽名行為的真實性和不可否認性。由於數字簽名是使用私鑰生成的,因此沒有私鑰可以生成有效簽名,即數字簽名是不可偽造的。因因為簽名者有一個一一對應與公鑰,您可以使用公鑰驗證數字簽名,因此合法的簽名是可公開驗證的。因為只能用簽名者的公鑰(而不是其他人的公鑰)進行簽名的驗證,所以簽名者不能否認自己簽過的簽名。由於一般需要簽名的消息或文件很長,實際中數字簽名算法都要將消息用雜湊算法進行壓縮,再進行簽名。
SM2算法中的數字簽名算法已廣泛應用於中國的電子認證領域。此外,SM9算法是中國發佈的商業加密算法中的另一種公鑰加密算法,它是一組基於身份的公鑰加密算法,也稱為識別密碼,SM9算法使用256位大小的橢圓曲線。
三、雜湊算法
哈希算法是將任意長的消息壓縮為固定長度的短消息的函數,諸如抗衝突性和單向性的屬性函數的輸出被稱為摘要值或摘要。散列算法的基本思想是使摘要值成為輸入字符串的緊湊表示。哈希算法的防衝突是指找到兩個不同的消息,使二者的摘要值相同,在計算上是不可行的;或者對一個給定的消息,尋找另個不同消息,使二者摘要值相同,在計算上也是不可行的。單向性這意味着無法從摘要值獲取輸入消息。
哈希算法有很多功能,可以用於數字簽名:先對消息進行壓縮後,再對摘要值進行簽名,因為很長的文件不能一頁一頁地簽名;它可以檢測消息的完整性,確定消息的摘要值是否已被篡改;它可以用於密碼存儲,使用單向性功能是即使公開了摘要值,密碼也不會暴露。
SM3算法是商業密碼標準中的中國哈希算法。SM3算法採用成熟的技術設計,顺利获得多次簡單操作疊代實現,摘要值為256位長,該算法可用於數字簽名,密碼安全存儲和偽隨機數生成。
