由于比特币的去中心化安全机制是完全建立在密码学基础之上的,所以比特币家族又被称为“密码学货币”,可以说密码学是比特币比特币诞生的基石之一。
加密的定义:通过把信息变得混乱,使未经授权就的人无法访问它,而被授权的人能够访问的一种方式。加密过程要保证信息的保密性、完整性、不可否认性。
1 密码学的发展
1.1古典加密技术
密码学的发展经历了从经典加密技术(对称加密)到现代加密技术(非对称加密的)的过程,经典加密技术通过某种不为人知的算法,将明文经过加密得到密文,此密文只有通过对应的解密算法才能转换成明文。比如明文是bitcoin,加密算法规定对每个字母都按照字母表的顺序向后移动三位即
a b c d e f g h i j k l m n o p q r s t u v w x y z
d e f g h i j k l m n o p q r s t u v w x y z a b c
这样变换后的密文就变成elwfrlq,这样如果不知道解密算法,别人就无法识别,当然真实被应用的加密算法比这复杂的多,但是这种加密方式的安全性都依赖于加密算法,但这种加密技术很容通过频率分析的方法破解。后来的但是计算机出现之后,人们发现无论多么复杂的加密算法,都能通过统计分析的方式破解。
1.2对称加密体制
对称加密是指加密所用的密钥和解密所用的密钥相同,也称为私钥加密体制。对称加密体制的安全性依赖与密钥,比较著名的对称加密算法有DES,IDEA等,由于对称加密技术只能用于对数据的加密解密,提供数据的机密性,但无法用作数字签名。因而我们需要新的密码体制,非对称加密体制应运而生。
1.3非对称密码体制
非对称加密体制也叫公钥加密技术,该技术针对私钥密码体制的缺陷而设计,在公钥加密系统中,加密和解密是相对独立的,加密和解密使用不同的密钥,加密密钥叫做公钥是公开的,任何人都可以使用,解密密钥叫做私钥,只有解密者知道。在非对称加密体制中,加密过程如下,加密放使用公钥加密,将密文发送给使用后,解密放使用对应的私钥解密。在用作数字签名时,发送方通过私钥对消息加密,生成数字签名,接收方通过对应的公钥验证数字签名的合法性。
2 密码学在比特币中的应用
2.1用户账户
比特币的实现依赖于密码学技术,其中比特币账户采用了非对称加密算法,用户自己保留私钥,对其发出的交易进行签名,并公开私钥。比特币的账户地址就是用户的公钥经过一系列hash及编码运算后生成的160位字符串。在一次交易中,付款人通过收款人的公钥对本次交易进行签名,收款人收到交易后就能通过收款人的私钥验证本次交易是否合法。
2.2哈希算法
Hash算法能将任意长度的二进制(明文)映射为较短的固定长度二进制值(Hash值),并且不同的明文很难映射为相同的Hash值。
Hash算法满足一下三个性质:
- 明文M的任何改变都会导致Hash值H(M)的改变;
- 在给定某个哈希函数H和哈希值H(M)的情况下,得出M在计算上时不可以行的;
- 即对于消息M1和哈希值H(M1),找到M2使得H(M2)= H(M1) 在计算上不可行(弱碰撞);或者,找到任意两个M1和M2使得H(M1)= H(M2) 在计算上不可行(强碰撞)。
比特币协议中引入了哈希函数,解决双重支付的问题,付款人A将比特币发送给收款人B时,在交易完成之前,即交易被写入区块链之前,A又将这些比特币发送给了C,这时就面临如何避免双重支付的问题。
比特币协议中,网络节点通过工作量证明机制,实现以工作量证明问题提的解换取检验交易是否合法的话语权,避免了僵尸节点对不合法交易的随意确认。基于工作量证明的原理,找到足够多的网络节点使得这次不合法交易通过及其不容易,也就避免了双重支付的问题。关于工作量证明可以参考我的另一篇文章从分布式一致性到区块链共识机制。
网友评论