首页> 中国专利> 基于区块链技术的文件读取和存储的方法、终端设备和存储介质

基于区块链技术的文件读取和存储的方法、终端设备和存储介质

摘要

本公开涉及一种基于区块链技术的文件读取和存储的方法、终端设备及存储介质。该文件读取方法包括:与第一用户相关的客户端向存储节点网络发送针对待读取文件的文件读取请求消息,其中,待读取文件以多个文件碎片的形式在链下分布式地存储在存储节点网络中;存储节点网络对第一用户的签名与存储节点网络中的第一用户的公钥是否匹配进行共识验证;在验证通过的情况下,存储节点网络向与第一用户相关的客户端发送待读取文件的多个文件碎片;以及与第一用户相关的客户端从接收到的多个文件碎片中还原出待读取文件。从而,提供了一种在存储节点网络中的节点之间的高度安全、数据容量可扩展性高的分享数据文件的方案。

著录项

  • 公开/公告号CN110417750A

    专利类型发明专利

  • 公开/公告日2019-11-05

    原文格式PDF

  • 申请/专利号CN201910617024.4

  • 发明设计人 刘芳璐;王思喆;王怡宁;王健;

    申请日2019-07-09

  • 分类号

  • 代理机构北京律和信知识产权代理事务所(普通合伙);

  • 代理人郝文博

  • 地址 100080 北京市海淀区中关村大街15-11号A23

  • 入库时间 2024-02-19 15:48:45

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-07-03

    授权

    授权

  • 2019-11-29

    实质审查的生效 IPC(主分类):H04L29/06 申请日:20190709

    实质审查的生效

  • 2019-11-05

    公开

    公开

说明书

技术领域

本公开内容总体上涉及数据文件访问的技术领域,包括对数据文件的写入和读取,具体而言,涉及一种基于区块链技术的文件读取和存储的方法、终端设备及计算机可读存储介质。

背景技术

在当今的信息化社会中,无论是机构还是个人,在计算机网络上任何操作都会产生数据,而这些数据中就包括许多重要又敏感的隐私性数据。隐私性数据例如,个人身份证信息、银行卡号、社会保障卡号、患者的医疗数据(比如CT照片等医学影像数据)、个人在不同网站上的用户名和密码、以及诸如此类的数据。这些数据或者信息通常以文件形式存储在计算机网络中的磁盘或其他外部存储介质上。对于隐私数据存储和管理而言,如何保证存储的安全性和访问的便捷性是隐私数据文件的存储和管理的基本需求。特别对于机构而言,由于不断地有隐私数据文件产生,而且这些文件对存储空间的需求通常较大,因而在存储的安全性和访问的便捷性方面持续存在着改善的需求。另外,在传统的服务器/客户端(C/S)架构或者浏览器/客户端架构中,虽然某些数据被视为是特定用户独享的,例如该用户的账号和密码,但是这些数据的拥有者、承载着这些数据的存储介质的拥有者并不是该用户。

传统技术中的中央数据管理系统本身存在安全隐患。一方面,数据管理系统本身易受到恶意攻击,通常是系统中本身存在漏洞,或者系统中数据可能未以加密方式存储。比如,在使用数据库来统一进行权限管理的情况下,当该数据库被恶意攻击者所控制,数据库所管理的信息将遭到批量泄露。而即使对系统内数据进行加密存储,如果用于加密的密钥仍然以表单形式存储于系统内,那么单次对系统的成功攻击就可以使得所有的密钥都沦陷,从而造成数据的批量泄露。另一方面,与此同时,数据管理系统还面临着后门操作的隐患。以使用私有云的机构为例,使用私有云的机构,通常并不是搭建私有云的主体,即大多数使用私有云的机构使用的是第三方平台搭建的私有云。由第三方搭建的数据管理系统,第三方本身所拥有的权限,会成为数据从内部遭到泄露的隐患,同时也会成为恶意攻击的对象。而使用公有云不但面临着和使用私有云同样的问题,同时由于数据存储的主体不在机构内部,而在第三方,使得机构对于数据的实际使用情况完全无法掌控。也就是说,在传统模式下,让第三方来参与数据管理,却不让第三方实际拥有数据,是很困难的。

另外,提供数据存储和管理服务的主体还存在可信度方面的问题。一方面,由于数据的拥有者对数据缺乏掌控,使得其无法直接了解数据的状态,从而在发生数据泄露时,无法有效查阅痕迹,进行追溯。同时,虽然有的第三方系统会将行为信息记录在表单上,但由于表单数据存在被篡改(后门或漏洞)的可能,使得这些信息无法有效作为追责的依据。另一方面,将数据存储在公有云,会面临巨大的安全与隐私隐患,以及较低的数据使用效率;将数据存储在私有云,则会有巨大的成本(硬件、软件、运维和管理等各个方面的成本)。

数据文件的冗余备份也是保证数据存储的安全性的一个传统技术模式,以防止数据丢失或损坏。然而,这一方面使得数据的存储成本上升,同时也让存储备份数据的计算机站点成为潜在恶意攻击的对象,成为数据泄露的风险点。

另外,数据管理系统的性能与可扩展性之间有着很大的相关性,在不同可扩展性的情况下,系统的性能会有较大差别。甚至为了效率,系统在处理信息时,针对不同的可扩展性,会采用不同的策略。这一方面会让系统有较大的局限性,同时也给系统带来了很大的维护成本(用小资源处理大信息)与资源浪费(用大资源处理小信息)。

再者,在传输比较大的文件时,由于数据管理系统采用从中央服务器到客户端的传输方式,使得传输时间过长。

区块链以其去中心化、高安全性、可容错性、抗攻击性、抗共谋性为特征,在提出后迅速发展,对于解决数据文件存储中出现的前述问题方面展现出了高的匹配性。区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法,是区块链技术中区块链节点相互之间取得信任的核心。目前,已经提出了多种共识机制和共识算法,虽然其设计构思多种多样,但是共识机制的本质始终相同,即以消耗资源来换取信任。

狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。

一般说来,区块链系统由数据层、网络层、共识层、激励层、合约层和应用层组成。其中,数据层封装了底层数据区块以及相关的数据加密和时间戳等基础数据和基本算法;网络层则包括分布式组网机制、数据传播机制和数据验证机制等;共识层主要封装网络节点的各类共识算法;激励层将经济因素集成到区块链技术体系中来,主要包括经济激励的发行机制和分配机制等;合约层主要封装各类脚本、算法和智能合约,是区块链可编程特性的基础;应用层则封装了区块链的各种应用场景和案例。该模型中,基于时间戳的链式区块结构、分布式节点的共识机制、基于共识算力的经济激励和灵活可编程的智能合约是区块链技术最具代表性的创新点。

目前已经有人提出了基于区块链的技术文件存储系统。例如,中国专利申请公开CN109274717A提出了一种基于区块链的共享存储方法,在该方法中,将待存储共享数据以区块链技术进行存储,让每个区块链节点共享其至少部分存储空间,构建一个分布式共享存储中心,其中采用冗余编码方式将所述待存储共享数据存储至所述分布式共享存储中心。但是,这些区块链技术在隐私数据管理中的应用面临两个问题:(1)由于信息传递的不可逆性,隐私数据直接在链上共享后就难以进行控制和限制其使用范围;以及(2)区块链的存储容量并不足以支持拥有庞大数据量的隐私数据,隐私数据上链会对区块链造成难以负荷的拥堵。

