比特币中用到密码学的两个功能:哈希和签名
一、哈希
1. 基本概念
- Crypto-currency(加密货币) :通过密码学保障交易和系统安全。
- Cryptographic hash(加密哈希) :一种将任意长度数据映射为固定长度哈希值的函数。
- Hash Digest(哈希摘要) :哈希函数的输出值(结果)。
2. 比特币中哈希函数的三大性质
- Collision resistance(抗碰撞性) 很难找到两个不同的输入得到相同的哈希值。
- Hiding(隐藏性/不可逆性) 无法通过哈希值反推出原始数据。
- Puzzle friendly(适合解谜) 哈希值无法预测,只能通过暴力计算逐个尝试,挖矿过程中没有捷径。
3. 组合性质
-
抗碰撞性与隐藏性结合可形成:
- Digital commitment(数字承诺) : 又称 Digital equivalent of a sealed envelope(数字版密封信封) ,用于承诺某一数据但暂时不公开。
4. Proof of Work(工作量证明)
-
通过计算哈希值证明一定量的工作(即挖矿)。
-
特性:
- Difficult to solve, but easy to verify(难以求解但易于验证) 。
5. 比特币中的哈希函数
- 使用的是 SHA-256(Secure Hash Algorithm,安全哈希算法) 。
二、签名
1. 签名的作用
- 发布交易时标明身份,确保交易的真实性和不可抵赖性。
2. 公钥与私钥
-
Public Key(公钥) : 用于验证签名,公开可共享。
-
Private Key(私钥) : 用于创建签名,需严格保密。
-
Asymmetric encryption algorithm(非对称加密体系) :
- 公钥加密,私钥解密。
- 示例:A 给 B 发消息,A 用 B 的公钥加密,B 用自己的私钥解密。
-
对称加密的弱点:
- 密钥分发难以保证安全。
-
非对称加密的优点:
- 消除密钥传输问题,公钥公开即可。
3. 随机源
- A good source of randomness(好的随机源) : 生成公钥时需要高质量的随机数。
4. 比特币中的签名过程
-
步骤:
- 对交易信息(Message)进行哈希,得到哈希摘要。
- 用私钥对哈希摘要签名。
- 其他人用公钥验证签名的正确性。
5. 特性
- 签名用私钥,验证签名用公钥。
- 交易的签名确保了数据的完整性和来源的合法性。
总结
- 哈希功能:用于数据完整性验证、工作量证明。
- 签名功能:用于交易身份验证,确保安全性和不可篡改性。
- 比特币系统通过将哈希与签名结合,实现了去中心化、可信、安全的交易机制。