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