了解有关加密货币的全部信息:密码学如何运作?

在本指南中,我们将深入研究对称和非对称密码学以及加密货币密码学背后的科学.

比特币和以太坊等加密货币使用点对点去中心化系统进行交易。由于整个过程都是在线的,因此担心交易可能不稳定且容易被黑客入侵。我们将在本指南中看到的是加密货币如何使用加密技术使其交易极为安全.

数字签名

签名的概念是加密货币中使用的最重要的加密工具之一。现实生活中的签名是什么?它的特性是什么?想象一下您已经用签名签名的论文,好的签名应该做什么??

简单密码学

  • 它应该提供验证。签名应该能够验证是您实际签署了该文件.
  • 它应该是不可伪造的。没有其他人可以伪造和复制您的签名.
  • 不可否认。如果您已经使用签名签名了某物,那么您就不能取回它或声称有人代替您完成了它.

但是,在现实世界中,无论签名多么复杂,总会有伪造的机会,而且您无法真正使用简单的视觉辅助工具来验证签名,这是非常低效且不可靠的.

数字签名

密码术通过“数字签名”为我们提供了解决方案,这是通过使用“密钥”来完成的。那么,键是什么?以及如何在区块链中使用?在我们探索这些密码之前,重要的是要更多地了解基本密码学.

什么是加密货币密码学?

密码术是一种使用高级数学原理以特定形式存储和传输数据的方法,因此只有目标用户可以读取和处理该数据。密码术已经被人们使用了数千年,用于传递消息而没有被发现。实际上,最早在大约公元前1900年从埃及古王国墓葬中使用了加密技术。密码学以一种或另一种方式存在于现代社会中.

加密是密码学中使用的最关键的工具之一。这是一种使非预期读者无法阅读消息并且只能由发送者和接收者阅读消息的方法。在现代技术中,广泛使用三种形式的加密: 对称密码,对称密码和哈希.

对称密码学

对称加密是人类已知的最早的加密方法。这个概念非常简单,如果我们将其分解为几个步骤,它将是这样的:

  • 您有一条消息M想要发送给您的朋友.
  • 您使用密钥对消息进行加密并获得密文C.
  • 您的朋友收到您的密文C.
  • 然后,她使用相同的密钥解密密文,以检索消息M.

如果我们要以直观的方式展示流程,那么它将看起来像.

图片来源:SSL2BUY

有两种类型的对称密码:

  • 流密码.
  • 分组密码.

什么是流密码?

流密码基本上意味着使用固定密钥,该密钥用伪随机字符串替换消息。基本上是一次加密每个字母.

我们将在本指南中讨论3种流密码,以使您了解流密码的工作原理:

  • 一次性垫与字母.
  • 具有XOR门的一次性垫.
  • 线性反馈移位寄存器.

一次性垫与字母

为了进行这种加密,我们需要有一个与消息具有相同字符数的密钥,并且只能使用一次(因此,术语“一次性垫”).

假设在此示例中,我们将向朋友鲍勃发送一条消息,“ MEET ME OUTSIDE”。但是我们不希望任何人拦截我们的信息。这就是为什么Bob和我们决定使用一次性垫子,原因如下:

“ B D F F G H W E I U F G W”

如您所见,该键盘的字符数也与该消息相同,即13.

现在,这是一次性垫纸的一个非常简单的示例,我们正在使用它,因为我们认为这是理解该策略的最佳示例.

现在,您需要注意的另一件事是,在此过程中,每个字母都将被替换为其等效的数字.

数值映射如下所示:

加密货币密码学背后的科学

在此过程中,将需要6个数据,它们是:基本上,每个字母的数字等效。好了,现在我们已经建立了基础,让我们继续进行实际的过程.

  • 原始消息(OM):我们正在传递的原始消息。在这种情况下,“ MEET ME OUTSIDE”.
  • 数字原始消息(NOM):与原始消息等效的数字,
  • OTP:一次性垫.
  • 数值OTP(NOTP):相当于OTP的数值.
  • NCT:数字密文为NOM + NOTP mod 26
  • CT:密文,它是NCT中数字的字母等效形式.

因此,我们需要发送消息“ MEET ME OUTSIDE”,并且需要使用一次性垫对其进行加密.

加密过程

因此,我们首先将消息放入OM

加密货币密码学背后的科学

我们将消息“ MEET ME OUTSIDE”放到OM行中。好,那么这里发生了什么?

接下来,我们使用数字映射表来获取每个字母的数字等效项。因此,让我们参考映射表,看看会得到什么:

加密货币密码学背后的科学

在OTP行中,我们输入了已经提供的密钥,以防万一您忘记了“ B D U F G H W E I U F G W”。这只是简单的替换,我们将使用这些值并将其放在NOM行中.

现在,在NOTP行中,我们使用了相同的数字映射表,并发现了该键的等效数值为:

“ 1、3、20、5、6、7、22、4、8、20、5、6、22”.

在新行中,对于数字密码文本(NCT),我们添加NOTP和NOM并将结果修改26以得到NCT.

