SM2公钥加密算法以及ECC加密算法

本文介绍了椭圆曲线加密算法(ECC)的工作原理,包括点的加法、加密过程及存在的问题。讨论了如何在有限域上处理运算,并给出了计算A+B的示例。同时,提到了SM2公钥加密算法,强调了私钥的安全性和加密过程的复杂性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ECC加密算法

在这里插入图片描述

Q = kP 并不是简单意义上的数字相乘,而是具有几何意义,下面会对如何计算kP解释
在这里插入图片描述
满足4a³+27b²≠0是为了保证椭圆曲线中不存在奇点,即任意点均存在切线(后面会有切线的意义解释)

连接AB直线相交于一个点:

在这里插入图片描述
当然也会有两个点所在的直线没有交点
在这里插入图片描述

同理可以推出A+A的交点,就是AB两个无限接近,故两点所在的直线即为过A点的切线
在这里插入图片描述

我们可以得出2A + A 的结果

在这里插入图片描述

所以,我们由以上可以得出,2A和3A点的位置之间没有任何联系,所以我们知道P和Q点,推算出k的值是很难的

加密过程

  • 选择一条椭圆曲线Ep(a,b),并取椭圆曲线上一点作为基点P.
  • 选定一个大数k作为私钥,并生成公钥Q=kP.
  • 加密:选择随机数r,将消息M生成密文C.密文是一个点对,即C=(rP,M+rQ).
  • 解密:解密人是拥有私钥k的,So 解密:M + rQ - k(rP) = M +r(kP) - k(rp) = M

以上过程所有参数,只有k是保密的,其余的所有变量(P和Q)都是公开的

存在问题

椭圆曲线都是连续的,并不适合加密,我们要将椭圆曲线变为离散的点.所以只能将椭圆曲线定义在有限域上.(这里可以理解为,处于有限域中的元素,对其进行加减乘除运算的结果还是在这个有限域的集合中,也就是保证了无论对点进行怎样的运算,最后的结果仍然在集合中)

有理数集合,实数集合,复数集合都是域,但是整数集合不是域,因为1/2=0.5 不在整数集合中

有限域的一些定义:

  • 域F质包含有限个元素,则称其为有限域
  • 有限域中元素的个数称为有限域的阶数
  • 每个有限域的阶必为素数的幂,即有限域的阶可表示为p^n(p为素数,n是正整数),该有限域通常称为Galois域(Galois Fields),即为GF(p^n).

对于有限域来说,因为阶数是有限的,所以需要通过取模操作将阶数限制在一定范围内

在这里插入图片描述

已知A,B点的坐标值

如何计算出A + B?

在这里插入图片描述

例子:基点A(0,1),y² x³ + x + 1 (mod 23) 求2A a=b=1

属于P=Q,所以k = (3*0 + 1)/2 mod 23 = 1/2 mod 23 = 12

故x3 =

插入问题

分数如何取模运算?

负数如何求模?

如何计算 1/2 mod 23呢,设有n1/2 mod 23,于是有2*n 1mod23 解得n=12,故1/2 mod 23 为 12

负数求模的计算公式为:x mod y = x - y⌊x/y⌋;*

SM2公钥加密算法

私钥db和公钥Pb = [db]G

已知基点G和私钥db求Pb是很容易的;但是已知Pb和基点G求db是极其困难的

在这里插入图片描述

A5,A7,A8中的||都是拼接含义

对于A5中的KDF,我们有:

在这里插入图片描述

对于c) 如果v | klen的,就正常生成比特串;反之,如果v 不能整除 klenn的,则取最后一次Hai的前r位,r为klen模v的余数

视频讲解点击这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值