大部分人对 RSA 公钥密码学算法有基本的了解,从课本上、科普上等都能看到 RSA 的重要性,但是对椭圆曲线密码学了解就微乎其微,但是移动电子商务服务中,椭圆曲线密码学运用更多。

0x01 椭圆曲线加密算法概要

ECC(Elliptic curve cryptography),官方命名“椭圆曲线密码学”,也称为我们理解的椭圆曲线加密算法,是一种基于椭圆曲线数学的建立公开密钥加密的算法,也是一种非对称加密算法。

Address: https://i.ytimg.com/vi/-UcCMjQab4w/maxresdefault.jpg

在了解椭圆曲线加密算法前,首先先了解一下椭圆曲线。

椭圆曲线是域上亏格为1的光滑射影曲线,它的(仿射)方程,通常称为维尔斯特拉斯方程,可以写成

如果这个域的特征不等于2和3,则可以改写成

Address: https://avinetworks.com/wp-content/uploads/2020/02/elliptic-curve-cryptography-diagram.png

椭圆曲线上的点全体构成一个加法群,点与点之间的“加法”运算,正因为椭圆曲线存在加法结构,所以它包含了很多重要的数论信息。

总的来说,ECC 是一种公钥密码系统,就像之前的 RSA 一样。ECC 的设计和开发是为了克服 RSA 算法的弱点,即索引演算。指数微积分是一种算法的花哨的“数学语言”,它使用数学过程来降低素数分解计算的难度,从而降低或破坏 RSA 的效率。

1985 年,一位名叫维克多·米勒 (Victor Miller) 的数学家研究了密码学中的椭圆曲线,并假设指数微积分方法极不可能在椭圆曲线方面起作用,椭圆曲线密码算法在 2004 年到 2005 年开始广泛使用。

椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线代数结构的公钥密码学方法ECC,允许使用更小的密钥来提供等效的安全性。

椭圆曲线适用于密钥协商、数字签名、伪随机生成器等任务,它们可以通过将密钥协议与对称加密方案相结合来用于加密。椭圆曲线也用于几种基于椭圆曲线的整数分解算法,这些算法在密码学中的应用,例如Lenstra椭圆曲线分解。

0x02 椭圆曲线密码学深入理解

椭圆曲线是非奇异(不与自身交叉且没有尖点)三次曲线,至少有一个点称为中性元素“O”。字段的示例可以是:复数、实数或有理数,并且点 'O' 具有这样的特性,即在使用数字执行函数时,会给出中性元素。

'O' 与无穷大有密切关系,它的性质是阿贝尔群函数的一部分。

阿贝尔群(Abelian Group),又称交换群或加群,它由自身的集合 G 和二元运算 * 构成。它除了满足一般的群公理,即运算的结合律、G 有单位元、所有 G 的元素都有逆元之外,还满足交换律公理。因为阿贝尔群的群运算满足交换律和结合律,群元素乘积的值与乘法运算时的次序无关。

阿贝尔群的概念是抽象代数的基本概念之一,其基本研究对象是模和向量空间。阿贝尔群的理论比其他非阿贝尔群简单。

0x02 椭圆曲线特性

椭圆曲线密码学优点:
采用更小的密钥,减少了存储和传输要求;

  • 椭圆曲线组可以提供与基于RSA的系统所提供的相同级别的安全性,具有较大的模数和相应的较大密钥;
  • 例如,256 位椭圆曲线公钥应提供与 3072 位 RSA 公钥相当的安全性。

0x03 椭圆曲线的加法

  1. 在曲线上,过 P、Q 两点画一条直线
  2. 找到直线与椭圆曲线的交点
  3. 交点关于x轴对称位置的点,定义为 P + Q ,即为加法
  4. P + Q = R

Address: https://medium.com/@peterreid_12788/part-2-is-elliptic-curve-cryptography-ecc-a-step-towards-something-more-understanding-ecc-3c933d3922e

0x04 椭圆曲线密码学与RSA区别

RSA 和 ECC 加密密钥之间存在显著的差异,下面列出了提供相同安全级别所需的密钥大小。
换言之,384 位的椭圆曲线加密密钥与 7680 位的 RSA 具有相同的安全级别。

RSA 密钥长度(位)

  • 1024
  • 2048
  • 3072
  • 7680
  • 15360

ECC 密钥长度(位)

  • 160
  • 224
  • 256
  • 384
  • 521

