談谈PBOC30中使用的国密SM2算法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
談谈PBOC30中使用的国密SM2算法

谈谈PBOC3.0中使用的国密SM2算法 一 知识准备 ? SM2是国密局推出的一种他们自己说具有自主知识产权的非对称商用密码算法。本身是基于ECC椭圆曲线算法的,所以要讲sm2, 先要弄懂ECC。 ? 完全理解ECC算法需要一定的数学功底,因为涉及到射影平面坐标系,齐次方程求解, 曲线的运算规则等概念。这里不做过多的数学分析(主要是我自己也没有完全整明白)。想要深入了解ECC的我推荐网名为ZMWorm 的大牛在多年前写的椭圆曲线ECC加密算法入门介绍。此人是早年看雪论坛中的一个版主,对算法和密码学很有研究。 ? 本篇的主旨还是希望能以简单通俗的语言,讲清楚PBOC3.0认证过程中,所用到的SM2的相关概念,包括它的实现,使用等。 ? 1 椭圆曲线到底是什么样的 ? 图1 图2 ? 上面是两个不同椭圆曲线在坐标系中的几何表示, 不过这个坐标系不是二维坐标系,而是射影坐标系。可以用空间思维想像一下(但是注意不是三维坐标系), 打个比方,你晚上站在一个路灯前面,地上有你的影子,你本身是在一个二维坐标系(把你想像成一个纸片),和你的影子一起构成一个射影坐标系。 ? 曲线的每一个点, 用三个参量表示, (X,Y,Z)。我们知道在二维坐标系里的每个图形都遵循一个方程,比如直接的二元一次方程是y=kx+b, 圆的方程是(x-a)2+(y-b)2=r2, 椭圆曲线在射影坐标系里也有自己的定义: ? Y2Z+a1XYZ+a3YZ2=X3+a2X2Z+a4XZ2+a6Z3 ? 所有椭圆曲线上的点都满足上述方程,a1,a2,a3,a4,a6是系数,决定曲线的形状和位置。 ? 二维坐标和射影坐标有一个对应关系,即x=X/Z, y=Y/Z, 这样就可以把上面的方程转成普通的二维坐标系方程: y2+a1xy+a3y= x3+a2x2+a4x+a6 ? ? 2 离散的椭圆曲线 上面的坐标系都是基于实数的,椭圆曲线看起来都是平滑的,如果我们限制曲线的点都必须是整数,曲线就变成离散的了,如图3所示: 图3 ? 再进一步限制,要求整数必须大于0, 小于某个大整数P, 这样就形成了一个有限域Fp.然后我们在这个有限域里定义一些点与点之间的加减乘除运算规则,比如A点加B点得到C点(记做A+B≡C (mod p)),或者A点乘以n得到K点(记做A×n≡K (mod p))。至于具体规则细节可以不用关心,只要知道有这样的操作即可。 ? 选一条曲线,比如 y2=x3+ax+b 把它定义在Fp上, 要求a,b满足: 4a3+27b2≠0 (mod p) ? 我们把这样的曲线记为Ep(a,b) ? 加解密是基于这样的数学难题,K=kG,其中 K,G为Ep(a,b)上的点,k是整数,小于G点(注意区分,不是我们平常说的那个意思)的阶(不用关心什么是点的阶)。给定k和G,计算K很容易;但给定K和G,求k就困难了。这样,G就叫做基点,k是私钥,K是公钥。 ? 最后总结。描述一条Fp上的椭圆曲线,有六个参量: T=(p,a,b,G,n,h)。 p 、a 、b 用来确定一条椭圆曲线, G为基点, n为点G的阶, h 是椭圆曲线上所有点的个数m与n相除的整数部分) ? 知识准备阶段知道这么多就可以了。 ? ? 二 SM2在PBOC认证中的使用 ? 1 签名和验签的原理 ? 前面提到根据系数的不同,ECC曲线可以有很多,SM2使用其中一种,这就表明它的曲线方程,以及前面说到的六个参量都是固定的。根据国密局给出的规范定义如下: ? [cpp] view plaincopyprint? y2=x3+ax+b?? ??? p=FFFFFFFE?FFFFFFFFFFFFFFFF?FFFFFFFF?FFFFFFFFFFFFFFFF?FFFFFFFF?? a=FFFFFFFE?FFFFFFFFFFFFFFFF?FFFFFFFF?FFFFFFFFFFFFFFFF?FFFFFFFC?? b=28E9FA9E?9D9F5E344D5A9E4B?CF6509A7?F39789F5?15AB8F92?DDBCBD41?4D940E93?? n=FFFFFFFE?FFFFFFFFFFFFFFFF?FFFFFFFF?7203DF6B?21C6052B?53BBF409?39D54123?? Gx=32C4AE2C?1F198119?5F990446?6A39C994?8FE30BBF?F2660BE1?715A4589?334C74C7?? Gy=BC3736A2?F4F6779C?59BDCEE3?6B692153?D0A9877C?C62A4740?02DF32E5?2139F0A0?? y2=x3+ax+b p=FFFFFFF

文档评论(0)

df9v4fzI + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档