時間:2023-08-12|瀏覽:262
在這里我們可以看到的就是,主要是對于加密算法的設(shè)計方面做的工作,這是一項系統(tǒng)性的工程,要保證目前的算法的安全切換,還要保證算法的安全性能。在這里,把相關(guān)的算法知識跟大家普及一下。
SM2橢圓曲線公鑰密碼算法
SM2算法就是ECC橢圓曲線密碼機制,但在簽名、密鑰交換方面不同于ECDSA、ECDH等國際標(biāo)準(zhǔn),而是采取了更為安全的機制。另外,SM2推薦了一條256位的曲線數(shù)字簽名算法,密鑰交換協(xié)議,公鑰加密算法四個部分,并在每個部分的附錄詳細(xì)說明了實現(xiàn)的相關(guān)細(xì)節(jié)及示例。
SM2算法主要考慮素域Fp和F2m上的橢圓曲線,分別介紹了這兩類域的表示,運算,以及域上的橢圓曲線的點的表示,運算和多倍點計算算法。然后介紹了編程語言中的數(shù)據(jù)轉(zhuǎn)換,包括整數(shù)和字節(jié)串,字節(jié)串和比特串,域元素和比特串,域元素和整數(shù),點和字節(jié)串之間的數(shù)據(jù)轉(zhuǎn)換規(guī)則。詳細(xì)說明了有限域上橢圓曲線的參數(shù)生成以及驗證,橢圓曲線的參數(shù)包括有限域的選取、橢圓曲線方程參數(shù)、橢圓曲線群基點的選取等,并給出了選取的標(biāo)準(zhǔn)以便于驗證。最后給橢圓曲線上密鑰對的生成以及公鑰的驗證,用戶的密鑰對為(s,sP),其中s為用戶的私鑰,sP為用戶的公鑰,由于離散對數(shù)問題從sP難以得到s,并針對素域和二元擴域給出了密鑰對生成細(xì)節(jié)和驗證方式??倓t中的知識也適用于SM9算法。
在總則的基礎(chǔ)上給出了數(shù)字簽名算法(包括數(shù)字簽名生成算法和驗證算法),密鑰交換協(xié)議以及公鑰加密算法(包括加密算法和解密算法),并在每個部分給出了算法描述,算法流程和相關(guān)示例。
數(shù)字簽名算法、密鑰交換協(xié)議以及公鑰加密算法都使用了國家密管理局批準(zhǔn)的SM3密碼雜湊算法和隨機數(shù)發(fā)生器。數(shù)字簽名算法、密鑰交換協(xié)議以及公鑰加密算法根據(jù)總則來選取有限域和橢圓曲線,并生成密鑰對。
SM2算法在很多方面都優(yōu)于RSA算法。
SM3雜湊算法
SM3密碼雜湊(哈希、散列)算法給出了雜湊函數(shù)算法的計算方法和計算步驟,并給出了運算示例。此算法適用于商用密碼應(yīng)用中的數(shù)字簽名和驗證,消息認(rèn)證碼的生成與驗證以及隨機數(shù)的生成,可滿足多種密碼應(yīng)用的安全需求。在SM2,SM9標(biāo)準(zhǔn)中使用。
此算法對輸入長度小于2的64次方的比特消息,經(jīng)過填充和迭代壓縮,生成長度為256比特的雜湊值,其中使用了異或,模,模加,移位,與,或,非運算,由填充,迭代過程,消息擴展和壓縮函數(shù)所構(gòu)成。具體算法及運算示例見SM3標(biāo)準(zhǔn)。
SM4對稱算法
此算法是一個分組算法,用于無線局域網(wǎng)產(chǎn)品。該算法的分組長度為128比特,密鑰長度為128比特。加密算法與密鑰擴展算法都采用32輪非線性迭代結(jié)構(gòu)。解密算法與加密算法的結(jié)構(gòu)相同,只是輪密鑰的使用順序相反,解密輪密鑰是加密輪密鑰的逆序。
此算法采用非線性迭代結(jié)構(gòu),每次迭代由一個輪函數(shù)給出,其中輪函數(shù)由一個非線性變換和線性變換復(fù)合而成,非線性變換由S盒所給出。其中rki為輪密鑰,合成置換T組成輪函數(shù)。輪密鑰的產(chǎn)生與上圖流程類似,由加密密鑰作為輸入生成,輪函數(shù)中的線性變換不同,還有些參數(shù)的區(qū)別。SM4算法的具體描述和示例見SM4標(biāo)準(zhǔn)。
SM9標(biāo)識密碼算法
為了降低公開密鑰系統(tǒng)中密鑰和證書管理的復(fù)雜