ECC 密钥和 RSA 密钥的大小之间没有线性关系。也就是说,两倍大的 RSA 密钥大小不会转换成两倍的 ECC 密钥大小,ECC 密钥的生成和签名比 RSA 快得多,而且 ECC 使用的内存比 RSA 少。

此外,与 RSA 中两者都是整数不同,在 ECC 中,私钥和公钥不能同等交换,公钥是曲线上的一个点,而私钥仍然是整数。

快速比较 ECC 和 RSA 算法的优缺点如下所示:

  • ECC 具有更小的密文、密钥和签名,以及更快的密钥和签名生成。它的解密和加密速度适中。
  • 通过分两个阶段计算签名,ECC 实现了比反向吞吐量更低的延迟。
  • ECC 具有用于经过身份验证的密钥交换的强大协议,并且对该技术的支持非常强大。
  • ECC 的主要缺点是不易安全实施。与在验证和加密方面都简单得多的 RSA 相比,ECC 的学习曲线更陡峭,累积可操作结果的速度也稍慢一些。
  • RSA 的缺点是:RSA 的密钥生成速度很慢,解密和签名也很慢,这并不总是那么容易安全地实现。

0x05 椭圆曲线数字签名

椭圆曲线数字签名算法 (ECDSA)
使用 ECC 密钥来确保每个用户都是唯一的并且每笔交易都是安全的。
尽管这种数字签名算法 (DSA) 提供的结果在功能上与其他 DSA 没有区别,但它使用 ECC 所期望的较小密钥,因此效率更高。

0x06 椭圆曲线密码学的应用

ECC 是加密货币中数字签名最常用的实现技术之一。
比特币和以太坊都专门应用椭圆曲线数字签名算法 (ECDSA) 来签署交易。
然而,ECC 不仅仅用于加密货币。它是一种加密标准,由于其更短的密钥长度和效率,将被大多数 Web 应用程序使用。

0x07 椭圆曲线密码学安全性

椭圆曲线离散对数是支撑椭圆曲线密码学的难题。尽管进行了近三年的研究,数学家仍然没有找到一种算法来解决这个问题,改进了幼稚的方法。

换句话说,与因式分解不同,根据目前理解的数学,似乎没有捷径可以缩小基于此问题的陷门函数的差距。这意味着对于相同大小的数字,求解椭圆曲线离散对数比分解要困难得多。
由于计算量更大的难题意味着更强大的密码系统,因此椭圆曲线密码系统比 RSA 和 Diffie-Hellman 更难破解。

侧信道攻击

不同于大多数其他DLP系统,EC加法在2倍(P = Q)和一般加法(P≠Q)中明显不同,这取决于所使用的坐标系。
因此,使用固定模式窗口(又名comb)方法来对抗侧信道攻击是很重要的。也可以使用Edwards 曲线。

Edwards 曲线在密码学中的应用是由Daniel J. Bernstein和Tanja Lange开发的,Edwards 曲线是一类特殊的椭圆曲线,它的加倍和加法可以用相同的操作来完成ECC系统的另一个担忧是故障攻击的危险,特别是在智能卡上运行时

Address: https://en.wikipedia.org/wiki/File:Edward-curves.svg

后门

密码学专家对美国国家安全局在至少一个基于椭圆曲线的伪随机发生器中插入窃电后门表示担忧。前 NSA 承包商Edward Snowden泄露的内部备忘录表明,NSA 在Dual EC DRBG标准中设置了后门。对可能的后门分析得出的结论是,拥有算法秘密密钥的对手可以在仅给出 32 个字节的 PRNG 输出的情况下获得加密密钥。

量子计算攻击

Shor 算法可用于通过在假设的量子计算机上计算离散对数来破解椭圆曲线密码学。使用 Shor 算法破解RSA算法需要 4098 个量子位和 5.2 万亿个 Toffoli 门才能获得 2048 位 RSA 密钥,这表明 ECC 比 RSA 更容易成为量子计算机的目标。所有这些数字都大大超过了任何曾经建造的量子计算机,并且估计这些计算机的创建需要十年或更长时间。

References:
百度百科_全球领先的中文百科全书
https://blog.cloudflare.com/a-relatively-easy-to-understand-primer-on-elliptic-curve-cryptography/
椭圆曲线加密算法(ECC) - 知乎
What is Elliptic Curve Cryptography? Definition & FAQs | Avi Networks

