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

目录

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.mzph.cn/news/817915.shtml

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

相关文章

特氟龙(PFA)实验室器具有哪些?

PFA 是被称为塑料王,具有出众的化学耐受性,并且可在出色的温度范围内执行工作。 PFA 呈半透明,柔韧,并且由于其高密度重量有点重。PFA 具有惰性和低粘合性,溶出物和痕量金属含量较低。它具有较宽的含氟聚合物温度范围…

【gdb调试】在ubuntu环境使用gdb调试一棵四层二叉树的数据结构详解

目录 🌞1. 整体思路 🌞2. 准备内容 🌼2.1 配置.c文件 🌼2.2 准备测试程序 🌼2.3 GDB调试基础 🌞3. GDB调试四层二叉树 🌼3.1 测试程序分析 🌼3.2 gdb分析 🌻1. …

这些矛盾点不搞清楚,私域怎么做得起来!

最近不少人都在问,私域做不起来怎么办?有很多企业砸了不少钱,有些还做了好几年,依旧没有起色。 有些企业觉得私域做不起来的阻碍有运营方面的原因,比如文案写不好,社群不知道怎么管理;有团队方…

Apache Zeppelin 命令执行漏洞复现(CVE-2024-31861)

0x01 产品简介 Apache Zeppelin 是一个让交互式数据分析变得可行的基于网页的开源框架,Zeppelin提供了数据分析、数据可视化等功能, 0x02 漏洞概述 Apache Zeppelin 中代码生成控制不当(“代码注入”)漏洞。攻击者可以使用 She…

Vitis HLS 学习笔记--硬件卷积加速 Filter2DKernel

目录 加速器功能 Window2D()函数 实现代码 变量解释 ARRAY_PARTITION DEPENDENCE LOOP_TRIPCOUNT ramp_up 更新Window 更新LineBuffer Filter2D()函数 ARRAY_PARTITION window_stream.read() 计算过程 备注 加速器功能 硬件加速单元从全局内存(DDR&a…

Centos7配置IP地址

1、找到网卡名字 使用root用户登陆,输入命令 ifconfig 2、打开配置文件 输入命令,打开配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens33 3、添加IP地址 3.1修改BOOTPROTO 将“BOOTPROTOdhcp” 改为 “BOOTPROTOstatic” 3.2添加IP地址 在配…

D365开发-在视图按钮的js里,引用别的js里的公共方法

公共方法写法: "use strict"; var JJMC window.JJMC || {}; JJMC.SamMCommon JJMC.SamMCommon || {}; (function () { this.cloneRecord function (excludeAttrbuteNames){ / } }).call(JJMC.SamMCommon); 然后在需要调方法的command里面,之…

解读《算者生存:商业分析的方法与实践》:构建企业经营分析框架的必备指南

💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】🤟 一站式轻松构建小程序、Web网站、移动应用:👉注册地址🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交…

Java:定时任务无法正常执行(scheduling + ShedLock)

目录 一、场景二、代码片段三、排查四、原因五、解决 一、场景 1、使用定时任务(scheduling) 分布式锁(ShedLock)定期执行一段代码 2、configureTasks()对于任务执行周期的更新是正常的 3、但任务方法无法被执行 二、代码片段 三、排查 1、确认Trigger没有问题 2、查看red…

水封式防暴器 我的真诚一直不变

天气在变,服务不变,季节在变,态度不变,时代在变,品质不变,不管世界怎么变,我的真诚一直不变! 一、水封式防暴器的用途介绍: FBQ型系列水封式防暴器是安装在抽放瓦斯泵吸…

如何在没有备份的情况下恢复iPhone数据

想要找到没有备份的最佳iPhone数据恢复软件吗?本文介绍了一款专业的iPhone数据恢复软件,无需备份即可恢复iPhone数据。 许多iPhone用户可能对上述情况并不陌生。丢失重要的iPhone数据确实是一件令人沮丧的事情。通常,检索iPhone数据的最佳方…

第九届少儿模特明星盛典 全球赛首席体验官『魏堃明』精彩回顾

2024年1月30日-2月1日,魔都上海迎来了龙年第一场“少儿形体行业美育春晚”!由IPA模特委员会主办的第九届少儿模特明星盛典全球总决赛圆满收官!近2000名少儿模特选手从五湖四海而来,决战寒假这场高水准,高人气&#xff…

Golang 开发实战day10 - Maps

🏆个人专栏 🤺 leetcode 🧗 Leetcode Prime 🏇 Golang20天教程 🚴‍♂️ Java问题收集园地 🐍 Python工具 🌴 成长感悟 欢迎大家观看,不执着于追求顶峰,只享受探索过程 G…

[leetcode] 53. 最大子数组和

文章目录 题目描述解题方法分治法java代码复杂度分析 题目描述 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组是数组中的一个连续部分。 示例 1: 输…

如何应对MySQL单表数据量过大:垂直分表与水平分表策略解析

话接上回,单表最大数据建议两千万,那如果开发一个项目,预计注册量达到一个亿怎么办。 单表内放这么多数据,MYSQL底层B树的层级结构就可能会变得很高,磁盘io次数变多,性能会大幅度降低。所以考虑数据库分表…

解析CopyOnWrite机制 以java的CopyOnWriteArrayList为例

什么是CopyOnWrite 写时复制(Copy-on-write,简称COW)是读写分离的一种实现方式,因为读和写在不同的容器中。 核心思想:线程在修改数据的时,会将原数据复制一份,然后在副本上修改,最…

imx.7交叉编译libX11

背景: 还是之前提到的触摸屏无响应问题,通过GDB调试,发现APP并非人为代码卡死,而是卡在官方的libc.so.6中,这个库出现了一些错误。排除自己代码问题,就剩官方版本问题,移植X11库,或…

提高APP安全性的必备加固手段——深度解析代码混淆技术

​ APP 加固方式 iOSAPP 加固是优化 APK 安全性的一种方法,常见的加固方式有混淆代码、加壳、数据加密、动态加载等。下面介绍一下 iOSAPP 加固的具体实现方式。 混淆代码: 使用 ProGuard 工具可以对代码进行混淆,使得反编译出来的代码很难…

前端本地搭建gninx环境

nginx下载地址: https://nginx.org/en/download.html nginx下载后,解压即用,注意解压目录不要含中文 nginx常用命令 查看版本 nginx -v 开启nginx服务 start nginx 重启服务 nginx -s reload 关闭服务 nginx -s stopnginx目录简析

three.js能够实现的3D动画效果大阅兵,有图有真相。

three.js能够实现许多不同类型的3D交互动画,包括但不限于以下几种: 旋转和缩放:可以通过鼠标或触摸手势来旋转和缩放3D模型或场景。 序列动画:可以创建复杂的动画序列,包括移动、旋转、缩放、颜色变化等。 粒子效果&…