admin管理员组

文章数量:1529449

北大肖臻《区块链技术与应用》公开课第二讲 BTC-密码学原理的笔记,第一讲是课程简介,没有笔记

BTC被称为crypto currency(加密货币)

但实际上区块链上的内容(地址、转账金额等)都是公开

BTC主要用到了密码学中的两个功能:哈希函数(cryptographic hash function)、签名

一、哈希函数的三个重要性质

1、collision resistance(无法人为产生哈希碰撞)

1)collision(哈希碰撞)

【解释:存在x!=y,使得H(x)=H(y)=> 不同的输入可能算出的哈希值相同】

理论上,哈希碰撞不可避免(鸽笼原理)

例如:一个256位的哈希值有2^256种情况(哈希值只有0/1),但输入是没有限制的,输入空间>输出空间,所以可能产生碰撞
但实际中,除了用brute-force(蛮力求解)的方法去寻找,没有更好的方法,而brute-force的工作量过大,所以现实中找不出,故有collision resistance这一性质

2)应用
Message digest【解释:没有办法篡改内容的同时不被检测出来】

例如:对一条message(m)求哈希值H(m),找不出m’使得H(m’)=H(m)

注意:collision resistance是无法从理论上(数学角度)被证明出来的,只是因为在不断的实践中找不出而得到的性质

2、hiding
(哈希函数的制造过程是单向的,不可逆的 => 输出推不出输入)

1)成立条件
1、输入空间足够大
2、取值足够随机且均匀

2)应用
hiding + collision resistance = digital commitment(digital of a sealed envelope)
【解释:先用一个x得到一个H(x),公布H(x),等到需要公布结果时,公布x,再验证这个x是否能算出相同的H(x),一样则是原来的保密值】

3、puzzle friendly
(哈希值的计算事先是不可预测的)

1)应用
挖矿:找一个nonce(随机数)与区块里的其他信息合在一起取哈希值,使其哈希值<=target(目标域值)
由于puzzle friendly 这一性质,挖矿过程无捷径,只能证明你的工作量
注意:困难的是寻找nonce,验证十分容易

p.s. BTC中用的哈希函数是SHA-256(Secure Hash Algorithm)

二、签名

1、BTC的开户

创立公钥和私钥对(public key,private key)(自己即可本地开户)
公私钥对应用到了非对称的加密体系,而最早的体系是对称的加密体系(symmetric encryption algorithm),加密解密用的是相同的密钥(encyption key)
但有应用前提:需要安全的渠道,提供密钥给信息传递的双方。
密钥的分发不便是对称加密体系的弱点

2、非对称的加密体系(asymmetric encryption algorithm)

加密和解密用的是同一个人的公钥和私钥,公钥可以公开,私钥存在本地
公钥相当于银行账户,私钥相当于账户密码

例如:我向他人转账,我需要将转账信息通过我的私钥加密后,记录在账本(区块链)上,如果别人要知道这一笔信息是否是由我发出的,只需要用我的公钥解密,即可验证

产生两个相同的公私钥的几率几乎为0,但前提:产生公私钥对有一个a good source of randomness (好的随机源),之后生成每一次的签名也需要好的随机源,不然容易泄露私钥

总的来说:
BTC中是先对message取哈希值,再对这个哈希值进行签名

补充: ① MD5(信息摘要算法 Message-Digest Algorithm)一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。1996年后该算法被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,一般建议改用其他算法,如SHA-2。2004年,证实MD5算法无法防止碰撞(collision),因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。

本文标签: 密码学原理笔记BTC