(非常)椭圆曲线密码学基础导论

2020-05-31 23:20:30

这将是对椭圆曲线密码术的基本介绍。我假设我的大多数听众在这里是为了了解为什么ECC是一种有效的加密工具,以及它为什么工作的基本原理。我的目标是在一般意义上解释它,我将省略证明和实现细节,而将重点放在使其工作的高级原则上。

ECC的一个常见用法是加密数据,以便只有特定的人才能解密。这有几个明显的实际使用案例,但主要用于加密互联网数据和流量。例如,您可以使用ECC来确保当您发送电子邮件时,除了收件人之外没有人可以阅读该邮件。

公钥密码术有很多种,椭圆曲线密码术只是其中的一种。其他算法包括RSA、Diffie-Helman等。我将给出一个非常简单的公钥密码学背景知识作为起点,这样我们就可以讨论ECC,并在这些思想的基础上进行构建。如果您有时间,请务必更深入地学习公钥密码学。

该图显示了两个密钥,一个公钥和一个私钥。这些密钥用于加密和解密数据,以便世界上任何人都可以在传输加密数据时查看它,而不能读取消息。

让我们假设Facebook将收到唐纳德·特朗普(Donald Trump)的一篇私人帖子。Facebook需要能够确保当总统通过互联网发送帖子时,中间没有人(比如美国国家安全局或互联网服务提供商)可以阅读这条信息。使用公钥加密的整个交换过程如下所示:

如你所见,这是一项非常有用的技术。以下是一些关键点。

私钥必须保持安全,因为如果中间有人获得私钥,他们就可以解密消息。

计算机可以非常迅速地使用公钥来加密消息,使用私钥来解密消息。

如果计算机没有私钥,则需要很长时间(数百万年)才能从加密消息中获取原始数据。

所有公钥密码算法的关键在于它们都有自己独特的陷门函数。活门函数是一种只能以一种方式计算的函数,或者至少只能以一种简单的方式计算(使用现代计算机在不到数百万年的时间内)。

如果给我A和B,我可以计算C,问题是,如果我给B和C,我也可以计算A,这不是陷门函数。

如果给出“我爱狐狸和朋友们”和公钥,我可以产生“s80s1s9sadjds9s”,但如果给出“s80s1s9sadjds9s”和公钥,我就不能产生“我爱狐狸和朋友”。

在RSA(可能是最流行的公钥系统)中,陷门功能依赖于将大量数字分解到它们的主因子中的难度有多大。

在上面的示例中,公钥是一个非常大的数字,而私钥是公钥的两个主要因素。这是一个很好的活门功能示例,因为将私钥中的数字相乘得到公钥非常容易,但如果您拥有的只是公钥,则使用计算机重新创建私钥将需要很长时间。

注意:在真正的密码学中,私钥的长度需要超过200位才能被认为是安全的。

您使用ECC的原因与RSA完全相同。它只生成公钥和私钥,并允许双方安全通信。

但是,与RSA相比,ECC有一个主要优势。ECC中的256位密钥与使用RSA的3072位密钥提供的安全性大致相同。这使资源有限的系统受益。点击推特智能手机、嵌入式计算机和加密货币网络能够使用RSA要求的10%的硬盘空间和带宽。

这可能就是你们大多数人在这里的原因。这就是ECC的特殊之处,也是它与RSA的不同之处。活板门功能类似于台球的数学游戏。首先,我们从曲线上的某个点开始。接下来,我们使用一个函数(称为点函数)来查找新点。最后,我们不断重复点函数以绕过曲线,直到我们最终到达最后一个点。让我们演练一下算法。

A点B=-C(从A到B画一条线,它在-C处相交)。

点C=-D(从A到C画一条线,它与-D相交)。

点D=-E(从A到D画一条线,它与-E相交)。

这是一个很好的陷门函数,因为如果您知道起点(A)在哪里,需要多少跳才能到达终点(E),就很容易找到终点。另一方面,如果你只知道起点和终点在哪里,几乎不可能找到到达那里需要多少跳。

以下是我第一次了解ECC时遇到的几个问题。希望我能恰当地告诉他们。

第二点是如何找到的?如果点函数基本上是在两个点之间画一条线,你不需要从第二个点开始吗?

回答:没有。第二个点(下面我们将其称为-R)实际上是P点P的结果(让我们假设第一个点称为P)。

那么P点P是什么呢?它实际上只是P的切线,见下图:

如果点函数生成了一条会偏离极端的行,会发生什么情况呢?

如果直线没有碰到原点附近的曲线,我们实际上可以定义一个最大X值,在这个值中,直线将绕回并再次从头开始。有关示例,请参见下图。

这是一个很好的问题,但需要更深入的回答。在本文中,我对RSA和ECC都做了非常简单的解释。然而,还有大量的技术资源,我鼓励您去研究它们。

我最初学习ECC是因为我对比特币和加密货币感兴趣。ECC今天被用作加密货币的加密密钥算法,因为它使用的密钥大小(以及扩展数据)不到RSA的10%。

我希望您了解了一些ECC和公钥密码术,这绝不是技术描述。我希望让更多的人对ECC的功能感兴趣,并了解它的工作原理。