椭圆曲线加密算法

news2024/11/20 19:35:04

椭圆曲线密码学(Elliptic curve cryptography),简称ECC,是一种建立公开密钥加密的算法,也就是非对称加密。类似的还有RSA,ElGamal算法等。ECC被公认为在给定密钥长度下最安全的加密算法。比特币中的公私钥生成以及签名算法ECDSA都是基于ECC的。下面简单介绍ECC以及ECDSA的原理。
在这里插入图片描述

从公钥加密说起

公钥加密,也称非对称加密。可以说它现在是现代网络安全或者网络信任链的基础。公钥加密最大的特征就是通信双方各有一对公私钥,这一对公私钥有着千丝万缕的数学关系。每个人保存自己的私钥,公开自己的公钥。这样做的好处是不怕通信线路被窃听,因为攻击者拿到公钥是无法解出密文的。公私钥的基本使用场景主要有两种:

假设通信双方叫Alice(公钥A、私钥a)和Bob(公钥B、私钥b)。

  • 公钥加密,私钥解密
  1. Alice写了一封信,她不想让别人知道。于是它用Bob的公钥B对信的明文做了加密,密文为m。之后发送给了Bob。
  2. Bob收到密文m,用自己的私钥b对密文解密,正确的读出了信的内容。

整个过程中,即使窃听者拿到密文m、两个人的公钥A、B都没有什么用,无法解密出任何东西。事实上,只有拥有私钥b的人才能解密出这份信息。换个角度来说,每个人都可以拥有Bob的公钥B,也就是说,每个人都可以创造一份只有Bob可以使用或者说只对Bob来说有效的信息。

  • 私钥加密,公钥解密
  1. Alice写了一份公开声明文件,她用自己的私钥a对文件加了密,生成加密文件m,公布在自己的网站中。
  2. Bob下载了这份声明文件,并用Alice的公钥A进行解密,正确的读出文件内容。

这个过程听起来有点奇怪,Alice既然公布的是声明文件,是想让别人阅读的,而且每个人都可以拿到Alice的公钥A,那么为什么还要加密呢?确实,每个人都可以对文件解密,可是这里的目的主要不是解密,而是对这份文件的来源验证,证明它肯定是由Alice发出的声明。即使文件被恶意篡改,那么此时再拿公钥A解密,就是无效的,由此可证明信息被改动过了,并不是Alice的原来文件。用这种方式使用公私钥可以证明信息的来源并且有不可否定的特性。(即Alice不能否认此信息不是由她发出的,因为只有私钥a可以产生加密文件m)

以上是使用公钥加密算法的基础场景,但事实上用上述方法进行通信还远远不够,例如需要提高加密速度,需要先对文件进行hash;再如不能抵御中间人攻击,(即获取的公钥不一定是正确的)需要引入证书,不过这些不在本文讨论范围之内。下面我们来看ECC是如何产生密钥对的。

椭圆曲线

这一节让我们来了解一些数学知识。

一般来说,椭圆曲线可以用下列方程式表示,a,b,c,d为系数(a≠0,有重根)
在这里插入图片描述
例如,当a=1,b=0,c=-2,d=4时,所得到的椭圆曲线为:
在这里插入图片描述
椭圆曲线下图所示。

在这里插入图片描述
E _ 1 : y 2 = x 3 − 2 x + 4 E\_1:y^2=x^3-2x+4 E_1:y2=x32x+4曲线

其实椭圆曲线并不是我们高中学习的椭圆形状,其名字的由来是因为椭圆曲线的描述方程,类似于计算一个椭圆周长的方程。这里用于加密的椭圆曲线的定义是一个特殊情况,完整定义参考这里

有了图像,我们接下来就可以搞一搞事情了😈

椭圆曲线的加法

在这里首先要介绍一下群的概念。群是一种代数结构,由一个集合以及一个二元运算所组成。已知集合和运算(G,*)如果是群则必须满足如下要求

  • 封闭性:∀a,b∈G,a * b ∈ G
  • 结合性:∀a,b,c∈G ,有 (a * b) * c = a * (b * c)
  • 单位元:ョe∈G, ∀a ∈G,有e * a = a * e = a
  • 逆元:∀a ∈G ,ョb∈G 使得 a * b = b * a = e