需要指出的是,在上述背景技术部分介绍的内容,仅用于加强对本公开内容的技术背景的理解,并不当然代表其中的内容一定是本领域普通技术人员已知的现有技术。

发明内容

有鉴于此,本公开描述的技术方案的目的之一在于提供一种改进的、更加安全的基于区块链技术的文件存储和读取的方案。

在第一方面,提供一种基于区块链技术的读取文件的方法,包括:第一用户的客户端向存储节点网络发送针对待读取文件的文件读取请求消息,该文件读取请求消息包括:待读取文件的文件标识符、第一用户的标识符、以及第一用户的签名,其中,所述待读取文件以多个文件碎片的形式在链下分布式地存储在存储节点网络中;所述存储节点网络对所述第一用户的签名与所述存储节点网络中的所述第一用户的公钥是否匹配进行共识验证;在验证通过的情况下,所述存储节点网络向所述与第一用户相关的客户端发送所述待读取文件的所述多个文件碎片;以及所述与第一用户相关的客户端从接收到的多个文件碎片中还原出所述待读取文件。

在一个实施例中,文件碎片标识符是利用第一用户的公钥进行加密的,加密后的文件碎片标识符存储在区块链上,该方法可以进一步包括:与第一用户相关的客户端从存储节点网络上提取出解密后的文件碎片标识符,并向存储节点网络发送解密后的文件碎片标识符。所述存储节点网络向所述与第一用户相关的客户端发送所述待读取文件的所述多个文件碎片的步骤可以进一步包括:所述存储节点网络根据接收到的文件碎片标识符向所述与第一用户相关的客户端发送所述待读取文件的所述多个文件碎片。

在一个实施例中,所述存储节点网络中的所述待读取文件是利用对称密钥进行加密的,所述对称密钥是利用第一用户的公钥进行加密的,加密后的所述对称密钥存储在区块链上。该方法可以进一步包括:所述与第一用户相关的客户端从所述存储节点网络中提取出所述对称密钥。所述与第一用户相关的客户端从接收到的多个文件碎片中还原出所述待读取文件的步骤可以进一步包括:所述与第一用户相关的客户端利用所述对称密钥对还原出的所述待读取文件进行解密。

在一个实施例中,所述第一用户的标识符是所述第一用户的公钥;或者,所述第一用户的标识符包括所述第一用户的编号和所述第一用户的公钥。

在一个实施例中,所述待读取文件的文件碎片以纠删编码的形式存储在存储节点网络中。所述与第一用户相关的客户端从接收到的多个文件碎片中还原出所述待读取文件可以进一步包括:与第一用户相关的客户端从接收到的文件碎片中,通过纠删编码还原出所述待读取文件。

在一个实施例中,该方法可以进一步包括:对于每一次共识验证,将相关元数据存储在区块链上,和/或将与每个文件碎片相关的元数据存储在区块链上。

在一个实施例中,与每个文件碎片相关的元数据存储在区块链上。该方法可以进一步包括:所述与第一用户相关的客户端从所述存储节点网络获取与每个文件碎片相关的元数据,以判断所述文件碎片是否遭受篡改。

在第二方面,提供一种基于区块链技术的存储文件的方法,包括:与第二用户相关的客户端将待存储文件划分成多个文件碎片;所述与第二用户相关的客户端向存储节点网络发送针对所述待存储文件的写入操作消息,所述写入操作消息包括:文件碎片、与文件碎片标识符和第一用户的标识符或第二用户相关的标识符相关的信息、以及第二用户的签名,其中,所述第一用户是所述待存储文件的拥有者;所述存储节点网络对所述第二用户的签名与所述存储节点网络中的所述第一用户的公钥是否匹配进行共识验证;以及在验证通过的情况下,将所述多个文件碎片在链下分布式地存储在存储节点网络中。

在一个实施例中,写入操作消息还包括针对所述待存储文件的写入操作权限令牌。在将所述多个文件碎片在链下分布式地存储在存储节点网络中的步骤之前,该方法可以进一步包括:所述区块链节点网络根据收到的所述写入操作权限令牌对第二用户对所述待存储文件的写入权限进行共识验证。

在一个实施例中,写入操作权限令牌可以是从所述第一用户获得的,包括以下各项中的一项或多项:所述待存储文件的文件标识符、第二用户的标识符、以及第一用户的签名;所述待存储文件的文件标识符、第二用户的标识符、第二用户的签名、以及第一用户的签名;所述第二用户的标识符以及所述第一用户的签名;所述第二用户的标识符、所述第二用户的签名、以及所述第一用户的签名;所述待存储文件的文件标识符、所述第二用户的标识符、以及所述第一用户的签名;以及第二用户的标识符以及第一用户的签名。

在一个实施例中,所述在验证通过的情况下、将所述多个文件碎片在链下分布式地存储在存储节点网络中可以进一步包括:利用所述第一用户的公钥对每个文件碎片标识符进行加密,将加密后的文件碎片标识符存储在第一区块链上。

在一个实施例中,该方法可以进一步包括:与第二用户相关的客户端生成对称密钥,其中,划分成多个文件碎片的所述待存储文件是利用所述对称密钥加密后的文件;以及利用所述第一用户的公钥对每个文件碎片标识符、以及所述加密密钥进行加密,将加密后的结果存储在第二区块链上。

在一个实施例中,所述第一用户的标识符是所述第一用户的公钥,并且所述第二用户的标识符是所述第二用户的公钥;或者,所述第一用户的标识符包括所述第一用户的编号和所述第一用户的公钥,所述第二用户的标识符包括所述第二用户的编号和所述第二用户的公钥。

在一个实施例中,与第二用户相关的客户端将待存储文件划分成多个文件碎片可以进一步包括:所述与第二用户相关的客户端以纠删编码的形式将待存储文件划分成多个文件碎片。

在一个实施例中,该方法可以进一步包括:对于每一次共识验证,将相关元数据存储在第三区块链上,和/或将与每个文件碎片相关的元数据存储在区块链上。

在一个实施例中,所述存储节点网络根据收到的所述写入操作权限令牌对第二用户对所述待存储文件的写入权限进行共识验证包括:所述存储节点网络对所述第一用户的签名与所述存储节点网络中的所述第一用户的公钥是否匹配进行共识验证。

在一个实施例中,写入操作权限令牌可以具有可被允许的使用次数的附加属性。

在第三方面,提供一种基于区块链技术的读取文件的方法,包括:接收来自与第一用户相关的客户端的针对待读取文件的文件读取请求消息,该文件读取请求消息包括:待读取文件的文件标识符、第一用户的标识符、以及第一用户的签名,其中,所述待读取文件以多个文件碎片的形式在链下分布式地存储在存储节点网络中;对所述第一用户的签名与所述存储节点网络中的所述第一用户的公钥是否匹配进行共识验证;以及在验证通过的情况下,向所述与第一用户相关的客户端发送所述待读取文件的所述多个文件碎片中的一个或多个文件碎片。

