主页 > imtoken钱包下载及使用教程 > 什么是Bitcoin的签名以及如何验证公钥和私钥

什么是Bitcoin的签名以及如何验证公钥和私钥

在过去后“深入了解比特币交易(交易)从地址A到地址B的”时,它可能是说,一个比特币交易是在以下形式的汇款命令,其中一半是支付信息,给人一种付款签字并加盖公章,而另一半则是支付信息,给量,目的地址和赎回方法。示意图如下:

比特币交易示意图

有关每个会计(全节点),接收到该汇款顺序时,有两个最重要的安全问题:

首先,如何保证这汇款单是不是假的?

二,如何确保在汇款单的签名是不是假的?

事实上,在比特币的第一个问题是不能保证,那就是,如果两个不同的汇款订单签名符合要求,你不知道哪一个是真的。这就是著名的说,本次交易延展性,导致MtGox的崩溃。

世界最大的比特币交易所Mt Gox倒闭

(世界上最大的比特币交易所山GOX倒塌图片来源:金财经)

然而,一旦交易被确认,这也将是它被记录在账本后,支付账户是空的(比特币花费所有的硬币,每次一个地址),所以从确认交易的角度来看虚拟币私钥,这是不可能反复花费的地址事务处理的硬币中,两个汇款命令中的一个必须到底报废。

为什么两个不同的汇票是有效的?这是比特币目前的设计,遗留问题的一个漏洞,我会明白为什么当我在我的下一篇文章中进一步讨论这个签名的详细信息。但是,现在让我们来看看第二个问题,这是签名的安全保障。只有了解该第一,可以在第一个问题得到解答。

有一个签名一个简单的类比是一个时间戳。

刻一个章摔成两半,一半私用,一半公用

(雕刻的密封件和在半打破它,一半为私人使用,一半为公开的图片源:巴比特)

比特币使用方法:雕刻一戳记,并将其分解成两个半部,一半为私人使用,一半用于公共用途,以及用于私人用途的一半被保留用于交易时间。章(公共密钥)的公共一半是在交易过程中支付信息的空白处加盖并用汇款单发送。公章包含我想花(如下所述)的硬币的地址。这样一来,谁收到汇款单的人可以验证它是否我想,因为他们看到了公章(公钥)的一半,我已经发布了,只要花硬币的地址匹配,并且可用于与私人印章加盖我的一半比较,如果中间的裂缝也显微镜,这证明私人印章,无疑是我做的情况下能够完美配合,但他们不能让我的私人印章的一半(后私人印章上印上的文字,许多地方与文本重叠,无法识别,不能被伪造的),所以我不担心有人会拿公章的一半我发出伪造的交易我的授权。

当然,也还可以是解密的主人(量子计算机)试图伪装与公章我发出(也称为裂化ECDSA椭圆曲线)完美匹配的每裂纹的私人密封。加密)。但是,如果我不花硬币,我并不需要发送交易,那么其他人只知道我的地址,但他们不知道什么公章的样子,他们无法破解它(公钥推导出地址,但如果有一个地址的公共密钥,不能推断出)。

用公钥推出的比特币地址

(公共密钥不能从比特币地址图片源计算:金财经)

为什么我不能计算的公章,如果我知道地址呢绒?因为地址是通过计算在公章(散列算法)的所有字符的笔画的总数产生的。这是可以想象的:假设一个公章包含数百个字符,这是完全不可能知道什么公章看起来像只是知道所有的笔画总数,但加盖公章,很容易确认是否总数是一致的。而这个总在比特币(这只是一个简单的例子,实际的散列算法要复杂得多,不是总长度,但原理是相似的,它是计算一个唯一的编号为文本的某些字符串)地址

用公钥推算出比特币地址的过程示意图

(使用公共密钥来计算比特币地址图像源的过程的示意图:金财经)

正如我以前说过,比特币每次我做一个转移,我完全转移原帐户中的所有硬币,所以只要我不重复使用相同的章节,并把它扔掉后,我用它,我没有什么其他人可以让我的公章后,确实担心:很快,我张贴在交易后,我将计算基础上的公章内部的私人印章。一旦交易完成,公章对应于空的帐户。

这是为什么比特币资深玩家总是建议大家不要重复使用相同的地址。这是系统安全的最高水平。这样,即使量子计算机的出现,比特币交易是安全的。

了解冲压和计数笔画总数的两个概念后,你可以理解的Bitcoin如何保证签名的正确性:

首先,将地址是包含在公章总数。笔画数,如果招的总数并加盖公章不匹配,公章是无效的。这种方法可以保证公章的有效性。其次,公章是唯一一个密封的一半。如果公章和私人印章不相符,他们仍然是无效的。

整个过程是:甲乙经他自己刻一个印章B,它分为两半,一半是私人印章(私钥)B,一半是公章(公钥)B,然后他数数公章B含笔划的总数的时,获得数59,它是地址B,然后他告诉这个数目的,并要求一个送他0. 9999枚硬币。

所以发布事务A,和支付信息被填充在根据由乙给他的地址59和赎回条件状态,它是由标准冲压验证。然后事务A进行了审查,并经会计师批准,本次交易被记录在比特币总帐。每个人都可以检查blockchain看到地址59包含0. 9999个金币的平衡。

事务A

付款信息:签名+公钥A

接收信息:0. 9999 + 59号(地址B)+现金缺货条件

可以看出虚拟币私钥,为了检查有多少硬币地址B已经,它是通过检查交易A.含硬币的地址称为UTXO,它是未用输出(未用交易)的支付信息找到。每当你看到UTXO在比特币,你就知道它是指包含资金的地址信息,并且它也是一系列交易的最后一站。

含有币的地址叫UTXO,也即unspent output(未花交易)

后来,当B愿意花这个钱(交易B),他的邮票在交易B的付款信息公章的空白地址B的地址,以及另一系列的数字(这一连串的数字将在后面说明),和他的私人密封被压印在该一系列数字。

事务B

付款信息:公章B(公共密钥B)+号码与私人密封件(签名)

的字符串

付款信息:0. 9998个+地址C +赎回条件

在公章乙总行程长度是59,这是相同的地址B.它可以证明,B是地址B的公章所有者,然后B在数字串。私人密封并加盖公章的裂缝是完全一致的(会计师验证了两者之间的裂痕是由冲压他发出回了一串数字公章完全一致),这证明他的公章是他自己的,因此,在比特币付款安全验证完成。

公钥和数字上的私钥应该相吻合

(公共密钥和数字私钥应匹配图像源:金财经)

要综上所述:不能获得地址的公章,但是私人密封不能从公章获得(在现有技术下),所以私有密封件被用来密封,公章用于验证私人密封的有效性,并加盖公章可以验证相匹配的地址,完全保证了使用私人印章。压模是地址,这是签名的有效性的所有者。