一种区块链安全机制及装置的制作方法

文档序号:16060791发布日期:2018-11-24 12:09阅读:239来源:国知局

本发明属于区块链的技术领域,具体地涉及一种区块链安全机制,以及采用该机制的装置。

背景技术

目前,所有的区块链的区块之间用hash值进行链接,攻击者若想篡改某个区块n的内容,需要重新计算这个区块n的随机数,并生成篡改后的新区块n’,再以这个新区块n’为起点,继续向链的后面进行修改(n+1,n+2……),直到生成一个新链,替代原有的链,若篡改者的运算能力足够大的情况下,是有可能完成所有后续区块的修改的,并且由于它的新链条长度足够长,很可能被所有的其他区块链用户接受为新的合法链,从而达到篡改的目的。

若链长总长度为m,篡改者从第n个区块开始篡改,则他需要篡改m-n+1个区块。

简而言之,目前的任何区块链,只要从某个区块向后超快速修改,都可能实现对链的篡改。



技术实现要素:

本发明的技术解决问题是:克服现有技术的不足,提供一种区块链安全机制,其利用需要回溯的安全机制,从而彻底防止了区块链被有超高速运算能力者或者是控制了51%节点者的恶意篡改。

本发明的技术解决方案是:这种区块链安全机制,在每个区块中,同时记录上一个区块的hash值c和用上n-k个区块的私钥对该hash值c的加密数据c1;在检验本区块时,用上n-k个区块的公钥解密c1,与c进行对比,二者一致确认本区块是一个基本合法的区块(还需加上原有的区块链验证机制),否则确定为非法的区块。

本发明对区块链原有的安全体系不做改变,只是叠加了一个新的安全策略,每个块增加记录了一个本区块的公钥和对上一个区块哈希值用之前历史区块(第n-k个区块)的私钥进行加密的值,若想要篡改区块链中的其中某个区块,则必须修改该链条的被修改目标区块、它之后的所有区块以及它之前的所有的区块,相当于需要重新修改建立整个链条。其利用需要回溯修改才能修改链条中任一区块的安全机制,彻底防止了区块链被有超高速运算能力者、或者控制了51%的链条节点者的恶意篡改。

还提供了一种区块链安全装置,其包括记录模块、加密模块、解密模块、比较模块;

在每个区块中,通过记录模块记录上一个区块的hash值为c,通过加密模块用之前某个区块的私钥对该hash值c获得加密数据c1;在检验本区块时,用之前那个区块(第n-k个区块)的公钥(记录在第n-k个区块中)通过解密模块解密c1,通过比较模块与c进行对比,二者一致确认本区块是一个合法的区块,否则为非法的区块。

附图说明

图1是根据本发明的区块链安全机制的原理图。

图2是传统区块链的结构图。

图3是本发明区块链结构图(以k=3为例)。

具体实施方式

如图1所示,这种区块链安全机制,在每个区块中,同时记录上一个区块的hash值为c和用n-k个区块的私钥对该hash值c的加密数据c1;在检验本区块时,用n-k个区块的公钥(记录在第n-k个块中)解密c1,与c进行对比,二者一致确认本区块是一个合法的区块,否则为非法的区块

本发明对区块链原有的安全体系不做改变,只是叠加了一个新的安全策略,每个块增加了一个公钥和一个哈希值的用私钥进行加密的值,若想要篡改区块链中的其中某个区块,必须修改该链所有的区块,重新建立整个链条,所以其利用需要回溯的安全机制,从而彻底防止了区块链被有超高速运算能力者的恶意篡改,也防止了控制了51%节点的参与者对链条的篡改。

若要修改链上的一个区块,则导致该区块的hash值c发生了改变,成为c',和下个区块中的c1用n-k个区块公钥解密之后的值就不一致,若要使得二者一致,就必须找到n-k个区块的私钥重新对c'进行加密,若无法找到n-k个区块的私钥,则无法进行加密获得c'1,区块修改失败。另外一个修改方法是将第n-k个区块的公钥、私钥也一起换掉,从而重新生成c'和c'1写入当前区块,但这样一来,修改某个区块的时候,就必须回溯修改,也就是说,若要修改某个区块n,除掉需要修改第n,n+1,n+2,….区块之外,还必须修改n-k,n-k-1…3,2,1。总结来说,本发明的核心是,若想要篡改区块链中的其中某个区块,必须修改该链所有的区块,重新建立整个链条,显然,就完全失去了对链修改的意义及可能性,只要回溯修改超过一定的举例(比如修改当前块之前的倒数第10个块),则将被所有节点发现并认为是在篡改区块链,也就防范了控制51%节点进行表决而修改区块链的情况。

