GmSSL概述
GmSSL是一個開源的密碼工具箱,支持SM2/SM3/SM4/SM9/ZUC等國密(國家商用密碼)算法、SM2國密數(shù)字證書及基于SM2證書的SSL/TLS安全通信協(xié)議,支持國密硬件密碼設備,提供符合國密規(guī)范的編程接口與命令行工具,可以用于構建PKI/CA、安全通信、數(shù)據(jù)加密等符合國密標準的安全應用。GmSSL項目是OpenSSL項目的分支,并與OpenSSL保持接口兼容。因此GmSSL可以替代應用中的OpenSSL組件,并使應用自動具備基于國密的安全能力。GmSSL項目采用對商業(yè)應用友好的類BSD開源許可證,開源且可以用于閉源的商業(yè)應用。
GmSSL項目由北京大學關志副研究員的密碼學研究組開發(fā)維護,項目源碼托管于GitHub。自2014年發(fā)布以來,GmSSL已經(jīng)在多個項目和產(chǎn)品中獲得部署與應用,并獲得2015年度“一銘杯”中國linux軟件大賽二等獎(年度最高獎項)與開源中國密碼類推薦項目。GmSSL項目的核心目標是通過開源的密碼技術推動國內網(wǎng)絡空間安全建設。
GmSSL關鍵特性
- 支持SM2/SM3/SM4/SM9/ZUC等全部已公開國密算法
- 支持國密SM2雙證書SSL套件和國密SM9標識密碼套件
- 高效實現(xiàn)在主流處理器上可完成4.5萬次SM2簽名
- 支持動態(tài)接入具備SKF/SDF接口的硬件密碼模塊
- 支持門限簽名、秘密共享和白盒密碼等高級安全特性
- 支持JAVA、Go、php等多語言接口綁定和REST服務接口
國密算法概述
國密算法是國家商用密碼算法的簡稱。自2012年以來,國家密碼管理局以《中華人民共和國密碼行業(yè)標準》的方式,陸續(xù)公布了SM2/SM3/SM4等密碼算法標準及其應用規(guī)范。其中“SM”代表“商密”,即用于商用的、不涉及國家秘密的密碼技術。
SM2為基于橢圓曲線密碼的公鑰密碼算法標準,包含數(shù)字簽名、密鑰交換和公鑰加密,用于替換RSA/Diffie-Hellman/ECDSA/ECDH等國際算法。
SM3為密碼哈希算法,用于替代MD5/SHA-1/SHA-256等國際算法。
SM4為分組密碼,用于替代DES/AES等國際算法。
ZUC算法(祖沖之算法集)是由我國學者自主設計的加密和完整性算法,包括祖沖之算法、加密算法128-EEA3和完整性算法128-EIA3,已經(jīng)被國際組織3GPP推薦為4G無線通信的第三套國際加密和完整性標準的侯選算法。
SM9為基于身份的密碼算法,可以替代基于數(shù)字證書的PKI/CA體系。通過部署國密算法,可以降低由弱密碼和錯誤實現(xiàn)帶來的安全風險和部署PKI/CA帶來的開銷。
快速上手
快速上手指南介紹GmSSL的編譯、安裝和gmssl命令行工具的基本指令。
下載源代碼(zip),解壓縮至當前工作目錄
$ unzip GmSSL-master.zip
編譯與安裝
$ ./config no-saf no-sdf no-skf no-sof no-zuc $ make $ sudo make install
安裝之后可以執(zhí)行gmssl命令行工具檢查是否成功
$ gmssl version GmSSL 2.0 - OpenSSL 1.1.0d
SM4加密文件
$ gmssl sms4 -e -in <yourfile> -out <yourfile>.sms4 enter sms4-cbc encryption password: <your-password> Verifying - enter sms4-cbc encryption password: <your-password>
解密
$ gmssl sms4 -d -in <yourfile>.sms4 enter sms4-cbc decryption password: <your-password>
生成SM3摘要
$ gmssl sm3 <yourfile> SM3(yourfile)= 66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8f4ba8e0
生成SM2密鑰并簽名
$ gmssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:sm2p256v1 -out signkey.pem $ gmssl pkeyutl -sign -pkeyopt ec_scheme:sm2 -inkey signkey.pem -in <yourfile> -out <yourfile>.sig