当前位置: 首页 > news >正文

【密码学】椭圆曲线密码体制(ECC)

        椭圆曲线密码体制(Elliptic Curve Cryptography, ECC)是一种基于椭圆曲线数学特性的公钥密码系统。在介绍椭圆曲线之前,我们先来了解一下椭圆曲线的基本概念。

一、椭圆曲线是什么?

(1)椭圆曲线的数学定义

        椭圆曲线是一条由方程 y^2=x^3+ax+b 给定的曲线,其中a和b是常数,并满足\Delta = 4a^3+27b^2\neq 0,以确保曲线没有奇点(即曲线是平滑的)。在无限域(如实数域)上,椭圆曲线看起来像是一条平滑的、不自交的曲线。

椭圆曲线的图像如下:

椭圆曲线图1
椭圆曲线图2

【注】椭圆曲线并不是椭圆,只因为该方程与计算椭圆周长的方程相似。

        可以证明如果 x^3+ax+b 没有重复因子,或者满足 4a^3+27b^2\neq 0 那么椭圆曲线上的点集 E(a,b) 可构成一个Abel群(阿贝尔群)。椭圆曲线包括所有曲线上的点以及一个特殊的点,我们称为无限远点O

(2)椭圆曲线上的算术运算

        椭圆曲线上定义了加法运算,这使得椭圆曲线成为一个群。具体来说,对于椭圆曲线上任意两点 P 和 Q,可以定义它们的和 R=P+Q,其计算方法遵循以下规则:

 ① 加法运算

加法运算(两点不重合)

        加法:如果 P Q 不重合,那么通过连接这两点的直线与椭圆曲线的第三个交点,然后在 y 轴上找到这个点的反射点作为 R

加法运算(两点重合)

        二倍点:如果 P=Q,则使用切线代替直线,找到切线与椭圆的交点,再找到该点关于 y 轴的反射点作为 2P

加法运算(两点是相反数)

        无穷远点:椭圆曲线上的加法还定义了一个特殊点,称为无穷远点,它与任何其他点相加都保持不变

② 点乘运算

        点乘:将一个给定点沿着椭圆曲线进行多次加法操作。点乘运算通常被记作 kP,其中 k 是一个整数,P 是椭圆曲线上的一点。

        如上图3P的计算过程,先计算出2P也就是Q,然后再将Q和P连接在一起,找到和椭圆曲线的交点,这个交点关于X轴的对称点就是3P。

二、椭圆曲线密码体制

        有限域上的椭圆曲线是椭圆曲线的一个变体,它定义在一个有限域(finite field)上,而不是在实数域或复数域上。有限域上的椭圆曲线在密码学中有重要的应用,特别是用于构建椭圆曲线密码体制(ECC)

(1)有限域上的椭圆曲线

        有限域是一个具有有限个元素的域。域意味着在这个集合中定义了加法和乘法操作,并且这些操作满足特定的代数性质,比如加法和乘法的封闭性、结合律、交换律、单位元的存在性、逆元的存在性等。

        有限域的一个重要例子是模 p 的剩余类,这个有限域通常记作F_p,当椭圆曲线定义在一个有限域F_p上时,我们考虑的是所有 (x,y) ,其中 xy都是F_p 中的元素,并且满足上述椭圆曲线方程。这样的点集构成了有限域上的椭圆曲线。

定义在有限域上的椭圆曲线图像

(2)有限域上的椭圆曲线结论

        在有限域上的椭圆曲线上定义的加法运算构成了一个阿贝尔群,这是因为加法运算满足群的四个基本性质:封闭性、结合律、存在单位元、存在逆元,同时加法运算还满足交换律。

  • 封闭性

        对于椭圆曲线 E 上的任意两点 P 和 Q,它们的和 R=P+Q 也是一个椭圆曲线上的点。这意味着加法运算的结果仍然属于椭圆曲线 E。

  • 结合律

        对于椭圆曲线 E 上的任意三点 P、Q 和 R,有 (P+Q)+R=P+(Q+R)。这意味着加法运算的顺序不影响结果。

  • 单位元

        椭圆曲线 E 上定义了一个特殊点 O,称为无穷远点,它是加法的单位元。这意味着对于椭圆曲线上的任意点 P,都有 P+O=P。

  • 逆元

        对于椭圆曲线 E 上的每一个点 P,存在一个唯一的点 −P,使得 P+(−P)=O。这里的 −P 称为 P 的加法逆元。

  • 交换律

        对于椭圆曲线 E 上的任意两点 P 和 Q,有 P+Q=Q+P。这意味着加法运算满足交换律。

