原文標(biāo)題:嵌入式算法---國(guó)家商用密碼SM算法
1、國(guó)家商用密碼
數(shù)據(jù)加密和解密涉及的算法大致可分為以下三大類:?jiǎn)蜗蛏⒘兴惴ǎs湊算法),對(duì)稱加密算法,公開(kāi)密鑰加密算法(非對(duì)稱加密算法)。大部分算法出自國(guó)外,事實(shí)上我國(guó)國(guó)家密碼管理局也發(fā)布了一系列國(guó)產(chǎn)商用密碼算法,即SM系列,但是簡(jiǎn)稱國(guó)密算法,命名上太過(guò)隨意。
國(guó)密算法包括 SM1、SM2、SM3 、SM4、SM7、SM9、ZUC(祖沖之加密算法),其中SM1 和 SM7 算法不公開(kāi),其余算法已成為 ISO/IEC 國(guó)際標(biāo)準(zhǔn)。
2、國(guó)密算法有哪些
SM1、SM4、SM7、ZUC是對(duì)稱算法,SM2、SM9是非對(duì)稱算法,SM3是哈希算法,與國(guó)際通用算法的關(guān)系如下:
2.1 SM1對(duì)稱加密算法
SM1 算法是分組密碼算法,對(duì)稱加密,分組長(zhǎng)度和密鑰長(zhǎng)度都為 128 位,算法安全保密強(qiáng)度及相關(guān)軟硬件實(shí)現(xiàn)性能與 AES 相當(dāng)。該算法不公開(kāi),僅以IP核的形式存在于芯片中,需要通過(guò)加密芯片的接口進(jìn)行調(diào)用,諸如智能IC卡、智能密碼鑰匙、加密卡等安全產(chǎn)品,廣泛應(yīng)用于電子政務(wù)、電子商務(wù)及國(guó)民經(jīng)濟(jì)的各個(gè)應(yīng)用領(lǐng)域。
2.2 SM2公鑰密碼算法
SM2為橢圓曲線(ECC)公鑰加密算法,非對(duì)稱加密,用來(lái)替換 RSA 算法,在不少政府網(wǎng)站會(huì)見(jiàn)到此類加密算法。
2.3 SM3雜湊算法
SM3 為密碼雜湊算法,采用密碼散列(hash)函數(shù)標(biāo)準(zhǔn),用于替代 MD5/SHA-1/SHA-2 等國(guó)際算法,是在 SHA-256 基礎(chǔ)上改進(jìn)實(shí)現(xiàn)的一種算法,消息分組長(zhǎng)度為 512 位,摘要值長(zhǎng)度為 256 位。在商用密碼體系中,SM3 主要用于數(shù)字簽名及驗(yàn)證、消息認(rèn)證碼生成及驗(yàn)證、隨機(jī)數(shù)生成等。據(jù)國(guó)家密碼管理局表示,其安全性及效率要高于 MD5 算法和 SHA-1 算法,與 SHA-256 相當(dāng)。在SM2,SM9標(biāo)準(zhǔn)中使用。
2.4 SM4對(duì)稱加密算法
SM4 為無(wú)線局域網(wǎng)標(biāo)準(zhǔn)的分組加密算法,對(duì)稱加密,用于替代 DES/AES 等國(guó)際算法,SM4 算法與 AES 算法具有相同的密鑰長(zhǎng)度和分組長(zhǎng)度,均為 128 位,故對(duì)消息進(jìn)行加解密時(shí),若消息長(zhǎng)度過(guò)長(zhǎng),需要進(jìn)行分組,要消息長(zhǎng)度不足,則要進(jìn)行填充。加密算法與密鑰擴(kuò)展算法都采用 32 輪非線性迭代結(jié)構(gòu),解密算法與加密算法的結(jié)構(gòu)相同,只是輪密鑰的使用順序相反,解密輪密鑰是加密輪密鑰的逆序。
2.5 SM7對(duì)稱加密算法
SM7 算法不公開(kāi),是一種分組密碼算法, 分組長(zhǎng)度為128比特,密鑰長(zhǎng)度為128比特。SM7適用于非接觸式IC卡,應(yīng)用包括身份識(shí)別類應(yīng)用(門禁卡、工作證、參賽證),票務(wù)類應(yīng)用(大型賽事門票、展會(huì)門票),支付類應(yīng)用(積分消費(fèi)卡、校園一卡通、企業(yè)一卡通等)。
2.6 SM9標(biāo)識(shí)密碼算法
SM9 為標(biāo)識(shí)加密算法(Identity-Based Cryptography),非對(duì)稱加密,標(biāo)識(shí)加密將用戶的標(biāo)識(shí)(如微信號(hào)、郵件地址、手機(jī)號(hào)碼等)作為公鑰,省略了交換數(shù)字證書(shū)和公鑰過(guò)程,使得安全系統(tǒng)變得易于部署和管理,適用于互聯(lián)網(wǎng)應(yīng)用的各種新興應(yīng)用的安全保障,如基于云技術(shù)的密碼服務(wù)、電子郵件安全、智能終端保護(hù)、物聯(lián)網(wǎng)安全、云存儲(chǔ)安全等等。這些安全應(yīng)用可采用手機(jī)號(hào)碼或郵件地址作為公鑰,實(shí)現(xiàn)數(shù)據(jù)加密、身份認(rèn)證、通話加密、通道加密等。在商用密碼體系中,SM9 主要用于用戶的身份認(rèn)證,據(jù)新華網(wǎng)公開(kāi)報(bào)道,SM9 的加密強(qiáng)度等同于 3072 位密鑰的 RSA 加密算法。
2.7 ZUC祖沖之流密碼算法
ZUC 為流密碼算法,對(duì)稱加密,該機(jī)密性算法可適用于 3GPP LTE 通信中的加密和解密,該算法包括祖沖之算法(ZUC)、機(jī)密性算法(128-EEA3)和完整性算法(128-EIA3)三個(gè)部分。用來(lái)替換RC4算法。
3、源碼
商密算法中除SM1和SM7不公開(kāi)外,其他幾個(gè)開(kāi)源。商用密碼源碼地址:
http://www.scctc.org.cn/templates/General/index.aspx?nodeid=73
包括源碼、范例,免責(zé)聲明等信息,可以很方便的移植到C嵌入式軟件中。
4、小節(jié)
密碼算法作為國(guó)家戰(zhàn)略資源,在大數(shù)據(jù)和云計(jì)算的時(shí)代,對(duì)信息的保護(hù)尤其重要。國(guó)家商密算法可以替代部分常用的非國(guó)產(chǎn)算法,但應(yīng)用不是很普及。