國産商密算法是我國自主研發、具有自主知識産權的一系列密碼算法,具有較高安全性,由國家密碼局公開并大力推廣。我國公開的國産商用密碼算法包括SM1、SM2、SM3、SM4、SM7、SM9及祖沖之算法,其中SM2、SM3、SM4最為常用,用于對應替代RSA、DES、3DES、SHA等國際通用密碼算法體系。
SM1對稱密碼
SM1 算法是分組密碼算法,分組長度為128位,密鑰長度都為 128 比特,算法安全保密強度及相關軟硬體實作性能與 AES 相當,算法不公開,僅以IP核的形式存在于晶片中。
采用該算法已經研制了系列晶片、智能IC卡、智能密碼鑰匙、加密卡、加密機等安全産品,廣泛應用于電子政務、電子商務及國民經濟的各個應用領域(包括國家政務通、警務通等重要領域)。
SM2橢圓曲線公鑰密碼算法
SM2算法就是ECC橢圓曲線密碼機制,但在簽名、密鑰交換方面不同于ECDSA、ECDH等國際标準,而是采取了更為安全的機制。另外,SM2推薦了一條256位的曲線作為标準曲線。
SM2标準包括總則,數字簽名算法,密鑰交換協定,公鑰加密算法四個部分,并在每個部分的附錄詳細說明了實作的相關細節及示例。
SM2算法主要考慮素域Fp和F2m上的橢圓曲線,分别介紹了這兩類域的表示,運算,以及域上的橢圓曲線的點的表示,運算和多倍點計算算法。然後介紹了程式設計語言中的資料轉換,包括整數和位元組串,位元組串和比特串,域元素和比特串,域元素和整數,點和位元組串之間的資料轉換規則。詳細說明了有限域上橢圓曲線的參數生成以及驗證,橢圓曲線的參數包括有限域的選取、橢圓曲線方程參數、橢圓曲線群基點的選取等,并給出了選取的标準以便于驗證。最後給橢圓曲線上密鑰對的生成以及公鑰的驗證,使用者的密鑰對為(s,sP),其中s為使用者的私鑰,sP為使用者的公鑰,由于離散對數問題從sP難以得到s,并針對素域和二進制擴域給出了密鑰對生成細節和驗證方式。總則中的知識也适用于SM9算法。
在總則的基礎上給出了數字簽名算法(包括數字簽名生成算法和驗證算法),密鑰交換協定以及公鑰加密算法(包括加密算法和解密算法),并在每個部分給出了算法描述,算法流程和相關示例。
數字簽名算法、密鑰交換協定以及公鑰加密算法都使用了國家密管理局準許的SM3密碼雜湊算法和随機數發生器。數字簽名算法、密鑰交換協定以及公鑰加密算法根據總則來選取有限域和橢圓曲線,并生成密鑰對。
SM2算法在很多方面都優于RSA算法。
SM3雜湊算法
SM3密碼雜湊(哈希、散列)算法給出了雜湊函數算法的計算方法和計算步驟,并給出了運算示例。此算法适用于商用密碼應用中的數字簽名和驗證,消息認證碼的生成與驗證以及随機數的生成,可滿足多種密碼應用的安全需求。在SM2,SM9标準中使用。
此算法對輸入長度小于2的64次方的比特消息,經過填充和疊代壓縮,生成長度為256比特的雜湊值,其中使用了異或,模,模加,移位,與,或,非運算,由填充,疊代過程,消息擴充和壓縮函數所構成。具體算法及運算示例見SM3标準。
SM4對稱算法
此算法是一個分組算法,用于無線區域網路産品。該算法的分組長度為128比特,密鑰長度為128比特。加密算法與密鑰擴充算法都采用32輪非線性疊代結構。解密算法與加密算法的結構相同,隻是輪密鑰的使用順序相反,解密輪密鑰是加密輪密鑰的逆序。
此算法采用非線性疊代結構,每次疊代由一個輪函數給出,其中輪函數由一個非線性變換和線性變換複合而成,非線性變換由S盒所給出。其中rki為輪密鑰,合成置換T組成輪函數。輪密鑰的産生與上圖流程類似,由加密密鑰作為輸入生成,輪函數中的線性變換不同,還有些參數的差別。SM4算法的具體描述和示例見SM4标準。
SM7對稱密碼
SM7算法,是一種分組密碼算法,分組長度為128比特,密鑰長度為128比特。SM7适用于非接觸式IC卡,應用包括身份識别類應用(門禁卡、工作證、參賽證),票務類應用(大型賽事門票、展會門票),支付與通卡類應用(積分消費卡、校園一卡通、企業一卡通等)。
SM9辨別密碼算法
為了降低公開密鑰系統中密鑰和證書管理的複雜性,以色列科學家、RSA算法發明人之一Adi Shamir在1984年提出了辨別密碼(Identity-Based Cryptography)的理念。辨別密碼将使用者的辨別(如郵件位址、手機号碼、QQ号碼等)作為公鑰,省略了交換數字證書和公鑰過程,使得安全系統變得易于部署和管理,非常适合端對端離線安全通訊、雲端資料加密、基于屬性加密、基于政策加密的各種場合。2008年辨別密碼算法正式獲得國家密碼管理局頒發的商密算法型号:SM9(商密九号算法),為我國辨別密碼技術的應用奠定了堅實的基礎。
SM9算法不需要申請數字證書,适用于網際網路應用的各種新興應用的安全保障。如基于雲技術的密碼服務、電子郵件安全、智能終端保護、物聯網安全、雲存儲安全等等。這些安全應用可采用手機号碼或郵件位址作為公鑰,實作資料加密、身份認證、通話加密、通道加密等安全應用,并具有使用友善,易于部署的特點,進而開啟了普及密碼算法的大門。
ZUC祖沖之算法
祖沖之序列密碼算法是中國自主研究的流密碼算法,是運用于移動通信4G網絡中的國際标準密碼算法,該算法包括祖沖之算法(ZUC)、加密算法(128-EEA3)和完整性算法(128-EIA3)三個部分。目前已有對ZUC算法的優化實作,有專門針對128-EEA3和128-EIA3的硬體實作與優化。