國密演算法概述

@ 小浩發表於2018-10-08

國密即國家密碼局認定的國產密碼演算法,即商用密碼。

國密演算法是國家密碼局制定標準的一系列演算法。其中包括了對稱加密演算法,橢圓曲線非對稱加密演算法,雜湊演算法。具體包括SM1,SM2,SM3等,其中:
SM2為國家密碼管理局公佈的公鑰演算法,其加密強度為256位。其它幾個重要的商用密碼演算法包括:
SM1,對稱加密演算法,加密強度為128位,採用硬體實現;
SM3,密碼雜湊演算法,雜湊值長度為32位元組,和SM2演算法同期公佈,參見《國家密碼管理局公告(第 22 號)》;
SMS4,對稱加密演算法,隨WAPI標準一起公佈,可使用軟體實現,加密強度為128位。

商用密碼,是指能夠實現商用密碼演算法的加密、解密和認證等功能的技術。(包括密碼演算法程式設計技術和密碼演算法晶片、加密卡等的實現技術)。商用密碼技術是商用密碼的核心,國家將商用密碼技術列入國家祕密,任何單位和個人都有責任和義務保護商用密碼技術的祕密。

商用密碼的應用領域十分廣泛,主要用於對不涉及國家祕密內容但又具有敏感性的內部資訊、行政事務資訊、經濟資訊等進行加密保護。比如:商用密碼可用於企業門禁管理、企業內部的各類敏感資訊的傳輸加密、儲存加密,防止非法第三方獲取資訊內容;也可用於各種安全認證、網上銀行、數字簽名等。

例如:在門禁應用中,採用SM1演算法進行身份鑑別和資料加密通訊,實現卡片合法性的驗證,保證身份識別的真實性。 安全是關係國家、城市資訊、行業使用者、百姓利益的關鍵問題。國家密碼管理局針對現有重要門禁系統建設和升級改造應用也提出指導意見,加強晶片、卡片、系統的標準化建設。截止目前,國密門禁系統的升級的案例也逐漸增多,基於自主國產智慧財產權的CPU卡、CPU卡讀寫裝置及金鑰管理系統廣泛受到關注。一些廠商如同方銳安在2009年推出CPU卡安全門禁系列產品,在2010年北京安博會上,該公司再次向業界展示出“御”系列CPU卡門禁系統、TF-DF6000系列安全門禁讀卡器以及基於CPU卡技術的一卡通系統等主流產品和系統。這些廠商是全國推廣的國密門禁產品的先驅者,使“御”系列CPU卡門禁系統廣泛應用於政府、監獄、司法、軍工企業和大型公共智慧建築等高安全領域。

安全是智慧卡的核心,而演算法是安全的基礎。

  國密演算法由國家密碼局釋出,包含SM1\ SM2\ SM3\ SM4\ SSF33演算法;國際演算法由美國的安全域性釋出,是現今最通用的商用演算法。我們就以分組密碼演算法(DES和SM4)、公鑰密碼演算法(RSA和SM2)、摘要演算法(SM3)為例,和大家談談國際演算法和國密演算法的區別。

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

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

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

  (1)必須實現起來比較簡單,知道金鑰時加密和脫密都十分容易,適合硬體和(或)軟體實現.
  (2)加脫密速度和所消耗的資源和成本較低,能滿足具體應用範圍的需要.

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

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

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

DES演算法

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

  DES演算法的整體結構圖:
  這裡寫圖片描述

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

  SM4演算法的整體結構圖:

這裡寫圖片描述
這裡寫圖片描述

 國際的DES演算法和國產的SM4演算法的目的都是為了加密保護靜態儲存和傳輸通道中的資料,主要特性如下:
 這裡寫圖片描述

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

  公鑰密碼演算法——國際RSA、國產SM2
  公鑰密碼學與其他密碼學完全不同, 使用這種方法的加密系統,不僅公開加密演算法本身,也公開了加密用的金鑰。

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

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

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

這裡寫圖片描述

 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演算法的主要特性對比如下:
這裡寫圖片描述

 摘要演算法——國產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演算法的安全性相對較高。

 

 

參考連結:https://blog.csdn.net/lwzhang1101/article/details/78773700

                  https://www.cnblogs.com/TaiYangXiManYouZhe/p/4317519.html

                  https://blog.csdn.net/Soul_Programmer_Swh/article/details/80375958

相關文章