主页 > 华为手机怎么下载imtoken > 椭圆曲线加密和陷门函数,比特币背后的密码学

椭圆曲线加密和陷门函数,比特币背后的密码学

华为手机怎么下载imtoken 2023-02-18 07:24:11

译者:王泽龙

这是椭圆曲线密码学的基本介绍。我假设这篇文章的绝大多数读者都在这里:了解为什么椭圆曲线加密是一种有效的加密工具比特币算法函数为什么会有这种,以及它为什么有效。我试图用外行的术语来解释它,我将跳过论点和实现细节,而是专注于它是如何工作的。

椭圆曲线加密与陷门函数,比特币背后的密码学

椭圆曲线示例

它有什么作用?

椭圆曲线加密是一种加密数据的方法,只有特定的人才能解密它。它在现实生活中有很多应用场景,但它的主要应用是对互联网上的数据和流量进行加密。例如,可以使用椭圆加密曲线来确保在发送消息时,除了接收者之外没有人可以阅读它。

椭圆曲线密码术是一种公钥加密技术

公钥加密有很多种,椭圆曲线加密只是其中一种。其他加密算法包括 RSA、DiffieHelman 等。我将作为开始简要说明公钥加密的一般背景,然后展开我们的后续阐述,从而对椭圆曲线加密有更深入的了解。当您有时间时,您可以花一些时间深入研究公钥密码学。

如下图所示,公钥加密允许发生以下过​​程 -

椭圆曲线加密与陷门函数,比特币背后的密码学

上图显示了两个密钥,一个公钥和一个私钥。这些密钥用于加密和解密数据,这使得世界上的任何人都可以看到传输中的加密数据,但不能读取信息。

让我们假设 Facebook 将收到特朗普的私人帖子。Facebook 需要能够确保当特朗普在网上发布推文时,没有人(包括 NSA 或 ISP)可以阅读该信息。使用公钥加密后,整个数据传输过程呈现如下状态:

l 特朗普告诉Facebook他会发私信给后者

l Facebook 将其公钥发送给特朗普

l 特朗普使用公钥加密他的帖子:

“我爱 Fox 和朋友们”+ 公钥 = “s80s1s9sadjds9s”

l 特朗普只向Facebook发送加密信息

l Facebook 使用他们的私钥解密消息:

“s80s1s9sadjds9s”+私钥=“我爱狐狸和朋友们”

如您所见,这是一种非常有用的技术。这儿是一些精彩片段:

l 公钥可以发给任何人,是公开的

l 私钥一定要妥善保管,因为如果有人拿到了私钥,就可以解密信息

l 计算机可以快速用公钥加密消息,用私钥解密

l 没有私钥,计算机可能需要极长的时间(数百万年)才能破解加密信息

工作原理:活板门功能

所有公钥加密算法的关键在于它们都有自己独特的陷门功能。活板门函数只能以一种方式计算,或者至少很容易以一种方式计算(现代计算机在不到几百万年的时间内)

不是陷门函数:A+B=C

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

活板门功能:

“我爱 Fox 和朋友们”+ 公钥 = “s80s1s9sadjds9s”

如果给我“我爱 Fox 和我的朋友们”+ 公钥,我可以得到“s80s1s9sadjds9s”,但如果给我“s80s1s9sadjds9s”和公钥,我不能得到消息:“I Love Fox &朋友们”。

在 RSA(可能是最流行的公钥系统)中,陷门功能主要取决于将大数纳入其素因数的难度。

公钥:944,871,836,856,449,473

私钥:961,748,941 和 982,451,653

在上面的例子中,公钥是一个很大的数字,而私钥是公钥的两个主要因素。这是陷门函数的一个很好的例子,因为很容易将私钥中的多个数字相乘得到公钥,但是如果你只有公钥,那么计算机需要很长时间才能重建私钥。

注意:在真正的加密中,私钥需要超过 200+ 位才能保证安全。

是什么让椭圆曲线加密货币与众不同

人们使用椭圆曲线加密的原因与 RSA 完全相同。它生成一个公私密钥对,并允许两方安全通信。但是,椭圆曲线加密比 RSA 有优势。椭圆曲线加密中的 256 位密钥提供与 RSA 算法中的 3072 位密钥相同的安全性。这意味着在智能手机、嵌入式计算机和加密网络等资源受限的系统中,与 RSA 加密相比,椭圆曲线加密使用的硬盘空间和带宽不到 10%。

(注解:也就是说,椭圆曲线加密在资源有限的情况下比RSA算法更节省资源,更可行。)

椭圆曲线加密的陷门函数

这可能是绝大多数读者阅读这篇文章的原因。这是椭圆曲线加密不同于RSA加密算法的部分,也是它的特殊之处。活板门函数就像池中的数学游戏。我们从曲线上的一点开始。我们使用“点函数”来发现一个新点。继续重复“点函数”并在曲线上跳跃,直到我们最终到达最后一个点。让我们看看下面的整个算法。

椭圆曲线加密与陷门函数,比特币背后的密码学

l 从A点开始;

l A点B=-C(从A到B画一条线,到-C结束)

l 从-C到C的X轴反射;

l 点AC=-D(从A点到C点画一条线,最后落在-D点)

l 从-D到D的跨X轴反射;

l A点D=-E(从A到D画一条线比特币算法函数为什么会有这种,到-E结束)

l 从-E到E的X轴反射

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

公钥:起点A,终点E;

私钥:从 A 到 E 的跳数

有问题吗?

以下是我第一次了解椭圆曲线加密时出现的一些相关问题。希望我能正确修复它们。

如何发现第二点?如果点函数只是在两点之间画一条线,难道不需要第二个点来帮助开始吗?

答:不是。第二个点(我们在下图中叫它-R点)其实就是P点函数P(假设第一个点叫P)

P点函数P=-R

那么,什么是P点函数P?这真的只是P的切线。请看下面的图片:

椭圆曲线加密与陷门函数,比特币背后的密码学

如果点函数产生一条走向某个极端的线会发生什么?

如果线没有到达原点附近的曲线,我们实际上可以定义最大 X 值,线将环绕并重新开始。有关示例,请参见下图。

椭圆曲线加密与陷门函数,比特币背后的密码学

我了解陷门功能,但在实践中如何创建公钥和私钥?它们如何与要加密的数据一起使用?

这是一个很好的问题,但它需要更深入的答案。在本文中,我对 RSA 和椭圆曲线加密进行了更一般的解释。但是,还有更多的技术资源,我希望您能够研究它们。