椭圆曲线密码算法概述

椭圆曲线密码算法(ECC)是一种基于椭圆曲线数学的公钥加密技术,其安全性和效率源于椭圆曲线离散对数问题的难度。ECC的优点包括短密钥长度和小带宽需求。secp256k1椭圆曲线在比特币区块链中被广泛使用。文章还讨论了椭圆曲线的数学基础,如同余式和有限循环群的概念,以及在密码学中的应用。

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

椭圆曲线密码算法

椭圆曲线密码算法(Elliptic Curve Cryptography,ECC)是基于椭圆曲线数学的一种公钥密码算法,其安全性依赖于椭圆曲线离散对数问题的困难性。

椭圆曲线密码算法优点

  • 短的密钥长度,意味着小的带宽和存储要求。

  • 所有的用户可以选择同一基域上的不同的椭圆曲线,可使所有的用户使用同样的操作完成域运算。

椭圆曲线定义

下图是显示了其中一种实际的椭圆曲线:

对椭圆曲线上的点,我们可以定义一种形式的加法:如果椭圆曲线上的三个点位于同一直线上,那么它们的和为

根据上面的定义导出椭圆曲线上的加法运算法则如下: 当

下面的动画解释了为什么是切线:

随着两个点越来越接近,过这两点的直线最终变成了曲线的切线

上面用几何的形式解释了椭圆曲线上的加法法则,下面是数学表达式。设

椭圆曲线上点群的离散对数问题

给定椭圆曲线上的点

和点

,寻找数

,使得

,其中

称为

的基于

的离散对数" style="margin: auto" />

在等式

中,已知

和点

,求点

比较容易,反之已知点

和点

,求

却是相当苦难的,这个问题称为椭圆曲线上点群的离散对数问题。椭圆曲线密码体制正是利用这个困难问题设计的。在实际应用中,

作为私钥,而

作为公钥" style="margin: auto" />

如何计算

用这种形式表示时,计算

(取

“加倍(double)与相加(add)”算法需要这样做: • 取

. • 加倍,得到

. •

相加(为了得到

). • 加倍

,得到

. • 与前一结果相加 (得到

). • 加倍

,得到

. • 对

不做任何操作. • 加倍

,得到

. • 与前一结果相加 (得到

). • … 最后,我们可以计算

,只需7次“加倍”运算和4次“相加”运算" style="margin: auto" />

secp256k1椭圆曲线

在比特币区块链实现中使用的椭圆曲线为secp256k1。所以这里需要学习一下。 secp256k1曲线形如

= 2^256 - 2^32 - 2^9 - 2^8 - 2^7 - 2^6 - 2^4 - 1]

G的阶:

This is a graph of secp256k1's elliptic curve

over the real numbers. Note that because secp256k1 is actually defined over the field

, its graph will in reality look like random scattered points, not anything like this.

椭圆曲线参数 六元组解释: 我们的椭圆曲线算法是工作在循环子群上的。几个参数含义如下:
(1)素数

,这个值定义了有限域的大小 > (2)椭圆曲线的系数



> (3)基点

(子群的生成元)> (4)子群的阶

> (5)协因子

