椭圆曲线加密笔记
数学知识
域
:一组元素的集合,以及在集合上的四则运算,构成一个域。其中加法和乘法必须满足交换、结合和分配的规律。加法和乘法具有封闭性,即加法和乘法结果仍然是域中的元素。域中必须有加法单位元和乘法单位元,且每一个元素都有对应的加法逆元和乘法逆元。但不要求域中的 0有乘法逆元。单位元
:单位元和其他元素结合时,并不会改变那些元素。 通常使用e来表示。逆元
:若ab=ba=e,则称a为b的逆元,b为a的逆元。本原多项式
:域中不可约多项式
是不能够进行因子分解的多项式,本原多项式 (primitive polynomial)
是一种特殊的不可约多项式
。当一个域上的本原多项式确定了,这个域上的运算也就确定了。通过将域中的元素化为多项式形式,可以将域上的乘法运算转化为普通的多项式乘法再模本原多项式。
椭圆曲线定义
实数域上一组点集(x,y)
满足
就是一条椭圆曲线。 是为了保证曲线不包含奇点。
另外,无穷远点
也是椭圆曲线的一部分,以0
表示无穷远点。
运算
加法运算
:取一条直线与椭圆曲线相交,这条直线和椭圆曲线相交的三点为P, Q, R(皆非零)。定义他们的总和等于0,。这里的0前述提到的单位元。
PQR同一直线上三点的顺序任意交换不影响加法运算总和,椭圆曲线上的点集属于阿贝尔群,也就是可交换群。
逆元
由 可以推知
那么-Q
又是什么呢?-Q+Q=P+R+Q=0
,容易想到,给定一个椭圆曲线上点Q
,经Q
画一条直线,这条直线与椭圆曲线仅交于两个点,一个点是Q
,另一个自然就是-Q
了。
这样的直线有两种情况,一种是直线经此点相切,另一种就是过此点作垂直于x轴的直线。
先讨论作垂线的情况,由可知,椭圆曲线关于x轴对称。那么另外一点,也就是-Q
,自然就是Q关于x轴对称的另一点了。也就是这条直线与椭圆曲线相较于无穷远点0。
倍点运算
那么切线的情况呢?于切线我们可以通过渐进的方式,即P
不断接近Q
,直到P与Q重合,直线也就成了切线。
在这种情况下,可以写成,也就是。
是的,虽然很难理解,但是在直线与椭圆曲线相切的情况下,另一点是-2Q
。
这就是倍点运算
。
既然有了 -2Q
,很容易我们就能得到2Q
,也就是-R
。有了2Q
与Q
,把他们连起来,-3Q
与3Q
也是手到擒来。
以此类推,对于已知参数的椭圆曲线,给定点Q
,得到它的n倍点,只需要按部就班计算即可。得益于计算机的算力,这并不复杂。
注意,n的取值应当使nQ不为无穷远点。
验证点
现在我们已知两个非零非对称的椭圆曲线点和,过此两点的直线交椭圆曲线于点。
非常容易验证点R是否与P,Q处于同一直线和椭圆曲线上,不再赘述。
有限域实践
以上阐述和图形都建立在坐标连续的情况下,实践中我们常用有限域(伽罗华域, Galois Field)上的椭圆曲线。有限域又可分为素数域与二进制域。
之所以要引入有限域,是因为有限域中的加法和乘法具有封闭性,即加法和乘法结果仍然是域中的元素,实践中我们不可能对变量取无穷多的值进行计算,
上的椭圆曲线:
a,b,x,y均在有限域中取值,即取值在。p为大于3的素数。
p为素数时,才能保证集合中的所有的元素都有乘法逆元(0除外)。即对于域中的任一个元素a,总能在域中找到另外一个元素b,使得a*b mod p 等于1。
说明:假如p等于10,其乘法单位元为1。对于元素2,找不到一个数a,使得2*a mod 10 等于1,即2没有乘法逆元。这时,在域上就不能进行除2运算。
实例:在上的椭圆曲线。
点在该椭圆曲线上,因为:
,
,
。
二进制域上的椭圆曲线:
均在有限域中取值
当 b = 1 时 , 方程表示的曲线称Koblitz
曲线,是椭圆曲线密码体制实现中速度最快的曲线。
为了保证单位元性质,上的加法运算和乘法运算,不再使用一般的加法和乘法,而是使用多项式运算。
在实践中,为了保证安全强度,有限域常常取得很大,当前来说中m取160是合适的,即2的160次方这么大。
椭圆曲线公私钥
给定已知椭圆曲线上一点G和倍数k,计算k倍点 K,即
知道G和k, 计算K是容易的,但是已知K和G,得到k却是困难的。所以我们可以将G和K 发送出去,k保留。K就是我们常说的公钥 , k则是私钥。
加解密
选定已知椭圆曲线E,其上一点G。生成私钥k,计算得到公钥K。
现在用户Alice可以将椭圆曲线E的参数和基点G, 公钥K发送给用户Bob。
Bob收到这些参数后,将需要加密的信息m编码到这个椭圆曲线上一点M,并产生随机数r。计算两个参数。
,
,
这里的M点是未经加密的信息,C1则是信息经过了公钥加密的点,C2点则是Bob的随机数r倍G点。
可以看到,Bob也生成了一个r倍点C2, 并利用r乘以Alice的公钥,本质上实现了Alice和Bob的两个随机数r和k一起对M点进行加法运算。
Alice收到C1和C2后,进行计算
现在,Alice得到了信息m,这个过程中,即使攻击者获得了C1,C2,椭圆曲线E,基点G,也无法破解加密信息。
参考资料:
1.《应用密码学》胡向东等。
2. 伽罗华域(Galois Field)上的四则运算
3. 椭圆曲线加密算法原理解析(ECC)
4. 椭圆曲线加密原理与应用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~