CN111222176B - 基于区块链的云存储持有性证明方法、系统及介质 - Google Patents
基于区块链的云存储持有性证明方法、系统及介质 Download PDFInfo
- Publication number
- CN111222176B CN111222176B CN202010018187.3A CN202010018187A CN111222176B CN 111222176 B CN111222176 B CN 111222176B CN 202010018187 A CN202010018187 A CN 202010018187A CN 111222176 B CN111222176 B CN 111222176B
- Authority
- CN
- China
- Prior art keywords
- file
- sub
- random data
- data
- files
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于区块链的云存储持有性证明方法、系统及介质,本发明方法中验证者的实施步骤包括:确定随机数据、待验证文件F所指定的k个子文件;)将k个子文件的索引、随机数据发送证明者,等待证明者返回k个子文件的挑战证据R;并从区块链下载k个子文件的元数据并分别根据随机数据计算k个子文件的计算证据Rˊ;判断各个指定子文件的挑战证据R、计算证据Rˊ是否一致,如果任意一个指定子文件的挑战证据R、计算证据Rˊ不一致,则判定待验证文件F的完整性被破坏。本发明能够验证存储在云端的数据的完整性,能够有效避免了第三方审计和云服务提供商(CSP)合谋对用户进行欺骗。
Description
技术领域
本发明涉及云存储持有性证明技术,具体涉及一种基于区块链的云存储持有性证明方法、系统及介质。
背景技术
进入信息化时代,用户每天都要面对海量的信息和数据,一部高清电影动辄需要几十GB的存储空间,处理这些海量的数据对计算机性能提出很高的要求。在后摩尔时代的今天,处理器和存储设备技术进步的速度已经放缓,渐渐跟不上用户的需求,如何在普通用户可以承担的价格范围内使用尽可能多的计算资源是一大问题,而云计算(CloudComputing)的出现则给个人和企业提供了新的思路和解决方案。云计算(CloudComputing)的核心要点在于“云”,即云计算中的计算资源如同天空中的云彩一般具有无定形、灵活、可移动、取之不尽用之不竭等特点。云端通常由一系列服务器和设备通过网络聚合在一起,对于用户来说,云端的计算资源可以近似看作于无限,而用户按需向云端索求资源,使用完毕后再释放。
云计算使得每个用户能在需要的时候可以选择通过支付少量的代价来使用其原本无法负担的计算资源,因此云计算问世后发展迅猛。据统计,在2017年,云计算在全球的市场规模已经达到2602亿美元。同时,在云计算出现后,一系列的“云”技术竞相问世。“云”技术能够使用户以低廉的代价获得大量的计算资源,同样也能给予用户海量的存储资源,云存储(Cloud Storage)概念正是基于此。云存储服务提供商CSP(Cloud StorageProvider,CSP)通过网络将各种设备连接在一起构成云端的存储池,向用户提供低廉便利的存储服务。如今各种云盘、网盘等服务已经很常见,让人们可以便捷的将数据资源存储到云端。云存储给用户带来极大便利的同时也产生了一系列不同于传统存储模式的安全挑战[1]。2017年3月,微软Azure云服务在全球的数据中心遭遇了大面积故障,由于存储出了问题,其他服务也遭到了波及。微软透露称,Azure的28个数据中心中,有26个都出现了存储问题应。2017年5月,AWS S3存储桶数据仓库被爆,至少220万道琼斯公司客户信息被公开,该错误很简单:存储桶权限设置失当,让免费AWS账户都可以访问里面内容。2017年8月,美国芝加哥选举委员会称,在亚马逊云计算服务器上,有180万个注册投票者的信息,包括姓名、地址和出生日期,被暴露在网上。2018年1月18日,Google云自动化机制失效,导致其us-central1和europe-west3两大可用区中的计算引擎停运93分钟。Google对此的回应是“网络编程失效”导致Autoscaler(自动扩展器)服务无法正常运行,该服务失效意味着新的虚拟机或刚迁移的虚拟机无法与其他可用区虚拟机联系。2018年3月2日凌晨,部署在AWS云主机上的部分Alexa开始出现失声问题,该智能音箱的故障指示灯不断闪烁提示服务出现中断。据了解,这一故障源于亚马逊AWS的网络服务出现问题,其他依赖AWS网络服务的应用也在当天也受到了影响,包括云通讯公司Twilio,软件开发公司Atlassian等。2018年6月27日,16:20左右,阿里云出现重大技术故障,16:50分开始陆续恢复,官方给出的故障时间为30分钟左右,恢复时间大概花费一小时。经过技术复盘,阿里给出的故障原因为工程师团队上线自动化运维新功能时,执行了一项变更验证操作,该操作在测试环境中未发生问题,上线后触发未知bug。由此可见,云服务及云存储服务器提供商无法提供100%的数据安全服务,如何确保、及时发现存储在云服务器商之上数据是完整的仍是一项极具挑战的问题。
云模式的开创是互联网领域的一大重要突破,但也引发了一系列新的安全问题。当数据存储在云端时,用户对数据的掌控权十分有限。当发生下列情况:1)云服务提供商(CSP)为节省资源,将用户访问频率低甚至从不访问的数据删除;2)云服务提供商(CSP)的失误操作;3)云服务器硬件故障,如硬盘损毁等;4)黑客的恶意攻击。使得数据的完整性很容易遭到破坏。而云存储服务提供商CSP(Cloud Storage Provider,CSP)很可能为了自身的利益对用户进行欺骗,向用户隐瞒数据完整性被破坏的事实。在存储文件巨大、通信开销巨大以及本地并未存储副本的情况下,用户很难发现自己的数据完整性是否被破坏。当用用户在不知情的情况下使用被破坏的数据或找不到数据,很可能会造成难以估量的损失。因此如何在存储文件巨大、通信开销巨大以及本地并未存储副本的环境下进行高效地数据完整性检测十分重要。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种基于区块链的云存储持有性证明方法、系统及介质,本发明能够验证存储在云端的数据的完整性,当服务提供商因为各种原因使得客户的数据完整性遭到破坏后,能够及时发现并检测到,以便于采取后续补救和维权措施;本发明引入区块链技术,借鉴区块链不可篡改的特性,利用区块链系统将元数据上传至区块链网络,保证元数据不被篡改,能够有效避免了第三方审计和云服务提供商(CSP)合谋对用户进行欺骗。
为了解决上述技术问题,本发明采用的技术方案为:
一种基于区块链的云存储持有性证明方法,验证者的实施步骤包括:
1)确定随机数据、待验证文件F所指定的k个子文件;
2)将k个子文件的索引、随机数据发送证明者,等待证明者返回k个子文件的挑战证据R;并从区块链下载k个子文件的元数据并分别根据随机数据计算k个子文件的计算证据Rˊ;
3)判断各个指定子文件的挑战证据R、计算证据Rˊ是否一致,如果任意一个指定子文件的挑战证据R、计算证据Rˊ不一致,则判定待验证文件F的完整性被破坏。
可选地,步骤2)中分别根据随机数据计算k个子文件的计算证据Rˊ的函数表达式为:
R′=ar′mod N
上式中,a为随机数据中的随机数,a∈{1,N-1},N为RSA模数,r′的函数表达式为:
上式中,ci为随机数据中的第i个伪随机数据,随机数据中的伪随机数据一共k个,ti为第i个子文件的元数据,Φ(N)为欧拉函数。
可选地,步骤2)中验证者将k个子文件的索引、随机数据发送证明者之后,还包括证明者生成k个子文件的挑战证据R的步骤,且生成挑战证据R的函数表达式为:
R=armod N
上式中,a为随机数据中的随机数,a∈{1,N-1},N为RSA模数,r的函数表达式为:
上式中,ci为随机数据中的第i个伪随机数据,随机数据中的伪随机数据一共k个,mi为第i个子文件的分片数据。
可选地,步骤3)中还包括根据指定子文件计算待验证文件F完整性未被破坏的概率Px的步骤,且计算待验证文件F完整性未被破坏的概率Px的函数表达式为:
上式中,n为待验证文件F的子文件数量,m为步骤1)中验证者确定待验证文件F的指定子文件的数量,p为损坏的子文件数量。
可选地,步骤1)之前还包括待验证文件F的持有用户进行初始化处理的步骤,详细步骤包括:
S1)将待验证文件F按照固定大小分割为n个子文件,将n个子文件上传到证明者,生成各个子文件的元数据ti上传至区块链;确定两个指定长度的素数p和q,根据N=p·q计算RSA模数N,根据Φ(N)=(p-1)(q-1)计算欧拉函数Φ(N);确定随机种子S,并根据随机种子S生成多个伪随机数据;
S2)随机指定待验证文件F的k个子文件,将所指定的k个子文件、RSA模数N、欧拉函数Φ(N)、k个伪随机数据发送给验证者。
可选地,步骤S1)中将待验证文件F按照固定大小分割为n个子文件具体是指采用抽样分割法进行分割,所述抽样分割法具体是指将待验证文件F分割为n*a个子文件块并划分为a组,然后分别从每一组子文件块从抽取一个组合形成子文件,从而得到n个子文件。
可选地,步骤S2)之前还包括从第三方审计列表中随机选择一个第三方审计作为验证者的步骤。
此外,本发明还提供一种基于区块链的云存储持有性证明系统,包括:
参数输入程序单元,用于确定随机数据、待验证文件F所指定的k个子文件;
挑战及证据计算程序单元,用于验证者将k个子文件的索引、随机数据发送证明者,等待证明者返回k个子文件的挑战证据R;并从区块链下载k个子文件的元数据并分别根据随机数据计算k个子文件的计算证据Rˊ;
证据验证程序单元,用于验证者判断各个指定子文件的挑战证据R、计算证据Rˊ是否一致,如果任意一个指定子文件的挑战证据R、计算证据Rˊ不一致,则判定待验证文件F的完整性被破坏。
此外,本发明还提供一种基于区块链的云存储持有性证明系统,包括计算机设备,该计算机设备被编程或配置以执行所述的基于区块链的云存储持有性证明方法的步骤,或者该计算机设备的存储器上存储有被编程或配置以执行所述的基于区块链的云存储持有性证明方法的计算机程序。
此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质上存储有被编程或配置以执行所述的基于区块链的云存储持有性证明方法的计算机程序。
和现有技术相比,本发明具有下述优点:
1、本发明能够验证存储在云端的数据的完整性,当服务提供商因为各种原因使得客户的数据完整性遭到破坏后,能够及时发现并检测到,以便于采取后续补救和维权措施;
2、本发明引入区块链技术,借鉴区块链不可篡改的特性,利用区块链系统将元数据上传至区块链网络,保证元数据不被篡改,能够有效避免了第三方审计和云服务提供商(CSP)合谋对用户进行欺骗。
附图说明
图1为本发明实施例方法的基本流程示意图。
图2为本发明实施例的系统的原理图。
图3为本发明实施例普通分割法的分割原理示意图。
图4为本发明实施例抽样分割法的分割原理示意图。
图5为本发明实施例的系统的网络拓扑图。
图6为本发明实施例中所需检查次数和被篡改的数据大小关系曲线。
图7为本发明实施例中新分割法检查次数与损坏数据大小关系曲线。
具体实施方式
如图1所示,本实施例基于区块链的云存储持有性证明方法中验证者的实施步骤包括:
1)确定随机数据、待验证文件F所指定的k个子文件;
2)将k个子文件的索引、随机数据发送证明者,等待证明者返回k个子文件的挑战证据R;并从区块链下载k个子文件的元数据并分别根据随机数据计算k个子文件的计算证据Rˊ;
3)判断各个指定子文件的挑战证据R、计算证据Rˊ是否一致,如果任意一个指定子文件的挑战证据R、计算证据Rˊ不一致,则判定待验证文件F的完整性被破坏。
本实施例中,步骤2)中分别根据随机数据计算k个子文件的计算证据Rˊ的函数表达式为:
R′=ar′mod N
上式中,a为随机数据中的随机数,a∈{1,N-1},N为RSA模数,r′的函数表达式为:
上式中,ci为随机数据中的第i个伪随机数据,随机数据中的伪随机数据一共k个,ti为第i个子文件的元数据,Φ(N)为欧拉函数。
本实施例中,步骤2)中验证者将k个子文件的索引、随机数据发送证明者之后,还包括证明者生成k个子文件的挑战证据R的步骤,且生成挑战证据R的函数表达式为:
R=armod N
上式中,a为随机数据中的随机数,a∈{1,N-1},N为RSA模数,r的函数表达式为:
上式中,ci为随机数据中的第i个伪随机数据,随机数据中的伪随机数据一共k个,mi为第i个子文件的分片数据。
数据持有性证明机制能有效地证明云服务提供商确实存储着用户的数据,是目前检测用户远程数据完整性的有效手段。传统数据持有性证明机制,通常分为数据初始化阶段和数据验证阶段两个阶段。在初始化阶段,对文件进行预处理处理,生成验证阶段需要的元数据,然后将元数据存储到用户本地或可信第三方之上,用于后期完整性验证;在数据验证阶段,用户和可信第三方会周期性对存储在远端的数据发起完整性验证,让存储服务提供商根据存储在自身数据计算证据,并将证据返回给验证者;最后,验证根据事先存储好的元数据比对证据,验证云存储服务器商确实存储着用户的数据。传统数据持有性证明机制虽能有效验验证云存储服务提供商确实存储用户的数据,但带来一个难以回避的问题,既过度依赖验证的第三方和存储在其之上的元数据,一旦元数据丢失或者损坏,将无法再继续发起完整性验证。因此,本课题将提基于区块链系统的数据持有性证明机制,将存储容积不大的验证元数据存储到区块链系统之中,然后利用其提供的api,可以交由任何一个具有验证经验的第三方代或者用户自己完成数据持有性验证。本方法通过引入区块链系统,有效地解决数据过度依赖第三方及验证元数据存储的问题。
基于区块链系统的数据持有性证明机制的总体架构如图2所示,由三个不同的网络实体组成,每个主体扮演的角色如下:用户:需要借助云存储服务器提供商提供数据存储和计算的实体,既可以是普通个人用户,也可以是公司企业或组织机构。云存储服务提供商(Cloud Storage Provider,CSP):具有巨大的存储空间和计算资源的实体,能给用户提供弹性可伸缩所的云存储和计算服务。区块链系统:具有一定存储能力、数据不可篡改的区块链系统,对外提供标准的数据访问api。借助API,任意第三方能对存储在云存储服务提供商中的数据执行数据完整性验证,包括数据持有性验证和可恢复验证。由于本实施例采用基于区块链系统,具有去中心化的特征,用户可以委托任意第三方用户,根据客户的要求,代表客户评估和揭露云存储服务的风险。区块链(Blockchain)顾名思义是由一个个区块组成的链状结构,每一个区块包含了上一个区块的相应信息以及交易数据,存储在区块链网洛的每一个结点上。每个结点在地位上都是平等的,不存在哪一个特殊的或拥有绝对权威的节点。每个结点上都存储有区块链的所有信息,因此区块链上的信息由所有结点通过共识算法得出。因此如果想要修改区块链上的信息,仅修改某几个重要节点的信息是无效的,必须同时修改超过半数的结点的信息,这显然是不现实的。区块链的本质是一个去中心化的分布式数据库,与传统数据库不同,它不是将信息保持在一个中心点,而是将相同数据的多个副本存储在网络上的不同位置和不同设备上,例如计算机或打印机。这被称为对等(P2P)网络。这意味着即使一个存储点被损坏或丢失,多个副本仍然在其他地方安全可靠。同样,如果在未经合法所有者同意的情况下更改了一条信息,则存在无数其他示例,其中信息为真,使得错误记录过时。由于区块链是去中心化的,所以并不存在哪一个可信的中心化结点,交易数据由各个结点通过共识算法得出。也就是说,想要篡改或伪造数据必须掌握绝大多数结点,即掌控51%的数据结点,这显然是不现实的。所以可以认为区块链具有不可篡改的特点。
本实施例中,步骤3)中还包括根据指定子文件计算待验证文件F完整性未被破坏的概率Px的步骤,且计算待验证文件F完整性未被破坏的概率Px的函数表达式为:
上式中,n为待验证文件F的子文件数量,m为步骤1)中验证者确定待验证文件F的指定子文件的数量,p为损坏的子文件数量。本实施例将从统计概率学角度分析文件损坏被验证机制识别出来的概率。假定存储文件F,用户在将文件存到云存储服务提供商之前,先对文件进行分块,分为n个子文件,之后将文件F和文件分块规则上传至云存储服务提供商。倘若攻击者损坏为文件任意位置的数据,根据分块规则,有p(p<n)个数据块遭受了损坏,我们用Px表示文件损坏后被识别的概率,简称损坏识别率。以下将判断每次验证识别这次文件损坏行为的概率,用X表示文件中损坏数据块的数目,用P{X≥1}表示损坏的数据块超过1个的概率。每次n个数据块中,随机的抽取m个数据块用于验证文件的完整性。由于:
上式中,i表示子文件的序号。因此,可以得到结论:
如果对一文件的数据分块为105块,则可以得到以下文件损坏识别率表1所示:
文件损坏率 | 以超过99%的概率检测到数据损坏所需最少块数 |
0.01% | 46050 |
0.1% | 4603 |
0.5% | 919 |
1% | 459 |
2% | 228 |
3% | 152 |
4% | 113 |
5% | 90 |
根据表1可以看出,在把数据切割成105块的情况下,当原数据文件中有0.01%的数据遭到破坏,即有10块数据的完整性被损坏,那么需要检测46050个随机数据块就可以认为有超过99%的机率检测到数据完整性被破坏;当原数据文件中有100块数据的完整性遭到破坏,那么需要检测4603个随机数据块就可以认为有超过99%的机率检测到数据完整性被破坏;当原数据文件中有1000块数据的完整性遭到破坏,那么需要检测459个随机数据块就可以认为有超过99%的机率检测到数据完整性被破坏;原数据文件中有5000块数据完整性遭到破坏,那么只需要检测90个随机数据块就可以认为有超过99%的机率检测到数据完整性被破坏。
本实施例中,步骤1)之前还包括待验证文件F的持有用户进行初始化处理的步骤,详细步骤包括:
S1)将待验证文件F按照固定大小(分割为n个子文件,将n个子文件上传到证明者,生成各个子文件的元数据ti上传至区块链;确定两个指定长度(本实施例中为1024bit)的素数p和q,根据N=p·q计算RSA模数N,根据Φ(N)=(p-1)(q-1)计算欧拉函数Φ(N);确定随机种子S,并根据随机种子S生成多个伪随机数据;欧拉函数Φ(N)要作为秘密信息不被公开,仅被验证者知晓;
S2)随机指定待验证文件F的k个子文件,将所指定的k个子文件、RSA模数N、欧拉函数Φ(N)、k个伪随机数据发送给验证者。
考虑到存储到云端的数据通常是大文件数据,为了便于后续数据持有性验证,通常需要先对文件分块,分成多个子文件,并计算验证元数据。具体分为两个阶段,初始化阶段S1)~S1)和挑战阶段1)~3)。
引理:给两个整数X,N(可以作为RSA的公钥和模数)很难计算出满足:
上式中Φ(N)为欧拉函数。
本实施例中,初始化阶段:对原文件进行分割,将其分割为多个子文件。先用SHA256算法获取每个子文件的SHA256哈希值。(SHA256是一种目前比较高效且安全的哈希算法,通过输入文件或数据,输出其对应的256位哈希值)再利用RSA算法构造每个子文件哈希值的同态标签,得到子文件哈希值的标签集合,即元数据集合。将原文件发送至云服务提供商(CSP)处存储,删除本地副本,将元数据上传至区块链保存。挑战阶段:在多个第三方审计(TPA)构成的序列中随机选择一个,授权被选中的第三方审计(TPA)从区块链上下载元数据集合。被授权审计随机选择若干个子文件生成挑战信息向云服务提供商(CSP)发起挑战,云服务提供商接受来自第三方审计(TPA)的挑战,产生相应应答,将应答传回第三方审计(TPA)。第三方审计(TPA)接收应答后判断数据完整性是否被破坏。挑战阶段持续进行,一直保持云端数据的完整性。
作为一种可选的实施方式,可将待验证文件F按照固定大小分割为n个子文件(部分1~部分n)为连续分割的方式,如图3所示。作为另一种可选的实施方式,如图4所示,本实施例步骤S1)中将待验证文件F按照固定大小分割为n个子文件具体是指采用抽样分割法进行分割,所述抽样分割法具体是指将待验证文件F分割为n*a个子文件块并划分为a组,然后分别从每一组子文件块从抽取一个组合形成子文件,从而得到n个子文件(部分1~部分n)。
考虑到文件的损毁具有空间局部性,即文件完整性被破坏时,大多数情况下是连续存储的一部分文件损毁,因此可以通过改变文件分割的方法来提升成功检测率。图3所示原分割方法是按照自然顺序对文件连续分割,倘若文件受损,受损文件易集中于相邻的几个子文件中。故本实施例中采用图4所示抽样分割的方法进一步改善抽样效果。改善后,每个子文件隔一个chunksize读取原文件的一部分,故新的子文件包含原方法中的每个子文件的一部分,当文件受损后,会有更多的子文件发生改变,更利于检测。
本实施例中,步骤S2)之前还包括从第三方审计列表中随机选择一个第三方审计作为验证者的步骤。如图5所示,用户通过安全信息流将云文件上传至云服务提供商(CSP),将元数据上传至区块链网络。用户从多个第三方审计中随机选取一个担任验证者角色,并授权他从区块链网络下载元数据集合。被选中第三方审计(TPA)从区块链网络下载元数据后持续对云服务提供商(CSP)发起挑战,云服务提供商(CSP)应答第三方审计(TPA)的挑战,并依此检验数据完整性是否被破坏,将结果返回用户。
下文将从准确性和开销两个层面,对本实施例基于区块链的云存储持有性证明方法进行进一步的验证。
(一)准确性
数据持有性证明的根本目的是保护数据完整性,因此对数据完整性的检测准确性是处于第一位的。元数据是对文件进行哈希后取其同态标签值,由于哈希函数的构造可以知道当原文件发生改变文件哈希值也随之改变,即使是一个比特的变化也会导致文件哈希值发生巨大改变。同时,想要构造出两份哈希值相同的文件,在理论上是不可行的。因此只要数据发生改变,即完整性被破坏,其生成的证据也会改变,无法通过第三方审计(TPA)的检验。为了测试检测准确性,进行对文件破坏的模拟:指定某个子文件,对其进行了增删改等破坏其数据完整性的操作,破坏程度小至一个比特,大至删改整个文件。通过对指定文件进行检测,实验结果表明基于区块链的数据持有性证明机制能有效发现数据完整性是否被破坏,准确率为100%。虽然对指定文件的检测准确率能够达到100%,但在机制实际工作过程中,采取的是分块验证抽样检测的方法,所以是否能有效地检测到数据完整性被破坏,还需要考虑到文件分割数目、文件损毁率等因素。
如上面所证明的,在把数据切割成105块的情况下,当原数据文件中有0.01%的数据遭到破坏,即有10块数据的完整性被损坏,那么需要检测46050个随机数据块就可以认为有超过99%的机率检测到数据完整性被破坏;当原数据文件中有100块数据的完整性遭到破坏,那么需要检测4603个随机数据块就可以认为有超过99%的机率检测到数据完整性被破坏;当原数据文件中有1000块数据的完整性遭到破坏,那么需要检测459个随机数据块就可以认为有超过99%的机率检测到数据完整性被破坏;原数据文件中有5000块数据完整性遭到破坏,那么只需要检测90个随机数据块就可以认为有超过99%的机率检测到数据完整性被破坏。
由于对文件多处进行修改情况较为复杂,且仅修改单处也能很好检验本实施例实现机制的准确性,故在模拟中仅模拟对文件单处进行修改的情况。在模拟环境中对机制运行本实施例建立的基于区块链的数据持有性证明机制:将文件分割为1000个子文件,每个子文件大小为1MB。随机对原文件某一位置进行修改,所需检查次数和被篡改的数据大小关系如图5所示:从图6可以看出当文件损毁率比较小的时候,仍然需要检测大量的子文件才能检测到数据完整性被破坏。本实施例中,保持模拟环境不变,测试抽样分割方法效果如图7所示。将图6与图7对比可以得出,当损坏数据特别小和特别大时两种分割方法的、所需检测次数没有太大区别,但当损坏数据处于中等大小,即本次模拟中的100B-1000KB时,抽样分割法所需的检测次数明显少于原方法。因此可知,在文件中多处数据完整性被破坏的情况下,抽样分割法优于原方法。
(二)开销
空间开销:1)用户:在准备阶段,用户将文件传至云端,删除本地副本,将元数据上传至IPFS网络,由于IPFS网络上的数据不可篡改,所以本地也无需保留元数据副本。在挑战阶段,用户只需定期随机选择第三方审计(TPA)进行对云服务提供商(CSP)进行挑战即可,空间开销可以忽略。2)第三方审计(TPA):在准备阶段,任务主要由用户完成,第三方审计(TPA)没有空间开销。在挑战阶段,被选中的第三方审计(TPA)得到用户授权后从IPFS网络下载元数据集合,然后对云服务提供商(CSP)发起持续挑战。对云服务提供商(CSP)发起持续挑战过程中,第三方审计(TPA)每一次验证就需要下载一个子文件,在验证通过后即可删除该子文件,空间开销可以忽略。整体来看,用户无需承担额外的空间开销,而第三方审计(TPA)仅需承担元数据集合的空间开销,每个元数据可以看做一个哈希值进行模运算后的结果。哈希算法采用的是SHA256算法,输出为256bit的哈希值,但在存储时按16进制存储,即每个哈希值大小为64B。在将文件分割为n份的情况下,第三方审计(TPA)承担的空间开销为64nB,显然是一个很小的开销。
时间开销:
1)用户:在准备阶段,用户主要承担数据分割、元数据生成、上传和文件传至云端的任务。数据分割的速率受限于文件读取速度,在加入多线程读取后,速率有了一定提升,但很有限。由于采取新的分割方法,需将文件读取两遍,故数据分割所需时间开销基本为两倍读取原文件的时间开销。由前文的分析可知,元数据生成、上传的时间开销可忽略。文件上传至云端的时间开销主要取决于选择的协议、机器性能和网络状况等,课题中由两台Ubuntu虚拟机担任用户和云服务器,采取桥接模式,主机连接手机热点进行通信。经测试,文件传输速度约为28M/s-33M/s,视网络情况有一定波动。在挑战阶段,用户只需定期随机选择第三方审计(TPA)进行对云服务提供商(CSP)进行挑战即可,时间开销可以忽略。2)第三方审计(TPA):在准备阶段,第三方审计(TPA)不承担任务,故不存在时间开销。在挑战阶段,第三方审计(TPA)先从IPFS网络下载元数据集合,根据前面的分析可知元数据集合很小,故下载时间可以忽略。下载元数据后,第三方审计(TPA)持续从云服务提供商(CSP)下载子文件进行检验,检验阶段所做的计算较为简单,时间可以忽略不计。从云服务提供商(CSP)下载子文件的速率取决于双方所采用的系统、网络设备、通信协议和网络状况等。整体来看,用户承担的时间开销为两倍读取原文件的时间和将数据上传到云端的时间。而第三方审计(TPA)承担的时间开销为持续从云服务提供商(CSP)下载子文件的开销。
对准确性和开销进行了测试与分析可知:准确性方面,本实施例基于区块链的云存储持有性证明方法针对指定文件的检测成功率为100%,改善分割方法后的机制运行期间检测成功率有了明显提高。开销方面,本实施例基于区块链的云存储持有性证明方法的用户几乎不需要承担额外的空间开销,时间开销基本为两倍读取原文件的时间和将数据上传到云端的时间。而第三方审计(TPA)的空间开销也可忽略,时间开销为持续下载子文件所需的时间。
综上所述,本实施例基于区块链的云存储持有性证明方法通过采用RSA同态签名和将文件分割,来进行分块验证抽样检测,大大降低了开销。同时通过引入区块链技术,随机选择第三方审计(TPA),解决第三方审计(TPA)不可信的问题,构成一个完整的云环境下的数据完整性检测验证机制。其主要采用了下述手段:
(1)采用分块验证,抽样检测的思想
由于存储在云端的文件十分巨大,对其完整地进行检测所需要的计算资源和通信开销十分巨大,尤其是在要定期对其进行检测的情况下。因此采取分块验证、抽样检测的思想,对文件进行分割后,每次随机抽取文件中的若干块进行检测。可以计算出,在把数据切割成〖10〗^5块的情况下,当原数据文件中有0.01%的数据遭到破坏,即有10块数据的完整性被损坏,那么需要检测46050个随机数据块就可以认为有超过99%的机率检测到数据完整性被破坏;当原数据文件中有100块数据的完整性遭到破坏,那么需要检测4603个随机数据块就可以认为有超过99%的机率检测到数据完整性被破坏;当原数据文件中有1000块数据的完整性遭到破坏,那么需要检测459个随机数据块就可以认为有超过99%的机率检测到数据完整性被破坏;原数据文件中有5000块数据完整性遭到破坏,那么只需要检测90个随机数据块就可以认为有超过99%的机率检测到数据完整性被破坏。同时,本实施例采用抽样分割的方法,进一步减少检测到文件损坏所需的次数。
(2)引入区块链去中心化存储技术
由于对云服务提供商(CSP)的不信任,用户需定期对其进行检验。由于计算资源等的受限,可以引入第三方审计(TPA)来协助用户进行验证,但同时也产生了对第三方审计(TPA)的信任问题。若是再引进第四者对来担任审计的审计,又会产生对第四者的信任。要想构建起一条坚实的信任链,就至少有一个可以绝对信任的结点。用户本身当然是可信的,但其由于资源受限等因素无法担任这个可信结点。因此,通过引入区块链技术,利用区块链的不可篡改特性来担任这个可信结点以此解决第三方审计(TPA)不可信问题。
(3)建立基于区块链的数据持有性证明机制并测试分析
实验中,本实施例利用三台Ubuntu虚拟机分别担任用户、云服务提供商(CSP)和第三方审计(TPA)三个角色,担任审计的虚拟机上建立多个用户来表示多个第三方审计,利用Python编程和星际文件系统IPFS来模拟整个基于区块链的数据持有性证明机制。经过测试与分析整个机制运行良好,能有效地保护数据完整性。测试中,对文件进行了修改,通过对指定文件的检测,能立即发现文件完整性被破坏,准确率达到100%。在实际运行中,也能以优于原机制的效率检测到文件受损。
此外,本实施例还提供一种基于区块链的云存储持有性证明系统,包括:
参数输入程序单元,用于确定随机数据、待验证文件F所指定的k个子文件;
挑战及证据计算程序单元,用于验证者将k个子文件的索引、随机数据发送证明者,等待证明者返回k个子文件的挑战证据R;并从区块链下载k个子文件的元数据并分别根据随机数据计算k个子文件的计算证据Rˊ;
证据验证程序单元,用于验证者判断各个指定子文件的挑战证据R、计算证据Rˊ是否一致,如果任意一个指定子文件的挑战证据R、计算证据Rˊ不一致,则判定待验证文件F的完整性被破坏。
此外,本实施例还提供一种基于区块链的云存储持有性证明系统,包括计算机设备,该计算机设备被编程或配置以执行本实施例前述的基于区块链的云存储持有性证明方法的步骤。
此外,本实施例还提供一种基于区块链的云存储持有性证明系统,包括计算机设备,该计算机设备的存储器上存储有被编程或配置以执行本实施例前述的基于区块链的云存储持有性证明方法的计算机程序。
此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有被编程或配置以执行本实施例前述的基于区块链的云存储持有性证明方法的计算机程序。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (8)
1.一种基于区块链的云存储持有性证明方法,其特征在于验证者的实施步骤包括:
1)确定随机数据、待验证文件F所指定的k个子文件;
2)将k个子文件的索引、随机数据发送证明者,等待证明者返回k个子文件的挑战证据R,且证明者生成挑战证据R的函数表达式为:
R=armod N
上式中,a为随机数据中的随机数,a∈{1,N-1},N为RSA模数,r的函数表达式为:
上式中,ci为随机数据中的第i个伪随机数据,随机数据中的伪随机数据一共k个,mi为第i个子文件的分片数据;并从区块链下载k个子文件的元数据并分别根据随机数据计算k个子文件的计算证据R′,且计算证据R′的函数表达式为:
R′=ar′mod N
上式中,a为随机数据中的随机数,a∈{1,N-1},N为RSA模数,r′的函数表达式为:
上式中,ci为随机数据中的第i个伪随机数据,随机数据中的伪随机数据一共k个,ti为第i个子文件的元数据,Φ(N)为欧拉函数;
3)判断各个指定子文件的挑战证据R、计算证据R′是否一致,如果任意一个指定子文件的挑战证据R、计算证据R′不一致,则判定待验证文件F的完整性被破坏。
3.根据权利要求1所述的基于区块链的云存储持有性证明方法,其特征在于,步骤1)之前还包括待验证文件F的持有用户进行初始化处理的步骤,详细步骤包括:
S1)将待验证文件F按照固定大小分割为n个子文件,将n个子文件上传到证明者,生成各个子文件的元数据ti上传至区块链;确定两个指定长度的素数p和q,根据N=p·q计算RSA模数N,根据Φ(N)=(p-1)(q-1)计算欧拉函数Φ(N);确定随机种子S,并根据随机种子S生成多个伪随机数据;
S2)随机指定待验证文件F的k个子文件,将所指定的k个子文件、RSA模数N、欧拉函数Φ(N)、k个伪随机数据发送给验证者。
4.根据权利要求3所述的基于区块链的云存储持有性证明方法,其特征在于,步骤S1)中将待验证文件F按照固定大小分割为n个子文件具体是指采用抽样分割法进行分割,所述抽样分割法具体是指将待验证文件F分割为n*a个子文件块并划分为a组,然后分别从每一组子文件块中 抽取一个组合形成子文件,从而得到n个子文件。
5.根据权利要求3所述的基于区块链的云存储持有性证明方法,其特征在于,步骤S2)之前还包括从第三方审计列表中随机选择一个第三方审计作为验证者的步骤。
6.一种基于区块链的云存储持有性证明系统,其特征在于包括:
参数输入程序单元,用于确定随机数据、待验证文件F所指定的k个子文件;
挑战及证据计算程序单元,用于验证者将k个子文件的索引、随机数据发送证明者,等待证明者返回k个子文件的挑战证据R,且证明者生成挑战证据R的函数表达式为:
R=armod N
上式中,a为随机数据中的随机数,a∈{1,N-1},N为RSA模数,r的函数表达式为:
上式中,ci为随机数据中的第i个伪随机数据,随机数据中的伪随机数据一共k个,mi为第i个子文件的分片数据;并从区块链下载k个子文件的元数据并分别根据随机数据计算k个子文件的计算证据R′,且计算证据R′的函数表达式为:
R′=ar′mod N
上式中,a为随机数据中的随机数,a∈{1,N-1},N为RSA模数,r′的函数表达式为:
上式中,ci为随机数据中的第i个伪随机数据,随机数据中的伪随机数据一共k个,ti为第i个子文件的元数据,Φ(N)为欧拉函数;
证据验证程序单元,用于验证者判断各个指定子文件的挑战证据R、计算证据R′是否一致,如果任意一个指定子文件的挑战证据R、计算证据R′不一致,则判定待验证文件F的完整性被破坏。
7.一种基于区块链的云存储持有性证明系统,包括计算机设备,其特征在于,该计算机设备被编程或配置以执行权利要求1~5中任意一项所述的基于区块链的云存储持有性证明方法的步骤,或者该计算机设备的存储器上存储有被编程或配置以执行权利要求1~5中任意一项所述的基于区块链的云存储持有性证明方法的计算机程序。
8.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有被编程或配置以执行权利要求1~5中任意一项所述的基于区块链的云存储持有性证明方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010018187.3A CN111222176B (zh) | 2020-01-08 | 2020-01-08 | 基于区块链的云存储持有性证明方法、系统及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010018187.3A CN111222176B (zh) | 2020-01-08 | 2020-01-08 | 基于区块链的云存储持有性证明方法、系统及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111222176A CN111222176A (zh) | 2020-06-02 |
CN111222176B true CN111222176B (zh) | 2022-09-23 |
Family
ID=70829366
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010018187.3A Active CN111222176B (zh) | 2020-01-08 | 2020-01-08 | 基于区块链的云存储持有性证明方法、系统及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111222176B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111711627B (zh) * | 2020-06-16 | 2023-03-31 | 湖南天河国云科技有限公司 | 一种基于区块链的工业互联网数据安全监控方法及系统 |
CN111898114A (zh) * | 2020-07-15 | 2020-11-06 | 浙江甬恒科技有限公司 | 一种智能预警式知识产权监控管理平台 |
CN112261020B (zh) * | 2020-10-15 | 2022-05-17 | 中国电子科技集团公司第五十四研究所 | 一种分布式远程外包数据审计方法 |
CN112632604B (zh) * | 2020-12-21 | 2024-01-23 | 贵州航天计量测试技术研究所 | 基于多授权审计者的云数据审计方法、系统及装置 |
CN116579025A (zh) * | 2021-04-20 | 2023-08-11 | 支付宝(杭州)信息技术有限公司 | 一种文件存证方法、装置及设备 |
CN114531296A (zh) * | 2022-03-04 | 2022-05-24 | 苏州麦瑶信息科技有限公司 | 一种数据传输过程完整性的检测方法 |
CN115604014A (zh) * | 2022-10-24 | 2023-01-13 | 郑州师范学院(Cn) | 一种数据完整性审计方法、设备及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109829326B (zh) * | 2018-11-20 | 2023-04-07 | 西安电子科技大学 | 基于区块链的跨域认证与公平审计去重云存储系统 |
CN109889497B (zh) * | 2019-01-15 | 2021-09-07 | 南京邮电大学 | 一种去信任的数据完整性验证方法 |
-
2020
- 2020-01-08 CN CN202010018187.3A patent/CN111222176B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111222176A (zh) | 2020-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111222176B (zh) | 基于区块链的云存储持有性证明方法、系统及介质 | |
Tan et al. | A survey on proof of retrievability for cloud data integrity and availability: Cloud storage state-of-the-art, issues, solutions and future trends | |
Zafar et al. | A survey of cloud computing data integrity schemes: Design challenges, taxonomy and future trends | |
CN111355705B (zh) | 一种基于区块链的数据审计与安全去重云存储系统、方法 | |
US8850185B1 (en) | Post attack man-in-the-middle detection | |
US8458451B2 (en) | Database outsourcing with access privacy | |
US9270467B1 (en) | Systems and methods for trust propagation of signed files across devices | |
CN113221166A (zh) | 一种获取区块链数据的方法、装置、电子设备及存储介质 | |
Yuchuan et al. | Enable data dynamics for algebraic signatures based remote data possession checking in the cloud storage | |
Priyadharshini et al. | Data integrity in cloud storage | |
He et al. | Public integrity auditing for dynamic regenerating code based cloud storage | |
CN115248919A (zh) | 一种函数接口的调用方法、装置、电子设备及存储介质 | |
CN111565234A (zh) | 一种副本文件的云安全存储方法、介质及设备 | |
US9860230B1 (en) | Systems and methods for digitally signing executables with reputation information | |
CN118401178A (zh) | 用于创建和维护数据的不变性、一致性和可用性的系统和方法 | |
Tu et al. | Privacy‐Preserving Outsourced Auditing Scheme for Dynamic Data Storage in Cloud | |
CN104092733B (zh) | 一种基于hdfs的可信分布式文件系统 | |
CN112115101B (zh) | 一种云存储中数据的确定性删除方法及系统 | |
Thakur et al. | Data integrity techniques in cloud computing: an analysis | |
El Balmany et al. | Secure virtual machine image storage process into a trusted zone-based cloud storage | |
CN113411191B (zh) | 数据审计方法及装置 | |
Vasilopoulos et al. | POROS: proof of data reliability for outsourced storage | |
US11435907B2 (en) | Ensuring data authenticity using notary as a service | |
Daniel et al. | ES-DAS: An enhanced and secure dynamic auditing scheme for data storage in cloud environment | |
GB2546135A (en) | Robust computing device identification framework |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |