主页 > imtoken钱包下载安卓版 > 【和数传媒】区块链科普:非对称加密、椭圆曲线加密算法

【和数传媒】区块链科普:非对称加密、椭圆曲线加密算法

imtoken钱包下载安卓版 2023-03-22 06:12:08

比特币是什么算法_比特币非对称加密算法_比特币自动交易算法

区块链加密技术

数字加密技术是区块链技术应用和发展的关键。 一旦加密方式被破解,区块链的数据安全将受到挑战,区块链的不可篡改性将不复存在。

加密算法一般分为对称加密和非对称加密,非对称加密算法主要用于区块链。 非对称加密是指为满足安全要求和所有权验证要求而集成到区块链中的加密技术。 非对称加密在加密和解密过程中通常使用两种非对称密码,分别称为公钥和私钥。 非对称密钥对有两个特点:一是使用其中一个密钥(公钥或私钥)加密信息后,只有对应的另一个密钥才能解密。 二是公钥可以对外公开,​​而私钥是保密的,别人无法通过公钥计算出对应的私钥。

非对称加密应用场景

非对称加密技术在区块链中的应用场景主要包括信息加密、数字签名和登录认证等,其中信息加密场景主要由信息发送方(记为A)使用接收方的公钥对(记为B)信息被加密后发送给B,B用自己的私钥解密信息。 比特币交易的加密就属于这种情况。 在数字签名场景中,发送方A用自己的私钥对信息进行加密后发送给B,B使用A的公钥对信息进行解密,从而保证信息是A发送的。在登录认证中场景,客户端使用私钥加密登录信息,然后发送给服务器。 后者收到后,使用客户端的公钥对登录信息进行解密验证。

比特币是什么算法_比特币自动交易算法_比特币非对称加密算法

密钥分配问题

我们在日常生活中对账户和文件进行加密时,通常会使用对称密码。 所谓对称加密就是使用相同的密码进行加密和解密。 比如我们在注册微信账号的时候,会输入一个密码,防止别人登录。以后如果因为手动退出或者更换手机,需要重新登录微信,只需要再次输入此密码。

对称密码在大多数情况下都可以使用。 但是在一些特定的场合下,就没那么好用了。 比如小明想通过邮件给小红写一封情书,作为一个害羞谨慎的人,他不想让别人偷看,所以他在这封邮件中设置了密码,收件人只能输入此密码后查看电子邮件的内容。 假设小红的父亲有经常查看(tou kan)小红邮箱的习惯,但如果不知道密码,就只能作罢。 或者小明有个情敌小强,他是电脑高手,可以用黑客的手段截获小明和小红之间的邮件,但如果邮件是加密的(而且密码够强),他也只能叹息了。

但是问题来了,小明怎么把密码告诉小红。 如果小明在见到小红的时候直接把密码告诉了小红,并且约定以后两人之间的邮件都用这个密码加密,那自然就没有问题了。 但是如果小明和小红是异地恋呢? 如果小明也通过邮件把密码发给小红,密码也有可能被泄露,加密的邮件就没有意义了。 当然,通过电话传递密码、寄信、送鸽子等,理论上是有可能被聪明的小强截获的。 所以这就是所谓的密钥分配问题。

比特币自动交易算法_比特币非对称加密算法_比特币是什么算法

比特币是什么算法_比特币非对称加密算法_比特币自动交易算法

非对称加密机制

为解决密钥分发问题,出现了密码学史上最伟大的发明——非对称加密(公钥加密)。 它解决了密钥发布和管理的问题,是目前商用密码的核心。 在公钥加密系统中,不公开的是私钥,公开的是公钥。

与对称密码不同,公钥密码由两组不同的加密和解密密钥组成。 信息的发送者可以用加密密钥对信息进行加密,接收者用解密密钥对信息进行解密。

回到前面的例子,小红同时拥有一对加密密钥和解密密钥。 小红把加密密钥发给小明,让小明用这个密钥加密他要发的邮件,自己发给小红。 这个加密密钥可以通过任何方式发送,比如邮件、电话、微信、信鸽,甚至可以张贴在家门口(当然没必要这么公开)。 她之所以胆子这么大,是因为只有小红能用她手里的解密密钥解密和阅读加密邮件。 也就是说,即使小强通过黑客手段获得了加密邮件,知道了加密密钥,但只要不知道解密密钥,他仍然没有办法阅读邮件。 而这个密钥解密密钥由小红自己保管,不会也不需要发送给任何人,包括小明。

由于加密密钥通常可以公开,所以也称为公钥; 而解密密钥不能公开,只能自己使用,所以又称为私钥。 公钥和私钥总是成对的,不能单独生成。

