Facebook Messenger 上的一些常见诈
椭圆曲线密码学 (ECC) 是一种基于椭圆曲线数学的公开密钥加密算法。 它提供了一种执行密钥交换、数字签名和加密等加密操作的安全方式。 ECC 为 1977 年首次发布的 Rivest-Shamir-Adleman (RSA) 加密算法提供了一种替代性方案。
继续阅读,进一步了解椭圆曲线密码学,以及为何它被认为是最安全的加密形式。
ECC 和 RSA 之间有何区别?
在讨论 ECC 和 RSA 之间的区别之前,了解公钥加密算法的工作原理非常重要。 最基础的强加密算法是“活板门函数”。 虽然掉进一扇活板门非常容易,但重新回到外面却很难,因为活板门只朝一个方向摆动。 因此,要使加密算法有效且安全,用来加密信息的方法必须很简单,但几乎不可能在没有解密密钥的情况下解密。
ECC 和 RSA 都是利用高等数学函数实现的公钥加密算法。 公钥加密包括两个组成部分,公钥和私钥。 公钥对消息进行加密的方法是,通过数学算法将消息转换为一个极大的随机数字。 消息只能用私钥解密,私钥获取这一随机大数后,对其应用另一种不同的算法,相当于“撤销”了该原始消息。
ECC 和 RSA 背后的数学问题非常复杂,只能通过计算机解决。 RSA 算法背后的数学问题超出了本篇博文的涵盖范围,但重点在于 RSA 的安全性就建立在分解两个大素数乘积的的巨大难度之上。
让我们来复习一下,对 20 这样的数字进行因数分解的方法如下:
20 = 4 * 5 = 2 * 2 * 5 = 22 * 5
看起来很简单,对吧? 那么,现在来想象一下如何对一个长度超过 100 位的数字进行因数分解。 这就是为什么即使拥有公钥,要在素因数未知的情况下计算出私钥,所需的计算密集程度也是非常高的。
RSA 加密算法的问题
虽然 RSA 算法是非常强的加密方法,但并非没有问题。
对大数进行因数分解非常困难,但困难比过去小。 因数分解是微积分和其他高等数学的核心组成部分,因此数学家们已经花费了数个世纪的时间来寻找更简单的解法。 目前存在的有效的大数因数分解算法包括通用数域筛法 (General Number Field Sieve),它是目前最著名的用于分解长度在 110 位以上的大数的算法。
与此同时,算力也在在以惊人的速度增长。 英特尔的联合创始人戈登·摩尔曾于 1965 年预测,芯片上的晶体管数量每两年就会增加一倍。 这一假说被称作“摩尔定律”,自 20 世纪 70 年代以来始终有效,甚至超额完成。 计算能力每两年翻一番 – 算力的价格也在不断下降。
由于分解极大整数所需的计算资源越来越容易获得,对普通人(包括网络犯罪分子)来说都处于可负担范围内,为适应变化的速度,RSA 密钥必须不断变大。 正因为如此,RSA 的加密和解密速度都相当慢,这使得它不适合加密大量信息,特别是在移动设备上。 于是 RSA 通常用于密钥交换和数字签名,而其中的实际数据则使用对称加密算法和较短的会话密钥进行加密。
与之相反,椭圆曲线加密能够以更短的密钥长度提供更出色的安全性,因而从计算和带宽需求来看具有更高的效率。 在下一节中,我们将介绍 ECC 的工作原理。
椭圆曲线加密算法的工作原理是什么?
ECC 基于另一个称为椭圆曲线的高等数学领域。 椭圆曲线是由方程 y2 = x3 + ax + b 描述的曲线,其中 a 和 b 为常量,且该曲线的定义域是有限域。 绘制出的图形如下:
椭圆曲线具有的一些特殊性质,使它们对于数学家和密码学家而言既有趣又实用。 首先,椭圆曲线具有水平对称性。 位于 x 轴(水平轴)两侧的部分一模一样,就如同镜像。
此外,任意不垂直于椭圆曲线的直线与曲线的交点总是不超过三个。 在下面的示例中,这些点被标记为 P、Q 和 R。
椭圆曲线加密算法的安全性基于求解椭圆曲线离散对数问题的难度。 在给定曲线上的点 P 和标量 k 的情况下,要确定一个能够令 Q = k*P 的点 Q 非常困难 – 比因数分解一个极大整数要困难得多。
这一特性意味着 ECC 可以在密钥大小远小于 RSA 的前提下,提供与 RSA 相当甚至更可靠的安全性。
椭圆曲线加密算法的优势
ECC 能够以较短的密钥提供极高的安全性,这一点使其优于 RSA 和其他公钥加密算法。
使用椭圆曲线加密算法有以下两个优势。
- ECC 生成密钥、加密和解密所需的计算资源和带宽都较低。
- 由于 ECC 的密钥大小较小,与 RSA 相比,ECC 的密钥生成、加密和解密等操作可以执行得更快,这意味着最终用户的延迟更小。
这些优势使 ECC 在资源有限的环境中尤其实用,例如手机和物联网 (IoT) 设备。
椭圆曲线加密算法的安全性如何?
虽然 RSA 加密算法具有极高的安全性,但 ECC 可以说是更胜一筹。
理论上,量子计算机或可有效解决 RSA 所依赖的因数分解问题,从而破解 RSA。 这种情况是否会很快成真,是一个很有争议的问题。 但我们可以肯定地说,考虑到 ECC 的复杂性,与 RSA 相比,它更能抵抗量子计算攻击。
有多大的抵抗能力? 荷兰数学家 Arjen Lenstra 在与他人合著的一篇研究论文中,将破解加密算法与烧水进行比较。 基本概念是计算出破解一个特定的加密算法需要多少能量,然后计算这些能量可以煮沸多少水。 通过这样的类比,破解一个 228 位 RSA 密钥所需的能量比煮沸一茶匙水所需的能量还少,但破解一个 228 位 ECC 密钥所消耗的能量可以煮沸地球上所有的水。 要达到相同的安全级别,RSA 密钥的长度需要达到 2380 位。
椭圆曲线加密算法的用武之地
如前所述,ECC 的密钥较小,因而尤其适合 CPU 和内存资源较低的设备,如移动设备和物联网设备。 这有助于 Web 和移动应用程序开发人员构建高性能、低延迟的网站和应用程序,同时为用户提供强大的数据安全性。 ECC 常常被用于保护蓝牙、Wi-Fi 和近场通信 (NFC) 等无线移动通信协议。
以下是一些更常见的 ECC 使用案例:
- 安全通信协议:ECC 被用于各种安全通信协议,以提供加密、数字签名和密钥交换。 例如,用于安全网页浏览的传输层安全性 (TLS),用于安全远程登录的安全外壳 (SSH),以及用于安全网络通信的虚拟专用网络 (VPN)。
- 加密货币和区块链技术:比特币、以太币和莱特币等许多加密货币都利用椭圆曲线加密来生成公钥和私钥对,以及签署交易。 ECC 能够提供保护数字资产和确保区块链网络完整性所需的加密安全性。
- 智能卡和嵌入式系统:ECC 通常被用于保护支付系统、门禁系统、电子护照和其他需要既安全又小巧的加密解决方案的应用。
- 数字签名和证书:ECC 可以用于生成数字签名,用于验证数字文档和消息的真实性和完整性。 基于 ECC 的数字签名还被部署在公钥基础设施 (PKI) 系统中,用于发放和验证数字证书。
虽然与 RSA 相比,ECC 的历史还很短,但已充分标准化,并得到来自私营部门组织和行业机构的广泛支持。 例如,美国国家标准与技术研究院 (NIST) 在其加密算法套件中对 ECC 进行了标准化。 此外,流行的加密库、编程语言和操作系统也为 ECC 提供支持。 这一接受度进一步促进了金融、医疗和政府服务等众多部门对其的采用。
考虑到这些因素,我们可以肯定地说,椭圆曲线加密算法广受欢迎,并在众多应用和行业中得到了普遍的采用。 它的效率、安全性和广泛的支持使其成为安全通信和加密操作的可靠选择。