因此,最后一条消息“ MEET ME OUTSIDE”变成了伪随机字符系列“ N H Y Y S L K Y B M N J A”。这就是如何查找NCT的值,然后使用映射表并找到相应的字母,它们是:“ N H Y Y S L K Y B M N J A”.

这就是加密过程的工作方式.

解密过程

现在,我们将看到如何使用完全相同的密钥解密消息.

让我们看看Bob拥有的数据:

  • 他有他从我那里得到的加密信息.
  • 他拥有我们俩共同分享的钥匙.
  • 他有映射表可以找到数值上的等价物.

因此,他将如何使用此数据解密消息?

  • 他将映射密钥和加密消息的数值,以获得NCT和NOTP.
  • 然后,他将通过执行以下计算来计算NOM(原始消息的数值):NOM = NCT – NOTP mod 26.
  • 他将使用映射表来检索相应的字母.

加密货币密码学背后的科学

那么,让我们来看看NOM计算是如何工作的?

加密货币密码学背后的科学

现在,如果我们使用映射表将NOM映射为其等效字母,则可以得到:

“与我见面”

就像这样,使用相同的密钥对消息进行加密和解密.

具有XOR门的一次性垫

XOR或“异或”是逻辑门。什么是逻辑门?逻辑门通常接收2个输入,并给出1个输出。输入和输出为二进制值,表示它们可以为1或0。XOR逻辑门接收2个二进制输入,仅在输入不同时才输出高电平。这意味着,如果将A和B输入到XOR门,则仅当A不等于B时,输出C才为1.

XOR门看起来像这样:

加密货币密码学背后的科学

图片提供:Wikimedia

XOR真值表如下所示:

加密货币密码学背后的科学

加密过程

假设您有一个纯文本数据要发送给您的朋友爱丽丝。首先,将其转换为二进制格式。假设您收到的消息是:00011110

现在您有了密钥,即与收件人共享的密钥,并假定您已通过一种算法传递了该密钥,该算法为您提供了等效的二进制结果:01001010.

现在,有了密钥,您将对每个对应的位进行异或运算,以得到结果密文输出.

密文=纯文本XOR键

因此,如果您对这两个数据进行异或运算,您将获得的密钥是:

 

加密货币密码学背后的科学

“ 01010100”

这是爱丽丝将从您那里得到的密文.

解密过程

所以现在,爱丽丝将如何解密您的消息并检索原始消息?

这是她拥有的数据:

  • 密文
  • 钥匙.

那她该怎么办?很简单.

她只需对密钥和密文进行XOR,就可以检索原始消息!你自己看:

加密货币密码学背后的科学

就这样,她将检索原始消息.

线性反馈移位寄存器

什么是线性反馈移位寄存器?该函数的未来输出完全取决于其早期(或当前)状态。当您继续阅读时,这将变得更加清晰,因此请不要害怕!

这种流密码样式的想法是与接收者预先确定一个密钥,这将是线性反馈移位寄存器功能,您将使用该函数来确定代码。假设您与您的朋友鲍勃(Bob)交谈,并确定这是您俩都想使用的公式(此公式由Youtube的Daniel Rees提供).

  • E(i + 3)= E(i + 1)+ 2E(i + 2)mod 26.

并且我们还假设在发送此消息之前,您和鲍勃确定E(1)= 2和E(2)= 4.

现在您可以看到,在此等式中,所有将来的输出都取决于先前的输出.

因此,假设您要发送给Bob的消息是“ MEET ME”。由于有6个字符,我们需要确定6个E()值作为键。我们已经预先确定了E(1)和E(2)的值。现在我们需要计算E(3)到E(6).

  • E(3)= E(1)+ 2E(2)mod 26 = 10.
  • E(4)= E(2)+ 2E(3)mod 26 = 24.
  • E(5)= E(3)+ 2E(4)mod 26 = 6.
  • E(6)= E(4)+ 2E(5)mod 26 = 10.

现在,有了密钥,我们开始解密.

加密过程

现在我们有了密钥和消息,让我们创建表:

加密货币密码学背后的科学

要获取数字密文,请添加密钥和从此表中映射的对应字母数字值,该表我们之前已经看到过:

加密货币密码学背后的科学

现在,要获得密文的数值,请添加密钥和原始消息的数值,并用26修改mod.

这样就得到:

加密货币密码学背后的科学

现在再次使用映射表查找相应的字母,您将获得“ OIORSO”。那是加密的消息.

解密此消息确实非常困难,尤其是如果您没有密钥的话。专家可能会发现一个模式。您将需要计算机发出此代码.

现实世界中使用的流密码的示例.

RC4的Rivest密码4

  • 在WEP aka有线等效协议中使用,以实现无线网络安全.
  • TLS / HTTPS中的一个选项,用于加密网络流量.
  • 由于它已经被破解了很多次,因此不建议再使用.

A5 / 1

  • 用于加密GSM(全球移动通信系统)电话数据和通信.
  • 爱德华·斯诺登(Edward Snowden)在泄漏中透露,出于监视目的,国家安全局通常会不断破坏GSM,因此它不再是安全的加密模式.

