区块链学习笔记2

本章主题 - 在区块链中使用的hash技术

什么是哈希

  • 哈希: [Data of any size] —> [Hash Function] —> [Data of fixed size]
  • 加密(Cryptography): 防止别人获取信息的一种科技。(注明,虽然哈希函数广泛用于加密技术,但是区块链中哈希函数的使用不是用于加密相关

SHA256

SHA(Secure Hash Algorithm) 是一种加密哈希函数类,由NSA发明。

常用于篡改检测 - 通过比较原始哈希值和当前哈希值来判断文件是否被篡改。

相对应的哈希又叫做digest(签名)。

SHA256就是这样的一种哈希函数

  • It generates a 256 bit hash of 1s and 0s from the input string
  • The 256 bits are stored as 8 32-bit words
  • It as a 256 bit fingerprint of the original message

[注: 很容易想到SHA256是一个无穷到有穷集合的映射]

SHA256特性

  • Deterministic: 相同的input一定产生相同的output
  • Non-invertible: 已知hash值,没有办法得到input是什么
  • Uniform: hash值一样的情况很低,唯一的方法是brute force。

由此引申出三个附加特性

  • Collision resitance (碰撞阻力) - it is infeasible to find two inputs that yield the same hash.

  • Hiding(隐蔽性) - 比如说Alice想给Bob传送一个信息,这个信息要么是Yes要么是No。这样这个信息其实很容易猜测,因为只有两个选择。在这个情况下我们希望输入来自于一个范围更大的集合。对应的应用是承诺(Commitment),会在之后讲到。A hash function H is hiding if: when a secret value r is chosen from a probability distribution that has high min‐entropy , then given H(r ‖ x) it is infeasible to find x .

  • Puzzle friendly(谜题友好) - Alice给Bob一个值B希望Bob找到值A,从而A和B组合的哈希值C满足某个特定结构比如说以20个0作为开头,这里的A叫做nonce, 在之后会说到这个概念。