密码学 | 椭圆曲线密码学 ECC 入门(二)

目录

4  椭圆曲线:更好的陷门函数

5  奇异的对称性

6  让我们变得奇特


⚠️ 原文地址:A (Relatively Easy To Understand) Primer on Elliptic Curve Cryptography

⚠️ 写在前面:本文属搬运博客,自己留着学习。如果你和我一样是小白,那么看完本文我们将仍然不能理解下图具体是在干什么,但能够对 RSA 和椭圆曲线加密的初衷有所了解。


密码学 | 椭圆曲线 ECC 密码学入门(一)文章浏览阅读273次,点赞4次,收藏8次。1 公共密钥密码学的兴起2 玩具版 RSA 算法2.1 RSA 基本原理2.2 RSA 举例说明1 加密2 解密3 不是完美的陷门函数https://blog.csdn.net/m0_64140451/article/details/137672818?spm=1001.2014.3001.5502

4  椭圆曲线:更好的陷门函数

在 RSA 和 Diffie-Hellman 算法被提出之后,研究人员开始探索其他基于数学的密码学解决方案,寻找超越因式分解的其他算法,这些算法可以作为良好的陷门函数。1985 年,基于一种深奥的数学分支 —— 椭圆曲线的密码学算法被提出。

但椭圆曲线究竟是什么,以及其背后的陷门函数是如何工作的呢?不幸的是,与因式分解不同 —— 我们中学生在初中第一次接触到 —— 大多数人对椭圆曲线的数学并不熟悉。数学并不简单,解释起来也不容易,但我会尝试在接下来的几部分中解释。

如果您的眼睛开始变得模糊,您可以跳到最后一部分:“这一切意味着什么?”

椭圆曲线是满足特定数学方程的点的集合。椭圆曲线的方程看起来像这样:

y^2=x^3+ax+b

这个方程定义了一个椭圆曲线,而椭圆曲线具有一系列独特的数学性质,这些性质对密码学家来说非常有兴趣。这个方程的图像如下:

椭圆曲线的其他表示方法有很多,但技术上讲,椭圆曲线是满足两个变量中一个变量的二次方程和另一个变量的三次方程的点的集合。椭圆曲线不仅仅是一张漂亮的图片,它还有一些特性,使它成为密码学的一个良好环境。

5  奇异的对称性

仔细观察上面绘制的椭圆曲线。它有几个有趣的特性。

  • 其中之一是 水平对称性。曲线上的任何点都可以关于 x 轴反射而仍留在同一曲线上。
  • 更有趣的特性是,任何非垂直线将与曲线 最多相交三个点

让我们将这个曲线想象成一个奇怪的台球游戏的场景。

如上图所示,取曲线上任意两点并画一条通过它们的线,它会恰好再与曲线相交一个点。在这个台球游戏中,你在点 A 处取一个球,向点 B 射击。当球碰到曲线时,球会要么直接向上(如果它在 x 轴下方)要么直接向下(如果它在 x 轴上方)弹跳到曲线的另一侧。 

为什么比喻为台球?答:因为在台球运动中,台球撞击到桌子的边沿会反弹。不过现实中的台球反弹方向有无穷多种,而这里的台球只会向上或向下反弹。

我们可以称这种在两点上的台球移动为 “dot” 。曲线上的任何两点都可以 “dot” 在一起得到一个新点。比如:

  • A dot B = C

个人认为,这里把 “dot” 理解成一种自定义的运算就行了(可以按个人喜好起名),类似于小学做的定义新运算题。

我们也可以将台球的移动串联起来,即不断地用 “dot” 操作一个点与自己。

  • A dot A = B
  • A dot B = C
  • A dot C = D
  • ……

这里的意思是:假设初始点是 A,然后让 A 不断和自己做 “dot” 运算。

结果证明,如果你有两个点,一个初始点与自己点运算 n 次后到达一个最终点,而你只知道最终点和第一个点,要找出 n 是困难的。

这里的意思是:假设只告诉你初始点 A 和它最终到达的点 Z,那么你很难求出该过程中做了多少次 “dot” 运算,即求解 n 的值非常困难。

为了继续我们奇怪的台球比喻,想象有一个人在一个房间里独自玩我们的游戏一段时间。他很容易按照上述规则一次又一次地击球。如果稍后有人走进房间,看到球最终停在了哪里,即使他们知道所有的游戏规则和球开始的地点,他们也无法确定球被击打了多少次才能到达那里,除非他们再次重新经历整个游戏,直到球到达同一个点。容易做到,难以撤销:这就是一个非常好的陷门函数的基础。 

椭圆曲线算法也满足 “单向容易,逆向困难”,其中单向是做 “dot” 运算,逆向是求解 n 的值。套用台球的比喻就是,单向是击球,逆向是求解击了多少次球。

6  让我们变得奇特

这个翻译确实很奇特。。。