因此,这几乎与流密码有关,是时候继续进行分组密码了.

什么是分组密码?

分组密码 是对称密码术的一种形式,它使用固定长度的密钥来加密固定长度的块。让我们首先检查一下您必须已经见过的非常通用的替换密码:

加密货币密码学背后的科学

因此,如果有人告诉您他们收到一条消息,上面写着“ EFBD”,并希望您解密它并获得原始消息,那么您将如何处理??

您将只看到表格,看到哪些字母对应于哪个字母,然后简单地替换对吗?因此,“ EFBD”是“ FACE”的密码.

现在,让我们检查纯文本和密文并进行比较:

  • 平原:A B C D E F
  • 密码:F A B C D E

因此,如您所见,密文基本上是将右移一位的纯文本。因此,在这种情况下:

  • EFBD = FACE移1

从本质上讲,这就是分组密码。给定输入纯文本和密钥,它可以生成唯一的密文。还有一件非常重要的事情,应该注意。有了密钥,任何人都可以从明文中解密密文,反之亦然。我们在这里给出的示例都非常简单,块密码发生在巨大的数据块中.

如果我们正在寻找分组密码的视觉表示,则其外观将是这样的:

分组密码视觉

分组密码的另一个有趣的特性是,如果密钥发生更改,则将极大地改变输出密码文本。让我们对目前拥有的数据进行测试.

加密货币密码学背后的科学

现在,我们为3个不同的密文提供了3个密钥.

  • 在密文1中,我们一次向右移动.
  • 在密文2中,我们两次向右移动.
  • 在密文3中,我们正向右移动三次.

因此,让我们看看通过所有这些不同的密码解析输入“ FACE”时会发生什么.

  • 当键= 1时,FACE变为EFBD
  • 当键= 2时,FACE变为DEAC
  • 当键= 3时,FACE变为CDFB

如您所见,每次更改密钥时,输出密文都会更改。在该示例中,我们只有很少的数据,请想象使用大量数据来执行此操作,输出每次都会发生巨大变化.

有两种规则可将分组密码视为有效:

  • 给定密钥,您必须能够从密文中得出纯文本,反之亦然.
  • 该函数必须是可有效计算的.

关于分组密码,还需要注意一件事。块大小是固定的,因此输入的纯文本必须与块大小相同。如果输入大于块,则需要分解以获取正确的大小;如果输入较小,则需要用一些垃圾数据填充以适合块的大小.

分组密码的例子

数据加密标准(DES)

  • 块大小为64位.
  • 密钥大小为56位.
  • 直到2001年为止都是政府标准.

高级加密标准(AES)

  • 128位块大小.
  • 128、192或256位密钥大小.
  • 如今被认为非常安全且广泛使用

对称密码学的优势

即使对称密码学有一些主要问题(我们将在后面讨论),对称密码学的最大优点是它只需要很少的开销。您只需要与收件人共享一个密钥即可继续使用此方法.

即使是现在,许多软件仍将这种方法与非对称密码结合使用,以提供快速有效的加密/解密服务.

对称密码学的问题

即使开销明显减少,对称加密也存在很多问题.

问题1:共享密钥

用一个密钥完成加密和解密的事实是一个巨大的问题。首先,密钥的共享必须以非常安全的方式进行,如果有人握住了密钥,那么您的所有数据都会受到损害。.

问题2:不可扩展

对称密码学的另一个巨大问题是它根本无法扩展。假设爱丽丝(Alice)经营着一个信息中心,并通过对称密钥密码术发送数据。如果她只与3-4位客户打交道就可以。但是,她获得的客户最多,因此她将不得不处理和处理的唯一公共密钥越多。最终,它将变得难以应付.

由于对称密钥密码术存在这些漏洞,因此需要一种解决方案,并且在1970年代终于有了解决方案.

詹姆斯·埃利斯(James Ellis)的突破

1970年,英国数学家和工程师詹姆斯·埃利斯(James Ellis)想到了一个基于简单概念的想法。如果加密和解密是基于2个不同密钥的逆运算怎么办?在传统的密码学(即对称密码学)中,必须将消息与密钥一起发送给目标人员,以便他们解密消息,但这提出了攻击者获得密钥的真正想法。.

埃利斯(Ellis)设想,邮件的接收者不能是被动的一方,他们必须自己拥有一个“挂锁”和一个“钥匙”。挂锁可以发送给世界上的任何人,但是钥匙必须保密。因此,任何人都可以通过用挂锁锁定消息的方式将消息发送给接收者,并且由于只有接收者拥有密钥,因此只有他们才能打开它.

现在,这是一种理论,该理论需要有一种实用的形式,其产生是由于两个出色的原理:

  • 活板门功能.
  • Diffie-Hellman密钥交换.

什么是活板门功能?

陷门功能(又称单向功能)是一种功能,它很容易从一个状态(也称为域)转到另一个状态(即范围),但是除非您了解某个域,否则很难从范围返回到域称为活板门功能的键.

它的图解表示如下:

数学活板门

图片来源:Cornell.edu

