一、概述
由于項(xiàng)目的需求,需要集成國密加解密,于是對(duì)國密又溫故知新了一遍。同時(shí)整理了一下國密的一些算法。
本文主要從國密相關(guān)算法的簡介、應(yīng)用系統(tǒng)的集成、工具類的封裝等方面入手,對(duì)國密進(jìn)行深入的學(xué)習(xí)。
-
為了保障商用密碼的安全性,國家密碼局制定了一系列密碼標(biāo)準(zhǔn),包括:SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖沖之密碼算法(ZUC) 等。
-
SM1、SM4、SM7、祖沖之密碼算法(ZUC):對(duì)稱算法。
-
SM2、SM9:非對(duì)稱算法。
-
SM3:哈希算法。
-
SM1、SM7算法不公開,調(diào)用該算法時(shí),需要通過加密芯片的接口進(jìn)行調(diào)用。
二、分類概述
3.1、SM1對(duì)稱密碼
- SM1 算法是分組密碼算法,分組長度為128位,密鑰長度都為 128 比特,算法安全保密強(qiáng)度及相關(guān)軟硬件實(shí)現(xiàn)性能與 AES 相當(dāng),算法不公開,僅以IP核的形式存在于芯片中。
- 采用該算法已經(jīng)研制了系列芯片、智能IC卡、智能密碼鑰匙、加密卡、加密機(jī)等安全產(chǎn)品,廣泛應(yīng)用于電子政務(wù)、電子商務(wù)及國民經(jīng)濟(jì)的各個(gè)應(yīng)用領(lǐng)域(包括國家政務(wù)通、警務(wù)通等重要領(lǐng)域)。
3.2、SM2橢圓曲線公鑰密碼算法
- SM2算法就是ECC橢圓曲線密碼機(jī)制,但在簽名、密鑰交換方面不同于ECDSA、ECDH等國際標(biāo)準(zhǔn),而是采取了更為安全的機(jī)制。另外,SM2推薦了一條256位的曲線作為標(biāo)準(zhǔn)曲線。
- SM2標(biāo)準(zhǔn)包括總則,數(shù)字簽名算法,密鑰交換協(xié)議,公鑰加密算法四個(gè)部分,并在每個(gè)部分的附錄詳細(xì)說明了實(shí)現(xiàn)的相關(guān)細(xì)節(jié)及示例。
- SM2算法主要考慮素域Fp和F2m上的橢圓曲線,分別介紹了這兩類域的表示,運(yùn)算,以及域上的橢圓曲線的點(diǎn)的表示,運(yùn)算和多倍點(diǎn)計(jì)算算法。然后介紹了編程語言中的數(shù)據(jù)轉(zhuǎn)換,包括整數(shù)和字節(jié)串,字節(jié)串和比特串,域元素和比特串,域元素和整數(shù),點(diǎn)和字節(jié)串之間的數(shù)據(jù)轉(zhuǎn)換規(guī)則。
- 詳細(xì)說明了有限域上橢圓曲線的參數(shù)生成以及驗(yàn)證,橢圓曲線的參數(shù)包括有限域的選取,橢圓曲線方程參數(shù),橢圓曲線群基點(diǎn)的選取等,并給出了選取的標(biāo)準(zhǔn)以便于驗(yàn)證。最后給橢圓曲線上密鑰對(duì)的生成以及公鑰的驗(yàn)證,用戶的密鑰對(duì)為(s,sP),其中s為用戶的私鑰,sP為用戶的公鑰,由于離散對(duì)數(shù)問題從sP難以得到s,并針對(duì)素域和二元擴(kuò)域給出了密鑰對(duì)生成細(xì)節(jié)和驗(yàn)證方式。總則中的知識(shí)也適用于SM9算法。
- 在總則的基礎(chǔ)上給出了數(shù)字簽名算法(包括數(shù)字簽名生成算法和驗(yàn)證算法),密鑰交換協(xié)議以及公鑰加密算法(包括加密算法和解密算法),并在每個(gè)部分給出了算法描述,算法流程和相關(guān)示例。
- 數(shù)字簽名算法,密鑰交換協(xié)議以及公鑰加密算法都使用了國家密管理局批準(zhǔn)的SM3密碼雜湊算法和隨機(jī)數(shù)發(fā)生器。數(shù)字簽名算法,密鑰交換協(xié)議以及公鑰加密算法根據(jù)總則來選取有限域和橢圓曲線,并生成密鑰對(duì)。
- SM2算法在很多方面都優(yōu)于RSA算法(RSA發(fā)展得早應(yīng)用普遍,SM2領(lǐng)先也很自然),與RSA安全性對(duì)比如下圖。
3.3、SM3雜湊算法
- SM3密碼雜湊(哈希、散列)算法給出了雜湊函數(shù)算法的計(jì)算方法和計(jì)算步驟,并給出了運(yùn)算示例。此算法適用于商用密碼應(yīng)用中的數(shù)字簽名和驗(yàn)證,消息認(rèn)證碼的生成與驗(yàn)證以及隨機(jī)數(shù)的生成,可滿足多種密碼應(yīng)用的安全需求。在SM2,SM9標(biāo)準(zhǔn)中使用。
- 此算法對(duì)輸入長度小于2的64次方的比特消息,經(jīng)過填充和迭代壓縮,生成長度為256比特的雜湊值,其中使用了異或,模,模加,移位,與,或,非運(yùn)算,由填充,迭代過程,消息擴(kuò)展和壓縮函數(shù)所構(gòu)成。具體算法及運(yùn)算示例見SM3標(biāo)準(zhǔn)。
3.4、SM4對(duì)稱算法
- 此算法是一個(gè)分組算法,用于無線局域網(wǎng)產(chǎn)品。該算法的分組長度為128比特,密鑰長度為128比特。加密算法與密鑰擴(kuò)展算法都采用32輪非線性迭代結(jié)構(gòu)。解密算法與加密算法的結(jié)構(gòu)相同,只是輪密鑰的使用順序相反,解密輪密鑰是加密輪密鑰的逆序。
- 此算法采用非線性迭代結(jié)構(gòu),每次迭代由一個(gè)輪函數(shù)給出,其中輪函數(shù)由一個(gè)非線性變換和線性變換復(fù)合而成,非線性變換由S盒所給出。其中rki為輪密鑰,合成置換T組成輪函數(shù)。輪密鑰的產(chǎn)生與上圖流程類似,由加密密鑰作為輸入生成,輪函數(shù)中的線性變換不同,還有些參數(shù)的區(qū)別。SM4算法的具體描述和示例見SM4標(biāo)準(zhǔn)。
3.5、SM7對(duì)稱密碼
- SM7算法,是一種分組密碼算法,分組長度為128比特,密鑰長度為128比特。SM7適用于非接觸式IC卡,應(yīng)用包括身份識(shí)別類應(yīng)用(門禁卡、工作證、參賽證),票務(wù)類應(yīng)用(大型賽事門票、展會(huì)門票),支付與通卡類應(yīng)用(積分消費(fèi)卡、校園一卡通、企業(yè)一卡通等)。
3.6、SM9標(biāo)識(shí)密碼算法
- 為了降低公開密鑰系統(tǒng)中密鑰和證書管理的復(fù)雜性,以色列科學(xué)家、RSA算法發(fā)明人之一Adi Shamir在1984年提出了標(biāo)識(shí)密碼(Identity-Based Cryptography)的理念。標(biāo)識(shí)密碼將用戶的標(biāo)識(shí)(如郵件地址、手機(jī)號(hào)碼、QQ號(hào)碼等)作為公鑰,省略了交換數(shù)字證書和公鑰過程,使得安全系統(tǒng)變得易于部署和管理,非常適合端對(duì)端離線安全通訊、云端數(shù)據(jù)加密、基于屬性加密、基于策略加密的各種場合。2008年標(biāo)識(shí)密碼算法正式獲得國家密碼管理局頒發(fā)的商密算法型號(hào):SM9(商密九號(hào)算法),為我國標(biāo)識(shí)密碼技術(shù)的應(yīng)用奠定了堅(jiān)實(shí)的基礎(chǔ)。
- SM9算法不需要申請(qǐng)數(shù)字證書,適用于互聯(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)證、通話加密、通道加密等安全應(yīng)用,并具有使用方便,易于部署的特點(diǎn),從而開啟了普及密碼算法的大門。
3.7、ZUC祖沖之算法
- 祖沖之序列密碼算法是中國自主研究的流密碼算法,是運(yùn)用于移動(dòng)通信4G網(wǎng)絡(luò)中的國際標(biāo)準(zhǔn)密碼算法,該算法包括祖沖之算法(ZUC)、加密算法(128-EEA3)和完整性算法(128-EIA3)三個(gè)部分。目前已有對(duì)ZUC算法的優(yōu)化實(shí)現(xiàn),有專門針對(duì)128-EEA3和128-EIA3的硬件實(shí)現(xiàn)與優(yōu)化
- 密碼算法作為國家戰(zhàn)略資源,比歷史上任何時(shí)候都顯得更為關(guān)鍵。在大數(shù)據(jù)和云計(jì)算的時(shí)代,關(guān)鍵信息往往通過數(shù)據(jù)挖掘技術(shù)在海量數(shù)據(jù)中獲得,所以每一個(gè)人的信息保護(hù)都非常重要。
三、集成SM2加解密
JAVA集成國密SM2:https://blog.csdn.net/qq_38254635/article/details/131810661
四、集成SM3加密、驗(yàn)簽
JAVA集成國密SM3:https://blog.csdn.net/qq_38254635/article/details/131810696
五、集成SM4加解密
JAVA集成國密SM4:https://blog.csdn.net/qq_38254635/article/details/131810715
六、資源下載
SpringBoot集成SM2、SM3、SM4代碼打包下載
CSDN下載地址:https://download.csdn.net/download/qq_38254635/88063758
百度網(wǎng)盤下載地址:https://pan.baidu.com/s/1oy0OqRSvYues-w_lbHe27A?pwd=48i0
提取碼:48i0文章來源:http://www.zghlxwxcb.cn/news/detail-627765.html
國密系列文檔參考鏈接如下:
國密算法概述:https://blog.csdn.net/wang_jing_jing/article/details/121493025
java實(shí)現(xiàn)國密加解密:https://blog.csdn.net/m0_37539286/article/details/127584892
JAVA – sm3加密簽名,以及防止重復(fù)攻擊:https://blog.csdn.net/DGH2430284817/article/details/131472103
關(guān)于國密算法 SM1,SM2,SM3,SM4 的筆記:https://www.cnblogs.com/zhangshitong/p/8057845.html
Java 針對(duì)JT/T808國密SM4加解密處理:https://blog.51cto.com/u_12846753/4584586文章來源地址http://www.zghlxwxcb.cn/news/detail-627765.html
到了這里,關(guān)于國密算法概述、及算法的集成應(yīng)用(sm2、sm3、sm4)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!