(3)椭圆曲线上的离散对数问题(ECDLP)

        椭圆曲线上的离散对数问题 (ECDLP) 是椭圆曲线密码学 (ECC) 安全性的基础。ECDLP 是指在给定的椭圆曲线上,找到一个点的倍数所需的秘密倍数的问题。它的定义如下:

        ECDLP 的难度在于,虽然给定一个点 P 和一个整数 k,很容易计算出 Q=kP,但是反过来,给定 Q 和 P,找到 k 是非常困难的。这种问题的难解性是椭圆曲线密码学安全性的核心。

正向计算简单

        ECDLP 的难度确保了椭圆曲线密码系统的安全性。由于目前没有已知的有效算法可以在多项式时间内解决 ECDLP,因此只要选择合适的椭圆曲线和密钥长度,就可以实现高度的安全性。

反向计算困难

三、椭圆曲线密码学体制的应用

        椭圆曲线密码学利用 ECDLP 的难解性来构建安全的密码协议,例如:

  • 椭圆曲线数字签名算法 (ECDSA):用于创建数字签名。
  • 椭圆曲线密钥交换协议 (ECDH):用于安全地交换密钥。
  • 椭圆曲线集成加密方案 (ECIES):用于加密数据。

 (1)椭圆曲线上的DH密钥交换算法(ECDH)举例说明

① 准备阶段

第一步:首先取一个素数 p=2^{180},以及参数a,b,则椭圆曲线上的点构成Abel群E_p(a,b)

第二步:E_p(a,b)上的一个生成元G(x_1,y_1),要求G的阶是一个非常大的数nG的阶n是满足nG=O的最小正整数。

第三步:E_p(a,b)和生成元G作为公钥密码体制的公开参数对外公布,不保密。

② 密钥交换阶段

        通过上面密钥交换算法,A和B共同拥有密钥K,攻击者如果想获得密钥K,他就必须由P_AG求出n_A,或者由P_BG求出n_B,而这等价于求椭圆曲线上的离散对数问题ECDLP,因此是不可行的,所以确保了安全。

③ 带入具体数字举例说明

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 基于深度学习的联邦学习
  • 【Python】任推邦近30日推广数据采集+推送
  • Open3D 计算点云的归一化协方差矩阵
  • JAVA中的重载
  • opencv-图像仿射变换
  • 北京汽车美容元宇宙:数字化浪潮下的车美服务新革命
  • JavaScript 对话框式弹出提示框 PopoverTip 实现详解
  • JavaFX布局-ToolBar
  • 【前端】JavaScript入门及实战111-115
  • 关于C/C++的编译、构建、CMake、x86_amd64等问题(自用)
  • 浅谈Trie树算法
  • 开启休假模式
  • WebSocket 协议与 HTTP 协议、定时轮询技术、长轮询技术
  • Linux 安装 Redis 6.2.14
  • vulhub靶场之wordpress关卡(保姆级教程)
  • ----------
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • SSH 免密登录
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • vue-cli3搭建项目
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 学习笔记:对象,原型和继承(1)
  • 云大使推广中的常见热门问题
  • 在Mac OS X上安装 Ruby运行环境
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • ​Python 3 新特性:类型注解
  • $(this) 和 this 关键字在 jQuery 中有何不同?
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (安卓)跳转应用市场APP详情页的方式
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (二)linux使用docker容器运行mysql
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (力扣)1314.矩阵区域和
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (十三)MipMap
  • (数据结构)顺序表的定义
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)Mysql的优化设置
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .apk 成为历史!
  • .NET C# 配置 Options
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • @GetMapping和@RequestMapping的区别
  • @Resource和@Autowired的区别
  • [ Algorithm ] N次方算法 N Square 动态规划解决
  • [20150629]简单的加密连接.txt
  • [android] 请求码和结果码的作用
  • [Angular] 笔记 21:@ViewChild
  • [boost]使用boost::function和boost::bind产生的down机一例
  • [C#]扩展方法
  • [C++初阶]vector的初步理解