这篇文章为初学者提供了关于椭圆曲线密码学(ECC)的入门介绍,包括基本概念、操作和实际应用示例。文章通过定义关键术语、解释椭圆曲线的数学原理、讲解ECC的单向性以及Diffie-Hellman密钥交换算法,帮助读者理解ECC如何用于保护信息安全。整体内容系统且易于理解。
椭圆曲线密码学(ECC)是一种使用有限域上的椭圆曲线来导出密钥的公钥密码学。它是驱动网站加密、加密货币、iMessage、信用卡和许多其他安全数据传输系统的魔法。本文旨在为任何对ECC没有任何先前知识的人提供一个高层次的概述。让我们开始吧。
在我们实际深入ECC之前,让我们分解一些术语。
了解了不熟悉的术语后,让我们开始讨论什么是椭圆曲线。
椭圆曲线是由以下方程定义的数学函数:
其中,a和b是任何实数变量,并且满足以下条件:
以下是几幅椭圆曲线的图片:
所有椭圆曲线都具有两个特性:
这两个椭圆曲线的属性对理解ECC至关重要。
在普通代数中,你可以执行加法、减法、乘法和除法。在椭圆曲线上,你可以对位于椭圆曲线上的点执行的操作只有两种:
取椭圆曲线上的一个点P。要得到2P(在椭圆曲线术语中),我们在点P处画一条切线,切线与曲线相切的地方是-2P。由于椭圆曲线对x轴对称,我们翻转-2P的值,得到2P。在这个例子中,R = 2P。
假设椭圆曲线上的两个点,P和Q,我们想要一个点R使得P + Q = R。根据椭圆曲线的第二个性质,如果我们画一条通过P和Q的直线,它将会准确地在曲线上与一个点相切。正如你所猜到的,这个点是-R。如果我们翻转这个点,就得到了R。这里,R = P + Q。
重要的是要注意,椭圆曲线上的操作是可交换的。也就是说,无论你是将P加到Q还是将Q加到P,答案总是R。
假设我给你两个椭圆曲线上的点。我告诉你,其中一个是另一个的椭圆曲线倍数(ecMUL);从数学上来说,推导出这个倍数是不可能的。
换句话说,如果 A = a.G,仅凭 a 和 A 是不可能提取出 G 的。
找到A的已知唯一方法是通过暴力方式,即对每一个可能的 a(1,2,3,4,5,6,7,8,…,∞)将 G 加到自己身上,直到得到A。
得益于计算机的强大,对于一个小的椭圆曲线,经过数小时的暴力计算,你应该能够找到 a。但对于一个足够大的曲线,在你尝试所有可能的解决方案之前,太阳实际上会爆炸并摧毁地球。
另一个 a 和 A 的重要属性是它们是数学上关联的。可以设计出一种编码算法,使得用 a 编码的任何内容只能用 A 解码,反之亦然。这一属性与椭圆曲线的单向特性结合起来,使得它们在公钥密码学中完美适用。
DHKE 的问题陈述是一种在不安全网络上达成共享秘密的方法。
这个共享秘密通常用作对称加密的密钥,但关于这方面的进一步讨论超出了本文的范围。仅想象为两个人在不安全网络上通信,他们想要达成一个只有他们两人知道的数字。
假设我们有两个人,Alice和Bob,他们想执行DHKE。以下是他们如何通过椭圆曲线和ECC实现这一目标:
Alice和Bob首先达成一致并公开说明:
接下来,他们还各自选择随机数,Alice选择 a,Bob选择 b。这些数字是他们的私钥,他们不对外透露。
接下来,他们每个人都通过用生成点对私钥执行椭圆曲线倍数来生成公钥A和B。
他们通过不安全网络将这些公钥相互发送。
到目前为止,以下所有信息都是公开的:
但只有Bob和Alice知道他们的私钥。
有了这些信息,Alice和Bob可以独立创建一个其他人无法导出的共享密钥。以下是具体如何进行的:
由于椭圆曲线倍数是可交换的,如果Alice和Bob利用对方的公钥与自己的私钥相乘,他们将得到相同的答案。
对于Bob:
对于Alice:
任何在不安全网络上监听的人都获得了椭圆曲线、A、B和G。但是所有这些信息对于导出共享秘密来说都是不够的。
以上是ECC在实际中如何用于保护信息的基本示例。
椭圆曲线的另一个用途是椭圆曲线数字签名算法(ECDSA),但那是另一个主题。
本文探讨了ECC的高层工作原理。为了简单起见,我省略了一些细节,例如ECC中使用的椭圆曲线是定义在有限域而不是实数集上的。但很多信息对理解这个概念来说是多余的。希望你能从中获得对椭圆曲线和ECC工作原理的高层而完整的理解。
这就是本文的全部内容,祝你一切顺利。
- 原文链接: apfikunmi.medium.com/are...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!