比特币密码学原理:
包含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的信息。
满足这一性质前提条件:
- x取值空间足够的大;
- x的取值分布足够均匀;
在实际的情况下,对于x的取值空间是有限的,可以通过向其添加随机数进行补充;
hash(x + random)
满足上述两个前提可以避免对x进行蛮力的攻击。
挖矿的过程就是制造random的过程。
- hash值是不可预测的
解释:通过hash值f(x)很难实现对x进行预测。
比特币签名:
加密体系介绍
:
- 对称加密体系:
A与B进行信息交互,需要A与B之间通过传递私钥进行比对完成,在这种加密体系中私钥的传递是不安全的,从而衍生出非对称加密体系。 - 非对称加密体系:
A向B发送信息流程:A获取B公钥加密(假设B已经生成公私钥对) => B获取A的已加密信息通过B本身的私钥进行解密。
注意:加密与解密钥匙来源于同一方。
这样私钥保证了私钥没有传递,保证信息安全传输。
比特币系统实现
:
A用户想B用户发送10个比特币的过程:A使用本身的私钥进行10比特币信息签名发送给B => B通过接受A的公钥进行10比特币信息的解密。
注意:在该传递的过程中同样公私钥来源于同一个用户。