椭圆曲线密码学:

  • apfikunmi
  • 发布于 2024-05-04 14:55
  • 阅读 140

这篇文章为初学者提供了关于椭圆曲线密码学(ECC)的入门介绍,包括基本概念、操作和实际应用示例。文章通过定义关键术语、解释椭圆曲线的数学原理、讲解ECC的单向性以及Diffie-Hellman密钥交换算法,帮助读者理解ECC如何用于保护信息安全。整体内容系统且易于理解。

初学者介绍

椭圆曲线密码学(ECC)是一种使用有限域上的椭圆曲线来导出密钥的公钥密码学。它是驱动网站加密、加密货币、iMessage、信用卡和许多其他安全数据传输系统的魔法。本文旨在为任何对ECC没有任何先前知识的人提供一个高层次的概述。让我们开始吧。

在我们实际深入ECC之前,让我们分解一些术语。

  1. 密码学:密码学是确保信息在第三方存在的情况下安全传输的科学。以互联网为例;你通过互联网发送的每条消息、每张照片或每条信息都是通过空气传输的,任何人都可以监听。如果没有密码学,发送任何远程机密的内容都是不明智的。
  2. 密钥:密钥是访问其他信息所必需的一段信息。它通常是一串字符,用于在密码学中编码和解码消息。
  3. 公钥(非对称)密码学:非对称密码学是一类使用数学关联的密钥对进行加密/解密的密码学。非对称加密的基础在于,任何用一个密钥加密的信息只能用另一个密钥解密。因此,如果你用我的公钥加密信息,只有我用我的私钥才能解密。这一概念稍后将变得相关。

了解了不熟悉的术语后,让我们开始讨论什么是椭圆曲线。

什么是椭圆曲线

椭圆曲线是由以下方程定义的数学函数:

其中,a和b是任何实数变量,并且满足以下条件:

以下是几幅椭圆曲线的图片:

所有椭圆曲线都具有两个特性:

  1. 它们都关于x轴对称,
  2. 通过曲线上的任意两个点的直线只会与曲线上的其他一个点相切。

这两个椭圆曲线的属性对理解ECC至关重要。

椭圆曲线上的操作

在普通代数中,你可以执行加法、减法、乘法和除法。在椭圆曲线上,你可以对位于椭圆曲线上的点执行的操作只有两种:

  1. 将一个点加到它自己上。

取椭圆曲线上的一个点P。要得到2P(在椭圆曲线术语中),我们在点P处画一条切线,切线与曲线相切的地方是-2P。由于椭圆曲线对x轴对称,我们翻转-2P的值,得到2P。在这个例子中,R = 2P。

  1. 将两个点相加。

假设椭圆曲线上的两个点,P和Q,我们想要一个点R使得P + Q = R。根据椭圆曲线的第二个性质,如果我们画一条通过P和Q的直线,它将会准确地在曲线上与一个点相切。正如你所猜到的,这个点是-R。如果我们翻转这个点,就得到了R。这里,R = P + Q。

重要的是要注意,椭圆曲线上的操作是可交换的。也就是说,无论你是将P加到Q还是将Q加到P,答案总是R。

椭圆曲线的单向性

假设我给你两个椭圆曲线上的点。我告诉你,其中一个是另一个的椭圆曲线倍数(ecMUL);从数学上来说,推导出这个倍数是不可能的。

换句话说,如果 A = a.G,仅凭 aA 是不可能提取出 G 的。

找到A的已知唯一方法是通过暴力方式,即对每一个可能的 a(1,2,3,4,5,6,7,8,…,∞)将 G 加到自己身上,直到得到A。

得益于计算机的强大,对于一个小的椭圆曲线,经过数小时的暴力计算,你应该能够找到 a。但对于一个足够大的曲线,在你尝试所有可能的解决方案之前,太阳实际上会爆炸并摧毁地球。

另一个 aA 的重要属性是它们是数学上关联的。可以设计出一种编码算法,使得用 a 编码的任何内容只能用 A 解码,反之亦然。这一属性与椭圆曲线的单向特性结合起来,使得它们在公钥密码学中完美适用。

ECC的一个实际例子:Diffie-Hellman密钥交换算法

DHKE 的问题陈述是一种在不安全网络上达成共享秘密的方法。

这个共享秘密通常用作对称加密的密钥,但关于这方面的进一步讨论超出了本文的范围。仅想象为两个人在不安全网络上通信,他们想要达成一个只有他们两人知道的数字。

假设我们有两个人,Alice和Bob,他们想执行DHKE。以下是他们如何通过椭圆曲线和ECC实现这一目标:

Alice和Bob首先达成一致并公开说明:

  1. 他们的椭圆曲线的参数,
  2. 曲线上一个称为生成点G的随机点。

接下来,他们还各自选择随机数,Alice选择 a,Bob选择 b。这些数字是他们的私钥,他们不对外透露。

接下来,他们每个人都通过用生成点对私钥执行椭圆曲线倍数来生成公钥A和B。

他们通过不安全网络将这些公钥相互发送。

到目前为止,以下所有信息都是公开的:

  1. Alice和Bob选择的椭圆曲线
  2. 生成点G。
  3. 公钥A和B。

但只有Bob和Alice知道他们的私钥。

有了这些信息,Alice和Bob可以独立创建一个其他人无法导出的共享密钥。以下是具体如何进行的:

由于椭圆曲线倍数是可交换的,如果Alice和Bob利用对方的公钥与自己的私钥相乘,他们将得到相同的答案。

对于Bob:

对于Alice:

任何在不安全网络上监听的人都获得了椭圆曲线、A、B和G。但是所有这些信息对于导出共享秘密来说都是不够的。

以上是ECC在实际中如何用于保护信息的基本示例。

椭圆曲线的另一个用途是椭圆曲线数字签名算法(ECDSA),但那是另一个主题。

结论

本文探讨了ECC的高层工作原理。为了简单起见,我省略了一些细节,例如ECC中使用的椭圆曲线是定义在有限域而不是实数集上的。但很多信息对理解这个概念来说是多余的。希望你能从中获得对椭圆曲线和ECC工作原理的高层而完整的理解。

这就是本文的全部内容,祝你一切顺利。

  • 原文链接: apfikunmi.medium.com/are...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
apfikunmi
apfikunmi
江湖只有他的大名,没有他的介绍。