2017-2018-2 20179205 《網絡攻防》第十三週做業 國密算法實現

《網絡攻防》第十三週 國密算法實現

1、SM2橢圓曲線公鑰密碼算法原理

  SM2橢圓曲線公鑰密碼算法(ECC)於2010年12月首次公開發布,2012年成爲中國商用密碼標準,2016年成爲中國國家密碼標準,國家公鑰密碼算法標準。SM2算法主要內容包括3部分:數字簽名算法;密鑰交換協議和公鑰加密算法。在實際使用中,國密局推薦使用素數域256位橢圓曲線,其曲線方程爲y^2= x^3+ax+b。a;b ∈ Fp,且(4a^3 +27b^2) modp ̸= 0。python

  目前支持SM2算法的產品已達1000餘款,普遍應用於電子政務、移動辦公、電子商務、移動支付、電子證書等基礎設施、雲服務等領域。以《中華人民共和國電子簽名法》爲依據,各種應用數字簽名/驗籤的旺盛需求,催生出一批支持SM2算法高性能產品,如中國科學院DCS中心研製的高性能金融數據密碼機SM2簽名速率超過33萬次/秒;清華大學微電子所研製的單顆算法芯片SM2簽名速率達81763.03次/秒。在公鑰基礎設施(PKI)領域,以基於SM2算法的數字證書應用最具備表明性,尤爲是自2011年國家密碼管理局發佈公鑰算法升級工做通知以來,全國總計有45家第三方電子認證服務機構(CA)完成了支持SM2算法的系統新建或升級改造,工行、農行、建行、交行、稅務、海關、交通、教育等12家系統性電子認證服務系統也實現了對SM2算法的支持,累計證書發行量近億張,支持SM2算法的智能密碼鑰匙、IC卡的芯片出貨量達5億顆,有力地促進了SM2算法在交通、能源、金融、稅務、公安、衛生、社保、教育等多個領域的應用。SM2算法也已被納人可信計算組織(TCG)發佈的可信平臺模塊庫規範(TPM2.0),由國民技術研製的支持TPM2.0的Z32H320TC系列芯片集成了SM2算法,被應用在微軟於中國發售的Microsoft Surface Pro 3 pad中.算法

1.1 SM2數字簽名算法

  數字簽名算法由一個簽名者對數據產生數字簽名,並由一個驗證者驗證簽名的可靠性.每一個簽名者有一個公鑰和一個私鑰,其中私鑰用於產生簽名,驗證者用簽名者的公鑰驗證簽名.

  SM2數字簽名算法中,做爲簽名者的用戶A的密鑰對包括其私鑰dA,和公鑰pA =[dA]G=(xA,yA),用戶A具備位長爲entlenA的可辨別標識IDA,記ENTLA,是由整數entlenA轉換而成的2B數據,簽名者和驗證者都須要用密碼雜湊算法求得用戶A的雜湊值zA=H256 (ENTLA || IDA || a || b || xG || yG || xA || yA). SM2數字簽名算法規定H256爲SM3密碼雜湊算法.安全

1.2 SM2密鑰交換協議

  密鑰交換協議是2個用戶A和B經過交互的信息傳遞,用各自的私鑰和對方的公鑰來商定一個只有他們知道的祕密密鑰.這個共享的祕密密鑰一般用在某個對稱密碼算法中.

  SM2密鑰交換協議中,用戶A的密鑰對包括其私鑰dA和公鑰pA=[dA]G=(xA,yA),用戶B的密鑰對包括其私鑰dB和公鑰pB=[dB]G=(xB,yB).用戶A具備位長爲entlenA的可辨別標識IDA,記ENTLA是由整數entLenA轉換而成的2B數據;用戶B具備位長爲entlenB的可辨別標識IDB,記ENTLB是由整數entlenB轉換而成的2B數據.A,B雙方都須要用密碼雜湊算法求得用戶A的雜湊值ZA = H256 ( ENTLA || IDA || a || b || xG || yG || xA || yA)和用戶B的雜湊值ZB = H256 ( ENTLB || IDB || a || b || xG || yG || xB || yB).網絡

1.3 SM2公鑰加密算法

  公鑰加密算法規定發送者用接收者的公鑰將消息加密成密文,接收者用自已的私鑰對收到的密文進行解密還原成原始消息.

  SM2公鑰加密算法中,用戶B的密鑰對包括其私鑰dB和公鑰PB=[dB]G.函數

1.4 python實現SM2算法

