《区块链技术与应用》课程链接:https://www.bilibili.com/video/BV1Vt411X7JF/?spm_id_from=333.337.search-card.all.click
01 BTC-密码学原理
目录- 哈希部分
- 签名部分
比特币加密货币(crypto-currency)
哈希部分:
哈希函数(cryptographic hash function):
-
抗碰撞性(collision resistance):难以进行哈希碰撞
一般来说,哈希碰撞是不可避免的,因为输入空间足够大,输出空间有限。
但其实在工作中哈希碰撞是不可行的。
但是没有哪个哈希函数在数学上证明是真正collision resistance的。只能靠实践经验。因为没有实验经验,所以才说是collsion restance。
同时,哈希函数还可以防止对信息进行篡改。对message求digest。
-
计算不可逆(hiding)
其实想要知道输入是什么,还是有办法的,尝试输入,查看哪个哈希值和原来数据的哈希值相等。【撞库】
collision resistance + hiding = digital commitment / digital equivalent a sealed envelope
现实生活中,如果有人想要预测股市准确,需将自己的预测结果交给第三方的公证机构,等股市开盘,再做验证。
电子世界中,使用哈希函数,可将预测结果hash,因为有hiding的效用,别人没法知道预测结果,股市开盘,可以公布自己的预测结果,因为有collision resistance的效用,所以自己不能对数据进行篡改。这样就实现了digital sealed envelope。
实际中,如果输入空间不是足够大,可以将输入数据与nonce进行拼接,之后一起进行hash,这样可以保证整个输入是足够随机的,分布也是足够均匀的。H(x || nonce)。
比特币除了哈希函数的两个性质外,比特币还需要一个性质,叫做puzzle friendly。(也就是对哈希之后的数据有要求)
意思是,我们查看哈希的输入,不会知道哈希之后的数据的情况,对哈希之后的数据进行限制。
puzzle friendly:事先不知道哪个输入更有可能计算出需要的哈希值(需要做大量的计算尝试,所以,过程才叫做工作量证明)。
所以,比特币的挖矿函数。
虽然想要得到nonce是很困难的,但是验证nonce符合要求,是很容易的,只需要做一次哈希就行。挖矿很难,验证很容易。【difficult to solve,but easy to verify】
比特币中的哈希函数,用的SHA-256。SHA(Secure Hash Algorithm)
签名部分:
比特币的账户管理。依赖非对称加密体系(asymmetric encryption algorithm)。
对称加密的前提:假设有某种安全的信道,能把密钥分发给通讯双方。【对称加密的弱点:密钥的分发】
非对称加密(public key, private key):加密用的是公钥,解密用的是私钥。【解决了对称机密体系中密钥分发不方便的问题】
有个问题,我们说比特币虽然叫加密货币,但是数据都是公开的,那么要非对称机密做什么呢?实际上是用来做签名的。
同时,非对称加密还提供了签名的功能。
比特币中,给其他人进行比特币转账,其他人如何知道转账人的身份是否是真实的呢?这就需要转账人使用私钥进行签名。其他人收到交易之后,使用转账人的公钥去验证转账人的身份。
加密用公钥,签名用私钥。
问题:如果产生相同的私钥怎么办?比如,大量的产生不同的公私钥,用来盗取别人的账户。
理论上是可以的,但在实际上是不可行的。这种概率微乎其微,概率比地球爆炸还要小,没有成功的先例。
前提:产生一个公私钥的时候,有一个好的随机源。(a good source of randomness)
比特币中使用哈希函数对数据进行哈希,之后使用私钥对哈希数据进行签名。
标签:01,加密,BTC,比特,签名,哈希,私钥,密码学,函数 From: https://www.cnblogs.com/yangyi215/p/17367478.html