國密演算法

尹成發表於2018-11-14

國密演算法由國家密碼局釋出,包含SM1\ SM2\ SM3\ SM4\ SSF33演算法;國際演算法由美國的安全域性釋出,是現今最通用的商用演算法。今天就以分組密碼演算法(SM4)、公鑰密碼演算法(SM2)、摘要演算法(SM3)為例,和大家談談國米演算法。
#分組密碼演算法——國產SM4
分組密碼就是將明文資料按固定長度進行分組,然後在同一金鑰控制下逐組進行加密,從而將各個明文分組變換成一個等長的密文分組的密碼。其中二進位制明文分組的長度稱為該分組密碼的分組規模。
##分組密碼的實現原則如下:
(1)必須實現起來比較簡單,知道金鑰時加密和脫密都十分容易,適合硬體和(或)軟體實現.
(2)加脫密速度和所消耗的資源和成本較低,能滿足具體應用範圍的需要.

##分組密碼的設計基本遵循混淆原則和擴散原則。

  • 混淆原則就是將密文、明文、金鑰三者之間的統計關係和代數關係變得儘可能複雜,使得敵手即使獲得了密文和明文,也無法求出金鑰的任何資訊;即使獲得了密文和明文的統計規律,也無法求出明文的任何資訊。
  • 擴散原則就是應將明文的統計規律和結構規律散射到相當長的一段統計中去。也就是說讓明文中的每一位影響密文中的儘可能多的位,或者說讓密文中的每一位都受到明文中的儘可能多位的影響。

SM4演算法
2006年我國公佈了無限區域網產品使用的SM4密碼演算法。這是我國第一次公佈自己的商用密碼演算法。
SM4演算法的整體結構圖:
這裡寫圖片描述

國際DES演算法也是分組密碼演算法,其和SM4演算法的目的都是為了加密保護靜態儲存和傳輸通道中的資料,對比資訊見下圖:
這裡寫圖片描述

從演算法上看,國產SM4演算法在計算過程中增加非線性變換,理論上能大大提高其演算法的安全性,並且由專業機構進行了密碼分析,民間也對21輪SM4進行了差分密碼分析,結論均為安全性較高。

#公鑰密碼演算法——國產SM2

公鑰密碼學與其他密碼學完全不同, 使用這種方法的加密系統,不僅公開加密演算法本身,也公開了加密用的金鑰。
公鑰密碼系統與只使用一個金鑰的對稱傳統密碼不同,演算法是基於數學函式而不是基於替換和置換。公鑰密碼學是非對稱的,它使用兩個獨立的金鑰,即金鑰分為公鑰和私鑰,因此稱雙金鑰體制。雙鑰體制的公鑰可以公開,因此稱為公鑰演算法。
公鑰演算法的出現,給密碼的發展開闢了新的方向。公鑰演算法雖然已經歷了20多年的發展,但仍具有強勁的發展勢頭,在鑑別系統和金鑰交換等安全技術領域起著關鍵的作用
公鑰演算法的加密與解密由不同的金鑰完成,並且從加密金鑰得到解密金鑰在計算上是不可行的。通常,公鑰演算法的兩個金鑰中任何一個都可以作為加密而另一個用作解密,但不是所有的公鑰演算法都是如此。

SM2演算法
SM2演算法由國家密碼管理局於2010年12月17日釋出,全稱為橢圓曲線演算法。橢圓曲線並不是橢圓,之所以稱為橢圓曲線是因為它們是用三次方程來表示的,並且該方程與計算橢圓周長的方程相似。一般而言,橢圓曲線的三次方程形為:y2+axy+by=x3+cx2+dx+e [其中a,b,c,d和e是滿足某些條件的實數,因為方程中的指數最高是3,所以我們稱之為三次方程,或者說方程的次數為3],SM2演算法使用的方程為:y2= x3 + ax + b。
SM2演算法實現如下:
(1) 選擇Ep(a,b)的元素G,使得G的階n是一個大素數
(2) G的階是指滿足nG=O的最小n值
(3) 祕密選擇整數k,計算B=kG,然後公開(p,a,b,G,B),B為公鑰,保密k,k為私鑰
加密M:先把訊息M變換成為Ep(a,b)中一個點Pm,然後,選擇隨機數r,計算密文Cm={rG,Pm+rP),如果r使得rG或者rP為O,則要重新選擇r。
解密Cm: (Pm+rP)-k(rG)=Pm+rkG-krG=Pm
  現今對橢圓曲線研究的時間短,經過許多優秀的數學家的努力,至今一直沒有找到亞指數級演算法。正是由於目前所知求解ECDLP的最好方法是指數級的,這使得我們選用SM2演算法作加解密及數字簽名時,所要求的金鑰長度比RSA要短得多。
  國際的RSA演算法和國產的SM2演算法的主要特性對比如下:
這裡寫圖片描述
#摘要演算法——國產SM3
  摘要函式在密碼學中具有重要的地位,被廣泛應用在數字簽名,訊息認證,資料完整性檢測等領域。摘要函式通常被認為需要滿足三個基本特性:碰撞穩固性,原根穩固性和第二原根穩固性。
  2005年,Wang等人給出了MD5演算法和SHA-1演算法的碰撞攻擊方法,現今被廣泛應用的MD5演算法和SHA-1演算法不再是安全的演算法。
  SM3密碼摘要演算法是中國國家密碼管理局2010年公佈的中國商用密碼雜湊演算法標準。SM3演算法適用於商用密碼應用中的數字簽名和驗證,是在SHA-256基礎上改進實現的一種演算法。SM3演算法採用Merkle-Damgard結構,訊息分組長度為512位,摘要值長度為256位。
  SM3演算法的壓縮函式與SHA-256的壓縮函式具有相似的結構,但是SM3演算法的設計更加複雜,比如壓縮函式的每一輪都使用2個訊息字。
  現今為止,SM3演算法的安全性相對較高。

學院Go語言視訊主頁
https://edu.csdn.net/lecturer/1928

清華團隊帶你實戰區塊鏈開發
掃碼獲取海量視訊及原始碼 QQ群:721929980
在這裡插入圖片描述

相關文章