tfpwl_lj的个人空间 https://blog.eetop.cn/1638430 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

SM2/SM3/SM4/SM9 国密算法 RTL&C实现的一点想法

已有 1955 次阅读| 2021-8-23 13:26 |系统分类:芯片设计| 国密算法

SM2/SM3/SM4/SM9 RTL&C实现的一点想法

Source: https://www.oscca.gov.cn/sca/xxgk/bzgf.shtml

有关SM2、SM3、SM4、SM9的介绍就不提了,网上有许多介绍。这里重点说一下实际使用相关的一点内容。

1.SM3 & SM4

1.1 SM3哈希算法类似与MD5,主要用于SM2、SM9算法中去计算一些值,这在SM2、SM9的官方文档有详细说明。

1.2 与SM3相关的有个加密算法叫做HMAC。在实际设计SM3的时候,会将SM3、HMAC一起设计。HMAC概念可参考https://blog.csdn.net/chengqiuming/article/details/82822933

1.3 SM3 RTL实现不难,照着官方文档就可以写出来,但在实际应用的时候可以和HMAC一起设计出来,便于后续应用。

1.4 SM4是对称加密算法,在实际应用的时候还会加入AEC加密模式(https://blog.csdn.net/heyatzw/article/details/76165635),主要使用ECB/ CBC/CTR这三种。其应用主要是对SM4的输入明文进行处理,再将处理结果和密钥送入SM4算法引擎中进行加密。实现难度也不大,依照官方文档再结合AEC加密模式即可写出RTL代码。

2.SM2 & SM9

2.1 SM2 和SM9均为非对称加密算法,数学上都依赖椭圆曲线算法。SM2较SM9实现更为容易一些。SM9的计算量是SM2的两个数量级。它们共同依赖于有限域的大数模运算(加减、乘法、除法【逆元】)。

2.2 在有限域大数模运算中,加减取模是容易实现的,最难的是乘法和除法。乘法和除法的RTL实现可参考以下文档,

A HW Algo for Modular Multiplication or Division-2005.pdf

A Systolic HW Arch of Montgomery Modular Multiplication for PKC.pdf

Modular Inverse Algorithms Without Multiplications for Cryptographic Applications-2006.pdf

即使参考文档也不一定能写出来,可以去github上找一找有没有类似的代码。

2.3 解决了底层的有限域的大数模运算(加减、乘法、除法【逆元】),SM2剩下的C代码工作,以签名验签为例,可以参照官方文档写出来。需要注意的是,a,多倍点计算可在SM2总则里找到计算公式;b,计算多倍点之后,需要更换大数模运算的模q->n。

2.4 SM9算法的难点除了有限域大数模运算以外,还有以下两点难度:a, BN双线性对的计算,b,H1、H2函数中的mod(n-1)运算,由于有限域大数模运算的模是素数,n-1是个偶数,因此该取模运算不能使用先前的RTL硬件加速模块(有限域大数模运算)。使用纯C代码可以实现此取模运算,网上可以找到相关资料

https://blog.csdn.net/wu_cai_/article/details/44536271

2.5 对于BN双线性对,SM9官方算法有稍作展开,但具体解法并不详细。

以下文章有理论分析:Optimal Pairings on BN Curves - Yu_Kewei.pdf

有了该文的理论分析,可能还是写不出C代码,可以参考github上的代码https://github.com/ISecOkayamaUniv/elips_bn_bls12 将代码和理论分析做个对照来进行理解。


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 74

    粉丝
  • 38

    好友
  • 42

    获赞
  • 52

    评论
  • 4344

    访问数
关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-25 06:53 , Processed in 0.025151 second(s), 14 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部