SM1、SM2 、SM3、 SM4算法

國密即國家密碼局認定的國產密碼算法。主要有SM1,SM2,SM3,SM4。密鑰長度和分組長度均爲128位。

   (1)SM1 爲對稱加密。其加密強度與AES相當。該算法不公開,調用該算法時,需要通過加密芯片的接口進行調用。

   (2)SM2爲非對稱加密,基於ECC。該算法已公開。由於該算法基於ECC,故其簽名速度與祕鑰生成速度都快於RSA。ECC 256位(SM2採用的就是ECC 256位的一種)安全強度比RSA 2048位高,但運算速度快於RSA。

   (3)SM3 消息摘要。可以用MD5作爲對比理解。該算法已公開。校驗結果爲256位。

   (4)SM4 無線局域網標準的分組數據算法。對稱加密,密鑰長度和分組長度均爲128位。

一、分組密碼算法——國際DES、國產SM4

        分組密碼就是將明文數據按固定長度進行分組,然後在同一密鑰控制下逐組進行加密,從而將各個明文分組變換成一個等長的密文分組的密碼。其中二進制明文分組的長度稱爲該分組密碼的分組規模。

        分組密碼的實現原則如下:

       (1)必須實現起來比較簡單,知道密鑰時加密和脫密都十分容易,適合硬件和(或)軟件實現.

  (2)加脫密速度和所消耗的資源和成本較低,能滿足具體應用範圍的需要.

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

        (1)混淆原則就是將密文、明文、密鑰三者之間的統計關係和代數關係變得儘可能複雜,使得敵手即使獲得了密文和明文,也無法求出密鑰的任何信息;即使獲得了密文和明文的統計規律,也無法求出明文的任何信息。

  (2)擴散原則就是應將明文的統計規律和結構規律散射到相當長的一段統計中去。也就是說讓明文中的每一位影響密文中的儘可能多的位,或者說讓密文中的每一位都受到明文中的儘可能多位的影響。

 1. DES算法

DES算法是在美國NSA(國家安全局)資助下由IBM公司開發的密碼算法,其初衷是爲政府非機密的敏感信息提供較強的加密保護。它是美國政府擔保的第一種加密算法,並在1977年被正式作爲美國聯邦信息處理標準。DES主要提供非軍事性質的聯邦政府機構和私營部門使用,並迅速成爲名聲最大,使用最廣的商用密碼算法。

                                                             DES算法的整體結構圖: 

                                                                                            SM4算法

2.SM4算法的整體結構圖:

 

國際的DES算法和國產的SM4算法的目的都是爲了加密保護靜態儲存和傳輸信道中的數據,主要特性如下:

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

二、公鑰密碼算法——國際RSA、國產SM2 

公鑰密碼學與其他密碼學完全不同, 使用這種方法的加密系統,不僅公開加密算法本身,也公開了加密用的密鑰

  公鑰密碼系統與只使用一個密鑰的對稱傳統密碼不同,算法是基於數學函數而不是基於替換和置換。公鑰密碼學是非對稱的,它使用兩個獨立的密鑰,即密鑰分爲公鑰和私鑰,因此稱雙密鑰體制。雙鑰體制的公鑰可以公開,因此稱爲公鑰算法。

  公鑰算法的出現,給密碼的發展開闢了新的方向。公鑰算法雖然已經歷了20多年的發展,但仍具有強勁的發展勢頭,在鑑別系統和密鑰交換等安全技術領域起着關鍵的作用

  公鑰算法的加密與解密由不同的密鑰完成,並且從加密密鑰得到解密密鑰在計算上是不可行的。通常,公鑰算法的兩個密鑰中任何一個都可以作爲加密而另一個用作解密,但不是所有的公鑰算法都是如此。

 

RSA算法由Rivest、Shamir、Adleman於1978年首次發表,是迄今爲止最容易理解和實現的公鑰算法,已經受住了多年深入的攻擊,其理論基礎是一種特殊的可逆模冪運算,其安全性基於分解大整數的困難性。

  RSA算法既可用於加密,又可用於數字簽名,已得到廣泛採用,並被許多標準化組織(如ISO、ITU、IETF和SWIFT等)接納。目前許多國家標準仍採用RSA算法或它的變型。

  1.RSA算法的實現如下:

  (1) 實現者尋找出兩個大素數p和q

  (2) 實現者計算出n=pq 和φ(n)=(p-1)(q-1)

  (3) 實現者選擇一個隨機數e (0<e<></e<>

  (4) 實現者使用輾轉相除法計算d=e-1(modφ(n))

  (5) 實現者在目錄中公開n和e作爲公鑰

  密碼分析者攻擊RSA體制的關鍵點在於如何分解n。若分解成功使n=pq,則可以算出φ(n)=(p-1)(q-1),然後由公開的e,解出祕密的d。所以說RSA算法的安全性基於分解大整數的困難性。

      2. 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

  SM2算法的安全性基於一個數學難題”離散對數問題ECDLP”實現,即考慮等式Q=KP,其中Q、P屬於Ep(a,b),K<p,則:1) p="" 已知q和p,計算k,是困難的。<="">

  現今對橢圓曲線研究的時間短,經過許多優秀的數學家的努力,至今一直沒有找到亞指數級算法。正是由於目前所知求解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算法的安全性相對較高

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章