在一个实施例中,文件碎片标识符是利用第一用户的公钥进行加密的,加密后的文件碎片标识符存储在区块链上。该方法可以进一步包括:接收与第一用户相关的客户端发送的解密后的文件碎片标识符。向所述与第一用户相关的客户端发送所述待读取文件的所述多个文件碎片中的一个或多个文件碎片的步骤可以进一步包括:根据接收到的文件碎片标识符向所述与第一用户相关的客户端发送所述待读取文件的所述多个文件碎片中的一个或多个文件碎片。

在一个实施例中,该方法可以进一步包括:对于每一次共识验证,将相关元数据存储在区块链上,和/或将与每个文件碎片相关的元数据存储在区块链上。

在第四方面,提供一种基于区块链技术的存储文件的方法,包括:接收来自与第二用户相关的客户端发送的针对待存储文件的写入操作消息,该写入操作消息包括:文件碎片,与文件碎片标识符和第一用户的标识符或第二用户标识符相关的信息,以及第二用户的签名,其中,所述第一用户是所述待存储文件的拥有者,并且所述与第二用户相关的客户端将待存储文件划分成多个文件碎片并在存储节点网络上进行发送;对所述第二用户的签名与所述存储节点网络中的所述第二用户的公钥是否匹配进行共识验证;以及在验证都通过的情况下,将所述多个文件碎片在链下分布式地存储在存储节点网络中。

在一个实施例中,所述写入操作消息还包括针对所述待存储文件的写入操作权限令牌。在将所述多个文件碎片在链下分布式地存储在存储节点网络中之前,该方法可以进一步包括:根据收到的所述写入操作权限令牌对第二用户对所述待存储文件的写入权限进行共识验证。

在一个实施例中,写入操作权限令牌是从所述第一用户获得的,包括以下各项中的一项或多项:所述待存储文件的文件标识符、第二用户的标识符、以及第一用户的签名;所述待存储文件的文件标识符、第二用户的标识符、第二用户的签名、以及第一用户的签名;所述第二用户的标识符以及所述第一用户的签名;所述第二用户的标识符、所述第二用户的签名、以及所述第一用户的签名;所述待存储文件的文件标识符、所述第二用户的标识符、以及所述第一用户的签名;以及第二用户的标识符以及第一用户的签名。

在一个实施例中,该方法可以进一步包括:对于每一次共识验证,将相关元数据存储在区块链上,和/或将与每个文件碎片相关的元数据存储在区块链上。

在第五方面,提供一种基于区块链技术的读取文件的终端设备,包括:网络接口,被配置为与其他对等终端设备进行通信;存储器,被配置为存储程序代码,以及处理器,被配置为执行所述程序代码以执行前述第三方面的方法步骤。

在第六方面,提供一种基于区块链技术的存储文件的终端设备,包括:网络接口,被配置为与其他对等终端设备进行通信;存储器,被配置为存储程序代码,以及处理器,被配置为执行所述程序代码以执行前述第四方面的方法步骤。

在第七方面,提供一种计算机可读存储介质,包括存储于其上的计算机可执行指令,所述可执行指令在被处理器执行时实施前述第三方面的方法步骤。

在第八方面,提供一种计算机可读存储介质,包括存储于其上的计算机可执行指令,所述可执行指令在被处理器执行时实施前述第四方面的方法步骤。

根据本发明的各种实施方式,数据文件在链下分布式地存储在存储节点网络中,同时将对文件的写入和/或读取操作的权限相关的信息以区块链的形式存储在该存储节点网络中,用于区块链技术下的共识验证。通过利用数据管理结构中的所有参与方的共识验证,数据拥有者不必是存储属于其的数据文件的主机或存储设备的掌控者,却能对其享有所有权的数据文件的访问权拥有完全的控制权,包括授权期望的目标用户访问、存储或读取该数据文件;同时,提供了一种在存储节点网络中的节点之间的高度安全、数据容量可扩展性高的分享数据文件的方案。

附图说明

构成本公开的一部分的附图用来提供对本公开的进一步理解,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1示意性示出了根据本发明实施方式的各种方法可以在其中实施的网络系统的概览图;

图2示意性示出了适合用来实现根据本发明实施方式的各种方法的移动终端的框图;

图3示意性示出了根据本发明一个实施方式的适于用来实现本发明实施方式的计算机系统的框图;

图4示意性示出了根据本发明一个实施方式的文件存储和读取的系统架构的示意图;

图5示意性示出了根据本发明一个实施方式的基于区块链技术的读取文件的方法的流程图;

图6示意性示出了根据本发明一个实施方式的基于区块链技术的存储文件的方法的流程图;

图7示意性示出了根据本发明一个实施方式的获取写入操作授权的方法流程图;

图8示意性示出了根据本发明另一个实施方式的基于区块链技术的存储文件的方法的流程图;

图9示意性示出了根据本发明一个实施方式的基于区块链技术的存储和读取文件的过程的示意图;以及

图10示意性示出了根据本发明一个实施方式的计算机程序产品的框图。

具体实施方式

在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本公开的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和如下描述被认为本质上是示例性的而非限制性的。

附图中的流程图和框图,图示了按照本发明各种实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现预定的逻辑功能的可执行指令。应当注意,在有些作为备选的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也应当注意,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。此外,为了示意的方便,下述具体实施方式中的可选的步骤以虚线框的形式示出。

应当理解,尽管在本文描述的实施例中,有时直接将用户描述为消息的发送方或接收方,但这仅是为了叙述的方便,严格而言,是与该用户相关的客户端完成了消息的发送和接收。发送和接收的动作可以响应于用户的输入而启动,也可以是自动启动。对客户端应当做广义连接,可以代表用户终端设备,也可以代表运行在用户终端设备上的应用程序,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本公开中的具体含义。

另外,在本文中,将第一主体向第二主体发送的消息描述为其中包括多个内容项,但是应当理解,在具体实现时,这些内容项可以在一条消息中发送,也可以在多条消息中发送。这些内容项可以显式地直接体现在消息中,也可以在发送消息中隐式地包括了与该内容项的关联项,通过该关联项,第二主体(接收方)能够从网络中获得该内容向。另一方面,本文使用的术语第一用户、第二用户等是相对而言的术语,仅仅用来区分具有不同权限或扮演不同角色的用户。在不同的场景下,第一和第二用户间的权限或者角色可能发生互换,这并不脱离本发明实施方式的范围和精神实质。此外,术语“第一”、“第二”等序数词仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本公开的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。

在本公开的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接:可以是机械连接,也可以是电连接或可以相互通讯;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本公开中的具体含义。

下文的公开提供了许多不同的实施方式或例子用来实现本公开的不同结构。为了简化本公开的公开,下文中对特定例子的部件和设置进行描述。当然,它们仅仅为示例,并且目的不在于限制本公开。此外,本公开可以在不同例子中重复参考数字和/或参考字母,这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施方式和/或设置之间的关系。

以下结合附图对本公开的具体实施例进行详细说明,应当理解,此处所描述的优选实施例仅用于说明和解释本公开,并不用于限定本公开。

首先参考图1,其示出了本发明实施方式可以在其中实施的网络系统100的概览图。系统100可以包括网络110、连接到网络110的多个终端设备。在图1中,多个终端设备被示出为包括一个或多个移动终端120、一个或多个台式计算机130。该多个终端设备以分布式形态组网,是去中心化的网络形态,所形成的网络在本文中被称为存储节点网络。该多个终端设备在本文中被称为节点或网络节点。

