1. 程式人生 > >2017-2018-2 20179215《網絡攻防實踐》第十三周作業

2017-2018-2 20179215《網絡攻防實踐》第十三周作業

編寫 sm3 線上 相對 TE 安全 sha 驗證 公鑰

2017-2018-2 20179215 《網絡攻防技術》 第十三周作業 國密算法實現

一、國產密碼算法介紹

國產密碼算法(國密算法)是指國家密碼局認定的國產商用密碼算法,在金融領域目前主要使用公開的SM2、SM3、SM4三類算法,分別是非對稱算法、哈希算法和對稱算法。

1.SM2算法:SM2橢圓曲線公鑰密碼算法是我國自主設計的公鑰密碼算法,包括SM2-1橢圓曲線數字簽名算法,SM2-2橢圓曲線密鑰交換協議,SM2-3橢圓曲線公鑰加密算法,分別用於實現數字簽名密鑰協商和數據加密等功能。SM2算法與RSA算法不同的是,SM2算法是基於橢圓曲線上點群離散對數難題,相對於RSA算法,256位的SM2密碼強度已經比2048位的RSA密碼強度要高。

橢圓曲線參數並沒有給出推薦的曲線,曲線參數的產生需要利用一定的算法產生。但在實際使用中,國密局推薦使用素數域256 位橢圓曲線,其曲線方程為y^2= x^3+ax+b(其中p是大於3的一個大素數,n是基點G的階,Gx、Gy 分別是基點G的x與y值,a、b是隨圓曲線方程y^2= x^3+ax+b的系數)。

2.SM3算法:SM3雜湊算法是我國自主設計的密碼雜湊算法,適用於商用密碼應用中的數字簽名和驗證消息認證碼的生成與驗證以及隨機數的生成,可滿足多種密碼應用的安全需求。為了保證雜湊算法的安全性,其產生的雜湊值的長度不應太短,例如MD5輸出128比特雜湊值,輸出長度太短,影響其安全性SHA-1算法的輸出長度為160比特,SM3算法的輸出長度為256比特,因此SM3算法的安全性要高於MD5算法和SHA-1算法。

3.SM4算法:SM4分組密碼算法是我國自主設計的分組對稱密碼算法,用於實現數據的加密/解密運算,以保證數據和信息的機密性。要保證一個對稱密碼算法的安全性的基本條件是其具備足夠的密鑰長度,SM4算法與AES算法具有相同的密鑰長度分組長度128比特,因此在安全性上高於3DES算法。SM4算法支持的四種加密模式如下表所示:

技術分享圖片

SM4 分組算法4種模式及安全MAC的算法標識:

技術分享圖片

二、python實現

1.SM2測試截圖

python3實現的國密SM2+SM3,SM3包括KDF功能,可配合SM2加解密(SM2調用了SM3模塊)。SM2實現了各種素域下的簽名、驗簽和加解密功能。

SM2對“袁琳”的加解密過程:

技術分享圖片

2.SM3測試截圖

python編寫的SM3密碼雜湊算法代碼。

對字符串yl進行測試:

技術分享圖片

結果如圖:

技術分享圖片

3.SM4測試截圖

python實現的國產加密sm4算法。

技術分享圖片

技術分享圖片

三、遇到的問題與解決過程

1.版本問題
技術分享圖片

原因:Missing parentheses in call to ‘print‘是因為Python2.X和Python3.X不兼容。

2.python模塊以及導入出現ImportError: No module named ‘xxx‘問題

原因:具體參見http://www.mamicode.com/info-detail-1535053.html

2017-2018-2 20179215《網絡攻防實踐》第十三周作業