上面简化后的曲线非常适合观赏和解释椭圆曲线的概念,但它并不代表用于密码学的曲线的样子。为此,我们必须限制自己在一定范围内的数字,就像在 RSA 中那样。我们不是允许曲线上的点有任何值,而是限制自己在固定范围内的整数。

在计算椭圆曲线公式时,我们使用同样的技巧,当达到最大值时将数字循环。如果我们选择最大值为一个素数,那么椭圆曲线被称为 素数曲线,并具有优秀的密码学特性。

所谓 “数字循环” 也还是取模的意思。假设最大值是 8,当我们数到 8 后又回到 1 这个起点,形成原文所说的数字循环:1, 2, ..., 7, 8, 1, 2, ..., 7, 8, 1, 2, ... 。

下面是一个椭圆曲线对于所有数字的绘图示例:

下面是同一条曲线,但只用整数点表示,最大值为 97 的绘图:

这看起来一点也不像传统意义上的曲线,但实际上它就是。就像原始曲线在边缘被包裹起来,只有那些触及整数坐标的曲线部分被着色。你甚至仍然可以观察到水平的对称性。

竖着一列一列地看,这些点确实是关于 x 轴对称的。

事实上,你仍然可以在这条曲线上玩台球游戏,并且可以将点相互 “dot” 在一起。曲线上的直线方程仍然具有相同的性质。此外,这种 “dot” 操作可以有效地计算。

个人理解,简单来说:假设你选择了曲线上一点 A 作为初始点,并且让它不断和自己做 “dot” 运算,中途会到达 B、C、D 等点,最后你会发现 n 次运算后又会回到 A 点。由此可以认为,A 以及 B、C、D 等点的集合构成了这条椭圆曲线。因此原文说 “同一条曲线,但只用整数点(就可以)表示”。

你可以将两点之间的线想象成一条在边界处环绕直到触及一点的线。仿佛在我们的奇怪台球游戏中,当球击中桌子的边缘(最大值 max)时,它就会神奇地被传送到桌子的另一侧,并继续它的路径直到触及一个点。

在这种新的曲线表示方法中,你可以把一些消息表示为曲线上的若干个点。你可以想象取出一个消息并将其设置为 x 坐标,然后解出 y 以得到曲线上的一个点。在实际中,这个过程比这略微复杂一些,但这是大概的想法。

你会得到以下点:

(70,6), (76,48), ……, (82,6), (69,22)

这一小段讲得确实比较抽象,不知道是不是翻译的原因。

椭圆曲线密码系统可以通过选择一个素数作为最大值、一个曲线方程和曲线上的一个公共点来定义。私钥是一个数字 priv,公钥是公共点与自身相乘 priv 次的结果。在这种密码系统中,从公钥计算私钥的过程被称为 椭圆曲线离散对数函数。这最终是我们一直在寻找的 “陷门函数”。

个人理解:“公共点” 可以理解为前文中提到的起始点 A 点,“相乘” 实际上应该是指前文定义的 “dot” 运算。最后这段话应该算是本文的核心了🥳

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

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

相关文章

实力认证!亚数产品入选《中国网络安全行业全景图(第十一版)》

2024年4月12日,安全牛第十一版《中国网络安全行业全景图》(以下简称“全景图”)正式发布。 亚数信息科技(上海)有限公司(以下简称“亚数”)成功入选数字证书、加解密、密钥管理三项细分领域。 此…

Linux 2.进程(守护进程)

