Skip to content

Latest commit

 

History

History
21 lines (12 loc) · 1.74 KB

2. 密码学原理.md

File metadata and controls

21 lines (12 loc) · 1.74 KB

密码学原理

比特币主要用到了密码学中的两个功能:哈希、签名。

hash 函数

密码学中用到的哈希函数被称为 cryptographic hash function,它有两个重要的性质:

  • collision resistance:给出 X 很难找到 Y,使得 Hash(Y) = X,除非蛮力求解(brute-force)。哈希碰撞是不可避免的,因为输入空间总大于输出空间。
  • hiding:哈希函数的计算过程是单向的,不可逆的(从 H(x) 无法推导出 x)。hiding 性质前提是输入空间足够大,分布比较均匀。如果不是足够大,一般在 x后面拼接一个随机数,如 H(x||nonce) 该性质的作用:和 collision resistance 结合在一起,用来实现 digital commitment(又称为 digital equivalent of a sealed envelope)

除了密码学中要求的这两个性质外,比特币中用到的哈希函数还有第 3 个性质:puzzle friendly,指哈希值的预算事先是不可预测的。假如哈希值是 00...0XX...X,一样事先无法知道哪个值更容易算出这个结果,还是要一个一个带入。

比特币挖矿的过程中实际就是找一个 nonce,nonce 跟区块的块头里的其他信息合一起作为输入,得出的哈希值要小于等于某个指定的目标预值(H(block header) <= target),挖矿的过程是不停的试随机数,使得 block header 取哈希后落在指定的范围之内。

puzzle friendly 是指挖矿过程中没有捷径,为了使输出值落在指定范围,只能一个一个去试。所以这个过程还可以作为工作量证明(proof of work)。虽然挖矿很难,但是验证很容易。

非对称的加密

在比特币系统中创立账户就是在本地创立一个公私钥对,公钥相当于账户。