发布信息

一种基于区块链的共享文件一致性维护系统及方法 专利技术说明

作者:admin      2023-07-26 11:40:42     693



计算;推算;计数设备的制造及其应用技术1.本发明涉及一种基于区块链的共享文件一致性维护系统及方法,具体来说是使用区块链技术,利用区块链上的可追溯性和不可篡改性来保证共享文件一致性的方法,属于信息技术领域。背景技术:2.随着互联网技术的发展,人们的生活与计算机技术逐渐密不可分,日常工作生活等都会使用计算机,这样一来,人们在计算机上存储文件的安全性就变得尤为重要。3.文件安全是在文件的整个生命周期中保护文件内部数字信息免受未经授权的访问、损坏或盗窃的做法,如果文件安全不能很好地实施,组织和个人的信息资产将会收到网络犯罪活动的威胁,导致重要信息遭到篡改或盗窃,造成不可弥补的损失。4.文件安全涉及到了很多方面,包括硬件的物理安全到管理和访问控制,以及应用程序的逻辑安全性等,文件安全正在深刻改变当今企业运营和竞争方式的方方面面,企业创建、操作和存储庞大数据量不断增长,并推动了对文件安全治理的更高需求,计算环境比以往更加复杂,通常跨越公共云、企业数据中心以及从物联网(iot)传感器到机器人和远程服务器等众多边缘设备。这种复杂性导致攻击面扩大,更难以监控和保护,与此同时,人们对文件隐私的认识和需求也越来越大,相关法案也不断出台,这更加迫使业界找到更加有效的文件安全保护的方法。5.当今绝大多数企业都有着庞大的中心化数据库,这些数据库往往涉及到了巨大的利益,为了保护这些利益,企业每年都需要花费大量的资金来维护数据库中的文件安全,然而这些做法并不能很好地解决问题,只使用中心化网络这种架构模式是很容易被攻击的,网络黑客的攻击成本极低,无论是多么复杂的安全防护逻辑,都会在成百上千上万次的网络攻击中出现漏洞,也因为这样的原因,很多企业如银行,每年都会因黑客网络攻击损失大量的资金。6.针对上述集中化的文件安全管理的固有弊端,本发明提出了一种基于区块链的共享文件一致性维护系统及方法,以降低文件安全维护的成本及提高可靠性,区块链是近些年来发展起来的新技术,有着基于密码学的强大的去中心化能力以及维护能力,本发明使用区块链进行共享文件一致性的维护,克服了传统中心化管理数据的弊端,并提供了在区块链分布式环境中,对文件的隐私加密保护的方法。并且这种维护文件一致性的策略不需要像中心化管理一样付出巨大的成本来构建防护措施,这种基于区块链的方法文件的一致性是由区块链共识机制本身保证的,只要共识机制的安全界限不被攻破,区块链网络中的文件是永久性的,也就是说完全可信的,相比于中心化管理,通过这种方法进行文件的一致性的维护大多数情况下都更加有效,虽然分布式环境看似使用很多主机,成本较高,但是实际上工作的大部分都是由系统中的文件操作节点进行的,其他节点称为一致性检验节点,只负责简单的文件验证工作,总体成本较中心化管理是更低的。7.科学研究方面,满足了绝大多数情况下的文件安全需要,提供了一个低成本、效率高的文件一致性维护方案,为文件安全管理提供了实质性的帮助。技术实现要素:8.本发明技术解决问题:克服现有技术的不足,提供了一种基于区块链的共享文件一致性维护系统及方法,使用区块链技术完成共享文件操作日志的永久性维护,并设计了在保证数据隐私情况下数据一致性的验证方法。9.本发明采用如下的技术方案:10.第一方面,本发明提供一种基于区块链共享文件一致性维护系统,包括:前端入口模块、服务器后端模块、文件共享模块、历史日志模块和一致性检验模块;其中:11.前端入口模块:接收用户的两种请求,一种是一致性检验请求,另一种是文件操作的请求;文件操作包括文件的增加、删除、修改和查询;对于普通用户,只能查看文件操作的内容,且仅能向服务器后端模块发送一致性检验请求,没有文件操作的权限;管理员用户能够查看操作文件的内容及相应的历史日志,并且能够向服务器后端模块发送文件操作的请求;同时将服务器后端模块的执行结果进行显示,执行结果即执行完的一致性检验请求和文件操作的请求;12.服务器后端模块:接收前端入口模块发送来的一致性检验请求和文件操作的请求;对于一致性检验请求,根据历史日志模块的历史日志,将一致性检验请求和历史日志发送给一致性检验模块;对于文件操作的请求,进行文件操作,根据文件操作生成对应上传到区块链上的文件操作信息,所述文件操作信息指文件标识、文件操作、文件路径和修改时间,如果为文件操作为修改,则所述文件操作信息还包括修改内容;调用文件共享模块将所述文件操作信息上传到区块链上,同时将文件操作信息发送至历史日志模块;将一致性检验请求和文件操作的请求的执行结果返回到前端入口模块;13.文件共享模块,负责整个系统内部的文件共享:运行在系统中每个节点的设备上,对于系统中的两种节点分别执行不同的功能;所述两种节点分别为文件操作节点和一致性检验节点;对于文件操作节点,文件共享模块在收到服务器后端模块发送的文件操作信息后,将文件操作信息按照打包成区块,并将打包后的区块上传到区块链上,将该区块以及对应的历史日志中的文件操作日志一起发送给除该文件操作节点外的所有其他的节点;对于一致性检验节点,文件共享模块按照设定的时间间隔,对其他节点是否发送打包的区块进行检测,检测到其他节点发送的区块后,对收到的区块进行哈希值验证,并且返回验证结果,如果验证成功,则将该区块存储到本地的区块链账本中;如果验证失败,则文件共享模块向发送该区块的其他节点返回验证失败的信息;14.历史日志模块:接收服务器后端模块发送来的文件操作信息,并存储到本地数据库中;同时向服务器后端模块发送历史日志;15.一致性检验模块:运行在系统中每个节点的设备上,对于一致性检验节点和文件操作节点分别执行不同的功能;对于一致性检验节点,监听来自服务器后端模块发送的一致性检验请求和历史日志,通过一致性检验算法对文件操作的内容和历史日志进行比对验证,将验证后的执行结果返回到服务器后端模块;对于文件操作节点,利用投票共识机制的投票结果对最终的文件一致性进行判断;如果验证后的执行结果是失败,则通过备份数据库恢复文件,通过备份历史日志对文件复原,使文件恢复与区块链的一致性。16.进一步,所述一致性检验模块中,一致性检验算法的具体实现如下:17.(1)监听服务器后端模块发送一致性检验请求和历史日志;18.(2)检验一致性检请求涉及的文件是否存在,如果不存在,直接结束;如果存在,则解析历史日志,将历史日志中记录的文件自创建以来所有文件操作取出作为一个列表,记为文件记录列表,将区块链上包含该文件的区块的记录从新到旧依次取出作为另一个列表,记为区块链记录列表;19.(3)从文件记录列表中顺序取出一条历史日志,对一条历史日志中记录的文件标识、文件操作、文件路径和修改时间以及修改内容,进行拼接,得到一个字符串;20.(4)从区块链记录列表中顺序取出区块的记录,将步骤(3)中生成的字符串和区块的记录中的内容进行比较,如果二者不一致,则返回文件不一致的结果;21.(5)判断一条历史日志中记录的文件操作是否为增加,如果是,则返回文件一致的检验结果;否则,转到步骤(3)继续。22.进一步,所述一致性检验模块中,投票共识机制的方式实现如下:23.(1)一致性检验节点监听一致性检验请求,每个一致性检验节点收到请求后执行一致性检验算法,得到该一致性检验节点的检验结果;24.(2)对于每一个一致性检验节点,初始化赞成票数为0,在该一致性检验节点得到检验结果后,将检验结果广播到其余一致性检验节点;25.(3)对于每一个一致性检验节点,监听其余一致性检验节点发送的检验结果,如果是验证成功,则赞成票数加一,否则赞成票数保持不动;26.(4)对于每一个一致性检验节点,检查自己的赞成票数,如果当前赞成票数大于一致性检验节点总数的2/3,则认为已达成共识,向文件操作节点发送达成共识信号;27.(5)文件操作节点监听来自一致性检验节点的达成共识信号并计数,如果大于一致性检验节点总数的2/3,则投票结束,投票结果为文件一致性验证通过;否则投票结果为文件一致性验证不通过。28.进一步,所述一致性检验模块中,通过备份历史日志对文件复原的具体实现如下:29.(1)将备份历史日志进行列表化处理,得到历史日志的列表,按照历史日志的操作时间倒序排列该列表;30.(2)如果该列表不为空,则按顺序从其中取出一条历史日志;31.(3)解析历史日志内容,根据这一条历史日志,利用备份数据库进行一次文件恢复;32.(4)如果恢复成功,继续取出下一条历史日志,进行下一次文件恢复;否则,结束。33.第二方面,本发明提供一种基于区块链的共享数据一致性维护方法,步骤如下:34.(1)对于管理员用户,能够通过前端入口模块查看操作文件的内容及相应的历史日志,并且能够向服务器后端模块发送文件操作的请求;对于普通用户,只能通过前端入口模块查看文件操作的内容,且仅能向服务器后端模块发送一致性检验请求,没有文件操作的权限;35.(2)服务器后端模块监听用户发起的请求,包括一致性检验请求和文件操作的请求;36.(3)根据历史日志模块的历史日志,将一致性检验请求和历史日志发送给一致性检验模块;对于文件操作的请求,进行文件操作,根据文件操作生成对应上传到区块链上的文件操作信息;调用文件共享模块将所述文件操作信息上传到区块链上,同时将文件操作信息发送至历史日志模块;将一致性检验请求和文件操作的请求的执行结果返回到前端入口模块;37.(4)一致性检验模块运行在系统中每个节点的设备上,对于一致性检验节点,监听来自服务器后端模块发送的一致性检验请求和历史日志,通过一致性检验算法对文件操作的内容和历史日志进行比对验证;38.(5)首先解析历史日志,将历史日志中记录的文件自创建以来所有文件操作取出作为一个列表,记为文件记录列表,将区块链上包含该文件的区块的记录从新到旧依次取出作为另一个列表,记为区块链记录列表;从文件记录列表中顺序取出一条历史日志,对一条历史日志中记录的文件操作类型和修改内容求取哈希值,得到文件操作类型哈希值和修改内容哈希值,将上述两个哈希值以及文件标识结合为一个字符串;从区块链记录列表中顺序取出区块的记录,将字符串和区块的记录中的内容进行比较,如果二者不一致,则返回文件不一致的结果;如果一致,则判断一条历史日志中记录的文件操作是否为创建文件,如果是,则返回文件一致的检验结果;39.(6)对于文件操作节点,利用投票共识机制的投票结果对最终的文件一致性进行判断;在投票共识机制中,一致性检验节点监听一致性检验请求,每个一致性检验节点收到请求后执行一致性检验算法,得到该一致性检验节点的检验结果;对于每一个一致性检验节点,初始化赞成票数为0,在该一致性检验节点得到检验结果后,将检验结果广播到其余一致性检验节点;对于每一个一致性检验节点,监听其余一致性检验节点发送的检验结果,如果是验证成功,则赞成票数加一,否则赞成票数保持不动;同时每一个一致性检验节点会检查自己的赞成票数,如果当前赞成票数大于一致性检验节点总数的2/3,则认为已达成共识,向文件操作节点发送达成共识信号;文件操作节点监听来自一致性检验节点的达成共识信号并计数,如果大于一致性检验节点总数的2/3,则投票结束,投票结果为文件一致性验证通过;否则投票结果为文件一致性验证不通过;如果验证后的执行结果是失败,则通过备份数据库恢复文件,通过备份历史日志对文件复原,使文件恢复与区块链的一致性。40.第三方面,本发明提供一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;41.存储器,用于存放计算机程序;42.处理器,用于执行存储器上所存放的计算机程序,执行时实现一种基于区块链的共享文件一致性维护系统或方法。43.第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理执行时实现一种基于区块链的共享文件一致性维护系统或方法。44.本发明与现有技术相比的优点在于:45.(1)本发明设计了基于区块链的文件一致性维护机制,利用了区块链的去中心化、不可篡改和可追溯性的特质,实现了对于文件更改记录的记录,对于文件整体性及完整性的验证;相比于传统文件一致性维护机制,本发明能够抵抗数据篡改、恶意攻击等风险,具有良好的稳定性与安全性。46.(2)本发明建立了一个基于区块链的文件一致性检验算法,改算法基于区块链技术,拓展性强,且利用了哈希技术,能够高效快速的完成文件的一致性检验。47.(3)本发明针对传统文件维护算法易于遭受单点故障和拜占庭攻击等问题,提出了投票共识机制,利用区块链进行多节点合作,从而避免单点故障引发的问题,同时具有抗拜占庭攻击的优点。附图说明48.图1为本发明的系统架构图;49.图2为本发明系统的服务器后端模块流程图;50.图3为本发明系统的数据共享模块流程图;51.图4位本发明系统的一致性检验模块流程图。具体实施方式52.下面给合附图及实施例对本发明进行详细说明。53.如图1所示,为本发明的基于区块链的共享数据一致性维护系统包括:前端入口模块、服务器后端模块、数据共享模块、历史日志模块、一致性检验模块;54.上述各模块的具体实现过程如下:55.1、前端入口模块,如图1所示,该模块只和服务器后端模块交互,具体细节如下:56.(1)前端入口模块会通用文本框接受用户输入的用户名username和密码password,核验通过后,校验用户的级别后,分别提供不同权限;57.(2)普通用户只能查看文件操作的内容,前端入口模块仅向普通用户提供发送一致性检验请求的权限;当用户发起一致性检验请求时,前端入口模块将该请求转发到服务器后端模块;58.(3)管理员对用户能够查看操作文件的内容及相应的历史日志,可以发起一致性检验请求和文件操作的请求,前端入口模块会转发到服务器后端模块;59.(4)服务器后端模块对请求进行处理,得到处理结果后进行显示,提示成果或失败。60.2、服务器后端模块,该模块是连接其他模块的中间模块,主要处理系统的主要控制逻辑,其主要流程如图2所示,具体细节如下:61.(1)服务器后端模块接受前端入口模块发送的请求q,按照[请求类型(长度8)|文件标识(长度128)|子类型操作(长度8)|自定义字段]的格式解析请求q,根据请求q的前8位解析出请求类型,解下来的128位解析为文件标识,随后的8位解析为子类型操作,剩余的其他位按自定义字段进行解析;[0062](2)如果是一致性检验请求,根据历史日志模块获取历史日志,将一致性检验请求和历史日志发送给一致性检验模块;[0063](3)解析请求q,首先根据解析的子类型操作,进行文件操作,进行文件的增加、删除、修改或查询;其中增加操作即为按照解析出的文件标识,增加一个文件内容为自定义字段的新文件,其中修改操作即为按照自定义字段进行文件修改,例如:文件标识为name.txt,自定义字段为a‑‑(-为自定义字段中的断位符号),子类型操作位增加,则增加一个文件标识为name.txt,内容为a的新文件;文件标识为name.txt,自定义字段为a-b(-为自定义字段中的断位符号),就是将文件name.txt中的内容a修改为b;[0064](4)根据文件操作生成对应上传到区块链上的文件操作信息i,所述文件操作信息指文件标识n、文件操作op、文件路径p和修改时间t,如果为文件操作为修改,则所述文件操作信息还包括修改内容d;[0065](5)调用文件共享模块将文件操作信息i上传到区块链上,同时将文件操作信息i发送至历史日志模块;[0066](6)将一致性检验请求和文件操作的请求的执行结果返回到前端入口模块。[0067]3、数据共享模块,主要负责与区块链部分进行交互,进行区块的上传、验证和下载,流程如图3所示:[0068](1)在第一次启动时,为每一个一致性检验节点创立一个公钥pk和一个私钥sk;在之后运行时,首先根据判断当前节点类型,如果是数据操作节点,则转入(2);如果是一致性检验节点,则转入(5);[0069](2)将文件操作信息中包含的文件标识n、文件操作op、文件路径p和修改时间t以及修改内容d提取出来;[0070](3)将修改内容d按照固定大小size进行切片,切片为数个修改内容子集d1,d2,...,dl,此处l为最终的子集数目;对这些修改内容子集进行md5哈希值计算,即hm1=md5(d1),hm2=md5(d2),...,hml=md5(dl);将文件操作信息中的将文件标识n、文件操作op、文件路径p和修改时间t以及修改内容d拼接为一个字符串s=[n,op,p,t,d],计算该字符串的哈希值hs,取出上一个区块中的哈希值hlast,将hs和hlast进行拼接后使用sha256算法计算总体哈希值ht,将字符串和哈希值打包成区块形式b并使用私钥sk进行一次数字签名σ;[0071](4)上传打包的区块b到区块链bc中并发送给其余节点;[0072](5)每隔时间间隔δ检测其他节点n发送的打包好的区块b';[0073](6)获取区块b'中的数字签名σ和总体哈希值ht,验证该区块的总体哈希值ht和数字签名σ是否合法,具体方式为获取区块b'中的哈希值hs,取出上一个区块中的哈希值hlast,将hs和hlast进行拼接后使用sha256算法计算哈希值,比较和ht是否相等;验证数字签名的具体操作为使用节点n的公钥pk对该区块b'进行签名,比较签名和数字签名σ是否一致;如果总体哈希值和数字签名σ均验证成功,则返回验证结果并则将区块b'存储到本地区块链账本,验证失败向发送该区块的其他节点返回验证失败的信息。[0074]4、历史日志模块在系统中维护了一个数据库,包含了和服务器后端模块交互时处理的存储和查询逻辑:[0075](1)接受服务器后端模块发送来的文件操作信息i,所述文件操作信息指文件标识n、文件操作op、文件路径p和修改时间t,如果为文件操作为修改,则所述文件操作信息还包括修改内容d,在本地数据库中新增一条记录存储文件操作信息,记录格式为[n|op|p|t|d|su],其中su为除文件操作信息之外的一些辅助信息,例如文件的绝对路径;[0076](2)向服务器后端模块返回历史日志,如果服务器后端没有提供文件标识n,则返回全部的历史日志,否则按照给定的文件标识n返回筛选后的历史日志,筛选后的历史日志的记录中都包含文件标识n,除此之外返回的历史日志还包括:文件数据的存储位置以及名称、操作请求的类型包括文件的增加、删除、修改和查询、操作细节包括文件修改内容、文件操作的时间。[0077]5、一致性检验模块,如图4所示:[0078](1)首先根据判断当前节点类型,如果是文件操作节点,则转入(2);如果是一致性检验节点,则转入(3);[0079](2)对于文件操作节点,监听来自服务器后端模块发送的一致性检验请求q和历史日志r,然后利用投票共识机制的投票结果对最终的文件一致性进行判断;[0080](3)一致性检验节点监听一致性检验请求q,按照[请求类型(长度8)|文件标识(长度128)|子类型操作(长度8)|自定义字段]的格式解析请求q,根据请求q的前8位解析出请求类型,解下来的128位解析为文件标识,随后的8位解析为子类型操作,剩余的其他位按自定义字段进行解析;[0081](4)请求解析完毕后执行一致性检验算法,首先检验文件标识n涉及的文件是否存在,如果不存在,直接结束;否则解析历史日志r,将历史日志中记录的文件自创建以来所有文件操作取出作为一个列表,记为文件记录列表listfile=[r1,…,rn],n为文件记录列表的长度;[0082](5)将区块链上包含该文件的区块的记录从新到旧依次取出作为另一个列表,记为区块链记录列表listblock=[rb1,…,rbn];[0083](6)从文件记录列表listfile中取出一条历史日志r1,按照[n|op|p|t|d|su]的格式得到文件标识n、文件操作op、文件路径p和修改时间t,如果为文件操作为修改,则还会得到修改内容d,对文件标识n、文件操作op、文件路径p和修改时间t以及修改内容d进行拼接,得到一个字符串[0084](7)从区块链记录列表listblock取出一条区块的记录rb1,从rb1中得到字符串s,比较与s是否相等,如果不相等则返回文件不一致的结果;[0085](8)如果文件操作op是增加,则表明文件自创建以来始终是一致的,返回文件一致的检验结果res=1;否则,转到步骤(5)继续;[0086](9)每一个一致性检验节点初始化赞成票数c=0,在该一致性检验节点得到检验结果res后,将检验结果广播到其余一致性检验节点,同时为了提高结果的可信度,会附带一个消息msg=《ip,σ》其中σ为该节点用自己的私钥sk对自身ip地址ip加密得到的数字签名;[0087](10)每一个一致性检验节点,监听其余一致性检验节点发送的检验结果res',如果res'=1,表明验证成功,继续使用其余一致性检验节点的公钥pk对消息msg中的数字签名σ进行解密得到ippk,如果ippk=ip,则表示验证成功且结果可信,更新赞成票数c=c+1,否则赞成票数保持不动;[0088](11)每一个一致性检验节点会检查自己的赞成票数,如果当前赞成票数满足(11)每一个一致性检验节点会检查自己的赞成票数,如果当前赞成票数满足m为一致性检验节点的总数,则认为已达成共识,向文件操作节点发送达成共识信号s;文件操作节点监听来自一致性检验节点的达成共识信号s并计数,如果大于一致性检验节点总数的2/3,则投票结束,投票结果为文件一致性验证通过;否则投票结果为文件一致性验证失败;[0089](12)对于文件操作节点,如果投票结果为文件一致性验证失败,文件操作节点通过备份历史日志对文件复原,使文件恢复与区块链的一致性。[0090]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例可以通过软件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,上述实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的系统或方法。[0091]提供以上实施例仅仅是为了描述本发明的目的,而并非要限制本发明的范围。本发明的范围由所附权利要求限定。不脱离本发明的精神和原理而做出的各种等同替换和修改,均应涵盖在本发明的范围之内。









图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!




免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

相关内容 查看全部