活板门功能基于键的概念。其中,公钥(K)用于从域到范围。为了从范围返回域,我们必须使用陷门功能,也称为私钥(k)。这也暗示着私钥和公钥在数学上是相互关联的,并且它们还必须通过另一个陷门函数f()相互关联,使得K = f(k),因此私钥不可行由公钥确定.

一个简单的例子是大数的乘法。假设您有两个数字171和118,则很容易确定171 * 118 =20178。但是,如果您只知道20178,那么除非有钥匙,否则很难确定初始数字是多少。在这种情况下,只有两个数字之一的知识才能确定第二个数字.

什么是Diffie-Hellman密钥交换?

假设有两个人爱丽丝和鲍勃,他们想攻击一家银行。但是,它们在银行的两侧,并且只能通过银行正在窃听的共享线路相互通信.

像这样.

请记住,爱丽丝和鲍勃互相说的话,都会被银行窃听。因此,他们如何才能在不知道银行信息并且没有Alice和Bob明确交换信息的情况下,决定攻击银行的日期。?

Diffie-Hellman密钥交换可以解决这个难题。这是一个概念,通过该概念,两方无需共享即可获取秘密信息.

要了解Diffie-Hellman的工作原理,我们需要使用该理论最著名的应用之一,即秘密色彩交换.

为此,需要牢记三件事:

  • 爱丽丝(Alice)和鲍勃(Bob)都公开同意黄色将成为他们都将使用的常见涂料.
  • 爱丽丝然后秘密地告诉自己,她也将使用橙色和黄色.
  • 鲍勃秘密地决定要和黄色一起使用水色.

第一阶段

由于已经公开宣布黄色将成为选择的颜色:

  • 银行:有黄色
  • 爱丽丝:有黄
  • 鲍勃:有黄

第二阶段

现在,爱丽丝(Alice)将她的私人颜色(也称为橙色)与黄色混合,得到一种我们称为CA的复合颜色.

同时,鲍勃(Bob)将自己的浅绿色与黄色混合,并创建了复合色CB.

因此,在第二阶段结束时,情况如下所示:

  • 银行:黄色
  • 爱丽丝:CA
  • 鲍勃:CB

第三阶段

现在,爱丽丝(Alice)和鲍勃(Bob)将彼此发送各自的颜色,银行将立即窃听它们。但是,银行现在面临问题.

颜色组合是活板门功能.

尽管某人很容易将两种颜色组合并生成第三种颜色,但从给定的第三种颜色中确定前两种颜色是不可行的。因此,银行将拥有CA和CB,但不知道其创建的颜色是什么.

所以,这就是现在的样子:

  • 银行:黄色,CA,CB.
  • 爱丽丝:CB
  • 鲍勃:CA.

第四阶段

现在,爱丽丝(Alice)和鲍勃(Bob)将再次将他们的秘密颜色混合到他们从其他人那里收到的混合色中,因此现在他们俩都将混合使用黄色,橙色和浅绿色的棕色。但是,银行只能拥有CA和CB,因为它们不知道秘密的颜色是什么.

所以,这是现在的样子:

  • 银行:黄色,CA和CB.
  • 爱丽丝:布朗.
  • 鲍勃:布朗.

这就是诀窍所​​在,因为鲍勃和爱丽丝都没有透露自己的秘密颜色,尽管他们从未明确彼此交换过棕色,但他们俩都拥有棕色。.

这是整个交换的示意图:

图片提供:Wikipedia

这是Diffie-Hellman交换的表示,但是需要一种数学方法来确保也可以将其实际应用。因此,使用了模函数.

Diffie-Hellman交换的数学形式

假设有一个生成器g用于大小为n的有限域。在该字段中,我们选择两个随机值a和b。仅给出g,g ^ a和g ^ b的情况,攻击者很难确定g ^ ab。这是激活活板门功能的条件。在这种情况下,两方可以交换消息并得出相同的结论,而无需彼此明确交流.

因此,从数学上讲,这就是发生的情况.

爱丽丝从字段n中选择一个随机值“ a”,并确定消息M1使得:

  • M1 = g ^ a mod n.

同样,鲍勃从字段n中选择一个随机值“ b”,并创建消息M2,使得:

  • M2 = g ^ b mod n.

爱丽丝和鲍勃现在都可以相互传递消息.

爱丽丝现在通过执行以下操作来确定特殊消息K:

  • K = M2 ^ a mod n = g ^ ab mod n.

现在,Bob通过以下方式确定相同的消息K:

  • K = M1 ^ a mod n = g ^ ab mod n.

因此,爱丽丝(Alice)和鲍勃(Bob)在没有明确共享此信息的情况下得出了相同的结论.

这种Diffie-Hellman密钥交换对于非对称密码学的形成是非常宝贵的:

什么是非对称密码学?

非对称密码学利用两个密钥(公共密钥和私有密钥)来加密和解密特定数据。使用一个键会取消使用另一个键.

它的图示如下所示:

对称密钥加密

图片提供:SSL2BUY

