您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

支持国密SM2/SM3/SM4/SM9/ZUC/SSL的密码工具箱GmSSL

时间:2019-11-06 09:15:59  来源:  作者:

GmSSL概述

GmSSL是一个开源的密码工具箱,支持SM2/SM3/SM4/SM9/ZUC等国密(国家商用密码)算法、SM2国密数字证书及基于SM2证书的SSL/TLS安全通信协议,支持国密硬件密码设备,提供符合国密规范的编程接口与命令行工具,可以用于构建PKI/CA、安全通信、数据加密等符合国密标准的安全应用。GmSSL项目是OpenSSL项目的分支,并与OpenSSL保持接口兼容。因此GmSSL可以替代应用中的OpenSSL组件,并使应用自动具备基于国密的安全能力。GmSSL项目采用对商业应用友好的类BSD开源许可证,开源且可以用于闭源的商业应用。

GmSSL项目由北京大学关志副研究员的密码学研究组开发维护,项目源码托管于GitHub。自2014年发布以来,GmSSL已经在多个项目和产品中获得部署与应用,并获得2015年度“一铭杯”中国linux软件大赛二等奖(年度最高奖项)与开源中国密码类推荐项目。GmSSL项目的核心目标是通过开源的密码技术推动国内网络空间安全建设。

GmSSL关键特性

  • 支持SM2/SM3/SM4/SM9/ZUC等全部已公开国密算法
  • 支持国密SM2双证书SSL套件和国密SM9标识密码套件
  • 高效实现在主流处理器上可完成4.5万次SM2签名
  • 支持动态接入具备SKF/SDF接口的硬件密码模块
  • 支持门限签名、秘密共享和白盒密码等高级安全特性
  • 支持JAVA、Go、php等多语言接口绑定和REST服务接口

国密算法概述

国密算法是国家商用密码算法的简称。自2012年以来,国家密码管理局以《中华人民共和国密码行业标准》的方式,陆续公布了SM2/SM3/SM4等密码算法标准及其应用规范。其中“SM”代表“商密”,即用于商用的、不涉及国家秘密的密码技术。

SM2为基于椭圆曲线密码的公钥密码算法标准,包含数字签名、密钥交换和公钥加密,用于替换RSA/Diffie-Hellman/ECDSA/ECDH等国际算法。

SM3为密码哈希算法,用于替代MD5/SHA-1/SHA-256等国际算法。

SM4为分组密码,用于替代DES/AES等国际算法。

ZUC算法(祖冲之算法集)是由我国学者自主设计的加密和完整性算法,包括祖冲之算法、加密算法128-EEA3和完整性算法128-EIA3,已经被国际组织3GPP推荐为4G无线通信的第三套国际加密和完整性标准的侯选算法。

SM9为基于身份的密码算法,可以替代基于数字证书的PKI/CA体系。通过部署国密算法,可以降低由弱密码和错误实现带来的安全风险和部署PKI/CA带来的开销。

快速上手

快速上手指南介绍GmSSL的编译、安装和gmssl命令行工具的基本指令。

下载源代码(zip),解压缩至当前工作目录

$ unzip GmSSL-master.zip

编译与安装

$ ./config no-saf no-sdf no-skf no-sof no-zuc
$ make
$ sudo make install

安装之后可以执行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