比特币非对称加密算法_比特币自动交易算法_比特币是什么算法

RSA算法

了解了公钥密码学的一般概念之后,我们来解释一下它的实现方法,以便我们有一个更直观的认识。 公钥密码有多种不同的实现方法,其中RSA算法最为人熟知,也可以说是现在公钥密码的事实标准。

RSA 中的明文和密钥都是数字。 首先,RSA的加密公式为:密文=明文a%b。

密文是将明文的剩余部分取 b 的 a 次方的结果。 任何人只要知道 a 和 b 这两个数字,就可以通过这个公式对明文进行加密。 也就是说,a和b共同构成了RSA加密算法的公钥。

RSA解密公式:明文=密文c%b。 这个公式和前面的唯一不同的是a被另一个数字c代替了,c和b一起构成了RSA的私钥。

将数字替换为更具体的示例。 比如小明有一个明文号码123,想加密后发给小红。 同时,小红手头有一组密钥对,其中公钥为(a=5,b=323),私钥为(c=29,b=323)。 于是小红把公钥发给了小明。 小明用公钥加密计算明文123后,得到密文数225,发给小红:密文=1235%323=225。

比特币自动交易算法_比特币是什么算法_比特币非对称加密算法

小红拿到密文后,用自己的私钥解密:明文=22529%323=123。

这样,小红就得到了原来的明文号码123。这里省略了很多细节。 比如公钥和私钥中的数字5、29、323并不是随机取的,而是通过特定的算法生成的。

比特币非对称加密算法_比特币是什么算法_比特币自动交易算法

区块链加密算法

简单来说,加密就是将原始信息通过算法的手段进行转换,信息的接收者可以通过秘钥对密文进行解密,得到原始文本。 根据加解密密钥是否相同,加密算法大致可分为三种子类型:

对称加密,加密方和解密方使用相同的密钥。 这种方法的优点是加解密速度快,但密钥的安全分发比较困难。 常见的对称加密算法包括 DES 和 AES。

非对称加密,在加密和解密时,加密方拥有公钥和私钥,加密方可以将公钥发送给其他相关方,私钥自己严格保管。 例如,银行发放给个人用户的私钥存储在个人U盾中; 在非对称加密中,可以用私钥加密,别人可以用公钥解密,反之亦然; 非对称加密算法一般比较复杂,运行时间相对对称加密较长; 优点是没有秘钥分配问题。 其他常见的非对称加密算法有RSA、ECC。

对称加密和非对称加密的结合,这种方法将加密过程分为两个阶段,第一阶段使用非对称加密分发秘钥,让对方可以安全的获取秘钥进行对称加密,第二阶段使用对称加密对原文进行加密,进行加密和解密。

比特币是什么算法_比特币非对称加密算法_比特币自动交易算法

椭圆曲线密码算法

如果椭圆曲线用公式表示,可以写成:y2 = x3 + ax + b。

其中比特币非对称加密算法,当a和b取不同值时,曲线的外观也不同,例如:

比特币是什么算法_比特币非对称加密算法_比特币自动交易算法

比特币是什么算法_比特币自动交易算法_比特币非对称加密算法

是不是感觉有点奇怪,a和b无论取什么值,看起来都不像椭圆。 据说椭圆曲线的名字来源于它的表达式,有点像计算椭圆周长的积分公式,而不是说曲线画成椭圆~

椭圆曲线上的加法和乘法

