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

news2024/11/26 5:30:09

目录

7  这一切意味着什么?

8  椭圆曲线密码学的应用

9  椭圆曲线密码学的缺点

10  展望未来


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

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


密码学 | 椭圆曲线 ECC 密码学入门(二)文章浏览阅读121次。4 椭圆曲线:更好的陷门函数5 奇异的对称性6 让我们变得奇特https://blog.csdn.net/m0_64140451/article/details/137676044

7  这一切意味着什么?

椭圆曲线离散对数 是椭圆曲线密码学的难题。尽管已经有近三十年的研究,数学家们仍然没有找到一个算法来解决这个问题,这个算法比朴素的方法有所改进。

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

为了想象它有多难破解,Lenstra 最近引入了 “全球安全性” 的概念。你可以计算破解一个密码算法需要多少能量,并将这个能量与这些能量能煮沸多少水进行比较。这是一种密码学的碳足迹。按照这个标准,破解一个 228 位的 RSA 密钥所需的能量比煮沸一茶匙水所需的能量还要少。相比之下,破解一个 228 位的椭圆曲线密钥所需的能量足以煮沸地球上所有的水。要达到这种安全级别,使用 RSA 需要一个 2380 位的密钥。

使用 ECC,你可以使用更小的密钥来获得相同级别的安全性。小的密钥尤其重要,尤其是在越来越多加密是在像手机这种功率较小的设备上完成的世界里。虽然将两个素数相乘比将乘积分解为其组成部分的因式分解要容易,但当素数变得非常长时,即使是乘法步骤也可能在低功率设备上需要一些时间。

RSA 这种陷门函数靠的就是 “因式分解的难度” 和 “乘法的难度” 之间的差距。如果为了保证加密速度而缩短密钥长度,那么 RSA 算法的安全性大打折扣。如果保持密钥长度不变,那么像手机这种功率较小的设备完成加密的时间又比较长。

虽然你可能会通过增加密钥长度来继续保持 RSA 的安全,但这样做会在客户端带来加密性能变慢的成本。ECC 似乎提供了一个更好的权衡:短的、快速的密钥提供高安全性。

8  椭圆曲线密码学的应用

经过缓慢的起步之后,基于椭圆曲线的算法正变得越来越受欢迎,并且其采用的速度正在加快。椭圆曲线密码学现在被广泛应用于多种场合:

美国政府使用它来保护内部通信,Tor 项目使用它来帮助确保匿名性,它也是证明比特币所有权的机制,为苹果的 iMessage 服务提供签名,在 DNSCurve 中用于加密 DNS 信息,并且是安全网页浏览中通过 SSL/TLS 进行认证的首选方法。

CloudFlare 使用椭圆曲线密码学来实现完美的向前保密性,这对于在线隐私至关重要。第一代密码学算法如 RSA 和 Diffie-Hellman 在大多数领域仍然是标准,但椭圆曲线密码学正在迅速成为网络隐私和安全的最佳解决方案。

为什么后文一直在提 CloudFlare?答:因为 CloudFlare 是原博所属网站。

如果您从 Chrome 或 Firefox 的最新版本访问原文博客的 HTTPS 版本:

https://blog.cloudflare.com

则您的浏览器正在使用椭圆曲线密码学。您可以亲自检查这一点。在 Chrome 中,您可以点击地址栏中的锁图标,然后选择连接标签,以查看建立安全连接时所使用的密码学算法。在 Chrome 30 中点击锁图标后,应显示以下图片。

我只在 Firefox 找到了锁图标:

原博客写作于 2013 年,现在的 Chrome 和 Firefox 早变样了😇

在 CloudFlare 中,ECDHE_RSA 是一种用于安全套接字层(SSL)的密钥交换协议,它结合了椭圆曲线密钥交换(ECDHE)和 RSA 加密的优势。ECDHE 代表椭圆曲线 Diffie-Hellman 临时密钥交换,它基于椭圆曲线数学提供了一种安全高效的方法来建立加密通信的密钥。RSA 组件则用于验证服务器的身份,这是因为 CloudFlare 的 SSL 证书绑定了一个 RSA 密钥对。