守护进程 何谓守护进程常见守护进程进程查看命令pskill命令编写简单守护进程守护进程的父进程 何谓守护进程 daemon,表示守护进程,简称为d(进程名后面带d的基本就是守护进程) 长期运行(一般是开机运行直到关机时关闭&…

【Node.js从基础到高级运用】二十五、Node.js中Cluster的作用

引言 Node.js中的cluster模块允许您轻松创建共享服务器端口的子进程。这是一个核心模块,用于在Node.js应用程序中实现多进程架构,以充分利用多核CPU系统的计算能力。 cluster介绍 当您启动一个Node.js应用程序时,默认情况下它运行在单个进程…

【Python】什么是pip,conda,pycharm,jupyter notebook?conda基本教程

pip--conda--pycharm--jupyter notebook 🍃pip🍃conda🍃Pycharm🍃jupyter notebook🍃Conda基本教程☘️进入base环境☘️创建一个新的环境☘️激活环境☘️退出环境☘️查看电脑上都安装了哪些环境☘️删除已创建的项目…

Mac 部署 GPT-2 预训练模型 gpt2-chinese-cluecorpussmall

文章目录 下载 GPT-2 模型快速开始 GPT-2 下载 GPT-2 模型 https://huggingface.co/uer/gpt2-chinese-cluecorpussmall git clone https://huggingface.co/uer/gpt2-chinese-cluecorpussmall # 或单独下载 LFS GIT_LFS_SKIP_SMUDGE1 git clone https://huggingface.co/uer/gpt…

使用Docker,【快速】搭建个人博客【WordPress】

目录 1.安装Mysql,创建(WordPress)用的数据库 1.1.安装 1.2.创建数据库 2.安装Docker 3.安装WodPress(使用Docker) 3.1.创建文件夹 3.2.查看镜像 3.3.获取镜像 3.4.查看我的镜像 3.5.使用下载的镜像&#xf…

Linux的学习之路:11、地址空间

摘要 本章主要是说一下地址空间,我也只是按照我的理解进行解释,可能说不清楚,欢迎指正 目录 摘要 一、空间布局图 二、代码测试一下 三、进程地址空间 四、测试代码 一、空间布局图 如下方图片可以看出地址空间有几种,这里…

Arduino源代码(ino)在Proteus中调试总结

一、前言 基于BluePill Plus开发板(该板是毕设网红板) BluePill Plus / WeAct Studio 微行工作室 出品 BluePill-Plus/README-zh.md at master WeActStudio/BluePill-Plus GitHub 首页-WeAct Studio-淘宝网 (taobao.com) 在Proteus中对应的例子是&…

每日OJ题_多源BFS①_力扣542. 01 矩阵(多源BFS解决最短路原理)

目录 多源BFS解决最短路算法原理 力扣542. 01 矩阵 解析代码 多源BFS解决最短路算法原理 什么是单源最短路 / 多源最短路? 之前的BFS解决最短路都是解决的单源最短路。 画图来说,单源最短路问题即为: 而对于多源最短路问题: 如何解决此…

Docker容器逃逸-特权模式-危险挂载-Procfs

Docker容器逃逸-特权模式-危险挂载 Docker这个概念: Docker 容器与虚拟机类似,但二者在原理上不同,容器是将操作系统层虚拟化,虚拟机则是虚拟化硬件,因此容器更具有便携性、高效地利用服务器。 ‍ Docker会遇到的安…

京东微服务microApp使用总结

前言 基于现有业务门户进行微服务基础平台搭建 主应用框架:vue3vite 子应用框架:vue2webpack / vue3vite在这里插入代码片 本地调试即可:主应用子应用进行打通(注意:两者都是vue3vite) 问题总结 1.嵌入…

压电式微机械超声换能器(PMUT)可替代传统超声换能器 下游应用范围广泛

压电式微机械超声换能器(PMUT)可替代传统超声换能器 下游应用范围广泛 压电式微机械超声换能器(PMUT),是一种基于正逆压电效应与微机械(MEMS)技术制造而成的发射、接收超声波以实现检测的装置。…

个人开发 App 最简单方法:使用现代开发工具和平台

在移动应用市场的蓬勃发展下,个人开发者也有机会将自己的创意转化为实际的应用程序,并通过应用商店实现盈利。然而,对于许多初学者来说,如何开始个人开发一个应用可能会感到困惑。本文将介绍个人开发 App 的最简单方法&#xff0c…

Zynq7000系列中的IOP模块时钟使用

IOP模块的时钟(用于内部控制器逻辑)可以由时钟子系统生成,或者在某些情况下,由IOP的外部接口生成。在所有情况下,IOP的控制和状态寄存器都是由其AMBA接口时钟(CPU_1x)驱动的。有时,C…

ESA SNAP更新失败

snap用起来真是一言难尽,老师原话:很拉,不更新进行处理又会报错(本科的时候就已经体验过了),但是更新又会发现老是失败,just pop up a window: try again later、unable to connect to update c…

️️️Vue3+Element-Plus二次封装一个可定制化的table组件

前言 为什么需要二次封装 开发后台管理系统,会接触到很多表格和表单,一但表格表单多起来,仅仅只需要一小部分改变,都需要在中重写一大堆代码,许多重复逻辑,我们可以把重复逻辑抽离出来二次封装一个组件 使用,减少在开发中需要编写的代码。 为什么需要定制化 每个…

前端请求404,后端保无此方法

1、微信小程序前端路径404 2、后端报无此路径 3、查看路径下对应的方法 发现忘了在list方法前加GetMapping(“/list”),加上即可

Eclipse 配置JDK版本,Eclipse Maven install 时使用的JDK版本

Eclipse配置JDK版本 Eclipse 配置JDK版本的地方? 在Eclipse中配置JDK版本的步骤如下: 打开Eclipse IDE。转到菜单栏并选择 “Window”(窗口)选项。在下拉菜单中选择 “Preferences”(首选项),或…

【pyhon】while语句的题目

1.计算1至100的偶数之和 sum_even 0 # 初始化偶数之和为0 i 1 # 从1开始循环 while i < 100: # 当i小于或等于100时&#xff0c;继续循环 if i % 2 0: # 如果i是偶数 sum_even i # 将i加到偶数之和上 i 1 # i自增1 print(“1至100的偶数之和为:”, sum_even) 给出乘…

计算机网络练习-计算机网络体系结构与参考模型

计算机网络分层结构 ----------------------------------------------------------------------------------------------------------------------------- 1.在ISO/OSI参考模型中&#xff0c;实现两个相邻结点间流量控制功能的是( )。 A.物理层 B. 数据链路层 C.网络层 D.传…