仅为了叙述的方便,将该分布式形态的组网称为存储节点网络,但是应当理解,根据本发明的实施方式,在该存储节点网络工作时,仅部分网络节点具有存储功能,或者仅利用部分网络节点的数据存储功能。作为示例,在图1中,一个或多个台式计算机130构成存储节点网络,一个或多个移动终端120虽然作为存储节点网络的节点,但可以不利用他们的数据存储功能。

网络110可以包括有线或无线网络的任意组合,其中这些有线或无线网络包括但不限于移动电话网络、无线局域网(LAN)、蓝牙个人局域网、以太网LAN、令牌环LAN、广域网、互联网等。

移动终端120是一个具有无线通信能力的移动设备,根据本发明实施方式的移动终端可以包括但不限于智能手机、智能机器人、便携式数字助理(PDA)、寻呼机、移动计算机、移动电视、游戏设备、膝上型计算机、照相机、录像机、GPS设备以及其他类型的语音和文本通信系统。

在实现本发明的各种实施方式中所涉及的各种通信设备120和130可以使用各种介质通过网络110进行通信,包括但不限于无线电、红外、激光、线缆连接等。

图2示出了适合用来实现根据本发明实施方式的各种方法的移动终端200的框图。如图2所示,移动终端200可以包括与用户互动的接口设备,与接口设备连接的编译设备,以及与编译设备连接的联网模块230。其中,与用户互动的接口设备可以是触摸屏240、音频输出设备250(包括扬声器、耳机等)、麦克风260;编译设备可以是处理器210、存储器220。处理器210被配置为结合其他元件执行根据本发明实施例的方法的全部或部分步骤。联网模块230被配置为能使移动终端200能够与其他移动终端或者远程服务器之间数据收发,例如联网模块230可以包括网络适配器、调制解调器、或天线等部件。存储器220被配置为存储在被处理器210执行时能够执行根据本发明实施方式的方式的程序或指令序列、以及存储从其他移动终端或者台式计算机接收的信息(例如,文本、语音、图片等)。触摸屏240被配置为接收用户的文本输入,识别用户的手势,并显示用户的请求消息、系统提供的对请求的响应消息以及其他相关信息。音频输出设备250被配置为播放响应消息和/或对响应消息的处理结果及系统提示信息。麦克风260被配置为采集用户的语音信息。移动终端200可以被实现为图1中移动终端120等。

图3示出了适合用来实现根据本发明实施方式的各种方法的计算机系统300的框图。如图3所示,计算机系统300可以包括:CPU(央处理单元)301、RAM(随机存取存储器)302、ROM(只读存储器)303、系统总线304、硬盘控制器305、键盘控制器306、串行接口控制器307、并行接口控制器308、显示控制器309、硬盘310、键盘311、串行外部设备312、并行外部设备313和显示器314。在这些部件中,与系统总线304相连的有CPU 301、RAM 302、ROM 303、硬盘控制器305、键盘控制器306、串行控制器307、并行控制器308和显示控制器309。硬盘310与硬盘控制器305相连,键盘311与键盘控制器306相连,串行外部设备312与串行接口控制器307相连,并行外部设备313与并行接口控制器308相连,以及显示器314与显示控制器309相连。计算机系统300还可以包括联网模块(未示出),其被配置为使计算机系统300能够与其他移动终端或者计算机系统之间进行数据收发,例如联网模块可以包括网络适配器、调制解调器等。计算机系统300可以被实现为图1中所示的台式计算机130。

应当理解,图2和图3所述的结构框图仅仅为了示例的目的而示出的,而不是对本发明的限制。在某些情况下,可以根据需要增加或者减少其中的一些部件。

图4示意性示出了根据本发明一个实施方式的文件存储和读取的系统架构400的示意图。图4还图示了本发明实施方式的简要工作原理。如图4所示,多个存储节点组成存储节点网络410,不同的用户角色420、430和440可以通过存储节点网络410来分发数据和消息。与用户相关的客户端或者与用户相关的应用程序可以运行在构成存储节点网络的某个节点上,或者也可以运行在与存储节点网络相连接的用户终端设备上。

宽泛地或者理论而言,存在三种用户角色,即文件的拥有者(Owner)、文件的写入者(Writer)、文件的读取者(Reader)。Owner是拥有数据的主体,通过拥有数据,Owner可以向一方(包括拥有者本身)提供写入和读取特定文件的授权。Writer是写入数据的主体,将数据写入到存储节点网络。Reader是想要读取数据的主体,只有在Owner授予权限的情况下,Reader才能读取特定的授权文件。然而,本公开特别针对这样的情形,其中文件的读取者(Reader)或者文件的写入者(Writer)同时是文件的拥有者(Owner)。在图4中,实线框460示意性示出了读取者用户角色430和拥有者用户角色440是同一用户主体,虚线框470示意性示出了写入者用户角色420和拥有者用户角色440是同一用户主体。虽如此,但为了叙述的方便,下文中部分内容还是针对不同的用户角色进行了描述。

本公开所设想的上述情形特别适合于解决如下场景下的文件存储、文件读取。但是应当理解,这样的场景仅是示例性的,本公开的实施方式可以应用于任何类似的场景。举例而言,根据本发明一个实施方式的解决方案特别适合于这样的场景,

场景1:示例医院场景一

在医院的场景下,主治医生或者化验科医师要将患者的病历、CT影像档案等存储到文件存储系统,患者可以期望能够在相关终端设备上查看这些数据文件。这里,患者同时扮演文件的拥有者和读取者的角色(Owner=Reader)。该终端设备上可以运行用与患者读取和查阅信息相关的客户端。根据实际需要,医生或医师在将文件写入到存储系统或者更新文件、创建文件时,可以需要或者不需要患者的授权。

场景2:示例医院场景二

在与场景1同样的医院场景下,还需要另外的系统设计。主治医生或者化验科医师可以是其生成的某个患者的病历、CT影像档案的拥有者,并且将其存储到文件存储系统中。这里,医生或医师同时扮演文件的拥有者和写入者的角色(Owner=Writer)。如果A医生(或者A医生所在的科室)将数据通过客户端写入系统,则A医生即为该数据的所有人,同时也是写入者。A医生(或者A医生所在的科室)向其他医生(其他科室)或者患者授权后,其他医生(或者其他科室)或者患者即可作为读取者读取数据。

场景3:示例银行场景

在一种示例银行信用系统场景中,即银行系统作为写入个人信用信息的写入者,而个人在作为信用信息的拥有者的同时也可以作为读取者来调用自己的信用信息(Owner=Reader)。这里,银行系统对于个人信用信息的写入,通常理解是不需要获得作为信息的拥有者的用户授权的。

结合这样的示例场景有助于更好地理解本公开的实施方式,但是应当理解,这样的场景解释是示例性的。

根据本发明的实施方式,旨在将Owner拥有的文件分布式地存储在存储节点网络中,同时将Writer和/或Reader的写入和/或读取操作的权限相关的信息(如果需要)以区块链的形式存储在该存储节点网络中,这些信息可以被用于区块链技术下的共识验证。对于数据文件的存储并不利用区块链技术,对照而言,本文中也将之称作链下存储。本文中,将数据以区块链的形式存储在存储节点网络中也被称为存储在区块链上;在这个意义上,存储节点网络形成了区块链节点网络。