2、SM3密碼雜湊算法原理

  SM3密碼雜湊算法採用Merkle-Damgard結構,消息分組長度爲512 b,摘要長度256 b.壓縮函數狀態256b,共64步操做。

  SM3算法做爲標準雜湊算法使用很是普遍。目前支持SM3算法的產品包括安全芯片、終端、設備和應用系統,採用SM3算法的產品和系統運行安全穩定。如在智能電網領域,截至2016年10月,採用SM3算法的智能電錶已經安裝近6億用戶,均能安全穩定運行。在金融系統,目前大約有7億多銀行磁條卡更新爲密碼芯片卡,動態令牌累計發行7726萬支,這些卡片及令牌均使用了SM3算法。SM3算法也支持可信計算組織(TCG)發佈的可信平臺模塊庫規範(TPM2.0)。該算法業已成爲我國電子簽名類密碼系統、計算機安全登陸系統、計算機安全通訊系統、數字證書、網絡安全基礎設施、安全雲計算平臺與大數據等領域信息安全的基礎技術。性能

2.1 SM3密碼雜湊算法的特色

  SM3密碼雜湊算法壓縮函數總體結構與SHA-256類似,可是增長了多種新的設計技術,包括增長16步全異或操做、消息雙字介人、增長快速雪崩效應的屍置換等.可以有效地避免高几率的局部碰撞,有效地抵抗強碰撞性的差分分析、弱碰撞性的線性分析和比特追蹤法等密碼分析。

  SM3密碼雜湊算法合理使用字加運算,在不顯著增長硬件開銷的狀況下,採用P置換,加速了算法的雪崩效應,提升了運算效率。同時,SM3密碼雜湊算法採用了適合32 b微處理器和8b智能卡實現的基本運算,具備跨平臺實現的高效性和普遍的適用性。測試

2.2 SM3密碼雜湊算法的設計原理

SM3密碼雜湊算法的設計主要遵循如下原則:大數據

  • 可以有效抵抗比特追蹤法及其餘分析方法;
  • 在保障安全性的前提下,綜合性能指標與SHA-256同等條件下至關.

(1)壓縮函數的設計原則

壓縮函數的設計具備結構清晰、雪崩效應強等特色,採用瞭如下設計技術:雲計算

  • 消息雙字介人。輸人的雙字消息由消息擴展算法產生的消息字中選出。爲了使介入的消息儘快產生雪崩效應,採用了模2^23算術加運算和P置換等
  • 每一步操做將上一步介入的消息比特非線性迅速擴散,每一消息比特快速地參與進一步的擴散和混亂
  • 採用混合來自不一樣羣運算,模2^23算術加運算、異或運算、3元布爾函數和P置換
  • 在保證算法安全性的前提下,爲兼顧算法的簡介和軟硬件及智能卡實現的有效性,非線性運算主要採用布爾運算和算術加運算
  • 壓縮函數參數的選取應使壓縮函數知足擴散的徹底性、雪崩速度快的特色

(2)消息擴展算法的設計

  消息擴展算法將512b的消息分組擴展成2176b的消息分組。經過線性反饋移位寄存器來實現消息擴展,在較少的運算量下達到較好的擴展效果.消息擴展算法在SM3密碼雜湊算法中做用主要是增強消息比特之間的相關性,減少經過消息擴展弱點對雜湊算法的攻擊可能性。消息擴展算法有如下要求:加密

  • 消息擴展算法知足保墒性
  • 對消息進行線性擴展,使擴展後的消息之間具備良好的相關性
  • 具備較快的雪崩效應
  • 適合軟硬件和智能卡實現

2.3 python實現SM3算法

部分代碼:

3、SM4分組密碼算法原理

  SMS4分組加密算法是中國無線標準中使用的分組加密算法,在2012年已經被國家商用密碼管理局肯定爲國家密碼行業標準,標準編號GM/T 0002-2012而且更名爲SM4算法,是國內官方公佈的第一個加密算法。該算法的分組長度爲128比特,密鑰長度爲128比特。加密算法與密鑰擴展算法都採用32輪非線性迭代結構。解密算法與加密算法的結構相同,只是輪密鑰的使用順序相反,解密輪密鑰是加密輪密鑰的逆序。

3.1 SMS4算法的加密過程

1.讀入數據

2.計算輪密鑰中間變量

3.計算輪密鑰

4.SMS4算法第i+1輪加密

5.SMS4算法最終加密輸出

3.2 SMS4算法的安全性

  SMS4算法做爲我國專業機構設計的商用密碼算法,通過充分分析和測試,能夠抵抗差分攻擊、線性攻擊等。根據相關分析,SMS4算法的S盒設計得至關好。在設計原理上,SMS4比AES的S盒設計多了一個仿射變換,具備很高的靈活性,能夠隨時被替換以應對突發性安全威脅。SMS4的S盒在非線性度、自相關性、差分均勻性、代數免疫性等主要密碼學指標方面都達到了至關高的水平。

3.3 python實現SM4算法

執行SM4算法,測試結果保存在log_file_0.txt下:

相關文章
相關標籤/搜索