区块链释义三:如何保证安全
区块链的安全:密码学的新成就来保证真实、一致和安全
区块按照时间顺序链接形成了区块链,为了保障区块数据的一致性、完整性和安全性,下面看看它是如何进行加密和数字签名的。比特币区块链的设计者中本聪一采用密码学的方式进行加密和数字签名。这里采用了两个著名的密码学算法,一个是S1A-256哈希算法(或散列算法),另外一个是非对称加密算法。
什么是SHA-256哈希算法
SHIA是安全哈希算法( Secure Hashalgorithn)的英文缩写,SHA是美国国家安全局(NSA)设计、美国国家标准与技术研究院(NIST)发布的一系列密码哈希函数。哈希算法将任意长度的一串数据转化为一个长度较短、位数固定的输出值,即哈希值(Hash),简单地理解,通过这样的哈希算法“明文”就变成了一个“代码”。SHA-256是SHA算法的一种,它把一串数据转化成为0~236位之间的一个哈希值。它具有如下特点:
首先,每个哈希值是唯一的。第二,SHA-2356生成的哈希值具有不可逆性,也就是不能从哈希值直接解码出之前的原始数据。第三,SHA-256哈希算法能够保证相同的数据产生相同的哈希值,不同的数据产生不同的哈希值,哪怕只是一个标点符号的不同,哈希值也是不同的。
所以,一串数据的哈希值就可以用于检验数据的完整性。只要数据被改动了,哪怕是一点点蛛丝马迹,经过SHA-256哈希算法都能够辨识出来。SHA-256哈希算法一般被用于快速查找和加密。这样种机制保证了区块链的完整性和不可篡改性,任何企图篡改区块链的行为,都会立即暴露,因为新的哈希值与旧的哈希值是不匹配的,如什么是非对称加密算法简单来说,就是在“加密”和“解密”的过程中,分别使用一个“密钥对”中的两个密钥,如果两个密钥满密钥才能解开;(2)其中一个密钥公开后,根据公开的密钥别人也无法算出另一个,那么我们就称这个密钥对为非对称密钥对,公开的密钥称为公钥,不公开的密钥称为私钥。公钥是全网公开可见的,所有人都可以用自己的公钥来加密一段信息,生成一个哈希值,保证信息的真实性、完整性;私钥是只有信息拥有者才知道的,被公钥加密过的信息只有拥有相应私钥的人才能够解密,保证信息的安全性。常见的非对称加密算法包括RSA、 Elgamal、D-H、ECC(椭圆曲线加密算法)、DSA等,比特币区块链是基于椭圆曲线数字签名算法ECDSA)来实现的,关于 ECDSA算法的细节,不再赘述,技术大拿们去查阅相关资料吧。
简单地说,假设有三个交易单,分别为代表用户0给用户1支付比特币的“交易单一”,用户1给用户2支付比特币的“交易单用户2给用户3支付比特币的“交易单三”。
以“交易单二”为例,“交易单二”的签名过程是付款人(用户1)来完成的,用已经公开的收款人(用户2)的公钥加密上一交易密,得到付款人(用户1)的签名,将付亻款人签名附加在交易单中,“交易单二”的验证过程是收款人(用户2)来完成的,用公开的付款人(用户1)的公钥来解密用户1的私钥,进一步解密付亻款人用户1)的签名,得到哈希值。收款人(用户2)利用自己的公钥和上一交易单的数据,也得到另一个散列值y。如果x=y,交易单有效。
分析起来似乎很复杂,但这样的机制保障了交易单的完整性、一致性、安全性和不可篡改性。
声明:本站所提供的资讯信息不代表任何投资暗示, 本站所发布文章仅代表个人观点,仅供参考。