椭圆曲线密码算法概述
椭圆曲线密码算法
椭圆曲线密码算法(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="https://juejin.cn/equation?tex=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站或者是油管上面都有很多网络安全的相关视频可以学习,当然如果你还不知道选择那套学习,我这里也整理了一套和上述成长路线图挂钩的视频教程,完整版的视频已经上传至CSDN官方,朋友们如果需要可以点击这个链接免费领取。网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
椭圆曲线密码算法概述相关推荐
- 7.6椭圆曲线密码算法
1.椭圆曲线密码算法 为了保证RSA算法的安全性,其密钥长度不断增加,导致加解密运算负担越来越重,处理速度越来越慢:相比之下,基于椭圆曲线理论的公钥密码体制可以用较短的密钥获得同样的密码强度. 1.椭 ...
- 杨元原博士国密课堂 · 第一期 | 商用密码应用安全性评估:Part1. 密码算法概述
#国密课堂# 第一期 商用密码应用安全性评估 Part 1. 密码算法概述 什么是密码算法? 密码学(Cryptology)是研究密码编制.密码破译和密码系统设计的的一门综合性科学,其包括密码编码学和 ...
- 学习记录575@网络分层下各层密码算法概述
网络分层协议 互联网通信主要是在TCP/IP通信协议的基础上建立起来的.TCP/IP体系结构共分5层,由上到下分别是应用层.传输层(TCP).网络层(IP).数据链路层和实体层.实体层也称为物理层.使 ...
- 【密码算法 之十四】非对称算法,ECC椭圆曲线算法 之 ECDSA、ECDH、SM2、SM9等
文章目录 1. ECC椭圆曲线 1.1 曲线类型 1.2 曲线标准 1.3 表示方法 1.4 曲线运算 1.4.1 点加(Point Addition) 1.4.2 点乘(Point Multipli ...
- ISO/IEC国际标准组织收入的国产密码算法汇总
我国SM2和SM9数字签名算法正式成为ISO/IEC国际标准 发布日期:2017-11-17来源:国家密码管理局 11月3日,在第55次ISO/IEC联合技术委员会信息安全技术分委员会(SC27)德国 ...
- 基础密码算法c语言实现,国密SM2密码算法的C语言实现
邢维哲 [摘要] N.Koblitz和V.Miller在1985年各自獨立地提出将椭圆曲线应用于公钥密码系统.SM2椭圆曲线密码算法是国家密码管理局批准的一组算法,在电力自动化通讯中得到了广泛应用.本 ...
- 国密算法概述介绍(SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法(ZUC))
ttps://blog.csdn.net/SkyChaserYu/article/details/104039272 众所周知,为了保障商用密码的安全性,国家商用密码管理办公室制定了一系列密码标准,包 ...
- 密码算法(SM1、SM2、SM3、SM4、同态加密、密态计算、隐私计算和安全多方计算)
文章目录 SM1 对称密码 SM2 椭圆曲线公钥密码算法 SM3 杂凑算法 SM4 对称算法 同态加密 密态计算和隐私计算 安全多方计算技术 安全多方计算的应用场景 对称加密算法 非对称加密算法(公钥 ...
- 国密算法概述(SM1、SM2、SM3、SM4、SM7、SM9、ZUC )
一.概述 为了保障商用密码的安全性,国家密码局制定了一系列密码标准,包括:SM1(SCB2).SM2.SM3.SM4.SM7.SM9.祖冲之密码算法(ZUC) 等. 其中SM1.SM4.SM7.祖冲之 ...
最新文章
- 如何保证缓存和数据库的双写的一致性
- Cloudera Manager安装
- 26行代码AC_试题 历届试题 日期问题 | 第八届蓝桥杯B组第七题
- SpringMVC 返回json的两种方式
- 怎么在一里以外识别出一个菜鸡程序员
- Cray:XC50提供了最高密度的性能
- html绘制城堡,网页上的虚幻3,HTML5版《史诗城堡》体验
- mysql with lock tables_mysql出现大量FLUSH TABLES WITH READ LOCK
- 什么样的技术最后会成为CTO
- 基于队列的医院挂号模拟系统
- 如何实现SpingAOP?及其实现过程分析
- 【C语言】贪吃蛇游戏
- 常用代码大全(新手入门必备)
- C#读取MP3文件的专辑图片和ID3V2Tag信息(带代码)
- Python字符串| min()
- 共享电动滑板车来了,它估值为何高达20亿美金?
- 项目经理到底要不要考取PMP证书?
- 如何使用计算机做海报,用word做的海报步骤_word怎么设计海报
- 心流:写作、编程和修炼武功的共同法门
- 中层管理者八大绝招 —— 如何培养基层管理者?
热门文章
- Omni Converter全能转换器 for Mac(全能视频转换工具)v1.0.3中文BAN的特点
- 数据结构(C语言)中双向链表的定义及基本操作
- leecode#x平方根#爬楼梯
- 20北大软微华为实验班——Linux基本操作
- VMware 装Ubuntu、Win10 及Apache
- python 输出汉字大写数字的章节数
- 新手如何学好C++?
- 常用的bug管理工具--推荐『禅道bug管理工具』
- 好惨一恐龙:在最后时刻,它们将所有灾难都经历个遍
- vage mysql_MySql下视图的创建