SM2椭圆曲线公钥密码算法

 

1      类型


SM2属于非对称加密方式,其实现方式有素域和二元扩域两种方式,我们只介绍素域的情况,二元扩域涉及到多项式运算,理解更困难。

 

2      原理


有限域上的椭圆曲线在点加运算下构成一个有限交换群,且其多倍点运算构成一个单项函数。


2.1     椭圆曲线


椭圆曲线并不是椭圆,之所以成为椭圆曲线,是因为它们与计算椭圆周长的方程相似,也使用三次方程来表示的,一般椭圆曲线的三次方程如下:

 

y ² + axy + by = x ³+ cx ² + dx + e

 

其中a, b, c, d和e是实数,x和y是在实数集上取值,不是所有的椭圆曲线都能用于加密算法,一般情况下,椭圆曲线加密算法取如下方程用于实际应用:

 

y ² = x ³+ ax + b

 

2.2     有限素域

元素个数为素数的有限域称为有限素域,记做F(q),其中q为素数。我们取整数素域F(q),元素包括{0,1,2…p-1,p}。

 

2.3     模n同余

 

假设a mod n ==b mode n, 则成a和b模n同余。

 

2.4     有限域上的椭圆曲线

 

连续的椭圆曲线并不能用于加密,为了将椭圆曲线变成离散的点,我们将椭圆曲线的系数以及变元(即x,y)取值限制在有限域上,执行模p操作,则成此曲线为有限域上的曲线,记做Ep(a,b),根据a和b的取值不同,曲线也就不同,所以Ep(a,b)是一个曲线集合,曲线公式如下:

y ² mod p = (x ³+ ax + b) mod p

 

例如,有整数有限素域为F(23),取a=1,b=1,x=9,y=7,计算结果如下:

 

y ² mod p = (x ³+ x + 1) mod p

49 mod 23 = (729 + 9+ 1) mod 23

3 = 3

 

其中系数和变元均取自有限素域。

 

下图是在F(23)上取值a=1和b=1,即y² mod 23 = (x ³ + x + 1) mod 23的点的坐标,记做E23(1,1):

 

如下表,是曲线中所有的点坐标:

 

 

阿贝尔群,即交换群。

 

2.5     加法


假设椭圆曲线上有三个点P,Q,R在同一直线上,椭圆曲线的加法定义为P+Q+R=O(O是加法中的单位元,类似于实数加法中的0),其几何描述为一条直线上的三个点的和为O,即 P + Q = O - R。

 椭圆曲线多倍点记做P =[k]Q,表示k个Q点相加的结果为P。

 

2.6     椭圆曲线公钥算法加密

 

多倍点记做P=[k]Q,则使用k作为私钥,P作为公钥,对于多倍点运算而言,反向取K得值是数学难题。

 

3      优缺点

 

相比较其他公钥算法,椭圆曲线使用更短的密钥串就能实现比较牢固的加密强度,同时由于密钥串相对较短,加密速度也就相对较快。

 

 

4      应用场景

SM2算法规定了三个应用场景,分别是数字签名,密钥交换和加密解密。

 

4.1     数字签名

数字签名还需要SM3杂凑算法的辅助实现,SM3算法是一种摘要算法。

大致描述如下:

主要采用的方式是签名方对A用户的身份信息和需要进行签名的信息做哈希算法,将生成的hash串与私钥关联。

 验证方则通过公钥信息对签名串进行验证。

 

4.2     密钥交换


 密钥交换实际上是利用公钥和私钥的属性,双方协商密钥的过程,具体参照国密局文档。


4.3     加密解密


加密解密的过程实际上是在密钥交换的基础上进行的(虽然方式不同),最终两方协商可以得到同一个加密密钥,后续进行的实际上是对称加解密的内容,具体请参照国密局文档。

 

5      参考文档

  1. http://kssd.pediy.com/pediy06/pediy6014.htm
  2. 《密码编码学与网络安全:原理与实践》
  3. 国密局sm2算法文档

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
SM2椭圆曲线公钥密码算法是我国自主设计的公钥密码算法,用于实现数字签名、密钥交换和数据加密功能。相比于RSA算法SM2算法基于椭圆曲线上点群离散对数难题,具有更高的密码强度。\[1\] 关于SM2算法的移植,目前已经在我国的密码应用领域得到广泛应用。国家密码管理局于2011年发布了《关于做好公钥密码算法升级工作的通知》,要求在建和拟建公钥密码基础设施电子认证系统和密钥管理系统中使用SM2算法。同时,自2011年7月1日起,投入运行并使用公钥密码的信息系统也应使用SM2算法。\[2\] SM2算法的移植工作主要包括将算法应用到相应的系统和设备中,并确保其安全性和性能。移植过程中需要考虑算法的实现细节、密钥管理、算法性能优化等方面的问题。同时,还需要进行相关的测试和验证,确保移植后的算法能够正常运行并满足安全需求。 总之,SM2椭圆曲线公钥密码算法已经在我国得到广泛应用,并且有相关的政策要求在密码应用系统中使用该算法。移植工作需要考虑算法的实现和性能优化,并进行相应的测试和验证。\[1\]\[2\] #### 引用[.reference_title] - *1* *2* *3* [sm2国密算法的纯c语言版本,使用于单片机平台(静态内存分配)](https://blog.csdn.net/qq8864/article/details/100582268)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值