國密演算法介紹以及Fabric國密擴充套件

2021-10-02 13:18:32 字數 2082 閱讀 8063

國密即國家密碼局認定的國產密碼演算法。主要有sm1,sm2,sm3,sm4。金鑰長度和分組長度均為128位。

sm1 為對稱加密。其加密強度與aes相當。該演算法不公開,呼叫該演算法時,需要通過加密晶元的介面進行呼叫。

採用該演算法已經研製了系列晶元、智慧型ic卡、智慧型密碼鑰匙、加密卡、加密機等安全產品,廣泛應用於電子政務、電子商務及國民經濟的各個應用領域(包括國家政務通、警務通等重要領域)。

sm2為非對稱加密,基於ecc。該演算法已公開。由於該演算法基於ecc,故其簽名速度與秘鑰生成速度都快於rsa。ecc 256位(sm2採用的就是ecc 256位的一種)安全強度比rsa 2048位高,但運算速度快於rsa。

sm3 訊息摘要。可以用md5作為對比理解。該演算法已公開。校驗結果為256位。

sm4 無線區域網標準的分組資料演算法。對稱加密,金鑰長度和分組長度均為128位。

由於sm1、sm4加解密的分組大小為128bit,故對訊息進行加解密時,若訊息長度過長,需要進行分組,要訊息長度不足,則要進行填充。

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

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

sm4演算法:sm4分組密碼演算法是我國自主設計的分組對稱密碼演算法,用於實現資料的加密/解密運算,以保證資料和資訊的機密性。要保證乙個對稱密碼演算法的安全性的基本條件是其具備足夠的金鑰長度,sm4演算法與aes演算法具有相同的金鑰長度分組長度128位元,因此在安全性上高於3des演算法。

同濟研究院國密演算法

sm2: 國密橢圓曲線演算法庫

. 支援generate key, sign, verify基礎操作

. 支援加密和不加密的pem檔案格式(加密方法參見rfc5958, 具體實現參加**)

. 支援證書的生成,證書的讀寫(介面相容rsa和ecdsa的證書)

. 支援證書鏈的操作(介面相容rsa和ecdsa)

. 支援crypto.signer介面

sm3: 國密hash演算法庫(摘要演算法)

. 支援基礎的sm3sum操作

. 支援hash.hash介面

sm4: 國密分組密碼演算法庫

. 支援generate key, encrypt, decrypt基礎操作

. 提供cipher.block介面

. 支援加密和不加密的pem檔案格式(加密方法為pem block加密, 具體函式為x509.encryptpemblock)

一種是基於fabric本身擴充套件國密包。這種改法不用對golang標準庫做任何地改動,所有的修改都在fabric專案原始碼上進行;

其一,把國密的庫進行移植,封裝gm-crypto;

其二,擴充套件fabric現有的bccsp模組;

其三,修改x509證書相關的地方。

fabric-ca主要是為了實現對加入聯盟鏈的成員的身份控制以及資料生成保管。fabric-ca中,lib,主要是介面的實現,主要在解析申請證書請求以及簽發證書流程要替換為國密演算法;util,該包資料工具類,主要在證書的編譯碼等操作中擴充套件國密演算法;vendor中,替換對fabric的包的引用,提供對國密演算法的支援

在fabric中擴充套件國密演算法,大概有以下幾個方面:第一,fabric框架擴充套件支援國密演算法;第二,fabric-ca擴充套件支援國密演算法;第三,fabric-sdk擴充套件支援國密演算法;第四,fabric-baseimage、fabric-baseos映象擴充套件支援國密演算法;第五,fabirc框架擴充套件支援載入.so庫。」

另一種方法是基於golang標準庫擴充套件國密。這種方案是直接擴充golang標準庫,改法更為清晰。

國密演算法(二)

接上文 sm4對稱演算法是乙個分組演算法,用於無線區域網產品。該演算法的分組長度為128位元,金鑰長度為128位元。加密演算法與金鑰擴充套件演算法都採用32輪非線性迭代結構。解密演算法與加密演算法的結構相同,只是輪金鑰的使用順序相反,解密輪金鑰是加密輪金鑰的逆序。此演算法採用非線性迭代結構,每次迭代...

國密演算法(三)

接上文 為了降低公開金鑰系統中金鑰和證書管理的複雜性,以色列科學家 rsa演算法發明人之一adi shamir在1984年提出了標識密碼 identity based cryptography 的理念。標識密碼將使用者的標識 如郵件位址 手機號碼 qq號碼等 作為公鑰,省略了交換數字證書和公鑰過程,...

首個IETF國密標準正式發布,加速國密演算法應用程序

近日,商密演算法在tls 1.3中的應用 標準 rfc 8998 在ietf發布,這是我國首次正式將國密演算法推進到ietf國際標準中,使得我國的國密演算法第 次在tls協議中被認可使用而無需擔心互操作性和衝突問題。本標準的發布將大力促進我國商用密碼演算法在行業內的應用。ietf internet ...