DES/AES、SM四、RSA、SM二、SM3


現以分組密碼算法(DES和SM4)、公鑰密碼算法(RSA和SM2)、摘要算法(SM3)爲例,談談國際算法和國密算法的區別:算法


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

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


  分組密碼的實現原則以下:函數


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

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


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


  混淆原則就是將密文、明文、密鑰三者之間的統計關係和代數關係變得儘量複雜,使得敵手即便得到了密文和明文,也沒法求出密鑰的任何信息;即便得到了密文和明文的統計規律,也沒法求出明文的任何信息。資源


  擴散原則就是應將明文的統計規律和結構規律散射到至關長的一段統計中去。也就是說讓明文中的每一位影響密文中的儘量多的位,或者說讓密文中的每一位都受到明文中的儘量多位的影響。開發


      DES算法數學

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

     SM4算法

       2006年我國公佈了無限局域網產品使用的SM4密碼算法。這是我國第一次公佈本身的商用密碼算法

  SM4算法的總體結構圖:


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


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


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


  公鑰密碼學與其餘密碼學徹底不一樣, 使用這種方法的加密系統,不只公開加密算法自己,也公開了加密用的密鑰


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


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


  公鑰算法的加密與解密由不一樣的密鑰完成,而且從加密密鑰獲得解密密鑰在計算上是不可行的。一般,公鑰算法的兩個密鑰中任何一個均可以做爲加密而另外一個用做解密,但不是全部的公鑰算法都是如此。


       RSA算法

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


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


  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算法的安全性基於分解大整數的困難性。


       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算法的主要特性對好比下:



三.摘要算法——MD五、SHA一、國產SM3


  摘要函數在密碼學中具備重要的地位,被普遍應用在數字簽名,消息認證,數據完整性檢測等領域。摘要函數一般被認爲須要知足三個基本特性:碰撞穩固性,原根穩固性第二原根穩固性


  2005年,Wang等人給出了MD5算法SHA-1算法的碰撞***方法,現今被普遍應用的MD5算法和SHA-1算法再也不是安全的算法。


       MD5算法

       MD5爲計算機安全領域普遍使用的一種散列函數,用以提供消息的完整性保護。對MD5加密算法簡要的敘述能夠爲:MD5以512位分組來處理輸入的信息,且每一分組又被劃分爲16個32位子分組,通過了一系列的處理後,算法的輸出由四個32位分組組成,將這四個32位分組級聯後將生成—個128位散列值

       MD5被普遍用於各類軟件的密碼認證和鑰匙識別上。MD5用的是哈希函數,它的典型應用是對一段信息產生信息摘要,以防止被篡改


       SHA1算法

       SHA1主要適用於數字簽名標準裏面定義的數字簽名算法。對於長度小於2「64位的消息,SHA1會產生一個160位的消息摘要。當接收到消息的時候,這 個消息摘要能夠用來驗證數據的完整性。在傳輸的過程當中,數據極可能會發生變化,那麼這時候就會產生不一樣的消息摘要。SHA1不能夠從消息摘要中復原信息, 而兩個不一樣的消息不會產生一樣的消息摘要。這樣,SHA1就能夠驗證數據的完整性,因此說SHA1是爲了保證文件完整性的技術。

       

       SM3算法

   SM3密碼摘要算法是中國×××2010年公佈的中國商用密碼雜湊算法標準。SM3算法適用於商用密碼應用中的數字簽名和驗證,是在SHA- 256基礎上改進實現的一種算法。SM3算法採用Merkle-Damgard結構,消息分組長度爲512位,摘要值長度爲256位。


  SM3算法的壓縮函數與SHA-256的壓縮函數具備類似的結構,可是SM3算法的設計更加複雜,好比壓縮函數的每一輪都使用2個消息字。


  現今爲止,SM3算法的安全性相對較高。(來源:中鈔研究院)


四.數字簽名與信息摘要的應用

    1.數字簽名技術是將摘要信息用發送者的私鑰加密,與原文一塊兒傳送給接收者。

    2.接收者只有用發送的公鑰才能解密被加密的摘要信息,而後用HASH函數對收到的原文產生一個摘要信息,與解密的摘要信息對比。

    3.若是相同,則說明收到的信息是完整的,在傳輸過程當中沒有被修改,不然說明信息被修改過。

    4.所以,數字簽名與信息摘要可以驗證信息的完整性。

相關文章
相關標籤/搜索