主页 > imtoken官网地址是什么 > 北京大学肖震老师《区块链技术与应用》公开课笔记2-比特币密码学原理

北京大学肖震老师《区块链技术与应用》公开课笔记2-比特币密码学原理

imtoken官网地址是什么 2023-02-07 06:58:20

比特币被称为加密货币加密货币

区块链上的内容是公开的,包括账户地址和转账金额。

比特币在密码学中主要使用了两个函数:1.哈希 2.签名

1.哈希

密码学中使用的散列函数称为密码散列函数,它有两个重要的性质:

①碰撞(这里指哈希碰撞)抵抗

例如,x≠y H(x)=H(y) 两个不同的输入,但输出相等,这称为哈希冲突。 这是不可避免的,因为输入空间远大于输出空间。 给定 x,除非通过蛮力,否则很难找到 y。

该属性的作用:寻求消息的摘要

例如消息取m,m的hash值为H(m)=digest。 如果有人想篡改 m 的值而 H(m) 保持不变,那是做不到的。

哈希冲突无法人为制造或验证,而是基于实践经验。

②隐藏哈希函数的计算过程是单向的,不可逆的。 (x 不能从 H(x) 推导出来)

隐藏属性的前提是输入空间足够大,分布比较均匀。 如果不够大,一般在x后面拼接一个随机数,比如H(x||nonce)。

该属性的作用:结合抗碰撞实现数字承诺(也称为密封信封的数字等价物)

将预测结果作为输入x,计算一个哈希值,并公布哈希值。 隐藏让人们知道哈希值但不知道预测值,最后发布x。 由于抗碰撞的特性,预测的结果是不可篡改的。

这里肖老师举了一个股票的例子,如下

如果有人预测了某只股票的涨跌停板,我们如何保证能够知道他的预测是否准确呢? 最简单的就是提前公布,等待实际结果出现来验证。 但在现实中,当预测提前发布时,股市的实际结果可能会受到预测者本身的影响。 因此,应事先写在纸上并盖章,交由第三方机构保管。 待实际结果出现后,将封印打开,与实际情况进行比对。 这是数字承诺。 第三方机构需要有说服力。 在现实生活中,有很多场景是不存在这样的第三方机构的,区块链技术为此提供了很好的解决方案。

除了密码学所需的这两个属性外,比特币中使用的哈希函数还有第三个属性:

③puzzle friendly是指hash值预算是事先不可预测的。

如果hash值为00...0XX...X,同样无法事先知道哪个值更容易计算出结果,还是需要一一带入。

比特币挖矿的过程其实就是寻找一个nonce,结合区块头中的其他信息作为输入,得到的hash值应该小于或等于一个指定的目标预值。 H(区块头)≤目标。 区块头指的是区块头。 区块头中有很多字段。 其中一个字段是我们可以设置的随机数 nonce。 挖矿过程就是不断尝试随机数,使得区块头在取哈希后落在指定的范围内。

Puzzle Friendly 意味着在挖矿过程中没有捷径可走。 为了使输出值落在规定的范围内,只能逐一尝试。 所以这个过程也可以作为工作量证明。

挖矿难,验证容易。 (难解,但容易验证)

比特币中使用的哈希函数称为 SHA-256(安全哈希算法)比特币区块链技术原理,它满足以上三个性质。

2. 签名

在比特币系统中开立账户:

在本地创建一个公私钥对(公钥,私钥),就是一个账号。 公私钥对来自非对称加密算法。

两个人之间的信息交换可以使用加密密钥。 A将信息加密后发送给B,B收到后用密钥解密。 因为加密和解密使用同一个密钥,所以称为对称加密。 . 前提是有一个通道可以安全地将密钥分发给通信双方。 因此,对称加密的缺点是密钥分发不方便比特币区块链技术原理,因为在网络上很容易被窃听。 非对称密钥使用一对密钥而不是一个。 公钥用于加密,私钥用于解密。 加密和解密都使用接收方的公钥和私钥。 公钥不需要保密,私钥需要保密,但是私钥只需要保存在本地,不需要传递给对方。 公钥相当于银行帐号。 其他人只需要知道公钥就可以转账。 私钥相当于账户密码。 知道私钥就可以把账户里的钱转走。 公钥和私钥用于签名。

如果A想转10个比特币给B,A把这笔交易放到区块链上,别人怎么知道这笔交易是A发起的呢? 这就需要A用自己的私钥对交易进行签名,其他人接收。 收到这笔交易后,用A的公钥验证签名。 私钥用于签名,公钥用于验证,还是同一个人。 创建一个账户生成相同的公私钥的可能性很小,所以创建大量账户来盗取别人的账户是不可行的。

我们假设在生成公钥和私钥时有很好的随机性来源。 公钥和私钥是随机生成的。 如果随机源不好,有可能生成相同的公钥和私钥。 比特币中使用的签名算法不仅在生成公钥和私钥时需要一个好的随机源,而且在每次签名时都要有一个好的随机源。 只要用于签名的随机源不好,就有可能泄露私钥。