.
点击注册
你的位置: usdt数字币钱包 > dcbox小金库钱包 > 公钥加密、加密Hash散列、Merkle树……区块链的密码学你知多少
数字货币热门文章

公钥加密、加密Hash散列、Merkle树……区块链的密码学你知多少

发布日期:2022-03-17 20:08    点击次数:211

公钥加密、加密Hash散列、Merkle树……区块链的密码学你知多少

  密码学是开发防止第三方查看私人数据的学科。现代密码学结合了数学、计算机科学、物理、工程等学科。一些重要术语的定义如下:

  【密码学】在以前是加密的同义词,即把信息从可读的格式转换为毫无意义的信息的过程。加密技术的历史可以追溯到古埃及,历史十分悠久。举例来说,CAEsar Cipher凯撒密码是凯撒大帝用来与将军们进行安全通信的一个著名的密码。密码将信息中的每个字母都移动了一定的距离(移位为2),A变成了C,B变成了D,依此类推。()区块链技术以多种不同的方式对钱包、交易、安全性和隐私保护协议进行加密。本文将讨论与区块链技术相关的一些重要加密主题,包括

  公钥可以广泛分发,但是私钥只有其所有者才知道。密钥总是成对创建的,每个公钥必须有一个相对应的私钥。

  任何人都可以使用某人的公钥来加密信息,但是信息一旦被加密,只有使用相对应的私钥才能解密该消息。

  Alice使用Bob的公钥来加密消息;Alice将加密后的消息发送给Bob,如果被第三方拦截,那么第三方只能看到随机的数字和字母;Bob使用他的私钥来解密和读取收到的消息;这个过程可以用下面这个图表来表示:

  当用户在区块链上创建钱包时,就是在生成公私密钥对。钱包的地址,或者其在区块链上的表示方式,是由公钥生成的一串数字和字母的组合。

  由于区块链技术本身的性质,这个地址对所有人来说都是公开的,可以用来检查钱包里的余额或向其发送代币。

  与钱包相关联的私钥证明了钱包的所有权和控制权。这是唯一能把代币发送出去的方法,如果私钥丢失,那么里面的代币将被永远封存。区块链上的交易不过就是一条广播信息,其本质是在说,“从我的钱包里取出X枚代币,并将X枚代币存入另一个钱包”。

  然而,此交易消息需要发送钱包的密钥签名才有效,消息广播后,任何人都可以使用钱包的公钥来确保来自私钥的数字签名是真实的。这是区块验证者们在向区块链添加交易(即消息)前要承担的一个角色。

  加密Hash散列是区块链技术的另一个基本要素,它直接保障了区块链的不可变性,这是区块链最重要的特性之一。

  Hash是计算机科学中的一个术语,意思是输入任意长度的字符串,然后产生一个固定长度的输出。无论某个Hash散列函数的输入是3个字符还是10个字符,其输出的长度始终是相同的。

  没有任何两个输入可以得到相同的输出;加密Hash散列函数的另一个重要特性是改变输入中的任何一位数据都将极大地改变输出结果。举例来说,111111和111112的Hash散列输出将会是绝对唯一的,且彼此间没有任何联系。

  大多数网站不会储存用户的原始密码,它们会储存用户密码的Hash散列,并在用户访问给定的站点并输入密码时,检查散列是否匹配。

  那么,加密Hash散列又是如何实现区块链技术不变性的呢?答案就是每个新的数据块都包含前一个区块中所有数据的Hash散列输出。

  来自区块999的数据作为Hash散列函数输出存在于第1000个区块中。然而,包含在区块999中的数据是区块998中数据的Hash散列,区块998中又包含了区块997中数据的Hash散列。

  这样向前回溯,从第1000个区块到第1个区块就这样通过加密Hash散列连在了一起。其结构图如下所示:

  一直以来,这就是保证区块链中数据具有不可变性的原因。如果有人想在前面的区块中哪怕更改一位数据,那么不仅会改变该区块数据的Hash散列输出,还会改变后面的每一个区块。网络上的矿工和节点会立刻注意到所产生的Hash散列与其链的版本不匹配,并拒绝此次更改。

  上面的图是区块链的一种简化版本,它省略了一些重要信息。图中有三个向上的箭头,表示每个区块的交易都被储存在一个Merkle根中,而这就是Merkle树的根节点。

  树是计算机科学中的一个术语,代表以分层树状结构储存数据,其中,数据位被称为节点。有一个根(顶)节点,下面连接着“子”节点(Child Node),子节点本身也有子节点,依此类推。下图展示了一个典型的树型数据结构:

  如图所示,树中的节点组被称为子树(Sub-tree),没有子树的节点(其下没有数据的节点)被称为

  (Leaf Node)。Merkle树(或称为Hash散列树)是一种使用加密Hash 散列函数来储存散列输出(而不是每个节点中的原始数据)的树。

  每个叶子节点由其原始数据的加密Hash散列组成,而每个父节点(Parent Node)是其子节点Hash散列组合的Hash散列。

  Merkle根仅仅是Merkle树的根(顶)节点,Merkle根表示其左右子树组合的Hash散列输出。下图是一棵有着4个叶子节点的Merkle树。

  使用Merkle根并且应用加密Hash散列函数的性质,可以快速判断给定区块中的交易是否已被篡改,并识别正在被篡改的特定交易。

  如果已确认区块中的单个交易已经被更改,那么Merkle根最终将与“正确的” Merkle根截然不同,并且改动是十分显而易见的。

  Merkle树还允许用户在不下载整个区块链的情况下验证他们的的交易是否被包含在区块中。简单支付证明技术可以扫扫描Merkle树中的所有分支,并检查某个特定的交易是否已经被散列存储到该树中。如果不是在每个区块中包含一个Merkle根,区块链技术是不可能实现这种效率水平的。

  下图表示的是在区块链中有4笔交易的Merkle树 (在此图中,Tx_Root表示Merkle根)

  密码学是区块链技术内部工作的一个必要组成部分。公钥加密是区块链钱包和交易的基础usdt数字币钱包,加密Hash散列函数赋予了区块链不变的特性,Merkle树在组织交易的同时提高了区块链的效率。



----------------------------------