查看: 105|回复: 0

通过设计巧妙的精巧密码学保证数据安全

[复制链接]
webmaster 发表于 2018-4-19 13:26:16 | 显示全部楼层 |阅读模式

       记录着交易信息的小纸条借助区块这个载体,在分布式的网络中以不同的轨迹错综复杂的传递,我们前面说了,你真正拥有的数字资产实际上是一段交易信息,而不是你常规意义上理解的货币。所以这个过程就需要重点解决两个问题:
       1、接受到的这条交易记录在传输过程没有被其他人所篡改
       2、接受到的这条交易记录确实是由发起交易的人所创造


       在这里,我们需要事先引入两个知识点,可能稍微有点难消化,但都是计算机领域较为成熟的和基础的概念。
       第一个知识点:Hash()函数。你只需要知道,任意长度的字符串、甚至文件体本身经过 Hash 函数工厂的加工,都会输出一个固定长度的字符串;同时,输入的字符串或者文件稍微做一丢丢的改动,Hash() 函数给出的输出结果都将发生翻天覆地的改变。注意,Hash()函数是公开的,任何人都能使用。
       第二个知识点:非对称加密。你也只需要了解,任何人手里都有两把钥匙,其中一把只有自己知道,叫做“私钥”,以及一把可以公布于众,叫做“公钥”;通过私钥加密的信息,必须通过公钥才能解密,连自己的私钥也无解。公钥可以通过私钥生成多把。
       有了这些知识点的加持,上面两个问题开始变得有解。


       下面我们来看下内部是如何扭转和工作的吧,这里拿“小 A 转账给了小 B 100 元钱” 举例:
       第一步:小 A 会先用 Hash 函数对自己的小纸条进行处理,得到一个固定长度的字符串,这个字符串就等价于这张小纸条。
       第二步:小 A 使用只有自己知道的那一把私钥,对上面固定长度的字符串进行再加密,生成一份名叫数字签名的字符串,这份数字签名能够充分证明是基于这张小纸条的。你可以这么理解,在现实中,你需要对某一份合同的签署,万一有人拿你曾经在其他地方留下的签名复制粘贴过来怎么办?!最好的办法,就是在你每一次签名的时候,故意在字迹当中留下一些同这份合同存在某种信息关联的小细节,通过对小细节的观察可以知道这个签名有没有被移花接木。步骤一和步骤二的结合就是为了生成这样一份有且仅针对这条小纸条有效的签名。
       第三步:小 A 将「明文的小纸条」、刚刚加密成功的「数字签名」,以及自己那把可以公布于众的「公钥」打包一起发给小 B。
       第四步:当小 B 收这三样东西,首先会将明文的小纸条进行 Hash()处理,得到一个字符串,我们将其命名为“字符串 1”。然后,小 B 使用小 A 公布的公钥,对发过来的数字签名进行解密,得到另外一个“字符串 2”。通过比对“字符串 1”和“字符串 2”的一致性,便可充分证明:小 B 接受到的小纸条就是小 A 发出来的小纸条,这张小纸条在中途没有被其他人所篡改;且这张小纸条确实是由小 A 所编辑。
       可以看得出来,加解密的过程几乎是一环套一环,中途任何环节被篡改,结果都是大相径庭。借助这一连串的机制,其实已经能够很好的在公开、匿名、彼此不信任的分布式网络环境中解决数字交易过程中可能遇到的很多问题。这个环节可能确实有点难理解,现在,我需要你停下来,静下心,花上几分钟闭目慢慢回味其中设计精湛的地方。
       掌握了这部分知识以后,我们在这里回答一下前面没有解释清楚的问题, 




「节点对区块的检验」检验的到底是什么?


实际上就是:

检验区块内的交易记录签名是否准确(是否被篡改)
检验区块内的交易记录输入值是否“有效”(是否使用过)
检验区块内的交易记录输入值的数字之和是否大于等于输出值的数字




回复

使用道具 举报

您需要登录后才可以回文 登录 | 立即注册 手机动态码快速登录

本版优币规则

快速回复 返回顶部 返回列表