ECC

本文详细介绍了椭圆曲线加密(ECC)的基础概念,包括椭圆曲线的定义、群操作以及如何通过加法运算进行点的求和。重点阐述了基于椭圆曲线的离散对数问题,并展示了ECDH(椭圆曲线Diffie-Hellman)密钥交换的过程,用于实现安全的密钥协商。在ECDH中,两个通信方通过各自选择的秘密整数和公开的椭圆曲线参数生成共享密钥。
摘要由CSDN通过智能技术生成

ECC椭圆加密曲线

椭圆曲线的定义

Zp(p>3)上的椭圆曲线指满足以下条件的所有对(x,y) ∈ Zp 的集合:

​ y2 ≡ x3 + a*x + b mod p

以及一个无穷大的虚数点此处记为G,其中(a,b)∈ Zp

且满足条件4*a3 + 27*b2 ≠ 0 mod p。

在这里插入图片描述

椭圆曲线上的群操作

可以用加法符号”+“来表示群操作,两点相“加”得到第三点

P + Q =R

即(x1 , y1 ) + (x2 , y2) = (x3 , y3)

两点相“加”的方式与这两点是否是相同点有关

相异点连线的交点并关于X轴对称的点即为得到的点:

在这里插入图片描述

相同点切线的交点取对称:

在这里插入图片描述

其坐标点的关系:

x 3 = s 2 − x 1 − x 2    m o d    p y 3 = s ( x 1 − x 3 ) − y 1    m o d    p    其 中 s 的 值 会 因 情 况 不 同 而 变 化    s = { y 2 − y 1 x 2 − x 1    m o d    p      ; P ≠ Q 3 x 1 2 + a 2 y 1    m o d    p    ; P = Q x_3 = s^2 - x_1 -x_2\;mod\;p\\ y_3 = s(x_1 - x_3) - y_1\;mod\;p\\ \;\\ 其中s的值会因情况不同而变化\\ \;\\ s=\left \{ \begin{array}{c} \frac {y_2 - y_1}{x_2 - x_1}\;mod\;p\;\;;P≠Q\\ \frac{3x^2_1 + a}{2y_1}\;mod\;p\;;P=Q \end{array} \right. x3=s2x1x2modpy3=s(x1x3)y1modpss={x2x1y2y1modp;P=Q2y13x12+amodp;P=Q
注意:P + G =P P + (-P) = G

P(xp , yp)的逆元为-P(xp , -yp),若在素数域上,则-P(xp , P-yp)

对于椭圆加密曲线的群操作,相当于把以前的群的数字变成了坐标点,群操作也只是变得稍微抽象了一些。

所以同样的,曲线上的点可以与G一起构成循环子群

假如一个群的阶数为X,那么X*P = G,(X+1)* P = P

相当于把之前的群的知识类比过来。

自然而然我们就可以构建出基于椭圆曲线的离散对数问题:
P + P + … +P = d*P =T

有了基于椭圆曲线的离散对数问题,我们自然也可以得到基于椭圆曲线的密钥交换:

基于椭圆加密曲线的密钥交换
ECDH域参数选取:

1.素数p和椭圆曲线:

​ y2 ≡ x3 + a*x + b mod p

2.本原元P = (xp , yp) (此点可循环生成所有点)

椭圆曲线 Diffie-Hellman 密钥交换(ECDH):

Alice:

选择kprA = a ∈ {2,3,…,#E-1}
计算kpubA =aP =A = (xA , yA)
最后将A发送给Bob

Bob:
选择kprB = b ∈ {2,3,…,#E-1}

计算kpubB = bP =B ∈(xB , yB)
再将B发送给Alice

而后两人分别计算aB = TAB , bA = TAB

就得到了联合密钥:T(xAB , yAB

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值