Bitcoin中的加密

Hash加密与非对称加密

Posted by Emo on April 7, 2022

比特币笔记

EMO’s Blog

比特币中主要使用了两种加密技术

  1. Hash加密
  2. 非对称密钥

这两种加密技术在比特币中扮演了不可或缺的重要作用。

Hash加密

Hash加密被普遍应用于文本对比上,它在区块链中维护了区块链的不可篡改性以及扮演着区块链的指针。

比特币对于Hash算法有三种需求

  1. Collision Resistance (冲突容忍性/hash碰撞)
  2. Hiding (隐蔽性)
  3. Puzzle Friendly (不可预测性)

Collision Resistance指碰撞容忍性,主要涉及hash碰撞,如果存在x != y, H(x) == H(y),则发生了hash碰撞。一般来说hash碰撞是不可并避免的,但是假如一个hash算法的输出空间为2**256,虽然根据鸽笼原理,一定会存在两个不同的输入被映射到同一个输出里,但是因为输出空间足够巨大,没有高效的方法去人为的创造hash碰撞,这样我们认为这个hash算法是Collision resistance的。满足这个条件的hash函数,主要用于避免对数据的篡改,因为一旦我们改变了H(m)中的m,那么新的H(m’)基本上是会与H(m)不同的,所以基本没有办法在篡改内容的同时又不被检测到。其实基本上没有哪一个hash函数在数学上时候能够被证明具备Collision Resistance的,我们只能通过实践中的经验去判断。比如MD5如今就已经被发现了人为创造hash碰撞的方式。

Hiding指计算的过程是不可逆的,如果我们通过X得到了H(X),那么我们无法通过H(X)去得到X。也就是说输出产生的密文H(X)不会泄露关于输入X的任何信息。

具备以上两个性质,就已经是可行的Hash算法了,但是比特币因为其特有的POW共识机制,所以还要求了一个新的性质Puzzle Friendly,指H(X)密文的产生是无法总结出规律性的,也就是说无法人为的去让密文的产生落在某一个范围内。比如我们需要产生一个前五位为0的密文H(X),我们是无法知道哪种明文X更有可能产生这种密文。这个性质构成了POW共识机制里的竞争机制的基础。

满足以上特性的Hash算法,比特币中使用的是SHA256

非对称加密

在非对称加密中主要分为私钥和公钥,私钥加密生成的密文只有公钥才能解密。而公钥加密的密文只有私钥才能解密。非对称加密的机制应用非常广泛,主要分为两种使用模式

  1. 私钥加密公钥解,用于签名场景
  2. 公钥加密私钥解,用于用户和服务器之间的隐私保护场景

比特币中,对于非对称加密的需求在于签名机制。在去中心化的区块链网络中,信息的传递是比较混乱复杂的,签名机制能够在这样的信息传播场景中保证用户发出的信息在传播的途中不被篡改。比如用于A用自己的私钥签名了一份交易信息,在消息的传播中,任何人都可以用用户A的公钥去验证这份信息,但是一旦任何一个人对信息进行了变更,那么这份签名便被破坏了。因为恶意节点在篡改信息后,因为不拥有用户A的私钥,所以无法对更改后的信息进行重新签名。


{ % if page.mermaid % } { % endif % }