Tags:密码   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除,谢谢。
▌相关推荐
Nmap (“Network Mapper(网络映射器)”) 是一款免费开源多平台的网络探测和安全审核的工具。Nmap通过主动发送特定数据包在网络中进行探测,并识别、分析返回的信息,用以确认网...【详细内容】
2021-06-11  Tags: 密码  点击:(38)  评论:(0)  加入收藏
1.ubuntu 20.04 LTS 更换阿里云源第一步:先备份下原始源:sudo cp /etc/apt/source.list /etc/apt/source.list.backup第二步:修改文件vim /etc/apt/source.list清除原有的,替换...【详细内容】
2021-06-07  Tags: 密码  点击:(35)  评论:(0)  加入收藏
2021.1后的kali版本创建用户都是非root用户,当我们用非root用户操作时,会提示权限不足,这时我们需要root账号,启用root账号操作如下:在当前账号下,执行命令: sudo passwd root,然后...【详细内容】
2021-06-02  Tags: 密码  点击:(53)  评论:(0)  加入收藏
阅读之前,大家请先看一行符号,看看大家能不能猜出这段符号所代表的含义:“--. --- --- -.. .--- --- -...”相信能看出这段符号含义的人还是占少数,没关系,通过阅读久见菌的这篇...【详细内容】
2021-05-19  Tags: 密码  点击:(43)  评论:(0)  加入收藏
手机支付最主要的就是通过支付宝和微信了,很多人也会在微信钱包里放入不少零钱,方便支付使用。我们除了可以给手机添加密码外,还可以在微信支付上添加密码,保障大家的财产安全。...【详细内容】
2021-04-30  Tags: 密码  点击:(33)  评论:(0)  加入收藏
Windows 系统中连接过的 WIFI 较多,要重装系统,试过一个叫 “Wifi Backup Manager” 的软件,备份后,恢复过来只有用户名,没有密码,且有部分中文的是乱码。这个问题倒是非常经典,重...【详细内容】
2021-04-26  Tags: 密码  点击:(91)  评论:(0)  加入收藏
上午邻居家来串门,想用我家的Wi-Fi,因为孩子要上网课,我心想这是小事,就没多想就把密码告诉了邻居,结果引来后面一堆的事。自从告诉他们家无线网密码后,我家网速就直线下降,不光手...【详细内容】
2021-04-21  Tags: 密码  点击:(75)  评论:(0)  加入收藏
我们有时候使用mysql存在忘记root账号密码的情况,可以进行修改密码的操作。具体步骤是:1.Windows+X打开命令提示符(管理员)。2.cd到mysql的bin文件夹下。e:cd E:\mysql-5.6.28-wi...【详细内容】
2021-04-20  Tags: 密码  点击:(71)  评论:(0)  加入收藏
今天的文章来自 盏茶作酒同学。他在老电脑中发现了一个加密的 zip 文件,于是用 Python 破解了文件密码。在破解的过程中出现了内存爆炸的问题,通过阅读 Python 源代码找到了解...【详细内容】
2021-04-16  Tags: 密码  点击:(121)  评论:(0)  加入收藏
2019年10月26日,十三届全国人大常委会第十四次会议审议通过《中华人民共和国密码法》,构建国家安全法律体系的“四梁八柱”迈出重要一步,新时代密码工作法治化开启新征程。今年4月15日是第六个全民国家安全教育日,今年密...【详细内容】
2021-04-16  Tags: 密码  点击:(43)  评论:(0)  加入收藏
▌简易百科推荐
一、Aliyun Java Initializr阿里中间件发布的定制版Spring Initializr。是集文档、erminal、编辑器三个窗口为一体的。 二、Cloud Toolkit简单来说就是可以快速部署远程服务...【详细内容】
2021-07-15  传智教育官方账号    Tags:在线工具   点击:(4)  评论:(0)  加入收藏
本文介绍PacketQueue,相对于FrameQueue来说比较简单,可以类比Android中的MessageQueue。PacketQueue总体介绍 单向链表结构。first_pkt、last_pkt,是链表的起点和终点结点;recyc...【详细内容】
2021-07-13  程序员老z    Tags:源码   点击:(3)  评论:(0)  加入收藏
TCP客户端:1.建立连接套接字,设置Ip和端口监听,socket()2.建立连接 connect3.write() 获取网络流量对象 发送数据4.read()获取网络流量对象 接收数据5.关闭套接字 TCP服务器端1...【详细内容】
2021-07-08  树朦胧    Tags:socket编程   点击:(8)  评论:(0)  加入收藏
Rust的异步功能很强大,但也以晦涩难懂著称。在本文中,我将总结之前提过的一些想法,并给出一些新的点子,看看这些想法放在一起能产生什么效果。...【详细内容】
2021-07-07  弯月  CSDN  Tags:Rust   点击:(6)  评论:(0)  加入收藏
1.进程 2.线程 3.主线程主线程就是java 中main方法 如果是单线程的话,有p1,p2两个对象,他们中间有一条语句。若是单线程,若这条语句出错,则p2不执行了。若是多线程则p2还可以执...【详细内容】
2021-07-04  程序猿凯撒    Tags:线程   点击:(14)  评论:(0)  加入收藏
作者 | edmz译者 | 王强策划 | 万佳多年来,我已经为很多 API 实现了客户端。为此,我整理了一份清单,列出了一些可以改善开发体验的小技巧。这些想法大都与 API 设计或架构无关...【详细内容】
2021-06-29  技术联盟总坛    Tags:API   点击:(16)  评论:(0)  加入收藏
本系列会讲述微信机器人技术的实现,第一讲主要了解微信网页版给我们提供的http接口,这一步是做一个基于微信网页版机器人的基础和难点。本讲将微信网页版的主要接口罗列出,并给...【详细内容】
2021-06-29  闪客sun  博客园  Tags:微信   点击:(12)  评论:(0)  加入收藏
我们看到很多关于在浏览器里使用js-ipfs的问题。这篇文章展示了用js-ipfs搭建最小化的聊天应用的例子,这个应用可以在浏览器中运行。它使用WebRTC去实现浏览器对浏览器的连...【详细内容】
2021-06-25  IPFSFilecoinFIL    Tags:IPFS连接   点击:(14)  评论:(0)  加入收藏
先举例子来理解这2个概念的区别。老师让两个同学去办公室谈话。如果这两同学(进程)是并列跨过办公室门(CPU)的,那么就是并行。如果同学A先进同学B后进入(或者先B后A),或者两人...【详细内容】
2021-06-24  linux技术栈    Tags:并发   点击:(18)  评论:(0)  加入收藏
这些年前端发生了天翻地覆的变化,几乎每隔几个月就有新的框架和技术诞生,有些技术可能你还没来得及学习,它就已经成为过去时了。2021年前端会有哪些变化,哪些技术会脱颖而出呢?Ja...【详细内容】
2021-06-23  梦回故里归来  今日头条  Tags:前端编程   点击:(18)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条