另外,有一种特殊的群叫阿贝尔群,它除了上面的性质还满足交换律公理 a * b = b * a

举个例子,在整数范围内的加法运算就是一个阿贝尔群(Z,+)。

  • 封闭性:a和b是整数,那么a+b肯定是整数。
  • 结合性:(a + b) + c = a + (b + c)。
  • 单位元:0即为单位元,因为对于所有整数a, a + 0 = 0 + a = a。
  • 逆元: a的逆元为-a,因为a + (-a) = 0,即单位元。

所以(Z,+)是阿贝尔群。

现在,我们来定义椭圆曲线上的加法。

现在有椭圆曲线,曲线上的点P和Q。过P和Q做一条直线,交椭圆曲线为点R’,再过R’点做垂直于X轴的直线,交曲线另一点为R,定义P + Q = R。如下图所示。
在这里插入图片描述
若P=Q,则为过P点的切线交于椭圆曲线为R’。如下图所示。

在这里插入图片描述
这样,称R = 2P。类似的,3P = P + P + P = P + 2P = P + R。也就是说,当给定点P时,“已知数x求点xG的运算”不难,因为有加法的性质,运算起来可以比较快。但反过来,“已知点xG求x的问题”则非常困难,因为只能遍历每一个x做运算。这就是椭圆曲线密码中所利用的“椭圆曲线上的离散对数问题”。

要想使这个运算满足阿贝尔群的性质,我们还要引入一个无穷远点O,可以把它理解为平行直线的交点(如果感觉难以理解,请参考无穷远点的定义),我们把这个O点作为单位元。(方便理解,你可以当做所有平行于y轴的直线交于O点)。

有了上述无穷远点的定义,不难证明椭圆曲线上的加法为一个阿贝尔群。

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

椭圆曲线密码利用了上述“运算”中的“椭圆曲线上的离散对数问题”的复杂度,就像RSA利用了“大数质因数分解”的复杂度,以及EIGamal密码的Diffie-Hellman密钥交换利用了“有限域上的离散对数问题”的复杂度一样。

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

  • 已知
    • 椭圆曲线E
    • 椭圆曲线E上一点G(基点)
    • 椭圆曲线E上的一点xG(x倍的G)
  • 求解
    • x

这个问题的难度保证了椭圆曲线密码的安全性。

有限域上的椭圆曲线

到这里,椭圆曲线的定义及运算都是实数范围内的,其实椭圆曲线密码所使用的运算,是在有限域Fp上。有限域Fp是指对于某个给定的质数p,由0,1,2,…,p-1共p个元素所组成的整数集合中定义的加减乘除运算。此运算使用的是模运算。

我们来看一个具体的例子:
在这里插入图片描述
当这个椭圆曲线E2位于实数域R上时,图像如下图所示,是一条光滑的曲线。同样是这条曲线,当位于有限域F23上时,写作:
在这里插入图片描述
即左侧与右侧的结果除以23的余数相等,也叫左侧与右侧的数值模23同余。于是上述图像并不是一条曲线,而是一些离散的点。图像如下图所示。

在这里插入图片描述
如果我们以椭圆曲线上的点P =(3,10)为基点,按照椭圆曲线“加法”运算的规则计算2P,3P,4P…结果如下图所示。
在这里插入图片描述
我们可以看到,所产生的点可以说是无规律可言,例如点P = (3,10),点23P = (9,7)。在这里求离散对数问题就相当于已知点(3,10)和点(9,7),求23。在这个例子中p=23,问题还不难解,如果当p数值非常大时,要求出这个解是十分困难的。

产生公钥和私钥

在椭圆曲线加密中,给定椭圆曲线E,基点G和点xG,我们称xG为公钥,x值为私钥。由椭圆曲线性质可知,已知私钥求公钥很简单,而已知公钥求私钥几乎是不可能的事情。

椭圆曲线密码的应用

有了密钥对,就可以做很多公钥加密的事情了,比如最基本的加密通信,验证数字签名等。这里仅介绍数字签名,其他的原理本质上也都是一样的。