现代浏览器也支持基于椭圆曲线的证书。如果 CloudFlare 的 SSL 证书是基于椭圆曲线的,那么页面上的描述将是 ECDHE_ECDSA。在这种情况下,服务器身份的验证将使用 ECDSA(椭圆曲线数字签名算法)。

CloudFlare 使用的 ECC 曲线(与 Google.com相同)的参数如下:

最大值:115792089210356248762697446949407573530086143415290314195533631308867097853951
曲线:y² = x³ + ax + b
a = 115792089210356248762697446949407573530086143415290314195533631308867097853948
b = 41058363725152142129326129780047268409114441015993725554835256314039467401291

ECDSA 相对于 RSA 的性能提升是显著的。即使在使用没有汇编优化椭圆曲线代码的较老版本的 OpenSSL 时,一个 256 位的 ECDSA 签名也比一个 2048 位的 RSA 签名快 20 倍以上。

在一台配备 OpenSSL 0.9.8 的 MacBook Pro 上,性能基准测试结果显示:

  • 执行 10 秒的 256 位 ECDSA 签名:42874 个 256 位 ECDSA 签名在 9.99 秒内完成
  • 执行 10 秒的 2048 位私钥 RSA 签名:1864 个 2048 位私钥 RSA 签名在 9.99 秒内完成

这表明使用 ECDSA 的签名速度是 RSA 的 23 倍。

CloudFlare 不断寻求改进 SSL 性能。就在本周,CloudFlare 开始使用一种汇编优化的 ECC 版本,这使得 ECDHE 的速度翻了一番。使用椭圆曲线密码学可以为服务器和浏览器节省时间、电力和计算资源,帮助云服务平台使网络变得更加快速和安全。

9  椭圆曲线密码学的缺点

在椭圆曲线的世界中,并非一切都是美好的,一些问题和不确定性曾经阻碍了它在整个行业中的广泛采用。

最近新闻中提到的双椭圆曲线确定性随机数生成器(Dual_EC_DRBG)就是一个例子。这是一种由美国国家标准与技术研究院(NIST)标准化,并得到国家安全局(NSA)推广的随机数生成器。Dual_EC_DRBG 利用椭圆曲线的数学生成看似随机的数字。该算法涉及在曲线上的点,并反复进行椭圆曲线的 “dot” 操作。发表后,有报道称它可能被设计有一个后门,这意味着拥有正确秘密数字的人可以完全预测返回的数字序列。

最近,RSA 公司召回了几款安全产品,因为这些随机数生成器被设置为它们安全产品线的默认伪随机数生成器(PRNG)。无论这个随机数生成器是否真的有后门,这并不影响椭圆曲线技术的强度,但它确实引发了人们对椭圆曲线标准化过程的质疑。正如我们之前所写,这也部分解释了为什么应该关注确保系统使用足够的随机数。在未来的博客文章中,我们将讨论如何在这个算法规格中悄悄地植入后门。

一些世界上最持怀疑态度的密码学家现在对 NIST 本身以及它发布并由 NSA 支持的标准持有一般性的不信任。几乎所有广泛实现的椭圆曲线都属于这个类别。这些曲线尚未知的攻击,选择它们是因为它们的算术效率,但是劣质曲线确实存在,一些人认为谨慎总比后悔好。在 NIST 之外开发具有高效算术的曲线取得了进展,包括由 Daniel Bernstein(djb)创建的曲线 25519 以及 Paulo Baretto 及其合作者最近计算的曲线,尽管这些曲线的广泛采用还需要几年时间。直到这些非传统的曲线被浏览器实现,它们才能用于保护网络上的加密传输。

关于椭圆曲线密码学的另一个不确定性与专利有关。黑莓(通过其 2009 年收购的 Certicom)拥有超过 130 项专利,涵盖椭圆曲线的特定用途。许多这些专利已经授权给私营组织和甚至 NSA 使用。这使得一些开发者在实施 ECC 时犹豫不决,担心他们的实现是否侵犯这些专利组合。2007 年,Certicom 对索尼提起诉讼,指控其使用椭圆曲线的方式,但该诉讼在 2009 年被驳回。现在有许多被认为是不会侵犯这些专利的椭圆曲线密码学实现,并且已经被广泛使用。