椭圆曲线密码学ECC相关推荐

  1. 椭圆曲线密码学(ECC)简介

    这一节要聊的是 ECC ( Elliptic Curve Cryptography ),也就是椭圆曲线密码学.跟 RSA 一样,ECC 也属于公开密钥加密,ECC 算法也是用来生成公钥的私钥的.本节我 ...

  2. 椭圆曲线密码学(ECC)原理

    1.椭圆曲线的定义 满足以下形式二元三次方程的点集 y2+axy+by=x3+cx2+dx+e(其中a,b,c,d是实数)y^2+axy+by=x^3+cx^2+dx+e (其中a,b,c,d是实数) ...

  3. [以太坊源代码分析] IV. 椭圆曲线密码学和以太坊中的椭圆曲线数字签名算法应用

    数字签名算法在Ethereum中的应用不少,目前已知至少有两处:一是在生成每个交易(Transaction, tx)对象时,对整个tx对象进行数字签名:二是在共识算法的Clique算法实现中,在针对新 ...

  4. ctf密码学ECC,自己给自己挖坑

    ECC椭圆曲线加密(一) 由于,做了一道密码学的题,好奇ECC的加密原理,然后自己就给自己开了个坑. 我还真没想到,ECC这么难搞,特指数学菜狗的我. 解题 题目:easy_ECC 已知椭圆曲线加密E ...

  5. python椭圆曲线加密算法_区块链的基石--椭圆曲线密码学

    椭圆曲线密码学 椭圆曲线密码学(ECC, Elliptic Curve Cryptography)是基于椭圆曲线数学的一种公钥加密方法. 什么是公钥加密方法 在诸如 DES.AES 这类对称密码系统中 ...

  6. matlab有限域多项式除法_椭圆曲线密码学简介(二):有限域的椭圆曲线及离散对数问题...

    本文主要翻译自这篇文章 译者注 ★ 本文承接上文所讨论的椭圆曲线,并将曲线的定义域从实数域缩小到了有限域,引出离散对数问题 " ★ 首先介绍了有限域的定义,并给出了一种基于模运算的有限域 & ...

  7. 椭圆曲线密码学导论pdf_椭圆曲线密码学

    椭圆曲线密码学导论pdf 历史 (History) The use of elliptic curves in cryptography was advised independently by Ne ...

  8. 【安全】椭圆曲线加密算法(ECC)深入理解

    背景 由于在实际的项目中使用到了基于ECDH的秘钥协商算法,所以对背后基于椭圆曲线密码学(ECC-Elliptic Curve Cryptography)进行了较为深入的学习,本篇文章主要分享一下几点 ...

  9. 极简椭圆曲线密码学入门

    作者 | Lane Wagner 来源 | 以太坊爱好者 本文旨在简单介绍椭圆曲线密码学(elliptic curve cryptography).本文预设读者的阅读目的是想知道为什么 ECC 是一个 ...

最新文章

  1. ExtJS的xtype列表
  2. hc05与单片机连接图_单片机科普:单片机的IO口不够用了怎么办?如何扩展单片机的IO口...
  3. android pcm频谱_Android音频可视化
  4. python中的reduce函数
  5. ios 防止按钮快速点击造成多次响应的避免方法。
  6. c语言编写的每个函数都可以进行独立的编译,2017年辽宁师范大学计算机与信息技术学院836C语言程序设计考研冲刺密押题...
  7. raspberry pi_如何在Raspberry Pi上使用LÖVE游戏引擎对游戏进行编程
  8. LeetCode 5380. 数组中的字符串匹配
  9. 压力测试jmeter入门教程
  10. socket编程详解,转自http://www.sme-cn.com:82/archives/669
  11. 鸿蒙系统源码获取_Hi3861_HI3516DV编译环境搭建记录
  12. VSCode创建vue模板(快捷方便)
  13. matlab逐步线性回归分析法,[转载]matlab 回归分析
  14. focal loss详解
  15. MIT 6.824 Raft论文精读
  16. MAC设置L2TP连接公司内部网络
  17. 2019-11 前端技术汇总
  18. Mott-insulator transitions in BEC
  19. Mac ubuntu安装无线驱动
  20. 武汉地铁软件测试自学,武汉影视节目制作培训(视频剪辑是否好找工作)

热门文章

  1. Java学习-MVC架构模式
  2. 条例、办法、规定和实施细则有什么区别
  3. VirtualBox下载安装
  4. Windows新建域时本地administrator账户密码不符合要求解决办法
  5. linux下pfam使用方法,pfam数据库介绍及使用
  6. python对象类型及其运算 数字 字符串 list dict tupe dict
  7. 颅骨管理平台_程序总结
  8. [转载]VIPS:基于视觉的Web页面分页算法
  9. linux发展现状和学习建议
  10. go语言结构体详解与代码演示