安全加解密引擎基础(PKE SM2)
关键词:SM2、OpenSSL等。
1 基本概念
SM2算法和RSA算法都是公钥密码算法,SM2算法是一种更先进安全的算法,在我们国家商用密码体系中被用来替换RSA算法。
SM2椭圆曲线公钥密码算法:我国自主知识产权的商用密码算法,是ECC(Elliptic Curve Cryptosystem)算法的一种,基于椭圆曲线离散对数问题,计算复杂度是指数级,求解难度较大,同等安全程度要求下,椭圆曲线密码较其他公钥秒速昂发所需密钥长度小很多。
SM2性能更优更安全:密码复杂度高、处理速度快、机器性能消耗更小。
SM2
|
RSA
|
|
算法结构
|
基本椭圆曲线(ECC)
|
基于特殊的可逆模幂运算
|
计算复杂度
|
完全指数级
|
亚指数级
|
存储空间
|
192-256bit
|
2048-4096bit
|
秘钥生成速度
|
较RSA算法快百倍以上
|
慢
|
解密加密速度
|
较快
|
一般
|
2 openssl进行SM2密钥生成、加解密、签名验签
生成SM2私钥:
openssl ecparam -genkey -name SM2 -out sm2prikey.pem
从私钥中提取公钥:
openssl ec -in sm2prikey.pem -pubout -out sm2pubkey.pem
查看私钥内容:
openssl ec -in sm2prikey.pem -text -noout
结果如下:
read EC key Private-Key: (256 bit) priv: c8:6e:b5:6f:f9:0c:ca:62:a3:9d:de:53:d3:db:59: 3d:dd:73:82:71:b2:96:9a:88:11:e5:af:ab:3c:c4: 5b:ae pub: 04:71:db:b2:c6:90:8f:64:4d:ce:11:94:3e:15:c5: 1e:1b:aa:d9:e2:d0:77:d3:16:32:9a:9e:37:27:39: e3:bc:6a:80:97:29:3c:76:96:e4:e5:d1:9b:22:cd: 70:b1:be:9b:00:36:97:9e:c8:8a:a5:03:23:6d:3f: bc:d7:ac:38:e9 ASN1 OID: SM2
使用SHA256+SM2对sample.txt进行签名,并将签名保存到sample.sign:
openssl dgst -sign sm2prikey.pem -sha256 -out sample.sign sample.txt
使用SHA256+SM2对sample.sign进行验签:
openssl dgst -verify sm2pubkey.pem -sha256 -signature sample.sign sample.txt
Python下SM2的使用参考《【原创】【pysmx】国密非对称密码算法SM2的使用方法 - 知乎 (zhihu.com)》。
联系方式:arnoldlu@qq.com