Time:2021-11-17 Click:1923
众所周知,比特币是一种利用密码学投资的加密货币。那么,比特币在交易过程中通过什么样的操作来保证保密呢??比特币的密码原理是什么??
比特币钱包包括私钥和公钥。简单来说,私钥就像我们自己的银行账户密码。只有通过这个密码,我们才能打开账户进行转账,公钥就是我们的账户。当我们把账户发给别人时,我们可以转账给我们。私钥和公钥的单一转换性保证了转账来源的私密安全。什么是单一转换?也就是说,只有私钥可以转换成公钥,公钥不能反向转换成私钥。私钥是一串随机选择的数字,通过椭圆曲线操作(elliptic curve multiplication),转换成另一串数字,即公匙。然后,通过单向哈希密码方程(one-way cryptographic hash function),获取比特币地址。这两个操作中,因为它们都不是对应的方程,也就是说输入值(input)只有相应的输出值(output),但是输出值会有多个相应的输入值,所以没有人能反方向追查私钥,保证私钥的安全。
为了方便大家理解,我举个例子:一个鹅毛大雪的冬天,小明从吉林步行送到大连,但是雪太大了,他可以踏雪无痕。所以小明去大连的时候,当地人问他:你的外卖是从哪里来的??小明微微一笑,拒绝回答。此时,大连人无能为力,因为他们无法从脚步上判断小明来自哪里,只有小明自己知道他来自吉林。
找到一个随机的数字是生成钥匙的第一步,也是最重要的一步。那么,区块链是如何防止随机生成的数字与另一个数字重叠的呢??原来在比特币系统里包含2^256(准确地说n=1.158*10^77)数字,这个数字有多大??大于宇宙中所有原子的总和。基于此,随机生成的数字与另一个随机生成的数字重合的概率很小。
在选择了这个随机数字之后,我们需要通过椭圆曲线来生成一把钥匙。它的代表公式是:K=k*G。大K是公匙,小k是私匙,G它是一个常数,我们称之为转换常数(generatingconstant)。
上图是比特币的椭圆曲线。这条特殊的曲线被称为secp256k1曲线,它包含了一个这样的方程:y^2 = x^3 7 在 有限集的p的域里。而p很大,接近2^质数256。但是因为这个方程被定义为有限的数字,实际上这条曲线并不平滑,而是由许多密密麻麻的小点组成,虽然我们可以理解这条曲线是平滑的,并且具有实数集的性质。
然后,我们需要在这个函数方程中找到它G,通过数学计算,G放大小k倍,得到大K。这一步数学计算相当复杂,不能反向操作。
比特币的地址可以理解为交易中的收款地址。拿到钥匙后,我们需要通过单向哈希密码方程获得地址。这个方程通常可以理解为A=RIPEMD160(SHA256(K)SHA256,代入完整性原语评价摘要(RIPEMD160)I,0和o比特币地址只使用58个字符,我们称之为Base58Check。
就这样,通过层层加密,我们的私钥终于演变成了比特币地址,付款人终于可以通过这个地址转账了。
比特币理论以密码学为支撑,构建了完整、安全、分散的数字货币体系,解决了数字资产所有权、双重支付、现实世界通货膨胀等问题,甚至预留了机制,使建立在资产转移之上的智能合同成为可能。比特币当然是一个伟大的创造,期待比特币有更好的未来。