同时,还可以将共识验证形成的元数据(metadata)存储在区块链上。元数据是描述其他数据或者给出关于其他数据的信息的数据。根据本发明的实施方式,元数据可以看作是对每一次共识验证后生成的账本条目。

根据本发明的实施方式,存储节点是存储数据文件的节点,同时负责运行共识算法、生成区块、维护所生成的一个或多个区块链。

在图4的实施例中,用户角色420是一个特定文件的写入者,用户角色430是该文件的读取者,用户角色440是该特定文件的拥有者。对于读取者用户角色430和拥有者用户角色440是同一用户主体的情形,如实线框460所示,当读取信息时,该用户主体不需要对文件读取的授权。该用户主体可以授权其他主体完成对属于其的文件的写入操作。当然,本发明实施方式也考虑其他主体的写入操作也无需文件拥有者的授权。对于写入者用户角色420和拥有者用户角色440是同一用户主体,如虚线框470所示,当写入或存储信息时,该用户主体不需要对文件写入的授权。该用户主体可以授权其他主体完成对属于其的文件的读取操作。

在图4的实施例中,当Writer尝试将一条信息放入系统时,所有节点都可以验证Owner是否授权Writer操作。但是,应当理解,当Writer尝试将一条信息放入系统时,可以不对写入权限进行验证,而放任对Owner拥有的文件的写入。Owner可以只对其拥有的文件的读取权限进行授权,只希望被允许的用户才能读取。

根据本发明实施方式的文件存储和读取的系统的四种参与方,即四种参与角色,工作在图1所示的终端设备的三个不同层。不同角色的用户工作在应用层;构成存储节点网络的节点的全部或部分形成链下存储层(Off-chain Storage Layer),用于分布式地存储待存储文件的多个碎片;构成存储节点网络的节点的全部或部分之间还形成区块链技术中的共识层,负责对不同角色的用户对不同文件的访问(存储和独权)权限、以及用户发送的消息的真实性进行验证。

文件的读取

图5示意性示出了根据本发明一个实施方式的基于区块链技术的读取文件的方法500的流程图。例如,结合前述场景,方法500涉及的操作可以是同时具有读取者用户角色430和文件所有者用户角色440的用户从存储网络节点中读取文件的过程。

在步骤S510,与第一用户相关的客户端向存储节点网络发送针对待读取文件的文件读取请求消息。文件读取请求消息可以包括:针待读取文件的文件标识符、第一用户的标识符、以及第一用户的签名。待读取文件的文件标识符用来供存储节点网络或者其中的网络节点识别所要读取的文件。第一用户的签名用来供存储节点网络验证第一用户的身份。参考本公开下面描述的存储文件的技术方案,该待读取文件是以多个文件碎片的形式在链下分布式地存储在存储节点网络中,而不形成区块链。

在步骤S520,存储节点网络对第一用户的签名与存储节点网络中的第一用户的公钥是否匹配进行共识验证。

在步骤S530,在验证通过的情况下,存储节点网络向与第一用户相关的客户端发送该待读取文件的多个文件碎片。

在步骤S540,与第一用户相关的客户端从接收到的多个文件碎片中还原出该待读取文件。

根据本公开的一个实施方式,文件碎片标识符是利用第一用户的公钥进行加密的,加密后的文件碎片标识符存储在区块链上。前述方法500可以进一步包括步骤:与第一用户相关的客户端从存储节点网络上提取出解密后的文件碎片标识符,并向存储节点网络发送解密后的文件碎片标识符。存储节点网络根据收到的文件碎片标识符,向与第一用户相关的客户端发送文件碎片。

根据本公开的一个实施方式,存储节点网络中的待读取文件可以是利用对称密钥进行加密的。为此,在存储节点网络中存储有利用所述第一用户的公钥对所述对称密钥进行加密的经加密的对称密钥。前述方法500可以进一步包括步骤:第一用户从存储节点网络中提取出所述对称密钥,以及利用所述对称密钥对还原出的所述待读取文件进行解密。进一步地,加密算法可以被选择为,只有第一用户获得了所有的加密后的文件碎片,才能解密得到该待读取文件。从而,排除了文件被部分解密的可能。

根据本公开的一个实施方式,前述方法500可以进一步包括:对于每一次共识验证,将相关元数据存储在区块链上,和/或,将与每个文件碎片相关的元数据存储在区块链上。

根据本公开的一个实施方式,与每个文件碎片相关的元数据存储在区块链上,前述方法500可以进一步包括:与第一用户相关的客户端从存储节点网络获取与每个文件碎片相关的元数据,以判断所述文件碎片是否遭受篡改。

在一个实施例中,在待读取文件在系统中是以纠删编码的形式存储的实施方式中,第一用户从收到的文件碎片中,通过纠删编码还原出该待读取文件。

文件的存储

图6示意性示出了根据本发明一个实施方式的基于区块链技术的存储文件的方法600的流程图。例如,结合前述场景,读取者用户角色430和文件所有者用户角色440的用户是同一用户主体,该方法600涉及的操作可以是承担文件写入者用户角色420的另一用户向存储网络节点存储文件的过程。

在步骤S610,与第二用户相关的客户端将待存储文件划分成多个文件碎片。

在步骤S620,与第二用户相关的客户端向存储节点网络发送针对所述待存储文件的写入操作消息,该写入操作消息包括:文件碎片,与文件碎片标识符和第一用户的标识符相关的信息,以及第二用户的签名。第二用户可以是想要将待存储文件写入系统的写入者用户。第一用户是所述待存储文件的拥有者。第二用户的签名用来供存储节点网络验证第一用户的身份。

在步骤S630,存储节点网络对第二用户的签名与存储节点网络中的第二用户的公钥是否匹配进行共识验证,该验证可以通过共识验证算法进行。

在步骤S640,存储节点网络根据收到的写入操作权限令牌对第二用户对所述待存储文件的写入权限进行共识验证,该验证可以通过共识验证算法进行。写入操作权限令牌可以是与第一用户相关的客户端发送的,代表了该待存储文件的拥有者、比如第一用户对第二用户对该文件的写入操作的授权,并且用来来供存储节点网络验证该令牌的真实性。

在步骤S650,在两个验证都通过的情况下,存储节点网络将该多个文件碎片在链下分布式地存储在存储节点网络中。

根据本发明的实施方式,对数据文件碎片的分布式存储不形成区块链,而且与用于的公钥相关的信息存储在区块链上,用于对所有者对文件的写入/读取操作授权的共识验证。例如,将用户的标识符与公钥的对应关系存储在区块链上。存储节点网络可以通过共识验证算法验证第二用户的签名与存储节点网络中的第二用户的公钥是否匹配,来完成上述验证。

应当理解,步骤S640是一个可选步骤。当Writer尝试将一条信息放入系统时,可以不对写入权限进行验证,而放任任何人对Owner拥有的文件的写入。也就是说,Owner可以只对其拥有的文件的读取权限进行授权,只将有被某个读取者查阅的文件授权给一个Reader。在这一点,本公开提供了对文件访问控制权限的控制的灵活性。同时,考虑Writer和Owner位于同一主体的场景,例如使用相同的客户端,则步骤S640也是可以省略的,并且在S620中发送的该写入操作消息可以包括:文件碎片,与文件碎片标识符和第二用户的标识符相关的信息,以及第二用户的签名。第二用户是写入者自己,也是文件的拥有者。

