密码算法引擎介绍和使用手册
密码算法引擎介绍
长安链支持多种密码算法引擎,并支持 动态可配置,长安链引入多种密码算法引擎主要考虑以下几点:
不同密码库密码算法实现性能差异较大
不同密码库开源开放程度不同
开源密码库活跃程度,已知漏洞是否能够及时修复
密码库实现语言以及跨平台兼容问题
长安链当前已支持引擎如下:
同济国密库 Tjfoc, 代码库地址 https://github.com/tjfoc/gmsm
北大国密库 GMSSL, 代码库地址 https://github.com/guanzhi/GmSSL
腾讯国密库 TencentSM,暂未开源
密码算法引擎配置
在长安链chainmaker.yml配置文件中,通过配置项crypto_engine来配置具体的密码算法引擎,如下:
log:
config_file: ../config/wx-org2/log.yml # config file of logger configuration.
#crypto engine config setting
crypto_engine: tjfoc #support gmssl, tencentsm and tjfoc
blockchain:
- chainId: chain1
genesis: ../config/wx-org2/chainconfig/bc1.yml
其中,crypto_engine目前支持tjfoc、gmssl以及tencentsm配置选项,缺省配置为tjfoc.
注:密码算法引擎目前仅支持SM2和SM4,用来进行算法性能优化.如果长安链网络使用非国密启动(或者非linux平台),则该配置项不会生效。
不同引擎密码算法性能对比
软硬件环境
处理器:6-Core Intel Core i7, 2.6 GHz
内存:16 GB
go版本:go1.16.6 darwin/amd64
测试方法
c实现密码库,统一使用cgo进行了封装,性能上有一定影响
采用golang原生benchmark进行测试(串行性能)
测试使用数据msg=“hello world”, 加解密直接针对msg,签名/验证操作先对msg取sm3哈希
测试结果
SM2性能对比(TPS)
密码库 | 签名 | 验证 | 加密 | 解密 |
---|---|---|---|---|
同济库 | 3194 | 691 | 680 | 984 |
北大gmssl | 32793 | 17258 | 7633 | 8902 |
腾讯国密 | 43951 | 26937 | 29283 | 17054 |
SM3性能对比 (TPS)
密码库 | 哈希 |
---|---|
同济库 | 1767591 |
北大gmssl | 2159385 |
腾讯国密 | 3048235 |
SM4性能对比 (TPS)
密码库 | 加密 | 解密 |
---|---|---|
同济库 | 722229 | 1844478 |
北大gmssl | 399276 | 484226 |
腾讯国密 | 768583 | 2777679 |