数字签名:椭圆曲线DSA(ECDSA)

依然假设Alice要发布公开文件,并对此文件进行数字签名。Bob需要验证该签名。(以下涉及计算的部分都是求模运算)

生成数字签名

在这里插入图片描述

验证数字签名

在这里插入图片描述

验证原理

这里关键的一点是Alice签名的时候引入了随机数 ,而利用公钥A=aG的特性,在算式中只有A可以消除随机变量r的因素。引入随机数也提高了安全性,即便对于同一条消息,只要改变随机数R,所得到的签名也会随之改变。

至此,我们对于椭圆加密ECC的原理以及ECDSA数字签名有了大致的了解。

网络安全学习资料

下面我准备了很多网络安全学习资料,包括视频教程+学习路线+必读电子书+相关工具安装包+面试题等欢迎大家来白嫖
在这里插入图片描述
vx扫描下方二维码即可免费领取哦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1031699.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是文档签名证书?PDF文档怎么签名?

什么是文档签名证书?在“互联网”时代,电子合同、电子证照、电子病历、电子保单等各类电子文档无纸化应用成为常态。如何让电子文档的签署、审批具有公信力及法律效力,防止伪造签名、假冒签名等问题出现,是电子文档无纸化应用的主…

画一个时钟(html+css+js)

这是一个很简约的时钟。。。。。。。 效果&#xff1a; 代码&#xff1a; <template><div class"demo-box"><div class"clock"><ul class"mark"><liv-for"(rotate, index) in rotatedAngles":key"i…

echarts图表 实现高度按照 内容撑起来或者超出部分滚动展示效果

背景&#xff1a;因为数据不固定 高度写死导致数据显示不全&#xff0c;所以图表高度要根据内容计算 实现代码如下&#xff1a; <divv-if"showCharts"id"business-bars"class"chart":style"{ height: chartHeight px }"></d…

如何做接口测试呢?接口测试有哪些工具

回想入职测试已经10年时间了&#xff0c;初入职场的我对于接口测试茫然不知。后来因为业务需要&#xff0c;开始慢慢接触接口测试。从最开始使用工具进行接口测试到编写代码实现接口自动化&#xff0c;到最后的测试平台开发。回想这一路走来感触颇深&#xff0c;因此为了避免打…

数据结构-----串(String)详解

目录 前言 1.串的定义 相关类型 2.串的储存结构 顺序储存表示 堆分配储存表示 块链储存表示 3.串的操作方式 4.串的匹配算法 &#xff08;1&#xff09;BF算法 过程原理 代码实现&#xff08;C/C&#xff09; 算法分析 &#xff08;2&#xff09;KMP算法 过程…

2.(vue3.x+vite)组件注册并调用

前端技术社区总目录(订阅之前请先查看该博客) 关联博客 1.(vue3.x+vite)封装组件 一:umd调用方式 1:引入umd.js <script src="./public/myvue5.umd.js"></script>2:编写代码调用 (1)umd方式,根据“5

四川天蝶电子商务有限公司真实吗?

四川天蝶电子商务有限公司是一家专注于电商行业的企业&#xff0c;他们通过自己的经验和专业知识&#xff0c;教人带货的方法和技巧。带货是指通过社交媒体或其他渠道&#xff0c;向消费者推销商品并实现销售的过程。 教人带货的方法主要有以下几点&#xff1a; 1.选择合适的平…

以酒为媒、以酒载道,五粮液携手首届“金熊猫奖”,讲好中国白酒故事

执笔 | 尼 奥 编辑 | 萧 萧 这是一次光影艺术与白酒酿造的和美之约&#xff0c;也是中国文化与世界多元文明的交融时刻&#xff0c;在影视与美酒的碰撞瞬间&#xff0c;共同擘画“美美与共&#xff0c;天下大同”的文明图景。 9月19-20日&#xff0c;以“多彩文明荣耀光影…

Webshell 流量特征分析