在一个实施例中,写入操作权限令牌可以在第二用户想要修改待存储文件时向该文件的拥有者、比如第一用户进行请求。图7示意性示出了根据本发明一个实施方式的第二用户向第一用户请求写入操作权限令牌的方法700的流程图。

在步骤S710,与第二用户相关的客户端向与第一用户相关的客户端发送针对待存储文件的写入操作权限请求消息。第一用户是待存储文件的拥有者。写入操作权限请求消息可以包括:待存储文件的文件标识符、第二用户的标识符、以及第二用户的签名。第二用户的签名用来供存储节点网络验证第一用户的身份。

在步骤S720,与第一用户相关的客户端验证写入操作权限请求消息。

在步骤S730,在验证通过的情况下,与第一用户相关的客户端向与第二用户相关的客户端发送针对该待存储文件的写入操作权限令牌。写入操作权限令牌可以包括:所述待存储文件的文件标识符、第二用户的标识符、第二用户的签名、以及第一用户的签名。例如,写入操作权限令牌可以是第一用户是对收到的写入操作权限请求消息整体的签名。第二用户是写入者,第一用户是待存储文件的拥有者,第一用户的签名用来供第二用户或存储节点网络验证第二用户的身份。

在备选实施例中,写入操作权限令牌可以不包括第二用户的签名,即写入操作权限令牌可以包括:所述待存储文件的文件标识符、第二用户的标识符、以及第一用户的签名。从而,可以节省通信带宽,在通信量方面性能更优。

图7所示的方法700是针对待存储文件的写入操作授权,还设想到了更大粒度的针对用户的写入操作授权。在一个实施例中,根据本发明一个实施方式的第二用户向第一用户请求写入操作权限令牌的方法包括:

-与第二用户相关的客户端向与第一用户相关的客户端发送针对第二用户的写入操作权限请求消息,其中,所述第一用户是所述待存储文件的拥有者,所述写入操作权限请求消息包括:第二用户的标识符以及第二用户的签名;

-第一用户验证所述写入操作权限请求消息;

-在验证通过的情况下,与第一用户相关的客户端向与第二用户相关的客户端发送针对所述第二用户的写入操作权限令牌,所述写入操作权限令牌包括:第二用户的标识符、第二用户的签名、以及第一用户的签名。

在备选实施例中,写入操作权限令牌可以不包括第二用户的签名,即写入操作权限令牌可以包括:第二用户的标识符、以及第一用户的签名。从而,可以节省通信带宽,在通信量方面性能更优。

在一个实施例中,写入操作权限令牌可以在该文件的拥有者、比如第一用户在决定授权存储节点网络中的部分用户写入操作权限时,主动地向这些被授权的用户发送,以供这些用户存储,在必要时出示。第一用户可以向第二用户发送针对所述待存储文件的写入操作权限令牌。写入操作权限令牌可以包括:待存储文件的文件标识符、第二用户的标识符、以及第一用户的签名。第一用户的签名用来供第二用户或存储节点网络验证第一用户的身份。

备选地,第一用户可以向第二用户发送针对第二用户的写入操作权限令牌。该写入操作权限令牌可以包括:第二用户的标识符以及第一用户的签名。

在一个实施例中,方法600可以进一步包括步骤:与第二用户相关的客户端或者存储节点网络利用第一用户的公钥对每个文件碎片标识符进行加密,将加密后的文件碎片标识符以区块链形式存储在存储节点网络中。从而,仅第一用户、即文件的拥有者可以从区块链上查看文件碎片标识符。

在一个实施例中,第二用户以纠删编码的形式将待存储文件划分成多个文件碎片,并将这些碎片在存储节点网络上进行分发。

在一个实施例中,对于区块链上的每一次共识验证,存储节点网络将相关元数据存储在区块链上。这些元数据可以成为对历史操作的追踪线索。

图8示意性示出了根据本发明另一个实施方式的基于区块链技术的存储文件的方法800的流程图,其是图6所示的方法600的一个变形实施例,其中,方法800中的步骤S810、S820、S830、S840和S850分别对应于方法600中的步骤S610、S620、S630、S640和S650。

在步骤S802,与第二用户相关的客户端生成对称密钥E。第二用户可以是想要将待存储文件写入系统的写入者用户。

在步骤S804,与第二用户相关的客户端使用对称密钥E对待存储文件进行加密。

在步骤S810,与第二用户相关的客户端将加密后的待存储文件划分成多个文件碎片。

在步骤S812,与第二用户相关的客户端利用第一用户的公钥对每个文件碎片标识符以及对称密钥E进行加密,将加密后的文件碎片标识符和对称密钥E以区块链形式存储在存储节点网络中。从而,仅第一用户、即文件的拥有者可以从区块链上查看文件碎片标识符,同时,仅第一用户、即文件的拥有者可以从区块链上获得对称密钥E,用于以后的授权,例如,提供给可信的读取者用户。

在步骤S820,与第二用户相关的客户端向存储节点网络发送针对该加密后的待存储文件的写入操作消息,该写入操作消息包括文件碎片,与文件碎片标识符、第二用户的标识符或第一用户标识符相关的信息,以及第二用户的签名。第二用户可以是想要将待存储文件写入系统的写入者用户。第一用户是所述待存储文件的拥有者。第二用户的签名用来供存储节点网络验证第二用户的身份。

在步骤S830,存储节点网络通过对第二用户的签名与存储节点网络中的第二用户的公钥是否匹配进行共识验证,该验证可以通过共识验证算法进行。

在步骤S840,存储节点网络根据收到的写入操作权限令牌对第二用户对所述待存储文件的写入权限进行共识验证。

在步骤S850,在两个验证都通过的情况下,存储节点网络将该多个文件碎片在链下分布式地存储在存储节点网络中,而不形成区块链。

应当理解,S812可以跟在步骤S810之后的任何步骤之后,例如跟在在步骤S820之后。

根据本发明的实施方式,对数据文件内容的处理与存储都在链下进行,分布式地存储在多个存储节点中,而不是以区块链的形式。例如,由于系统能够支持的用户的数量大,用户的数据文件通常是海量的,如果将这些数据文件都存储在区块链上,则这样的区块链将会很笨重。从而,与在区块链中存储文件内容相比,可以有效减少存储数据的所需要存储空间。另外,依赖于区块链技术的共识验证算法来保证存储的文件的安全性和对文件的权限控制,并且可选地依靠数字签名和可编程权限来实现访问控制与行为记录,提高了对文件存储的安全性。

另外,数据安全措施与要存储的数据量的大小之间的相关性小,使得大规模的批量数据泄露几乎不可能发生。根据本发明的实施方式,用户的私钥都是由用户(例如所有者)在系统之外保存的,并不存在于系统里。单个用户私钥的泄露,只会影响到他名下的数据,不会对其他的用户的产生影响,从而,不会发生数据批量泄露。

在一个实施例中,对于每一次共识验证,存储节点网络将相关元数据存储在区块链中。

