# 《区块链技术与应用》01 BTC 密码学原理

By [Minna Yu](https://paragraph.com/@minna-yu) · 2022-06-15

---

**这个系列的内容是根据肖臻老师《区块链技术与应用》公开课的内容进行的内容整理，以及部分延伸的思考。文末附有公开课链接。**

**原课程有26个视频，笔记内容对其进行了合并归纳，共16篇内容，更多可以访问本人主页：**

[https://mirror.xyz/0xAAF87dC0576EA47B8214f9248b55c081bD9E7CAc](https://mirror.xyz/0xAAF87dC0576EA47B8214f9248b55c081bD9E7CAc)

### 本篇内容主要回答以下两个问题：

1、比特币中使用的哈希函数的密码学原理是什么？

2、这其中的密码学原理又有什么样实际的应用？

### 哈希函数有两个性质

### 性质一：哈希碰撞Collision resistance

### 1、含义

*   两个不同的输入，可能有相同的输出。因为输入是无限的，但是输出是有限的。
    
*   比如对于256位数的输出，有2的256次的可能性，但是输入是无限可能的。
    
*   那在输出结果相同的情况下，想要找出当时不同的输入，也有一种暴力的办法，穷尽所有的可能，即brute-force.
    

### 2、应用：甄别信息是否被篡改

*   方法：文件上传云端之前，本地算出一个哈希值，下载的时候再算一个，如果哈希值是一致的，可以认为内容没有被篡改。
    
*   潜在假设：（1）暴力破解的成本很高，很难实现。（2）本地的哈希算法是一致的。
    
*   影响应用的情况：（1）量子计算或者科技进一步发展，使得计算机的算力极大地提升，暴力破解可低成本快速实现，哈希碰撞就不可以这么应用了。（2）本地的哈希函数被篡改。
    

### 性质二：hiding

哈希函数是单项的不可逆的，给定一个x可以算出H（x），但是无法从H（x）反推出x。 前提：输入空间足够大，分布比较均匀，暴力破解的成本很高，很难实现。 两个性质结合，可以实现digital commitment, digital equivalent of a sealed envelope

### 比特币的哈希函数还需要第三个特性：puzzle friendly

*   含义：哈希值的计算是不可提前预测的
    
*   举例：想得到一个256位的哈希值，k个0+后面剩下的数，事先不知道哪个输入可以得出这个哈希值。
    
*   挖矿：找随机数nonce，与区块链的其他信息一起作为输入，得出的哈希值小于等于某个阈值。区块链是一个一个区块组成的链表，每个区块有块头block header
    
*   挖矿的过程：H（block header）≤target 挖矿的过程就是不停地试随机数，nonce作为header的一部分，算一次就行，使得整个block header得出的哈希值在target space里面
    
*   挖矿很难，验证很容易，difficult to solve, but easy to verify 比特币的哈希函数：SHA-256：SHA-secure hash algorithm
    

**公钥私钥与签名** 开户的过程，指的就是创立一对公钥和私钥。（public key, private key）

*   非对称加密Asymmetric encryption algorithm 传统的加密是对称的加密，需要有安全的渠道把密钥给到双方。密钥的分发不是很方便。 非对称加密的解决办法是创立一对密钥。加密用的是公钥，解密用的是私钥。 加密和解密用的是同一个人的公钥和私钥。
    
*   使用场景 公钥可以公开，通讯的对方只要知道公钥就行，自己使用私钥进行解密。 公钥类似银行账号，对方知道公钥就可以转账，用户自己私钥类似于密码，用了私钥可以取钱。
    
*   私钥的用处：签名 验证签名用的是公钥，签名用的是私钥。 产生相同的公钥和私钥，如果是256位，相同的概率微乎其微。 有个前提：需要有好的随机源。a good source of randomness 比特币生成和签名的时候，都需要有好的随机源。 对一个数据源进行哈希，然后对哈希值进行签名。
    

**视频原文地址**

[https://www.bilibili.com/video/BV1Vt411X7JF?spm\_id\_from=333.337.search-card.all.click&vd\_source=6807dc8dcddb18fe6db9d949c12b670c](https://www.bilibili.com/video/BV1Vt411X7JF?spm_id_from=333.337.search-card.all.click&vd_source=6807dc8dcddb18fe6db9d949c12b670c)

---

*Originally published on [Minna Yu](https://paragraph.com/@minna-yu/01-btc)*