与 RSA 相比,ECDSA 数字签名的一个缺点是它需要一个好的熵源。没有适当的随机性,私钥可能会被揭示。Android 上的随机数生成器的一个漏洞允许黑客在 2013 年初找到用于保护数人比特币钱包的 ECDSA 私钥。索尼的 PlayStation 实现中的 ECDSA 也有类似的漏洞。在制作签名的机器上需要一个好的随机数源。Dual_EC_DRBG 不被推荐使用。

10  展望未来

即使有了上述警告,椭圆曲线密码学相对于传统 RSA 的优势仍然被广泛接受。许多专家担心,RSA 和 Diffie-Hellman 背后的数学算法可能在 5 年内(原博客写作于 2013 年)被破解,使 ECC 成为唯一合理的替代方案。

椭圆曲线得到所有现代浏览器的支持,大多数证书颁发机构也提供椭圆曲线证书。CloudFlare 保护的每个 SSL 连接默认会在现代浏览器上使用 ECC 。很快,CloudFlare 将允许客户上传自己的椭圆曲线证书。这将使 ECC 不仅用于保护底层消息,还用于身份验证,从而加快 HTTPS 会话的速度。关于这一功能的更多详情,将在功能上线时发布。

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

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

相关文章

pip下载包opencv出错(报错failed building wheel for opencv-python解决方法)

文章目录 1 报错2 原因3 解决方法参考 1 报错 ERROR: Could not build wheels for opencv-python, which is required to install pypr2 原因 版本不兼容的问题,当使用pip install opencv-python命令安装的是最新版本,当前python版本不支持。需要安装当前版本pyth…

「GO基础」在Windows上安装Go编译器并配置Golang开发环境

文章目录 1、安装Go语言编译程序1.1、下载GoLang编译器1.2、安装GoLang编译器 2、配置Golang IDE运行环境2.1、配置GO编译器2.1.1、GOROOT 概述2.1.2、GOROOT 作用2.1.2、配置 GOROOT 2.2、配置GO依赖管理2.2.1、Module管理依赖2.2.2、GOPATH 管理依赖 2.3、运行GO程序2.3.1、创…

Embedding例子:简单NN网络、迁移学习例子

一、简单例子:构造简单NN网络生成Embedding 1、pytorch例子 2、tensorflow例子 # 1导入模块 import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Embedding import numpy as np# 2构建语料库 corpus[[…

配置静态IP【windows+ubuntu】

Windows配置静态IP 如下图所示,通过“网络和Internet进入设置界面”,依次操作“更改适配器选项”->选择要配置静态ip的网络“属性”->选择IPV4的属性->配置静态ip的地址、子网掩码、默认网关。默认网关应和路由器上的设置保持一致。 Ubuntu配…

2024红明谷杯——Misc 加密的流量

2024红明谷杯——Misc 加密的流量 写在前面: 这里是贝塔贝塔,照例来一段闲聊 打比赛但赛前一波三折,又是成功签到的一个比赛 说起来比赛全名叫红明谷卫星应用数据安全场景赛,但好像真的跟卫星的关系不大,没有bin方…

Redis中的订阅发布(三)

订阅发布 发送消息 当一个Redis客户端执行PUBLISH 命令将消息message发送给频道channel的时候,服务器需要执行以下 两个动作: 1.将消息message发送给channel频道的所有订阅者2.如果一个或多个模式pattern与频道channel相匹配,那么将消息message发送给…

基于SpringBoot+Vue的便利店管理系统 免费获取源码

项目源码获取方式放在文章末尾处 项目技术 数据库:Mysql5.7/8.0 数据表:11张 开发语言:Java(jdk1.8) 开发工具:idea 前端技术:vue 后端技术:SpringBoot 功能简介 (有文档) 项目获取关键字&#…

GUI02-在窗口上跟踪并输出鼠标位置(Win32版)

(1) 响应 WM_MOUSEMOVE 消息获得鼠标位置; (2) 响应 WM_PAINT 将鼠标位置输出到窗口中; (3) 学习二者之间的关键步骤:调用 InvalidateRect() 以通知窗口重绘。 零. 课堂视频 在窗口上跟踪输出鼠标位置-Win32版 一、关键知识点 1. BeginPaint…

