SM2算法概述
?2021SC@SDUSC
SM2算法概述
SM2橢圓曲線公鑰密碼算法是我國(guó)自主設(shè)計(jì)的公鑰密碼算法,包括SM2-1橢圓曲線數(shù)字簽名算法,SM2-2橢圓曲線密鑰交換協(xié)議,SM2-3橢圓曲線公鑰加密算法,分別用于實(shí)現(xiàn)數(shù)字簽名密鑰協(xié)商和數(shù)據(jù)加密等功能。
SM2標(biāo)準(zhǔn)包括總則,數(shù)字簽名算法,密鑰交換協(xié)議,公鑰加密算法四個(gè)部分,并在每個(gè)部分的附錄詳細(xì)說(shuō)明了實(shí)現(xiàn)的相關(guān)細(xì)節(jié)及示例。SM2算法主要考慮素域Fp和F2m上的橢圓曲線,分別介紹了這兩類(lèi)域的表示,運(yùn)算,以及域上的橢圓曲線的點(diǎn)的表示,運(yùn)算和多倍點(diǎn)計(jì)算算法。然后介紹了編程語(yǔ)言中的數(shù)據(jù)轉(zhuǎn)換,包括整數(shù)和字節(jié)串,字節(jié)串和比特串,域元素和比特串,域元素和整數(shù),點(diǎn)和字節(jié)串之間的數(shù)據(jù)轉(zhuǎn)換規(guī)則。
詳細(xì)說(shuō)明了有限域上橢圓曲線的參數(shù)生成以及驗(yàn)證,橢圓曲線的參數(shù)包括有限域的選取,橢圓曲線方程參數(shù),橢圓曲線群基點(diǎn)的選取等,并給出了選取的標(biāo)準(zhǔn)以便于驗(yàn)證。最后給橢圓曲線上密鑰對(duì)的生成以及公鑰的驗(yàn)證,用戶的密鑰對(duì)為(s,sP),其中s為用戶的私鑰,sP為用戶的公鑰,由于離散對(duì)數(shù)問(wèn)題從sP難以得到s,并針對(duì)素域和二元擴(kuò)域給出了密鑰對(duì)生成細(xì)節(jié)和驗(yàn)證方式。總則中的知識(shí)也適用于SM9算法。
國(guó)密算法對(duì)比見(jiàn)下圖:(來(lái)源見(jiàn)水印)
SM2與RSA算法
SM2算法和RSA算法都是公鑰密碼算法,SM2算法與RSA算法不同的是,SM2算法是基于橢圓曲線上點(diǎn)群離散對(duì)數(shù)難題,相對(duì)于RSA算法,256位的SM2密碼強(qiáng)度已經(jīng)比2048位的RSA密碼強(qiáng)度要高。
對(duì)比:(來(lái)源見(jiàn)水印)
安全性對(duì)比:
速度對(duì)比:
SM2算法數(shù)學(xué)基礎(chǔ)
主要內(nèi)容來(lái)源是《密碼學(xué)原理與實(shí)踐 第三版》
明文x(也就是初態(tài)w0)經(jīng)過(guò)Nr輪加密后變成y,每一輪的加密通過(guò)輪函數(shù)g完成,g的實(shí)現(xiàn)需要兩個(gè)輸入子密鑰K以及上一輪加密的結(jié)束狀態(tài)。
解密過(guò)程
我的理解上圖中的y其實(shí)是子密鑰K,該函數(shù)的輸入是子密鑰K以及中間狀態(tài)w。
?單射函數(shù)(來(lái)源:單射_百度百科)
?SPN(代換-置換網(wǎng)絡(luò))是特殊的一類(lèi)迭代密碼。
第一輪的輸入需要初態(tài)w0與K1先異或得出u1再輸入S盒。
最后一輪不應(yīng)用置換,需要Nr輪加密,但需要用到K(Nr+1)個(gè)子密鑰。
總結(jié)
- 上一篇: 优化算法综述
- 下一篇: 栅栏密码加密/解密【W型】在线工具