我们将在本指南中探讨非对称加密在现实世界中的两种用法,由于其自​​身的原因,两者都很重要:

  • Rivest-Shamir-Adleman算法又称RSA.
  • 椭圆曲线密码学.

什么是RSA算法?

RSA算法是历史上使用最广泛且最受欢迎的非对称密码算法。它以发现该算法的麻省理工学院教授Rivest,Shamir和Adleman的名字命名。现在,它如何运作?这个想法源于Diffie-Hellman的突破.

因此,这些是我们将要使用的变量:

假设您有一个秘密消息“ m”。 “ m”提升为随机数e的幂,然后具有随机数N的模数将为您提供密文c.

基本上。 m ^ e mod N = c

请注意,仅给出c,e和N即可轻松执行此功能以获取输出c,但是很难获得消息“ m”。这将需要大量的反复试验。这是我们将用于查找“ m”的单向活板门功能.

但是现在,陷门功能的想法是拥有一个密钥,该密钥将使接收者的逆向处理(解密)变得简单。因此,为此,我们需要找到一个随机变量“ d”,这将使此过程成为可能:

  • c ^ d mod N = m.

现在请记住,c = m ^ e mod N,以此类推.

  • m ^ e ^ d mod N = m.

或者

  • m ^ ed mod N = m

因此,在以上等式中:

  • 公钥= e和N.
  • 私钥= d.

现在,在我们甚至开始了解疯狂背后的方法之前,让我们做一个简单的计算来了解整个过程的工作方式。 (在此示例中,请大喊Anthony Vance的youtube频道).

假设您要发送的消息是42。换句话说,m = 42.

伴随着:

  • e = 17.
  • N = 3233.
  • d = 2753

加密过程

c = m ^ e mod N.

使用简单替换:

c = 42 ^ 17 mod 3233 = 2557.

所以密文是2557.

解密过程

让我们来做c ^ d mod N.

2557 ^ 2753模组3233

这给我们m的值为42.

天才不是吗?

现在,请记住,当我们谈论活板门功能时,我们得出的结论是,私钥和公钥必须以下列方式彼此为数学导数:

F(私钥)=公钥,其中F()是另一个活板门函数.

任何人都很难从公共密钥确定私有密钥。实际上,它应该如此困难,以至于需要数十年来数十年来世界上最强大的计算机才能彼此衍生.

为了回答这个难题,我们回溯了几个世纪,遇到了我们的下一个天才Euclid.

欧几里德和素分解

欧几里得几百年前发现 > 1可以写为质数的乘积.

  • 例如。 15可以写成5 * 3.
  • 255可以写成5 * 17 * 3.

让我们回到两个方程式:

C = m ^ e mod N.

在此,N是活板门功能中的键。虽然N可能是众所周知的,但要确定组成N的素数应该很困难。如果您知道素数,那么发现乘积N就是孩子的事.

例如。您可以使用网络浏览器将两个巨大的数字相乘,然后在一秒钟内找到乘积:

加密货币密码学背后的科学

计算花费了不到一秒的时间,即0.22秒。数值越大,花费的时间就越多,但是仍然可以非常快速地完成计算.

但是,如果您输入大量数字并要求计算机查找其主要因素,则可能需要几天,几个月甚至几年的时间才能找到主要因素。.

这是密码学家用来确定N值的活板门函数。这基本上是窍门的核心.

这是使用RSA算法所要做的:

  • 首先,生成一个大的随机质数P1.
  • 生成第二个大随机质数P2.
  • 通过计算P1和P2找到N.
  • 隐藏P1和P2的值并使N公开.
  • N应该是一个巨大的数字,它将需要数十年来世界上最复杂的机器来找到P1和P2的值.
  • 综上所述,N是活板门,素数P1和P2是活板门的关键.

好的,现在我们确定了N的计算方式以及在其中起作用的活板门。但是我们仍然没有确定“ e”和“ d”的值,我们仍然没有看到私钥是如何从公钥派生的。为了生成所有这些剩余值,我们需要找到一个依赖于知道N的因式分解的函数。为此,我们需要去拜访我们的下一个天才Leonhard Euler.

欧拉和易碎性

1760年,瑞士数学家Leonhard Euler进行了一些突破性研究。他研究了数字的性质,更具体地说,研究了数字的易碎性,他称之为phi函数.

基本上给定phi(N),其中N是一个随机整数,N的值将是1到N之间不与N共享任何公因数的数字.

因此,如果N为8,则:

1-8之间的数字是:1,2,3,4,5,6,7和8.

在这些数字中,只有1,3,5和7与8共享任何因素,除了1.

含义phi(8)= 4.

现在,除了一种情况外,计算phi函数很困难。要知道这一点,请查看下图。该图跟踪phi值在1000以下整数上的分布.

加密货币密码学背后的科学

图片提供:可汗学院

看到顶部的绿色直线方便地布置了?那就是素数的phi。由于质数的定义是它本身无法分解,因此对于任何质数p phi(p)= p-1.

让我们在实践中看到这一点。假设您有一个质数7.

1到7之间的数字是:1,2,3,4,5,6,7.

在这个系列中唯一与7共享一个因子的数字是…7!

