主页 > imtoken钱包苹果版手机下载 > 比特币技术原理与应用-1密码学基础

比特币技术原理与应用-1密码学基础

刚开始接触比特币的同学可能听说过比特币使用了多么先进的密码学技术,没有人能破解。但实际上,比特币所采用的密码学技术已经非常成熟,已经在传统金融机构中得到广泛应用。比...

本系列文章:比特币技术原理与应用-1密码学基础比特币技术原理与应用-2数据结构

密码学基础

刚开始接触比特币的同学可能听说过比特币使用了多么先进的密码学技术,没有人能破解。但实际上比特币常用密码,比特币所采用的密码学技术已经非常成熟,已经在传统金融机构中得到广泛应用。比特币中的密码学主要使用哈希函数和数字签名。

哈希函数

哈希函数(Hash Function),其实还有一个更通俗的名字——哈希函数。 (Hash是Hash的音译,hash是意译,中文博大精深)

举一个生活中常见的例子来帮助你理解哈希函数。在学校,我们通常去接快递。快递小姐姐会让你报手机号后四位,然后到相应货架找你的快递。根据手机尾号KXXX,小姐姐会依次去货架K上找你的快递员。这是一个哈希函数,它提高了寻找快递员的效率。但是hash函数会遇到碰撞的问题,首先假设货架是空的,第一个快递,手机尾号0086的快递放在货架0左上角第一个位置,第二个快递,手机尾号是0010,小姐姐拿着0010快递到0号货架,发现左上角第一个位置被占了,0086快递已经放好了。这是散列后两个元素发生冲突的时候。但是小姐姐想着把0010快递放在0086快递右边的空位上。以后如果还有尾号为0XXX的快递员,从货架0的左上角开始找空位,找个空位放置快递员。这就是利用线性检测来解决碰撞问题。

image20200401152929814.png

比特币怎么找回密码_比特币忘记钱包密码_比特币常用密码

比特币中使用的哈希函数是SHA-256(Secure Hash Algorithm:安全哈希算法)。 SHA-256接收到输入数据后,无论输入数据是1MB还是1TB或更大比特币常用密码,都会输出一个256位的二进制数,不同的数据输入会得到不同的256位二进制数。

image20200401161103716.png

比特币使用的哈希函数具有三个重要属性:抗碰撞、隐藏和益智友好)。

防撞

在上面列举的快递手机尾号的例子中,两个手机尾号以0开头的快递可能会发生碰撞,那么如何保证两个0XXX的快递不会发生碰撞呢?如果我们在0号货架上准备1000个小隔间,编号为0000-0999,这样对应的手机尾号就可以直接找到对应的隔间,不会被其他快递占用。这意味着我们扩大了输出空间。原来所有手机尾号只能有10个输出——货架0-货架9。现在有10000个输出——小隔间0000-9999。

SHA-256 的输出空间为 $$2^{256}$$。换算成十进制,大约是 $$10^{77}$$。这个数字是什么概念?地球由大约 $$10^{50}$$ 个原子组成,这意味着地球上的每个原子都被分配了一个哈希值,而且还有更多。

比特币常用密码_比特币忘记钱包密码_比特币怎么找回密码

抗碰撞意味着在 SHA-256 计算后很难找到两个不同的输入导致相同的哈希值。请注意,它并不是说不可能找到,而是很难找到。因为输入空间有限,2的256次方,输入空间无限大,理论上可以求得。但在实践中,即使调用全世界的计算机进行计算,也可能要等到地球爆炸的那一天才能找到满足条件的输入。因此,在实践中很难找到具有相同哈希值的两个不同输入。

image20200401163305514.png

秘密

秘密意味着 x 不能从 H(x) 中推导出来。这保证了哈希函数的单向性。 X通过SHA-256计算得到H(x),但是通过H(x)的逆运算得到x是不可行的。

image20200401164251782.png

益智友好

比特币怎么找回密码_比特币常用密码_比特币忘记钱包密码

比特币矿工正在解决一个难题。拥有簿记权,您将获得比特币奖励。为了保持公平,这个谜题一定没有最优解,只能通过蛮力运算来解决。

解谜友好性是指如果要得到满足某个条件的H(x),只能通过暴力破解x,没有优雅的解。

例如,一个谜题是找到一个输入 x,所以 $$H(x) 数字签名

我们日常生活中需要签名的场景,比如很多材料都需要leader审批和签名。领导签字代表领导已经批准并批准了该文件。签名赋予领导者对文件的可信度,即领导者对文件背书。

比特币中的数字签名证明您可以控制在您发起交易时要支付的比特币。也就是说,你必须证明这些币是你的,然后才能转让给别人。数字签名就是为此目的。

数字签名采用非对称加密算法。首先我们来了解一下非对称加密算法和对称加密算法的区别。

比特币忘记钱包密码_比特币怎么找回密码_比特币常用密码

对称加密算法使用相同的密钥进行加密和解密。例如,如果您事先知道我的密钥,我会使用相同的密钥加密一条消息并将其发送给您。当密钥解密密文时,我可以看到我的消息。对称加密的缺点是密钥同时在两个人手中,容易丢失,安全性难保证。

image20200401203018538.png

非对称加密算法包含两个密钥:一个公钥和一个私钥。公钥是公开的,每个人都可以看到。私钥自己保存。

在场景 1 中,小明想向所有人发送消息。首先,小明公开他的公钥,然后用他的私钥对消息进行加密并公布密文。知道小明的公钥 大家可以用公钥来验证消息,可以确认消息确实是小明发出的。相反,如果你想给小明发消息,你可以用小明的公钥加密消息,密文只能由小明用自己的私钥解密。

场景2中,如果小明和小华都希望双方的通信消息被加密,小明生成公钥A和私钥A,小华生成公钥B和私钥B,公钥是公开的,双方都知道对方的公钥。小明想给小华发送消息c,用小华的公钥B加密消息c,将密文cx发送给小华,小华用自己的私钥B解密cx,得到消息c。相反,如果小华想将消息d发送给小明,她用小明的公钥A对消息d进行加密,生成密文dx并发送给小华。小明用私钥A解密dx,得到消息d。

image20200401203040625.png

比特币常用密码_比特币怎么找回密码_比特币忘记钱包密码

在比特币系统中,当你发起转账交易时,用你的私钥签名,并将交易信息和私钥广播给所有人,每个人都可以使用公钥来验证签名,从而确认交易是确实是你送的。

image20200401212940225.png

总结

以上介绍了比特币使用的密码学基础知识,其中哈希函数具有三个特点:抗碰撞性、保密性和益智性,数字签名通过非对称加密算法提高了消息发送的安全性。

参考资料:

北京大学肖震教授【美国】Arvind Narayanan、Josh Bennu等公开课《区块链技术驱动金融:数字货币与智能合约技术》。林华、王勇、帅初等译。

欢迎提出任何问题、批评和指正。

本文参与Chainlink社区写作激励计划,好文好收入,有阅读的欢迎加入。