区块链学习二——密码学原理

比特币中使用到了密码学的知识,主要是哈希函数与数字签名
 

一、哈希函数的工作原理
1.抗碰撞性(collision resistance)

哈希碰撞的含义:不同的输入,哈希值是相同的

x≠y,H(x)= H(y)

输入空间较大 输出空间较小,出现哈希碰撞的情况很常见。碰撞是客观存在的。 实际中,靠一个个数试,去找到两个不同的数的哈希值是相同的,几乎是不可能的


MD5算法已经可以人为的制造哈希碰撞。因此该算法已不安全。

2.单向性(hiding)

x→H(x)

上面公式只能正推 不能反推。
只能通过暴力破解求解哈希值。取遍x所有的可能值即可推出哈希值。

单向性成立的条件是:输入的取值空间要足够大,且输入的值较均匀

H(x||nonce):输入值加上一个随机数再进行哈希可以保证输入值随机且较均匀。

3.两个性质结合(digital commitment)
这个地方老师讲解的特别好
假设一个股神预测明天的股市,股神将预测的结果说出来了,大家也都知道股神预测的结构,其实这种预测并不能够判断股神预测的是否是对的。假设大家都根据股神的预测与买卖股票的话,那么股神的预测是正确的;反之,则是错误的。这个时候就出现了一种解决方法,股神把预测的结果计算一个哈希值,并将该哈希值交由可靠的第三方机构保管,等收盘后,再进行验证股神是否预言正确。

4.puzzle friendly

无法确定输出的内容(哈希值),也无法预测输出的内容。假设要计算一个数的哈希值,使这个数的哈希值小于一个固定的阈值,其实是很难的,这也设计到了比特币中挖矿的概念。

挖矿原理
nonce与区块的块头其他信息结合在一起作为输入得到的哈希值小于一个目标阈值

H (block header nonce)≤ target


工作量证明:挖矿需要大量的工作寻找nonce,而寻找nonce值没有捷径,只能靠试。挖矿较难,而验证nonce的值比较简单。

比特币中的哈希函数是SHA-256 

二、公钥密码算法

1.引入
开户:创建一个公私钥对。该公私钥对即为账户(公钥相当于银行账户,交易只需知道对方的公钥即可。私钥个人保存,知道对方的公钥可对对方进行转账)


对称密码算法:由于密钥分发不方便。因此出现了公钥密码算法,加密使用公钥,解密使用私钥(私钥保存在本地)
生成公私钥的过程是需要一个较好的随机源。随机源不好有可能泄露私钥。

2.签名
签名使用私钥,验证使用公钥(注:该公私钥是私钥者)

Q:如何确定交易确确实实是交易的人发起的。

A:对该笔交易进行签名,使用私钥进行加密,验证方使用公钥进行验证。

出现公私钥对相同的概率是几乎不可能的(随机源需好)

三、总结
比特币系统中先对message计算哈希,再对哈希进行签名。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值