謝宗曉 董坤祥 甄杰
1 概述
《中華人民共和國密碼法》第六條中規(guī)定:密碼分為核心密碼、普通密碼和商用密碼。同時(shí),在第七條和第八條中規(guī)定:核心密碼、普通密碼屬于國家秘密,商用密碼用于保護(hù)不屬于國家秘密的信息。因此,在常見應(yīng)用中,商用密碼得到了大面積的推廣,以至于,在實(shí)踐中,提到“國密”,經(jīng)常就被默認(rèn)為國產(chǎn)商用密碼算法。
在現(xiàn)代密碼系統(tǒng)中,密碼算法、密碼協(xié)議和密鑰管理是三個(gè)不可或缺的部分,而在這三者之中,最為核心的毫無疑問就是密碼算法。雖然實(shí)踐證明,絕大部分的安全漏洞都產(chǎn)生于實(shí)現(xiàn)和部署過程中,但是,算法的安全與否,直接決定了一個(gè)密碼系統(tǒng)的基礎(chǔ)是否安全。例如,選用SHA-1、MD4、MD5、RC4和密鑰長(zhǎng)度小于2048位的RSA等不安全的算法,不可能實(shí)現(xiàn)安全的密碼系統(tǒng)。
已經(jīng)發(fā)布的國產(chǎn)商用密碼算法,按照類別可以分為:1)對(duì)稱密碼算法,主要包括ZUC和SM4;2)非對(duì)稱密碼算法,主要包括SM2和SM9;3)密碼雜湊算法,主要包括SM3。
2 對(duì)稱密碼算法
對(duì)稱密碼(symmetric cryptography)是用相同的密鑰(或方法)進(jìn)行加密解密,這在邏輯上非常清晰,也最直觀,有時(shí)候也被稱之為共享密鑰密碼,對(duì)稱密碼算法的基本過程如圖1所示。
已經(jīng)發(fā)布國產(chǎn)商用密碼算法中屬于對(duì)稱密碼算法的有ZUC和SM4。
ZUC(祖沖之密碼算法)屬于序列密碼,也稱為“流密碼”,與之類似的國外密碼算法如RC41)。ZUC對(duì)應(yīng)的國家標(biāo)準(zhǔn)、行業(yè)標(biāo)準(zhǔn),如表1所示。
SM4屬于分組密碼,也稱為“塊密碼”,與之類似的國外密碼算法如DES(數(shù)據(jù)加密標(biāo)準(zhǔn)),TDEA/3DES(三重?cái)?shù)據(jù)加密標(biāo)準(zhǔn))以及AES(高級(jí)加密標(biāo)準(zhǔn))等。SM4對(duì)應(yīng)的國家標(biāo)準(zhǔn)、行業(yè)標(biāo)準(zhǔn),如表2所示。
在安全性上,SM4-128與AES-128差不多,當(dāng)然,AES支持更高的安全強(qiáng)度。但是SM4具備一個(gè)很優(yōu)良的特征,加密和解密的過程基本相同,只需要將密鑰的順序倒置即可實(shí)現(xiàn),AES算法的加密算法和解密算法則不一致。存在類似數(shù)學(xué)特征的算法,又如,用于公鑰加密和數(shù)字簽名的RSA算法,兩者存在完美的逆序。
3 非對(duì)稱密碼算法
公鑰密碼又稱為非對(duì)稱密碼(asymmetric cryptography),最典型的公鑰密碼用法是,發(fā)送者用公鑰加密,接收者用私鑰解密。公鑰一般是公開的,不必?fù)?dān)心竊聽,私鑰又不存在傳輸?shù)膯栴}。這個(gè)思路創(chuàng)造性地解決了對(duì)稱密碼中難以處理的密鑰配送問題2)。用于傳輸消息的公鑰密碼工作過程如圖2所示。
已經(jīng)發(fā)布國產(chǎn)商用密碼算法中屬于對(duì)稱密碼算法的有SM2和SM9。
SM2為橢圓曲線密碼(Elliptic Curve Eryptography,ECC)算法,其數(shù)學(xué)基礎(chǔ)為橢圓曲線離散對(duì)數(shù)問題。RSA算法,其數(shù)學(xué)基礎(chǔ)為大整數(shù)的質(zhì)因數(shù)分解。兩者比較,橢圓曲線密碼算法所需要的密鑰長(zhǎng)度比較短,也就是說,同樣的密鑰長(zhǎng)度,橢圓曲線密碼可以提供更高等級(jí)的安全。SM2對(duì)應(yīng)的國家標(biāo)準(zhǔn)、行業(yè)標(biāo)準(zhǔn),如表3所示。
基于SM2算法的數(shù)字簽名技術(shù),在國內(nèi),尤其是金融行業(yè)等,數(shù)字認(rèn)證領(lǐng)域已經(jīng)得到廣泛的應(yīng)用,逐步替代了基于RSA算法的數(shù)字簽名。
SM9為標(biāo)識(shí)密碼(Identity-Based Cryptograph,IBC)算法,標(biāo)識(shí)密碼算法主要為了解決傳統(tǒng)PKI(Public Key Infrastructure,公鑰基礎(chǔ)設(shè)施)體系中存在大量數(shù)字證書的交換問題,由于標(biāo)識(shí)密碼中,公鑰是基于用戶的唯一特定的身份標(biāo)識(shí),這樣就不再依賴于數(shù)字證書,即不再依賴于簽名的公鑰。SM9對(duì)應(yīng)的國家標(biāo)準(zhǔn)、行業(yè)標(biāo)準(zhǔn),如表4所示。
SM9中的數(shù)字簽名算法基于橢圓曲線對(duì)實(shí)現(xiàn),其安全性是基于橢圓曲線雙線性映射的性質(zhì),目前業(yè)界尚未發(fā)現(xiàn)顯著影響雙線性對(duì)密碼系統(tǒng)應(yīng)用的安全性風(fēng)險(xiǎn),就安全性而言,SM9高于同類算法。
4 密碼雜湊算法
密碼雜湊算法也被稱作“雜湊算法”“散列算法”或“哈希算法”。在GM/Z 4001—2013《密碼術(shù)語》中,上述幾個(gè)術(shù)語對(duì)應(yīng)的英文都是hash algorithm,其主要功能是將任意長(zhǎng)度的比特串映射到固定長(zhǎng)的比特串。
已經(jīng)發(fā)布國產(chǎn)商用密碼算法中屬于密碼雜湊算法的有SM3,SM3對(duì)應(yīng)的國家標(biāo)準(zhǔn)、行業(yè)標(biāo)準(zhǔn),如表5所示。
國外密碼雜湊算法主要有MD5和SHA(Secure Hash Algorithm,安全雜湊算法)系列,如上文所述,MD5和SHA-1已經(jīng)證明不安全,雖然目前尚未發(fā)現(xiàn)對(duì)SHA-2有效攻擊方法,但是鑒于SHA-1和SHA-2結(jié)構(gòu)相似,從2012年開始,NIST宣布了新的雜湊算法SHA-3。
5 小結(jié)
綜上所述,目前發(fā)布的國產(chǎn)商業(yè)密碼算法主要包括ZUC、SM2、SM3、SM4和SM9,其類型涵蓋了對(duì)稱密碼算法、非對(duì)稱密碼算法和密碼雜湊算法,基本可以滿足日常應(yīng)用的需要,無論是在算法的安全性上,還是在算法效率上,都比國外密碼算法要更勝一籌。
(注:本文僅做學(xué)術(shù)探討,與作者所在單位觀點(diǎn)無關(guān))
參考文獻(xiàn)
[1] 霍煒,郭啟全,馬原.商用密碼應(yīng)用與安全性評(píng)估[M].北京:中國工信出版社/電子工業(yè)出版社,2020.
[2] 鄭昉昱,林璟鏘,魏榮,等.密碼應(yīng)用安全技術(shù)研究及軟件密碼模塊檢測(cè)的討論[J].密碼學(xué)報(bào),2020,7(3):290-310.
[3] 謝宗曉,甄杰.公鑰基礎(chǔ)設(shè)施(PKI)國家標(biāo)準(zhǔn)解析[J].中國質(zhì)量與標(biāo)準(zhǔn)導(dǎo)報(bào), 2018(12):18-21.
[4] 謝宗曉,劉琦.公鑰基礎(chǔ)設(shè)施(PKI)國際標(biāo)準(zhǔn)進(jìn)展[J].金融電子化,2018(10):56-58.
[5] 謝宗曉,董坤祥,甄杰.公鑰基礎(chǔ)設(shè)施(PKI)的發(fā)展過程及其架構(gòu)[J].中國質(zhì)量與標(biāo)準(zhǔn)導(dǎo)報(bào), 2020(5):17-20.
中國質(zhì)量與標(biāo)準(zhǔn)導(dǎo)報(bào)2020年6期