碼迷,www.tparu.icu
吉利平特名人堂 > 編程語言 > 詳細

2019年最火爆平特一肖:國密算法

時間:2018-06-03 15:40:13      閱讀:4816      評論:0      收藏:0      [點我收藏+]

吉利平特名人堂 www.tparu.icu 標簽:a算法   知識   私鑰   設計   mod   合成   結果   單位   無線   

算法分類

國密即國家密碼局認定的國產密碼算法。主要有SM1,SM2,SM3,SM4。密鑰長度和分組長度均為128位。
SM1 為對稱加密。其加密強度與AES相當。該算法不公開,調用該算法時,需要通過加密芯片的接口進行調用。
SM2為非對稱加密,基于ECC。該算法已公開。由于該算法基于ECC,故其簽名速度與秘鑰生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一種)安全強度比RSA 2048位高,但運算速度快于RSA。
SM3 消息摘要??梢雜肕D5作為對比理解。該算法已公開。校驗結果為256位。
SM4 無線局域網標準的分組數據算法。對稱加密,密鑰長度和分組長度均為128位。

SM2算法

SM2算法:SM2橢圓曲線公鑰密碼算法是我國自主設計的公鑰密碼算法,包括SM2-1橢圓曲線數字簽名算法,SM2-2橢圓曲線密鑰交換協議,SM2-3橢圓曲線公鑰加密算法,分別用于實現數字簽名密鑰協商和數據加密等功能。SM2算法與RSA算法不同的是,SM2算法是基于橢圓曲線上點群離散對數難題,相對于RSA算法,256位的SM2密碼強度已經比2048位的RSA密碼強度要高
學習sm2算法,首先學習ECC算法
ECC算法描述:
  1、用戶A選定一條適合加密的橢圓曲線Ep(a,b)(如:y2=x3+ax+b),并取橢圓曲線上一點,作為基點G。
  2、用戶A選擇一個私有密鑰k,并生成公開密鑰(公鑰PB)K=kG。
  3、用戶A將Ep(a,b)和點(公鑰)K,G傳給用戶B。
  4、用戶B接到信息后 ,將待傳輸的明文(M)編碼到Ep(a,b)上一點M,并產生一個隨機整數r(r<n)。加密開始
  5、用戶B計算點C1=M+rK;C2=rG。
  6、用戶B將C1、C2傳給用戶A。
  7、用戶A接到信息后,計算C1-kC2,結果就是點M。因為C1-kC2=M+rK-k(rG)=M+rK-r(kG)=M
  再對點M進行解碼就可以得到明文。
  密碼學中,描述一條Fp上的橢圓曲線,常用到六個參量:
  T=(p,a,b,G,n,h)。
 ?。╬ 、a 、b 用來確定一條橢圓曲線,G為基點,n為點G的階,h 是橢圓曲線上所有點的個數m與n相除的整數部分)
  這幾個參量取值的選擇,直接影響了加密的安全性。參量值一般要求滿足以下幾個條件:
  1、p 當然越大越安全,但越大,計算速度會變慢,200位左右可以滿足一般安全要求;
  2、p≠n×h;
  3、pt≠1 (mod n),1≤t<20;
  4、4a3+27b2≠0 (mod p);
  5、n 為素數;
  6、h≤4。
所以關于sm2算法的流程如圖
技術分享圖片
SM2算法就是ECC橢圓曲線密碼機制,但在簽名、密鑰交換方面不同于ECDSA、ECDH等國際標準,而是采取了更為安全的機制。另外,SM2推薦了一條256位的曲線作為標準曲線。
SM2標準包括總則,數字簽名算法,密鑰交換協議,公鑰加密算法四個部分,并在每個部分的附錄詳細說明了實現的相關細節及示例。
SM2算法主要考慮素域Fp和F2m上的橢圓曲線,分別介紹了這兩類域的表示,運算,以及域上的橢圓曲線的點的表示,運算和多倍點計算算法。然后介紹了編程語言中的數據轉換,包括整數和字節串,字節串和比特串,域元素和比特串,域元素和整數,點和字節串之間的數據轉換規則。
詳細說明了有限域上橢圓曲線的參數生成以及驗證,橢圓曲線的參數包括有限域的選取,橢圓曲線方程參數,橢圓曲線群基點的選取等,并給出了選取的標準以便于驗證。最后給橢圓曲線上密鑰對的生成以及公鑰的驗證,用戶的密鑰對為(s,sP),其中s為用戶的私鑰,sP為用戶的公鑰,由于離散對數問題從sP難以得到s,并針對素域和二元擴域給出了密鑰對生成細節和驗證方式。總則中的知識也適用于SM9算法。
在總則的基礎上給出了數字簽名算法(包括數字簽名生成算法和驗證算法),密鑰交換協議以及公鑰加密算法(包括加密算法和解密算法),并在每個部分給出了算法描述,算法流程和相關示例。
數字簽名算法,密鑰交換協議以及公鑰加密算法都使用了國家密管理局批準的SM3密碼雜湊算法和隨機數發生器。數字簽名算法,密鑰交換協議以及公鑰加密算法根據總則來選取有限域和橢圓曲線,并生成密鑰對。
SM2算法在很多方面都優于RSA算法(RSA發展得早應用普遍,SM2領先也很自然),與RSA安全性對比如下圖
技術分享圖片