所以phi(7)= 6.

同样,如果要查找大质数的phi,请说541,然后:

披(541)= 541-1 = 540.

计算素数的phi变得非常简单。当您考虑phi函数的乘法性质时,这甚至具有更大的意义。 phi函数的乘法性质是什么?

对于任何两个数字A和B:

披(A * B)=披(A)*披(B).

现在,让我们回到算法。爱丽丝确定了两个大质数P1和P2,并通过执行P1 * P2确定了数N.

因此,使用phi函数的乘法属性:

菲(N)=菲(P1)*菲(P2).

或者

hi(N)=(P1-1)*(P2-1).

就像这样,我们发现了phi的trapdoor函数。如果我们知道N的素因子,那么很容易计算phi(N).

例如。 77的素数是7和11.

所以phi(77)=(7-1)*(11-1)= 60.

当您知道N的素因子时,它变得非常容易.

现在,需要一点数学巫术。我们具有phi函数,并且具有我们之前确定的模幂函数,我们需要将这两个函数整合为一个整齐的方程式.

为此,我们再次向欧拉寻求帮助.

欧拉定理

欧拉定理 指出:

对于m和n两个不共享因子的数字:

m ^ phi(n)≡1 mod n

意思是,对于任意两个数字m和n,只要它们不共享因数,将m乘以phi(n)除以n总是得到余数1。让我们来看一个例子.

假设m = 8且n = 5.

披(5)= 4

因此,8 ^ 4 = 4096.

用欧拉定理方程式代替:

4096≡1 mod 5成立,因为4096除以5会剩下余数1.

现在,方程式:m ^ phi(n)≡1 mod n需要一点点修改,之后我们才能得出最终解.

修改#1

所有k的1 ^ k = 1.

因此,请记住这一点,如果在m ^ phi(n)≡1 mod n中,将指数phi(n)乘以任意数字k,则最终解将是1 ^ k,仍为1.

现在,这样修改方程式:

m ^ k * phi(n)mod 1 mod n

修改#2

对于所有m,m * 1 = m.

因此,在修改后的方程式中,如果将两边都乘以m,则得到:

m * m ^ k * phi(n)≡m * 1 mod n

变成:

m ^ k * phi(n)+1≡m mod n

现在,这是方程式的最终形式.

在继续之前,让我们回顾旧的方程式以刷新我们的记忆:

  • c = m ^ e mod N.
  • m = c ^ d mod N
  • m ^ e * d mod N = m

现在,结帐最后一个方程看起来与我们新修改的方程相似:

m ^ k * phi(n)+1≡m mod n

这是突破.

通过比较两个方程,我们得到:

e * d = k * phi(n)+ 1

我们最终有一个方程,其中e和d的值取决于phi(n).

现在,由于我们已经知道e的值,因此仅在知道N的因式分解的情况下,才很容易计算出私钥d(这是Alice保守的秘密)。.

因此,d =(k * phi(n)+1)/ e.

这是活板门,它将撤销由她的私钥e和n完成的加密.

示例,看这一切如何工作

假设Bob和Alice正在交换消息.

鲍勃想发送一条消息M到爱丽丝,其中M = 89.

现在,爱丽丝需要生成她的密钥.

她用质数p1和p2作质数,其中:

P1 = 53.

P2 = 59.

N = P1 * P2 = 53 * 59 = 3127.

披(N)=披(P1)*披(P2)=(P1-1)*(P2-1)= 52 * 58 = 3016

现在,她需要生成一个值e,它将不具有phi(N)的值.

因此,她决定e = 3.

现在,她将生成她的私钥d:

d =(k * phi(N)+1)/ e

取k = 2,我们得到:

d =(2 * 3016 +1)/ 3 = 2011.

现在,她将锁定除她的公钥N和e之外的所有值,并使这两个值成为全局值.

鲍勃加密邮件

现在,Bob需要发送消息M(即89),并且他需要计算密文c,使得:

c = M ^ e mod N.

现在,我们知道:M = 89,e = 3,N = 3127.

因此:c = 89 ^ 3 mod 3127 = 1394.

然后,他将其发送给爱丽丝.

爱丽丝解密消息

爱丽丝得到了密文,她所要做的就是使用她的私钥d(我们知道是2011年)对其解密。.

因此,爱丽丝进行了以下计算:c ^ d mod N

1394 ^ 2011 mod 3127,也就是原始消息M,即89.

这就是RSA算法,使用最广泛的密码算法

什么是椭圆曲线密码学?

椭圆曲线加密技术是比特币,以太坊等出于加密目的而使用的加密技术。那么什么是椭圆曲线?椭圆曲线是满足以下方程式的任何曲线:

Y ^ 2 = x ^ 3 +轴+ b

其中(x,y)是曲线上的一个点,而a和b是常数.

您可以制作无限的曲线。以下是这些曲线之一的总体外观:

加密货币密码学背后的科学

图片来源:CSBreakdown YouTube频道

椭圆曲线的性质是什么?

  • 曲线在x轴上对称.
  • 任何经过曲线上2个点的线都将与曲线上的第三个点相交.
  • 曲线上的任何切线将在另一点上与曲线相交.