(

" style="margin: auto" />

补充数学概念

这里所用到的密码学其数学基础主要是《数论》、《代数》。如果想要弄清其原理,这两部分数学基础是需要研读的。

同余式

数学上,同余(congruence modulo,符号:≡)是数论中的一种等价关系。当两个整数除以同一个正整数,若得相同余数,则二整数同余。同余是抽象代数中的同余关系的原型。

两个整数

若它们除以正整数

所得到的余数相等,则称

对于模

同余,记作

。读作

关于模

同余。(例

)。

密码学与有限循环群

现代密码学算法和协议中,消息是作为有限空间中的数字或元素来处理的。加密和解密的各种操作必须在消息之间进行变换,以使变换服从有限消息空间内部的封闭性。然而,数的一般运算诸如加减乘除并不满足有限空间内部的封闭性。所以密码算法通常运行于具有某些保持封闭性的代数结构的空间中,这种代数结构就是有限循环群。在数学中,群是一种代数结构,由一个集合以及一个二元运算组成。群必须满足以下四个条件:封闭性,结合律,存在单位元和存在逆元。

群(Group)的定义: 设

最常见的群之一是整数集

有限循环群在群的基础上满足两个额外条件:群元素个数有限以及交换律。循环群由单个元素(产生元)的叠加操作生成,最常见的有限循环群为模拟时钟。

椭圆曲线群定义

在数学上,椭圆曲线群的元素为椭圆曲线上的点,群操作为”+”,”+”的定义为,给定曲线两点<img src="P)

等于

两点的连线与曲线交点沿

轴的对称点,如果

,则

等于

在曲线上的切线与曲线交点沿

轴的对称点。该群的单位元为无穷远零点记作

,有

,点

的逆元为其沿

轴的对称点,记作

" style="margin: auto" />

椭圆曲线有限循环群

前面介绍的椭圆曲线都是基于有理数的,但是计算机运算浮点数(小数)的速度较慢,更重要的是四舍五入浮点数会产生误差,导致多次加密解密操作后原始消息不能被还原。故考虑到加密算法的可实现性,密码学上使用基于整数的模加运算产生椭圆曲线有限循环群。 基于整数的模加运算的特点:

  • 运算速度快

  • 精确的运算结果

  • 产生有限循环

下面举例说明,如何产生ECC有限循环群: 例如考虑

下图展示了

集合中的元素和椭圆曲线的关系。 点

映射到点

,点

的对称点也由点

映射到点

" style="margin: auto" />

如果取一个更大的质数

现在我们基于

如下图所示,随着

椭圆曲线的阶

椭圆曲线定义在有限域上,这也意味着,椭圆曲线上的点也是有限的。所以引出了一个问题:一个椭圆曲线到底有多少个点?定义“椭圆曲线上点的个数”为 椭圆曲线的 阶 (order)。

椭圆曲线的数乘和循环子群

在实数域,数乘(标量乘法)被定义如下:

如何计算及算法复杂度,上面有讲过,这里讲述它的一个性质。举例说明: 椭圆曲线

,点

。现在计算

的数乘" style="margin: auto" />

上图可以化为下图的表示形式:

结果显示点

的倍数的结果只有出现5个点,其他的点从未出现;其次他们是周期出现的。 显然,上面的5个点的集合,运算是封闭的。 当然,不仅仅

有这样的性质,其他点也有类似的性质。 即,

的加法构成了一个群

,由于

属于

,故

的子群。 循环子群是ECC的基础" style="margin: auto" />

子群的阶

1.首先,我们已经定义了阶就是群中点的个数。在子群中也是这样的,但是我们可以换一种表达方式:子群的阶是最小能够使得

2.子群的阶和群的阶是有关系的。拉格朗日定理说明了,子群的阶是群的阶的因子。即如果

找到子群的阶的方法(根据上面讲述的定义和性质就能得出下面的方法):(1)计算群的阶

(2)找出所有

的因子(3)每个

的因子

,然后乘以

(4)在3中,找出最小的

,使得满足

。则

是子群的阶" style="margin: auto" />

如何找一个基点

在ECC算法种,我们希望找到一个阶数较大的子群。 通常我们会选择一个椭圆曲线,然后计算它的阶

首先,拉格朗日揭示,

其次,每个椭圆曲线上的点

,因为

的阶

的倍数。 我们可以写成这样

。 假设

是一个素数,我们令

,则

就是子群的生成元。

必须是素数,若非如此,则

不一定表示

的阶,因为

的阶可能是

的一个因子。 总结如下" style="margin: auto" />

1.计算椭圆曲线的阶

2.选择一个数

3.计算

4.随机选择一个点

5.计算

6.如果

网络安全成长路线图

这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成hei客大神,这个方向越往后,需要学习和掌握的东西就会越来越多,以下是学习网络安全需要走的方向:

# 网络安全学习方法

上面介绍了技术分类和学习路线,这里来谈一下学习方法:

## 视频学习

无论你是去B站或者是油管上面都有很多网络安全的相关视频可以学习,当然如果你还不知道选择那套学习,我这里也整理了一套和上述成长路线图挂钩的视频教程,完整版的视频已经上传至优快云官方,朋友们如果需要可以点击这个链接免费领取。网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值