01 BTC-密码学原理

发布时间 2023-05-02 11:25:08作者: YangYi215

《区块链技术与应用》课程链接: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)

比特币中使用哈希函数对数据进行哈希,之后使用私钥对哈希数据进行签名。