在椭圆曲线的世界里,定义了一个奇怪的加法规则:在椭圆曲线上随机取两点P和Q画一条直线,这条直线与曲线上另一点的交点为R',R '是关于x轴的镜像点为R,那么P、Q、R三点之间就会形成这样的关系:P+Q=R(其中R'=-R)。 是不是有点特别? 这个加法规则和我们平时理解的1+2=3不一样。 它在椭圆曲线上的点之间建立关系。

比特币非对称加密算法_比特币是什么算法_比特币自动交易算法

如果P和Q是同一个点,我们称它们为P,那么我们可以通过点P画一条椭圆曲线的切线,也可以得到它与曲线的另一个交点R',R'也有a相对于x轴的镜像点R,此时的加法变为P+P=2P=R,即变为乘法运算。

比特币自动交易算法_比特币非对称加密算法_比特币是什么算法

再延伸一步,如果以R为起点,可以画一个新的点来代表2R比特币非对称加密算法,也就是4P,然后以这个新的点为起点继续画……下图是根据以G为起点,画出2G、4G、8G的样子。

比特币自动交易算法_比特币非对称加密算法_比特币是什么算法

离散椭圆曲线

在上面的解释中,我们看到椭圆曲线是一条连续的曲线,之所以连续是因为我们取的是实数范围内的值,也就是说曲线上每个点的横坐标和纵坐标都是实数.

但是,如果要将椭圆曲线应用于加密,则不能使用实数。 因为实数包括整数和小数,小数不仅会大大降低计算速度,而且在计算结果中会涉及到四舍五入问题,影响计算精度。 由于密码学对速度和精度有严格的要求,我们不能用实数来加密信息。

比特币非对称加密算法_比特币自动交易算法_比特币是什么算法

为了将椭圆曲线应用于加密,必须对其进行离散化。 说白了,曲线上每个点的横坐标和纵坐标必须是整数,并且这些点的数量必须是有限的。 我们举个例子来看看。

假设我们将椭圆曲线y2=x3+x(a=1,b=0)离散化,规定只能取23个点,那么这23个点的横坐标和纵坐标必须是0-22之间的整数,而横坐标和纵坐标必须满足如下关系(%表示取余):y2 % 23 = x3 + x % 23

如果把这23个点画出来,就会像下图这样。 是不是感觉跟连续的椭圆曲线有点不一样?

比特币自动交易算法_比特币是什么算法_比特币非对称加密算法

我们可以随机取一个点(9,5),看它是否满足上面的公式:

52 % 23 = 93 + 9 % 23

25% 23 = 738% 23

2=2

离散椭圆曲线上的加法和乘法也遵循与连续椭圆曲线类似的规律,但由于都是离散的点,运算过程不能像连续椭圆曲线那样形象地表达出来。 举两个例子感受一下,比如加法:P(11,10)+Q(1,5)=R(17,10),乘法:2P(11,10)=R(13,18)。 (因为我不是上数学课的,所以这里就不列出相应的计算公式了,我们不深究细节,只要知道大概的原理即可)。

也就是说,这23个点之间有着奇妙的联系,任意两个点相加或者任意一个点相乘得到的结果都是这23个点中的另一个点。 似乎这23个点自成一个封闭的数学体系。

应用于比特币的椭圆曲线

那么应用于区块链的椭圆曲线究竟是什么样子的呢?

比特币非对称加密算法_比特币自动交易算法_比特币是什么算法

事实上,并不是所有的椭圆曲线都能保证足够的安全性来用于加密,而在区块链技术最典型的应用比特币中使用的椭圆曲线遵循一个叫做 secp256k1 的标准,该标准定义了椭圆曲线方程如下所示:

y2 % p = x3 + 7 % p。 其中p是一个非常非常大的素数:p = 2 256 – 2 32 – 2 9 – 2 8 – 2 7 – 2 6 – 2 4 – 1,也就是说这是一个由p个点组成的离散椭圆曲线。

使用椭圆曲线生成公钥

讲了很多椭圆曲线的基本原理之后,它是如何应用到比特币上的呢? 其实椭圆曲线在比特币中的作用说起来也很简单,就是用来生成公钥的。

公钥加密系统的机制是一条信息可以用公钥加密,用私钥解密,公钥和私钥必须成对出现。 实际上,公钥是私钥通过一定的算法计算出来的。 在比特币中,公钥是通过椭圆曲线算法从私钥生成的。

具体来说,假设我们有一个私钥k,只要将它与椭圆曲线上的一个初始点G相乘,就可以得到曲线上的另一个点,也就是对应的公钥K。以及这个乘法的计算方法就是我们之前提到的算法。

比特币非对称加密算法_比特币自动交易算法_比特币是什么算法

K(公钥)= k(私钥)* G(椭圆曲线上的初始点)

实际上,初始点G作为secp256k1标准的一部分,是一个不动点,相当于一个常数。 因此,私钥 k 和公钥 K 之间的关系是固定的。 但是这个计算只能单向进行,即我们可以从私钥k得到公钥K,反之则不行,这就是为什么公钥可以不泄露给任何人的原因私钥。 我们举个例子,看看比特币的公钥和私钥长什么样。 比特币的私钥是一个256位的二进制数,通常以64位的十六进制显示,像这样:

k=1E99423A4ED27608A15A2616A2B0E9E52CED330AC530EDCC32C8FFC6A526AEDD

k与椭圆曲线上的初始点G相乘,得到公钥K(x,y),其中x和y分别为K的横坐标和纵坐标,其中:x=F028892BAD7ED57D2FB57BF33081D5CFCF6F9ED3D3D7F159C2E2FFF579DC341A

y=07CF33DA18BD734C600B96A72BBC4749D5141C90EC8AC328AE52DDFE2E505BDB