比特币-密码学原理

比特币密码学原理

包含hash(哈希)与签名两个部分。

比特币hash(哈希):

hash特性

  • hash碰撞

     `                           x不等于y,f(x) = f(y)`
    

理论上hash碰撞是不可避免的,因为hash值f(x)位数大小为256,那么hash值的取值空间为2的256次幂,而输入x的范围是无穷大的。但是对于人为的制造这种hash碰撞的方式是没有什么好的办法,也没有数学函数被证明是可以满足hash碰撞的,这一性质可以有效地避免人为对hash值进行篡改的发生。

一个优良的hash函数 f 应当满足以下三个条件:

  • 对于任意y,寻找x,使得f(x)=y,在计算上是不可行的。
  • 给定x1∈A,找x2∈B,,使得f(x1)=f(x2),在计算上是不可能的,这也就是弱无碰撞性。
  • 寻找x1,x2,使得f(x1)=f(x2),在计算上也是不可行的,这也就是强无碰撞性。

注:比特币系统使用的hash函数为:SHA-256

  • hash计算过程是单向的
                      x => f(x) 而不能通过f(x)反向推导出x的取值

这一性质有效的保护了x的信息。
满足这一性质前提条件:

  1. x取值空间足够的大;
  2. x的取值分布足够均匀;

在实际的情况下,对于x的取值空间是有限的,可以通过向其添加随机数进行补充;

                                      hash(x + random)

满足上述两个前提可以避免对x进行蛮力的攻击。
挖矿的过程就是制造random的过程。

  • hash值是不可预测的
    解释:通过hash值f(x)很难实现对x进行预测。

比特币签名:

加密体系介绍

  1. 对称加密体系:
    A与B进行信息交互,需要A与B之间通过传递私钥进行比对完成,在这种加密体系中私钥的传递是不安全的,从而衍生出非对称加密体系。
  2. 非对称加密体系:
    A向B发送信息流程:A获取B公钥加密(假设B已经生成公私钥对) => B获取A的已加密信息通过B本身的私钥进行解密。
    注意:加密与解密钥匙来源于同一方。
    这样私钥保证了私钥没有传递,保证信息安全传输。

比特币系统实现

A用户想B用户发送10个比特币的过程:A使用本身的私钥进行10比特币信息签名发送给B => B通过接受A的公钥进行10比特币信息的解密。
注意:在该传递的过程中同样公私钥来源于同一个用户。

发布了25 篇原创文章 · 获赞 27 · 访问量 2189

猜你喜欢

转载自blog.csdn.net/m0_38053092/article/details/92071337