前言&#xff1a;webshell是以asp、php、jsp或者cgi等网页文件形式存在的一种代码执行环境&#xff0c;主要用于网站管理、服务器管理、权限管理等操作。使用方法简单&#xff0c;只需上传一个代码文件&#xff0c;通过网址访问&#xff0c;便可进行很多日常操作&#xff0c;极…

2023-2024年最新大数据学习路线

文章目录 2023-2024年最新大数据学习路线大数据开发入门*01*阶段案例实战 大数据核心基础*02*阶段案例实战 千亿级数仓技术*03*阶段项目实战 PB级内存计算04阶段项目实战 亚秒级实时计算*05*阶段项目实战 大厂面试*06* 2023-2024年最新大数据学习路线 新路线图在Spark一章不再…

CSS 基础 3

目录 &#x1f680; 导读 -- target 盒子模型 看透网页布局的本质 盒子模型组成 边框(border) border-style ​编辑border-color border-width 边框写法 简写 分开写 表格细线边框 边框会影响盒子实际大小 内边距 内容 内边距-padding padding属性简写 pad…

vue点击pdf文件直接在浏览器中预览文件

好久没有更新文章了&#xff0c;说说为什么会有这篇文章呢&#xff0c;其实是应某个热线评论的要求出的&#xff0c;不过由于最近很长一段时间没打开csdn现在才看到&#xff0c;所以才会导致到现在才出。 先来看看封装完这个预览方法的使用&#xff0c;主打一个方便使用&#x…

Java学习day06:面向对象基础,构造方法,成员/局部变量

声明&#xff1a;该专栏本人重新过一遍java知识点时候的笔记汇总&#xff0c;主要是每天的知识点题解&#xff0c;算是让自己巩固复习&#xff0c;也希望能给初学的朋友们一点帮助&#xff0c;大佬们不喜勿喷(抱拳了老铁&#xff01;) Java学习day06&#xff1a;面向对象基础&a…

网络爬虫相关概念

目录 1、什么是爬虫&#xff1f; 2、网络爬虫步骤 3、爬虫核心 4、爬虫的用途 5、爬虫分类 6、反爬手段 1、什么是爬虫&#xff1f; 如果我们把互联网比作一张大的蜘蛛网&#xff0c;那一台计算机上的数据便是蜘蛛网上的一个猎物&#xff0c;而爬虫程序就是一只小蜘蛛&am…

给定一个链表,判断链表中是否有环

【思路】 快慢指针&#xff0c;即慢指针一次走一步&#xff0c;快指针一次走两步&#xff0c;两个指针从链表其实位置开始运行&#xff0c; **如果链表带环则一定会在环中相遇&#xff0c;**否则快指针率先走到链表的末尾。比如&#xff1a;陪女朋友到操作跑步减肥。 bool hasC…

测试域: 流量回放-工具篇jvm-sandbox,jvm-sandbox-repeater,gs-rest-service

JVM-Sandbox Jvm-Sandbox-Repeater架构_小小平不平凡的博客-CSDN博客 https://www.cnblogs.com/hong-fithing/p/16222644.html 流量回放框架jvm-sandbox-repeater的实践_做人&#xff0c;最重要的就是开心嘛的博客-CSDN博客 [jvm-sandbox-repeater 学习笔记][入门使用篇] 2…

Unity丨自动巡航丨自动寻路丨NPC丨

文章目录 概要功能展示技术细节小结 概要 提示&#xff1a;这里可以添加技术概要 本文功能是制作一个简单的自动巡逻的NPC&#xff0c;随机自动寻路。 功能展示 技术细节 using UnityEngine;public class NPCController : MonoBehaviour {public float moveSpeed 5.0f; // …

成都瀚网科技:抖音提供差异化​​亮点!

在抖音平台上&#xff0c;精选联盟是一个专门为优质品牌提供展示和推广机会的合作项目。对于斗店主来说&#xff0c;如何成功对接精选联盟并实现上市是一个重要目标。在这篇文章中&#xff0c;我们将分享一些豆点与精选联盟对接的方法&#xff0c;并提供上币指南。 1、提升店铺…

2023最新如何轻松升级、安装和试用Navicat Premium 16.2.10 教程详解

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…