在曲线上执行数学.

曲线的加法属性

假设曲线V和A上有两个点。让我们跟踪曲线上的两个点,然后在它们之间划一条线。这将在第三点与曲线相交.

加密货币密码学背后的科学

图片来源:CSBreakdown YouTube频道

我们将第三个点称为X,并将其反映在曲线上,如下所示:

加密货币密码学背后的科学

图片来源:CSBreakdown YouTube频道

X的反射点将是(V + A)。这是椭圆曲线的可加性.

有趣的笔记。如果我们在上面的图中将X和V + A相加,那么我们将两个反射彼此相加,则将得到无穷大。原因是通过X和(V + A)的线将在无穷远处与曲线相交.

曲线的乘法特性

现在,如果我们想给自己加上一个数字怎么办?像假设我们有一个V点,我们要怎么做才能找到2V?我们将通过V切线,并将其与图形中的一个点相交,然后找到该点在曲线上的反射。那反射将是2V.

加密货币密码学背后的科学

图片来源:CSBreakdown YouTube频道

这也是图的乘法性质,因为我们发现的点基本上是整数与点本身的乘积。现在假设我们要找到3V。我们将加入V和2V,然后反映相交点,如下所示:

加密货币密码学背后的科学

图片来源:CSBreakdown YouTube频道

您看到点如何在图形上循环吗?这就是它的安全性所在.

椭圆曲线的数学性质

属性1:曲线上的点构成一个Abelian组

Abelian组的属性如下:

  • 他们有身份.
  • 有反称.
  • 这些点是曲线上三个点A,B和C的关联含义:​​(A + B)+ C = A +(B + C).
  • 点在曲线上闭合.
  • 这些点是两个点A和B的可交换含义。A + B = B + A.

属性2:曲线上的乘法速度很快

曲线上的所有乘法都可以非常快地完成。现在假设我们有一个点P,我们想找到100P。与其将数字相加100次,我们可以执行以下操作:

  • 将点P加到自身以获得2P.
  • 加2P和P可获得3P.
  • 增加3P即可获得6P.
  • 增加6P即可获得12P.
  • 增加12P即可获得24P.
  • 加24P和P得到25P.
  • 增加25P即可获得50P.
  • 加50P即可获得100P.

因此,您无需经过99个步骤,而是将整个过程缩短为8个步骤.

属性3:曲线上的分割速度很慢

虽然乘法很快,但是除法很慢。假设我们有Q = nP,我们想通过将Q除以P来找到n的值。我们实际上无法做到这一点。我们将不得不手动逐个遍历数字来找到一个满足方程式的值。这使其非常慢。这称为离散对数问题,这就是给曲线赋予其陷门功能的原因,即,很容易将n和P相乘得到Q,但是给定Q和P则不可能得到n.

椭圆曲线Diffie-Hellman密钥交换

因此,到目前为止,我们已经看到了曲线的各种属性,并且还看到了曲线具有活板门功能。现在我们如何确定它是否可用于密码学?让我们用Diffie-Hellman密钥交换进行测试。假设我们有爱丽丝(Alice)和鲍勃(Bob),并且他们都想提出一个共同的秘密,而没有人知道它是什么,并且彼此之间不明确交换信息。他们将如何通过椭圆曲线做到这一点?

  • 首先,他们将公开同意使用的曲线和曲线上的点P。这将是公共知识,所有人都可以使用.
  • 秘密地,爱丽丝将选择一个秘密点“ a”,而鲍勃将选择一个秘密点“ b”.
  • 爱丽丝将计算“ aP”并将其发送给鲍勃。任何人都可以截获此消息,但是,即使知道了P,他们也将永远无法确定“ a”的值,因为正如我们已经确定的那样,存在一个陷门功能会使除法不可行.
  • 同样,鲍勃将得出“ bP”值并将其发送给爱丽丝.
  • 然后,爱丽丝会将她的秘密密钥乘以从鲍勃那里得到的消息(bP)。鲍勃会做同样的事情,并提出b(aP)。由于曲线上的所有点都是Abelian:a(bP)= b(aP)。就这样,他们发现了一个秘密的共享信息.

如我们所见。曲线满足Diffie-Hellman密钥交换.

那么签名验证在椭圆曲线上如何工作?

(注意:这是比特币中专门发生的事情)

在我们了解该过程如何工作之前,让我们检查一下我们将使用以下方程式的某些变量及其含义.

  • 私钥= d.
  • 讯息= z.
  • 公钥= Q.

G将是由比特币提供的图形上的恒定点.

  • “ k”是一个随机数,将为每个唯一签名自动生成.
  • “ n”是比特币将提供的另一个常数.

好的,现在让我们看看验证背后的数学原理.

签名消息

公钥Q = dG。 (由于划分不可行,因此无法从Q和G获取私钥).

现在,我们将G与随机数“ k”相乘,并将该点绘制在图形上。该点的坐标为(x,y)。即(x,y)= kG

接下来,我们确定两个值r和s:

r = x mod n.

s =(z + rd)k ^ -1 mod n

我们生成r和s的原因是因为这些是我们签名的坐标.

因此,我们将点(r,s)发送给验证.

验证消息

验证者将执行一个简单的方程式:

z * s ^ -1 * G + r * s ^ -1 * Q

该方程的值将给我们点(x,y).

现在,验证者可以简单地比较x坐标。他们没有直接从发送者那里获得x坐标,但是它们的值分别为r和n.

正如我们已经知道r = x mod n,然后他们可以简单地求解x.

如果x的值匹配,则意味着签名已验证!

奖励:对数学有更深入的了解

我们来看看验证者必须再次做的等式:

  • 步骤1:z * s ^ -1 * G + r * s ^ -1 * Q

我们知道Q = d * G,让我们简单地用值代替.

  • 步骤2:z * s ^ -1 * g + r * s ^ -1 * d * G

我们可以取(z + r * d)的共同点

  • 步骤3:(z + r * d)* s ^ -1 * G

现在记住,我们已经确定s =(z + r * d)* k ^ -1 mod n,在这里替换值:

  • 步骤4:(z + r * d)*(z + r * d)^-1 * k * G

(z + r * d)*(z + r * d)^-1互相抵消,剩下的就是:

  • 步骤5:k * G,即发件人最初发送的坐标(x,y).

椭圆曲线可能出什么问题?

不用说椭圆曲线是目前最好的加密方式,但事实仍然是它几乎没有漏洞:

  • 如果选择了错误的曲线怎么办?如果曲线上有一个环,那么曲线上的任何点P都可能有1001P = P.
  • 可能会选择一条弱曲线,可以将其分解为.

它有其弱点,但它们是相当可管理的弱点.

RSA与EEC。为什么比特币和以太坊会出现椭圆曲线?

之所以选择EEC而不是RSA是因为它通过消耗更少的比特来提供与RSA相同的安全级别。例如。为了使EEC中的256位密钥提供相同级别的安全性,RSA必须提供3072位密钥。同样,对于EEC中的384位密钥,RSA必须提供7680位密钥才能提供相同级别的安全性!可以看出,EEC比RSA效率更高.

事实:NSA宣布EEC中的384位密钥足够强大且安全,足以加密顶级机密文档.

密钥如何在区块链中工作?

如上所述,比特币和以太坊使用椭圆曲线密码学。那么,当有人在区块链上向您汇款时会发生什么?他们将钱寄给您的公用地址,该地址基本上是公用密钥的哈希值和一些其他信息。正如我们在上面看到的,公钥是数学上从您的私钥派生的.

公钥和私钥都是大整数值,为简便起见,它们通过由字母和数字组成的电子钱包导入格式(WIF)表示。 WIF中的示例私钥和公共地址如下所示:

加密货币密码学背后的科学

显然,您不应该像我们刚才那样与世界共享您的私钥!私钥用于注销用户想要执行的交易。因此,如果某人有权访问您的私钥,则他们可以使用您的私钥注销交易,并且实质上是从您那里窃取。另外,如您所见,私钥比公共地址长.

那么,如何从区块链中的私钥派生公钥?让我们以比特币为例.

假设,爱丽丝想生成她的密钥,以便她可以在区块链上进行交易。她将执行以下操作:

  • 首先,她将生成她的256位私钥。她可以手动执行操作,也可以使用自动生成器。这是一个私有地址生成器的示例,您可以在wallet-generator.net中找到它:加密货币密码学背后的科学
  • 接下来,她将必须按照以下步骤生成公用地址,该钱包中的算法将自动执行该公用地址.
  • 首先,将通过SHA 256哈希算法解析她的私钥以获取哈希.
  • 然后,将通过RIPE MD 160函数解析哈希,并生成一个新的哈希并将其副本放在一边,我们将其称为A部分.
  • 然后,将通过SHA 256对哈希进行哈希处理以生成另一个哈希.
  • 然后,新的散列将再次通过SHA 256进行散列,以生成另一个散列。此哈希的前7位将被保存,我们称之为B部分.
  • PART A和PART B将相加,结果是公共地址.

以公共地址可用于生成私钥的方式来逆转此过程是不可行的。要完成这一计算,将需要世界上最强大的计算机40000000000000000000000000000000年。可以肯定地说您的地址和密钥是安全的.

那么签名过程如何工作(简单概述)?

假设Alice要向Bob发送500 BTC。她将按照以下步骤操作:

  • 她将创建交易并使用私钥将其签名.
  • 她会将交易发送到Bob的公共地址.
  • 然后,Bob可以通过使用Alice的公钥来解密消息,以确认确实是Alice向他发送了比特币并且交易被视为完成.

如果要在图像中显示出来,它将是这样的:

加密货币密码学背后的科学

加密货币密码学:结论

因此,可以看出,公钥加密(又称非对称加密)是加密货币的骨干之一。甚至无法想象如果没有它,比特币和以太坊将是多么安全。每次进行交易时,都要感谢所有使这种奇妙的媒介成为可能的数学家和密码学家.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me