国密技术在物联网项目中的应用之工具篇

        工欲善其事,必先利其器。一个好用的调试工具不仅能降低重复的劳动还要减少不必要的弯路以提高工作效率。在国密算法的应用项目中,笔者前前后后下载体验过不少桌面工具、密码算法库和浏览器在线工具,在这里分享几个用起来不错的工具。想要得心应手的使用工具,还需要对国密算法有一定的了解,在这个章节也会对算法做一个简单的介绍。

2.1、SM2/SM3/SM4算法介绍

为了便于后续的理解,在这里向大家分享介绍下笔者对商密算法标准规范文档中的一些理解。对于普通的软件密钥,在签名验签、加密解密时,参考GM/T_0009规范;如果是硬件密钥,商密产品类别为智能密码钥匙请参考GM/T_00016规范(SKF接口),商密产品类别为智能密码设备则参考GM/T_00018规范(SDF接口)。特别是在涉及到软件密钥和硬件密钥交互时,尤其需要注意规范问题。

相关密码行业参考标准:

部分标准已上升为国家标准如下:

2.1.1、基本概念

      笔者在这里只介绍几个重要概念和关键点,并不涉及具体的算法实现,对算法实现过程感兴趣的话可以参阅标准规范进一步学习。

SM2算法:SM2算法全称是SM2椭圆曲线公钥密码算法(SM是商用密码的缩写),是一种基于“椭圆曲线”的密码ECC。2016年,SM2成为中国国家密码标准。在商用密码体系中,SM2主要用于替换RSA算法。

简单的说,SM2密钥对的生成是基于椭圆曲线算法的,私钥是一个随机数,公钥是椭圆曲线上的一个点(x,y),即公钥由x和y分量组成。

椭圆曲线:在《SM2椭圆曲线公钥密码算法第1部分:总则》中,介绍了两种椭圆曲线,一种是定义在Fp上的椭圆曲线方程,其中Fp是指包含p个元素的素域,所以又称之为素域曲线;另一种是定义在F2m上的椭圆曲线方程,其中F2m是指包含2m个元素的二元扩域。在《SM2椭圆曲线公钥密码算法第5部分:参数定义》中, 明确定义了SM2使用素数域256位椭圆曲线,并给出了椭圆曲线方程式(y2=x3+ax+b)和默认曲线参数值(p、a、b、n、xG、yG)。

注意:在前后端的SM2加解密和签名验签交互中,请确认双方使用的密码运算库的椭圆曲线参数一致,否则会导致联调失败。

预处理:在《SM2密码算法使用规范》中,介绍了预处理1和预处理2两个过程。预处理1是指使用签名方的用户身份标识和签名方公钥,通过运算得到Z值的过程。Z值的计算需要输入用户身份标识ID和公钥,用户身份标识ID的数据类型为字节串,国密标准里用户身份标识ID的缺省值是“1234567812345678”。预处理2是指使用Z值和待签名消息,通过SM3运算得杂凑值H的过程。

注意:Z值的计算需要用到用户身份标识ID,可以理解为签名者ID。在前后端的SM2签名验签交互中,如果双方ID不一致,那么也会导致联调失败。

2.1.2、SM2密钥数据格式

标准规范中关于SM2密钥数据格式的定义如下:

SM2算法公钥数据格式定义:

补充说明:SM2算法的私钥数据长度为32字节,SM2算法的公钥数据长度为64字节,其中X分量和Y分量分别为32字节。注意,在导入/导出公钥至安全芯片时,只需要64字节的公钥,而不需要“04”标识符。

<
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值