根据本发明的实施方式,用户的签名可以包括利用该用户的私钥对与该用户的签名一起发送的消息中的全部数据、部分数据、或者附加的特定数据进行加密的结果。例如,在第二用户向存储节点网络发送针对存储文件的写入操作消息时,该写入操作消息的一个例子包括:文件碎片,与文件碎片标识符、第一用户的标识符和第二用户的标识符相关的信息,针对该待存储文件的写入操作权限令牌,以及第二用户的签名。该第二用户的签名操作可以是对与其一起发送的文件碎片,与文件碎片标识符、第一用户的标识符和第二用户的标识符相关的信息,针对该待存储文件的写入操作权限令牌的全部数据进行签名,也可以是仅对文件碎片进行签名,或者是引入在存储节点网络以外以安全渠道(机构内部的保密会议)分发的口令,该签名仅对该口令进行签名。对写入消息完整性的保障可以依赖于附加的一个哈希值。

进一步地,授权令牌,包括写入操作权限令牌可以具有附加特性,例如,只能使用有限次数,或者被Owner收回授权。拥有者的授权方式可以根据应用场景的不同来进行调整,并且授权具有时效性。从而,可以防止数据被重入攻击(reentrancy attack),并使数据拥有者对于数据的分享行为限定在当下,而没有授予未来更新的数据的权限。

进一步地,存储节点网络将共识验证操作形成的元数据记录在区块链上,形成审计追踪线索(Audit Trail)。文件的获取行为都会在区块链上留下无法消除的痕迹,并且该痕迹可被公开查阅。从而,当数据泄漏发生在线下时,有助于调查和确定责任的归属。

根据本发明的实施方式,文件可以是各种类型的,包括文本文件、音乐文件、视频文件、图像或影像文件、一段数据(比如私有数据)、一个数据项(data item)等等。可以使用任何已知的技术将文件划分成多个文件碎片并在还原时进行组装。在本文中,术语“存储”意在涵盖对文件的创建、写入、更新等此类的操作,术语“读取”意在涵盖对文件的读操作、查阅等此类的操作。

根据本发明的实施方式,共识验证在共识层完成,共识验证的算法可以包括但不限于:工作量证明PoW(ProofofWork)、权益证明PoS(ProofofStake)、DPoS、PBFT等。应当理解,根据本公开,参与共识验证的存储节点未必一定是存储了文件碎片的节点。

在本发明的一个实施方式中,用户的标识符(UID)可以包括用户的编号和用户的公钥。在本发明的另一个实施方式中,用户的标识符可以直接取自用户的公钥。用户的编号可以是用户在生成时被分配的一个预设格式的随机数,其可以以区块链形式存储在存储节点网络中。与用户的公钥匹配的用户私钥由该用户保存。用户的公钥以区块链形式存储在存储节点网络中,但是应当理解,公钥可以在存储节点网络以外以安全渠道(机构内部的保密会议)在用户间进行分发,或者利用传统的中央可信任证书颁发机构CA来获取,本公开对公钥在用户间的分发形式不做限定。

根据本发明的一种实施方式,用户的标识符可以以区块链的形式存储在存储节点网络上。根据本发明的一种实施方式,区块链网络中的每个节点都在链下在本地保存所有用户的标识符,例如保存在文件夹或钱包夹中。

根据本发明的实施方式,文件碎片标识符可以存储在区块链上,也可以不存在在区块链上。根据本发明的实施方式,对文件的写入操作授权令牌可以保存在持有者终端节点上,例如保存在文件夹或钱包夹中,也可以被存储在区块链上。

根据本发明的实施方式,每个文件都有一个标识符,称之文件标识符(DID)。DID包括两部分,DID={拥有者的UID,d},其中d是拥有者库中特定文件的标识符、比如文件编号。不同的拥有者可以拥有相同标识符的文档。相应地,本公开将文件拆分为数据块碎片,每个文件碎片都有一个标识符,称之碎片标识符(CID)。CID包括两部分,CID={DID,c},其中,当把一份文件拆分成C份时,c例如是0到C-1之间的数字。当然,c可以是其他适当的编号。应当理解,这里给出的对于DID和CID的定义仅是示例性、而非限制性的。

图9示意性示出了根据本发明一个实施方式的基于区块链技术的存储和读取文件的过程的示意图。如图9所示,其示意性示出了三个功能,包括写入操作授权(write auth)、写入操作(write)与读取操作(read)。

如图9所示,写入授权阶段根据该系统被应用的具体场合的不同,是一个可选步骤。写入者客户端在对一个待存储文件进行写入操作之前,向存储节点网络出示其预先获得的对待存储文件的写入操作权限令牌,存储节点网络中的区块链共识层进行对该写入操作权限令牌的共识验证,并且将表示共识验证的结果的第一元数据存储在区块链中。

在写入操作阶段,在实际处理文件数据的过程中,写入者客户端负责数据的加密与碎片化,并将数据写入权限提交共识层进行验证与记录后,在链下存储层进行写入存储;链下存储层在将数据碎片写入存储后,将提交元数据(metadata)到共识层记录。

在图9所示的实施例中,还将表示文件碎片的属性的第二元数据存储在区块链上。该元数据是描述该文件碎片的数据,主要是该文件碎片的属性的信息,例如可以是该文件碎片的校验数、Hash值、或者其他适当的属性数据。在该元数据为校验和的情形性,读取者可以验证该元数据,而不用读取该碎片文件,就能得到该碎片文件有无被篡改。还设想到了在区块链上保存该元数据,以实现对该文件碎片的存储位置、历史数据、资源查找、文件记录等功能的支持。存储节点上的碎片数据的任何更新都记录在该条区块链上。从而,读取者可以通过验证与存储在该另一节点上的文件碎片相关的元数据,来验证该文件碎片的可靠度。

在读取操作阶段,读取者客户端在读取数据时,提交读取请求到共识层来进行验证和记录;通过共识验证的请求将反馈到存储层来,并由存储层发送数据包到读取者客户端;读取者客户端在获得所有数据碎片后,再进行重组与解密。

根据本公开的实施方式,将文件划分成文件碎片,从而使得将数据存储在无意义的碎片中,只在文件被阅读时才能重建为有意义的内容。例如,一段私有数据被分段并存储在不同的存储节点中,这些数据仅被重新整合在一起时才会有意义。而只有当所有相关的存储节点对于读取者的文件读取授权产生共识并通过验证后,数据读取者才能获得所有的所需的文件碎片,从而进一步拼凑出完整文档。数据读取者无法用只向一个存储节点发起请求的方式,来通过后门获取数据。因此,将区块链技术应用于权限管理,使得未经数据拥有者授权,任何人都无法获取到文件的完整信息,潜在攻击者难以对存储节点网络中的文件进行篡改或查阅。

根据本公开的实施方式可以采用现有技术中的任何可行的文件或一段数据的切片和重建算法,本公开对此不做限制。

根据本公开的进一步的实施方式,数据文件在系统中是被加密的,从而文件碎片是加密后的文件的碎片。通过加密机制,进一步提升了数据存储的安全性,保证数据内容不会泄露给没有加密密钥的人。

根据本公开的进一步的实施方式,利用文件拥有者的公钥对加密密钥进行加密,并且存储在存储节点网络中。因为私钥只被数据拥有者持有,从而该实施方式确保数据泄漏相互间的不相关性,即,即便某一个数据拥有者的数据被泄露,也不会波及到其他的数据拥有者所持有的数据。

