【密码学-2】什么是椭圆曲线密码

文章目录

本文共2042字,阅读全文约需10分钟。

前言

上回书我们说到,在常见的三种公钥密码学算法中,椭圆曲线密码学在相同的安全等级下有着更短的密钥长度,而一些比较常见的非对称密码(如SM2、SM3等)均属于椭圆曲线密码,在我们开始学习SM2算法之前,让我们先花一点时间来看看,究竟什么是椭圆曲线密码,它又是如何实现单向函数的?

一、椭圆曲线是什么?

简单地来讲,椭圆曲线密码体制中使用的椭圆曲线为y2=x3+ax+b方程表示的曲线,此椭圆曲线关于X轴对称,且满足约束条件4a3+27b2≠0。
《【密码学-2】什么是椭圆曲线密码》

由于椭圆曲线上的全体点构成一个加法群,简要地来讲,椭圆曲线的加法运算可以进行以下理解:

计算A+B的结果,其中A与B均为椭圆曲线上的点:
①过A、B点作直线,此直线交曲线于点C
②作C点关于x轴的对称点C’,由椭圆曲线的性质可知C’点一定在椭圆曲线上
③上一步中得到的C’点即为所求,即C’=A+B
特殊情况说明:
(1)当直线AB与椭圆曲线无额外交点时(如A+(-A)场景),视为直线与椭圆曲线相交于无穷远处。
(2)当A与B无限接近时,AB等效为过A做切线(如A+A场景),并最终得到2A=A+A的计算结果,同理可以计算得到kA(k∈N+),此为椭圆曲线上系数乘法的计算基础。
《【密码学-2】什么是椭圆曲线密码》

二、ECC加密算法

1.简化的加密过程

在简化数学计算的角度上,可以将ECC的加密过程简化为以下步骤:

①选取一条椭圆曲线Ep(a,b) : y2=x3+ax+b,
并选取椭圆曲线上的一个点P作为基点;
②选定一个较大的数k作为算法的私钥,
并根据椭圆曲线的系数乘法Q=kP运算得到作为算法公钥的Q点;
③加密:选择一个随机数r,将待加密的明文M生成密文C,
此处生成的C是一个点对,其中C=(rP , M+rQ)
④解密:由于对解密者k已知且P、Q均为公开内容,故可执行操作
M+rQ-k(rP) = M,从上述信息中恢复出M的信息

说明:由于椭圆曲线系数乘法的机制,在已知参数k与基点P坐标时,求公钥Q=kP的运算是相对容易的;而已知基点P和公钥Q坐标情况下求解参数k则是相对困难的,此处的难解问题是椭圆曲线问题构成单向函数的基础。

2.数学相关知识

上述介绍的ECC算法加密过程为简化了依赖数学知识的版本,在实际的应用中,通常将椭圆曲线定义在有限域上,本节内容将补充介绍一些相关的数学先验知识。

①将椭圆曲线定义在有限域上的目的
由于域具有运算封闭性,因此可以将不适合加密的连续域椭圆曲线变为离散的,进而便于加密算法的执行

有限域的阶:有限域中含有元素的个数;
有限域的阶通常必为素数的幂pn,有限域常被称为Galois域,记作GF(pn)

②有限域上的椭圆曲线
为了使椭圆曲线更好地匹配有限域,将椭圆曲线的计算改为模p加法和模p乘法(p为素数)

此处存在二级结论:当模取p时,A(x1,y1)和B(x2,y2)的计算结果A+B=C(x3,y3)可以表示为
x3=k2-x1-x2 (mod p)
y3=k(x1– x3)-y1 (mod p)
其中根据A,B的取值可得
A=B时:k=(3x12+a)/2y1 (mod p)
A≠B时:(y2-y1)/(x2-x1) (mod p)

③有限域上的椭圆曲线简化计算
由于实际算法执行中,数字常常以二进制的形式表示,因此椭圆曲线的系数乘法可以按照二进制的表示先倍后加进行计算。

<例>151P的计算
151的二进制表示为10010111
因此计算结果可以表示为151P=27P+27P+24P+22P+21P+20P

总结

以上就是今天要讲的内容,本文仅仅简单介绍了椭圆曲线密码的基本原理和数学依赖知识,后续将更新如SM2、SM3等基于ECC算法的非对称加密算法。

    原文作者:capodexi
    原文地址: https://blog.csdn.net/capodexi/article/details/124156880
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