学习视频链接: 肖臻-区块链技术与应用-Chapter2-密码学原理

原理一: 哈希函数

密码学原理英文名称性质功能
哈希函数
SHA-256
Cryptographic hash functioncollision resistance (抗碰撞性): 人为地减少碰撞, 但理论上不能避免碰撞

hiding (隐藏性): 无法从H(X)反推出X内容 (空间足够大且均匀, 则暴力破解的代价非常大)

digital commitment (数字承诺): 在前两个性质的基础下产生

puzzle friendly (难题友好): 事先无法得知怎么样的X, 可以得到特定结构的Hash值. (比如: 前100位为0的Hash值)
生成唯一的Hash值, 如果被修改则Hash不同, 通过检测可以防止篡改

数字承诺的解释: H(X)通过第三方机构, 将信息公布, 由于hiding性质无法得到X内容, 同时collision resistance性质保证内容不会被篡改, 即X可以通过验证证明其真实性.

实际操作的细节:

  • 输出空间不够大时: 在X后续加上随机数, H(x|random), 保证随机和均匀.

puzzle friendly and mining(挖矿)

puzzle friendly与mining的关系:

  • Nonce(Number only used Once): 仅使用一次的数字, 在Pov中指改变Hash值的变量
  • 挖矿: 不断地尝试Nonce, 直到满足下列条件
    • puzzle friendly: 在挖矿的过程没有捷径, 只能尝试大量的Nonce才能找到解.
    • 所以挖矿过程才能称为工作量证明(Proof of work)
    • 验证过程: 验证Proof of work也非常简单, 计算H(block header) <= target即可
  • H(Nonce + 区块头中的其他信息) <= target

原理二: 签名

密码学原理英文名称构成功能
签名digital Signature(public key, private key)证明交易的合法性

Account (账户)

BlockChain账户创建: 本地创建公私钥对(public key, private key)

  • public key: 相当于账号, 外界只需要知道账号, 就可以与该账号交易
  • private key: 相当于密码

基础公式:

  • c: 公钥,d: 私钥
  • 加密: d(c(x))=x
  • 签名: c(d(x))=x

公钥体系的两个功能:

  1. 加密传输
    1. 发送方Alice, 接收方Bob
    2. Alice发送消息给Bob, 使用Bob的public key加密
    3. Bob接收密文, 使用Bob自己的private key解密
  2. 签名
    1. Alice发布财经报告M
    2. 发送者Alice计算H(M), 利用私钥签名: S = d(H(M))
    3. Alice发布(M, S)
    4. 接受者Bob计算H(M), 利用公钥解密: H(M) = c(S)
    5. 比较解密得到的H(M)与文件本身的Hash, 从而验证财经报告确实是Alice发布的.

key collision attack

  • 大量制造账户, 恰好产生与目标用户相同的(public key, private key)
  • 利用private key生成假签名, 盗走用户的Bitcoin

注意: 这种攻击的理论不可实现.