本公开提供了基础实施方式和丰富的备选实施方式,使得数据处理机制灵活,根据应用场景的不同,为本公开的读者提供了不同级别的访问控制。例如,诸如财务数据、健康数据、以及其他数据市场的不同的使用场景对于数据访问控制的细化程度有不同的要求。

利用区块链技术的对加密密钥的共识机制,减小了该系统中的加密密钥被非法篡改的风险。

终端设备

上面描述了根据本发明实施方式的各种方法,在另一方面,本公开还涉及各种用户终端设备。

在一个实施例中,提供一种基于区块链技术的读取文件的终端设备,包括:网络接口,被配置为与其他对等终端设备进行通信;存储器,被配置为存储程序代码,以及处理器,被配置为执行所述程序代码以执行如下操作:接收来自与第一用户相关的客户端的针对待读取文件的文件读取请求消息,该文件读取请求消息包括:待读取文件的文件标识符、第一用户的标识符、以及第一用户的签名,其中,所述待读取文件以多个文件碎片的形式在链下分布式地存储在存储节点网络中;对所述第一用户的签名与所述存储节点网络中的所述第一用户的公钥是否匹配进行共识验证;以及在验证通过的情况下,向所述与第一用户相关的客户端发送所述待读取文件的所述多个文件碎片中的一个或多个文件碎片。

进一步地,文件碎片标识符是利用第一用户的公钥进行加密的,加密后的文件碎片标识符存储在区块链上。处理器还被配置为执行程序代码以执行如下操作:接收与第一用户相关的客户端发送的解密后的文件碎片标识符。所述向所述与第一用户相关的客户端发送所述待读取文件的所述多个文件碎片中的一个或多个文件碎片的操作进一步包括:根据接收到的文件碎片标识符向所述与第一用户相关的客户端发送所述待读取文件的所述多个文件碎片中的一个或多个文件碎片。

进一步地,对于每一次共识验证,将相关元数据存储在区块链上,和/或,将与每个文件碎片相关的元数据存储在区块链上。

在一个实施例中,提供一种基于区块链技术的存储文件的终端设备,包括:网络接口,被配置为与其他对等终端设备进行通信;存储器,被配置为存储程序代码,以及处理器,被配置为执行所述程序代码以执行如下操作:

接收来自与第二用户相关的客户端发送的针对待存储文件的写入操作消息,该写入操作消息包括:文件碎片,与文件碎片标识符和第一用户的标识符或第二用户标识符相关的信息,以及第二用户的签名,其中,所述第一用户是所述待存储文件的拥有者,并且所述与第二用户相关的客户端将待存储文件划分成多个文件碎片并在存储节点网络上进行发送;对所述第二用户的签名与所述存储节点网络中的所述第二用户的公钥是否匹配进行共识验证;以及在验证都通过的情况下,将所述多个文件碎片在链下分布式地存储在存储节点网络中。。

进一步地,所述写入操作消息还包括针对所述待存储文件的写入操作权限令牌,处理器进一步被配置为执行所述程序代码以在将所述多个文件碎片在链下分布式地存储在存储节点网络中的步骤之前,执行如下操作:根据收到的所述写入操作权限令牌对第一用户对所述待存储文件的写入权限进行共识验证。

进一步地,针对所述待存储文件的写入操作权限令牌是与第二用户相关的客户端从与第一用户相关的客户端处获得的。

进一步地,在验证通过的情况下,该处理器还被配置为执行所述程序代码以执行如下操作:将所述多个文件碎片在链下分布式地存储在存储节点网络中进一步包括:利用所述第一用户的公钥对每个文件碎片标识符进行加密,将加密后的文件碎片标识符存储在第一区块链上。

进一步地,所收到的多个文件碎片是与第二用户相关的客户端利用对称密钥进行加密后的碎片文件,所述处理器进一步被配置为执行所述程序代码以执行如下操作:利用所述第一用户的公钥对每个文件碎片标识符、以及所述加密密钥进行加密,将加密后的结果存储在第二区块链上。

进一步地,所述处理器进一步被配置为执行所述程序代码以执行如下操作:对于每一次共识验证,将相关元数据存储在区块链上。

计算机可读存储介质和计算机程序产品

上面描述了根据本发明实施方式的各种方法和用户终端设备,在另一方面,本公开还涉及各种计算机可读存储介质和计算机程序产品。

在一个实施例中,提供一种计算机可读存储介质,包括存储于其上的计算机可执行指令,所述可执行指令在被处理器执行时实施根据本发明实施方式的各种操作。

在一个实施例中,提供一种计算机程序产品1000的框图,如图10所示。信号承载介质1002可以被实现为或者包括计算机可读介质1006、计算机可记录介质1008、计算机通信介质1010或者它们的组合,其存储有可配置处理器执行的先前描述的过程中的全部或一些的编程指令。仅作为示例,在图10中,这些指令可以包括例如用于使一个或多个处理器执行如下处理的一个或多个可执行指令:接收来自与第一用户相关的客户端的针对待存储文件的写入操作消息,该写入操作消息包括:文件碎片,与文件碎片标识符、第一用户的标识符和第二用户标识符相关的信息,以及第一用户的签名,其中,所述第二用户是所述待存储文件的拥有者,并且所述与第一用户相关的客户端将待存储文件划分成多个文件碎片并进行发送;对所述第一用户的签名与所述存储节点网络中的所述第一用户的公钥是否匹配进行共识验证;以及在验证都通过的情况下,将所述多个文件碎片在链下分布式地存储在存储节点网络中。

根据本发明的一个或多个实施方式,展现出了如下优势:(1)提升系统安全,防止数据批量泄露;(2)保护数据隐私,让数据不会随意被浏览;(3)降低存储成本,充分利用了系统中所有机器的存储空间;(4)提升数据的传输效率,多节点(C个)的点对点传输,将传输效率提高了C倍;(5)提升系统稳定性与容错率;(6)在区块链上记录元数据,方便责任追溯。

应当理解,前述的各种示例性方法和装置可以实现在用户终端设备处,其可以利用各种方式来实现,例如,在某些实施方式中,前述各种装置可以利用软件和/或固件模块来实现,也可以利用硬件模块来实现。现在已知或者将来开发的其他方式也是可行的,本发明的范围在此方面不受限制。

特别地,除硬件实施方式之外,本发明的实施方式可以通过计算机程序产品的形式实现。例如,参考图5描述的方法500可以通过计算机程序产品来实现。该计算机程序产品可以存储在RAM、ROM、硬盘和/或任何适当的存储介质中,或者通过网络从适当的位置下载到计算机系统上。计算机程序产品可以包括计算机代码部分,其包括可由适当的处理设备执行的程序指令。

应当注意,本发明的实施方式可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的装置和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本发明的装置及其模块可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合例如固件来实现。

应当注意,尽管在上文详细描述中提及了装置的若干模块或子模块,但是这种划分仅仅并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块的特征和功能可以在一个模块中实现。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。

虽然已经参考目前考虑到的实施方式描述了本发明,但是应该理解本发明不限于所公开的实施方式。相反,本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。以下权利要求的范围符合最广泛解释,以便包含所有这样的修改及等同结构和功能。

以上所述仅为本公开的优选实施例而已,并不用于限制本公开,尽管参照前述实施例对本公开进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号