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取哈希值,再对这个哈希值进行签名
版权声明:本文标题:第二讲 BTC-密码学原理(笔记) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1726704250a1081478.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论