优选地,该方法包括以下步骤:

(1)每个区块设有一个公钥和一个私钥,公钥记录在该区块中;

(2)区块n生成后,生成新的块n+1时,记录区块n的hash值b,同时对这个hash值用n-k块的私钥进行加密,得到b1并记录;记录n+1块的需要保存的数据内容,以及n+1块的公钥;计算n+2块的随机数;

(3)根据步骤(1)、(2),生成下一个区块;

(4)区块合法性的检验过程:对n+1块的检验,检验b与区块n的hash值是否一致,将b1用第n-k块的公钥解密得到b2,其中k为大于0且小于n的整数,检验b与b2是否一致;若不一致,说明区块被篡改过。

也就是说,检验n+1块的真实性,既要用到n,还需要再上推到第n-k个块的公钥进行检验。

安全原理:

若要篡改第n块的数据,就必须重新计算新n块的hash值(b)。还需要再生成新的n块的hash值的加密值(b1),这就需要用到第n-k块的私钥,需要找到n-k块的拥有者,向他索取私钥,这就难度很大。若该私钥只用一次之后丢弃了,那就无法找到重新生成合法的b1。

为了重新生成合法的b1,一个方法是找到n-k块的私钥,即使n-k块的人愿意配合提供该私钥,可以生成合法的b1,接着,他就需要修改n+1块,则他又需要获得n-k+2块的私钥,以此类推,除非他获得n-k块,n-k+1块,......,一直到n-1块的所有私钥,才能够顺利建立新的链条。显然难度太大。只要这k个私钥有一个无法获得,或者比丢弃无法找回,那么修改是不能成功的。

篡改者的另外一个做法,就是在篡改n块的时候,不去获得n-k块的私钥,而是直接修改n-k块,直接换掉n-k块的私钥,那么就是回溯修改,若修改n-k块,他将发现,又要修改n-k-k块,继续回溯修改........,显然,是个无穷无尽头的事情。

另外,任何节点,若发现有回溯修改的,不管是否有看似合法的新块,都可以认为是非法修改。也就是说,即使修改n-k个块能够成功,也不会被其它节点接受,也就无法实现篡改后的链的广播,这样就可以防范控制了51%节点的用户对链进行篡改。

理论上来说,链的广播,可以只广播最后的若干个区块,旧的,已经“定型的”链,是不需要重新广播的。

若n-k个节点到n个节点之间进行串通,全部提供各自的私钥,理论上看,是可以修改从n节点向后的所有节点,所以k必须足够大,可以根据需要设定其值,这个值越大,串谋可能性越少,但在生成区块链的时候,需要的配合难度也适当加大,因为生成第n+1块,需要第n块的生成者生成b值(第n块的hash值)和第n-k块的生成者生成b1值(b值用第n-k块的私钥加密),以及第n块的公钥,一起放入第n+1块。

优选地,所述步骤(2)中用sha256算法得到b。

优选地,所述步骤(4)中k≥3。

还提供了一种区块链安全装置,其包括记录模块、加密模块、解密模块、比较模块;

在每个区块中,通过记录模块记录上一个区块的hash值为c,通过加密模块用上一个区块的私钥对该hash值c获得加密数据c1;在检验本区块时,用上一个区块的公钥通过解密模块解密c1,通过比较模块与c进行对比,二者一致确认本区块是一个合法的区块,否则为非法的区块。

优选地,所述记录模块配置来记录区块n的公钥、hash值b、加密数据b1;所述加密模块配置来对hash值b用n-k块的私钥进行加密;所述解密模块配置来将b1用第n-k块的公钥解密得到b2,其中k为大于0且小于n的整数;所述比较模块配置来检验b与区块n的hash值是否一致,检验b与b2是否一致,若不一致,说明区块被篡改过。

以上所述,仅是本发明的较佳实施例,并非对本发明作任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属本发明技术方案的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1