原文精选:哈希指针是一种数据结构,这种数据结构在我们即将讨论的很多系统中都很有用。简单来说,哈希指针是一个指向数据存储位置及其位置数据的哈希值的指针。一个普通的指针可以告诉你数据存储的位置,哈希指针不但可以告诉你数据存储的位置,并且还可以给你一种方式,让你验证数据没有被篡改过(见图1.4)。
我们可以利用哈希指针构建各种各样的数据结构。为求直观,我们可以把原来用普通指针实现的数据链表和二叉查找树通过哈希指针来实现。
读书笔记:
1,哈希指针是一个指向数据存储位置及其位置数据的哈希值的指针。
2,普通的指针只能告诉你数据存储的位置,哈希指针不但可以告诉你数据存储的位置,还能让你验证数据有没有被篡改过。
3,哈希指针可以帮你构建各种各样的数据结构。
区块链
原文精选:如图1.5所示,我们通过哈希指针构建一个链表,我们将这个数据结构称为区块链(blockchain)。在普通链表中有一系列区块,每个a区块既有数据也有一个指向上一个区块的指针。而在区块链中,上一个区块指针被置换为哈希指针。因此,每个区块不仅能告诉我们上一个区块的值在哪里,还包含了该值的摘要,使我们能够验证那个值没有改变。我们存储链表头部(thehead of list),即一个普通的哈希指针指向最近使用的数据区块。
读书笔记:
1,通过哈希指针构建一个链表,这个数据结构就称为区块链(blockchain)。
2,在区块链中,上一个区块指针被置换为哈希指针。
3,有了哈希指针,我们可以知道上一个区块的值在哪里和该值的摘要,这样我们就能够验证那个值有没有被改变。
原文精选:区块链的一个应用就是“防篡改日志”。也就是说,我们要建立一个存储很多数据的日志数据结构,使我们能将数据附加到日志的末尾。但是如果有人篡改日志前面的数据,我们可以检测到。
要理解区块链如何实现这一防篡改特性,我们先看一下如果对手要篡改区块链中间的数据会发生什么。具体来说,通过这种方式,对手的目的是让只记得区块链头部哈希指针的人无法检测到篡改行为。为达到这个目标,对手会改变某区块k的数据。既然数据已经被改变,区块k+1的哈希值(即整个区块k的哈希值)将不会匹配。记住,因为哈希函数具有碰撞阻力,我们可以确定新的哈希值与改变后的内容不会匹配。因此,我们会检测到区块k中的新数据以及区块k+1中的哈希指针的不一致性。当然,对手可以继续尝试,并通过篡改下一个区块的哈希值掩盖这次篡改。他可以一直这样做,但是当他到达链表的头部时,这个策略将会失败。具体来说,只要我们将链表头部的哈希指针存储在对手无法改动的地方,对手将不能做到在不被检测到的前提下,篡改任何区块(见图1.6)。
这样做的结果是,如果对手想要篡改区块链中任意地方的数据,为了保证整个内容一致,他需要篡改所有的哈希指针直至最开始的地方。他最终将碰到障碍,因为他不能篡改链表头部的指针。这样,我们便知道,仅通过记住一个哈希指针,我们就基本记住了整个链表的防篡改哈希值。因此,我们可以搭建一个包含很多区块的区块链网络,链表头部的哈希指针被称作创世区块(genesis block)。你可能已经注意到了,区块链的结构与我们上一节见到的MD变换类似。的确,它们很相似,同一个安全论证对于两者都适用。
读书笔记:
1,区块链可以作为“防篡改日志”,因为所有的篡改都能被检测到。
2,黑客篡改区块将导致哈希指针不一致,所以黑客必须修改所有哈希指针。
3,只需将链表头部的哈希指针存储在对黑客无法改动的地方,黑客将不能在不被检测到的前提下,篡改任何区块。
4,我们仅需记住头部的哈希指针,就基本记住了整个链表的防篡改哈希值。
5,链表头部的哈希指针被称作创世区块(genesis block)。
一叶之秋带你一分钟速读经典书籍,每天一分钟(只需阅读读书笔记部分),天天获新知。
作者:全职高手一叶之秋
链接:https://www.jianshu.com/p/80013bcfc750
共同学习,写下你的评论
评论加载中...
作者其他优质文章