Syncovery for Mac:高效文件备份和同步工具

Syncovery for Mac是一款专为Mac用户设计的文件备份和同步工具,凭借其高效、安全和易用的特点,深受用户好评。 Syncovery for Mac v10.14.2激活版下载 该软件具备强大的备份功能,支持多种备份方案和数据格式,用户可以根据需求轻松…

vscode自动生成返回值的快捷键

vscode中类似idea的altenter功能,可以添加返回值 idea中是Introduce local variable, vscode中按下command.(句号) 然后选extract to local variable或者 Assign statement to new local variable都行, 光标在分号前如图: 光标在…

维护SQLite的私有分支(二十六)

返回:SQLite—系列文章目录 上一篇:SQLite、MySQL 和 PostgreSQL 数据库速度比较(本文阐述时间很早比较,不具有最新参考性)(二十五) 下一篇:SQLite数据库中JSON 函数和运算符 1…

前端css中transition的使用

前端css中transition的使用 一、前言二、transition的4个属性三、例子1.源码12.源码1运行效果 四、结语五、定位日期 一、前言 CSS中的transition(过渡),根据字面意思就可以理解成一种变化状态的过程。当我们有一个方形,我们想让…

深度学习数据处理——对比标签文件与图像文件,把没有打标签的图像文件标记并删除

要对比目录下的jpg文件与json文件,并删除那些没有对应json文件的jpg文件,这个在深度学习或者机器学习时常会遇到。比如对一个数据集做处理时,往往会有些图像不用标注,那么这张图像是没有对应的标签文件的,这个时候又不…

MySQL 的事务概念

事务概念 MySQL事务是一个或者多个的数据库操作,要么全部执行成功,要么全部失败回滚。 事务是通过事务日志来实现的,事务日志包括:redo log和undo log。 事务状态 事务有以下五种状态: 活动的部分提交的失败的中止的…

模拟相机拍照——对文档进行数据增强

一. 背景 假如我们有一个标准文件,我们对其进行文字识别、版面分析或者其他下游任务就比较容易。然而,当图片是手机拍照获取的,图片中往往有阴影、摩尔纹、弯曲。 那么,如何通过标准的文档,获得类似相机拍照的图片呢&…

24华中杯C题10页论文+代码+思路

问题1:估算传感点的曲率 问题2:重构平面曲线 问题3:重构平面曲线并分析误差 详细资料如图所示 10页论文 需要的宝子们:2024华中杯A题思路数据可执行代码参考论文https://mbd.pub/o/bread/ZZ6am5dw 2024华中杯B题思路数据可执行…

C语言简单的数据结构:双向链表的实现

目录: 1.双向链表的结构和初始化1.1双向链表的结构1.2双向链表的初始化 2.双向链表的相关操作2.1双向链表的尾插、打印和头插2.11双向链表的尾插2.12双向链表的打印2.13双向链表的头插 2.2双向链表的尾删和头删2.21双向链表的尾删2.22双向链表的头删 2.3双向链表查找…

Linux 网络测速

1.开发背景 网络测速,为了测试开发板的网络速度是否达标的通用测试方法 2.开发需求 搭建 iperf3 ,在 ubuntu 下安装服务端,在板卡上安装客户端,服务端和客户端互发 3.开发环境 ubuntu20.04 嵌入式开发板(debian 千…

了解MySQL InnoDB多版本MVCC(Multi-Version Concurrency Control)

了解MySQL InnoDB多版本MVCC(Multi-Version Concurrency Control) 在数据库管理系统中,多版本并发控制(MVCC)是一种用于实现高并发和事务隔离的技术。MySQL的InnoDB存储引擎支持MVCC,这使得它可以在提供高…

22长安杯电子取证复现(检材一,二)

检材一 先用VC容器挂载,拿到完整的检材 从检材一入手,火眼创建案件,打开检材一 1.检材1的SHA256值为 计算SHA256值,直接用火眼计算哈希计算 9E48BB2CAE5C1D93BAF572E3646D2ECD26080B70413DC7DC4131F88289F49E34 2.分析检材1&am…