椭圆曲线密码学基础导论

2020-09-18 00:20:01

椭圆曲线密码体制是一种高效的现代公钥密码体制。在这篇介绍中,我们的目标将集中在使ECC工作的高级原则上。我们将省略实现细节和数学证明,这些可以留到下一篇文章中使用。

ECC的一个常见用途是加密数据,以便只有授权方才能解密它。这有几个明显的用例,但最常用于加密互联网流量。例如,我们可以使用ECC来确保当我们发送电子邮件时,除了收件人之外没有人可以阅读该邮件。

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

我们创建两个密钥,一个公钥和一个私钥。公钥是免费提供的,任何一方都可以使用它来加密数据。但是,私钥是保密的,只有持有私钥的人才有能力解密数据。

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

如您所见,这是一个非常有用的概念。以下是一些关键点:

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

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

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

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

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

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

在RSA(可以说是使用最广泛的公钥密码系统)中,陷门函数依赖于将大数分解为素数的难度有多大。

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

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

您使用ECC的原因与RSA相同。ECC和RSA都会生成公钥和私钥,并允许双方安全通信。然而,ECC的一个优点是,ECC中的256位密钥提供的安全性与使用RSA的3072位密钥大致相同。ECC允许资源受限的系统(如智能手机、嵌入式计算机和加密货币网络)使用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值,在这个值中,直线将绕回并再次从头开始。有关示例,请参见下图。

ECC被用作比特币中的加密密钥算法,因为它潜在地可以节省类似RSA系统使用的大约90%的资源。似乎每年我们都能看到更多的系统从RSA转向更现代的椭圆曲线方法。