SM3算法

SM3算法:SM3雜湊算法是我國自主設計的密碼雜湊算法,適用于商用密碼應用中的數字簽名和驗證消息認證碼的生成與驗證以及隨機數的生成,可滿足多種密碼應用的安全需求。為了保證雜湊算法的安全性,其產生的雜湊值的長度不應太短,例如MD5輸出128比特雜湊值,輸出長度太短,影響其安全性SHA-1算法的輸出長度為160比特,SM3算法的輸出長度為256比特,因此SM3算法的安全性要高于MD5算法和SHA-1算法。
對長度為l(l<2^64)比特的消息m,SM3雜湊算法經過填充和迭代壓縮,生成雜湊值,雜湊值長度為256比特。
假設消息m的長度為l比特。首先將比特“1”添加到消息的末尾,再添加k個“0”,k是滿足l+1+k448mod512的最小的非負整數。然后再添加一個64位比特串,該比特串是長度l的二進制表示。
填充后的消息m′的比特長度為512的倍數。
例如:對消息01100001 01100010 01100011,其長度l=24,經填充得到比特串:
01100001 01100010 01100011 1 00...00(423比特)00...011000(64比特l的二進制表示)
下面的是實現了SM3的標準輸出
技術分享圖片

SM4

此算法是一個分組算法,用于無線局域網產品。該算法的分組長度為128比特,密鑰長度為128比特。加密算法與密鑰擴展算法都采用32輪非線性迭代結構。解密算法與加密算法的結構相同,只是輪密鑰的使用順序相反,解密輪密鑰是加密輪密鑰的逆序。
此算法采用非線性迭代結構,每次迭代由一個輪函數給出,其中輪函數由一個非線性變換和線性變換復合而成,非線性變換由S盒所給出。其中rki為輪密鑰,合成置換T組成輪函數。輪密鑰的產生與上圖流程類似,由加密密鑰作為輸入生成,輪函數中的線性變換不同,還有些參數的區別。
過程:
技術分享圖片
基本運算:SM4密碼算法使用模2加和循環移位作為基本運算。
  基本密碼部件:SM4密碼算法使用了S盒、非線性變換τ、線性變換部件L、合成變換T基本密碼部件。
  輪函數:SM4密碼算法采用對基本輪函數進行迭代的結構。利用上述基本密碼部件,便可構成輪函數。SM4密碼算法的輪函數是一種以字為處理單位的密碼函數。
  加密算法:SM4密碼算法是一個分組算法。數據分組長度為128比特,密鑰長度為128比特。加密算法采用32輪迭代結構,每輪使用一個輪密鑰。
  解密算法:SM4密碼算法是對合運算,因此解密算法與加密算法的結構相同,只是輪密鋁的使用順序相反,解密輪密鑰是加密輪密鑰的逆序。
  密鑰擴展算法:SM4密碼算法使用128位的加密密鑰,并采用32輪法代加密結構,每一輪加密使用一個32位的輪密鑰,共使用32個輪密鑰。因此需要使用密鑰擴展算法,從加密密鑰產生出32個輪密鑰。
  SM4的安全性:SM4密碼算法經過我國專業密碼機構的充分分析測試,可以抵抗差分攻擊、線性攻擊等現有攻擊,因此是安全的。
SM4實例:
技術分享圖片

國密算法

標簽:a算法   知識   私鑰   設計   mod   合成   結果   單位   無線   

原文地址:https://www.cnblogs.com/blankicefire/p/9129202.html

(0)
(1)
   
舉報
評論 一句話評論(0
登錄后才能評論!
? 2014 吉利平特名人堂 版權所有 京ICP備13008772號-2
迷上了代碼!
麻将规则打法 nba球探网即时比分 上海时时预测软件下载 飞艇人工计划 秒速时时规律2017 时时彩怎么一天稳赚800 在线捕鱼赢现金手机版下载 重庆福彩欢乐生肖玩法 福彩3D六码绝杀 3分pk10稳赚方法 黑马时时彩计划软件 足球比分直播即时比分 类似彩名堂的免费计划软件 足彩计算器胜平负 分分彩挂机必死 北京pk10计划