本发明属于区块链数据安全,具体涉及一种云存储下基于区块链的可审计块级密文重复删除方法。
背景技术:
1、目前云存储的方式正被越来越多的用户所接纳。用户的数据存储于云端服务器,由服务商负责安全存储、管理及维护,保障数据可靠性、可用性和性能。与传统存储本地相比更为灵活,用户可随时访问和管理数据。对于云服务商而言,通过删除重复数据以降低自身存储开销的处理策略同样可以被用户接受。但由于数据真实管理权由用户移交至云服务商,用户对数据的所有权无法得到保证,使得大多存储数据均为密文数据,对于云存储商而言无法通过密文数据进行重复删除,则可能存在半诚实的服务商尝试获取用户信息以解密数据,或直接修改更小的密文数据,由于用户在云存储方式中丧失了数据的所有权,使得用户与云服务商间存在信任危机,区块链中的智能合约作为公开执行的代码维护了双方的信任,由此越来越多的云服务商正部署区块链至云端以解决与用户间的信任危机。但现有的云服务商暂未提供针对密文的重复删除方法并支持审计,使得在区块链下执行并赋予用户对数据的管理权。
技术实现思路
1、本发明的目的是针对现有云架构由于信任危机而接入区块链技术,在实现无信任基础上如何通过审计来实现密文重复删除来降低云服务商的存储开销的同时保证数据所有者对数据的所有权。为实现上述发明目的,本发明提供了一种云存储下基于区块链的可审计块级密文重复删除方法。
2、本发明是通过以下技术方案实现的:
3、一种云存储下基于区块链的可审计块级密文重复删除方法,包括以下步骤:
4、步骤1、用户选择待上传的数据,进行块级分割并进行重复性审计;
5、步骤2、对经步骤1审计通过的数据进行可审计的区块级加密与上传;
6、步骤3、对已上传的云端可审计数据进行验证与解密;
7、步骤4、对已下载的数据进行完整性审计。
8、在上述技术方案中,步骤1按照以下步骤进行:
9、步骤1.1、用户选择待上传的数据,通过转为字节码后计算得到分块数量numchunks,通过循环得到每个区块数据blocksi;
10、步骤1.2、对得到的每个区块数据进行唯一化编码并存储;
11、由fnv哈希函数计算每个区块数据的唯一编码blockidi:
12、并将此16b大小的blockidi存储到文件区块编码集合fileset中;
13、步骤1.3、对各区块数据在本地基于lsh进行重复性审计;
14、在用户选择待上传文件file时,维护一个lsh容器minhashlsh,在每一轮循环时,将此时的区块数据blocksi先在minhashlsh中构建对应的数据指纹blocksig;
15、再将此指纹blocksig在容器minhashlsh中进行重复性查询;
16、如果查询结果result存在表示此数据已存在容器minhashlsh中,重复次数+1,并判断是否达到重复次数阈值numchunks·σ,σ为设置的文件重复率;否则将区块数据的指纹和对应的编码存入容器中。
17、在上述技术方案中,步骤2包括以下步骤:
18、步骤2.1、对审计通过的数据再次分块;
19、步骤2.2、对审计通过的数据进行可审计的区块级加密,生成密文;
20、步骤2.2.1、生成文件加密密钥;
21、从文件区块编码集合fileset中获取此文件file的所有区块编码blockid,对所有区块编码均进行异或计算以得到最终的16b大小文件唯一化编码fileid:
22、
23、再基于sha256哈希函数进行fileid的安全映射以得到文件file加密密钥filekey:
24、filekey=sha256.sum256(fileid)
25、步骤2.2.2、基于文件加密密钥生成密文;
26、在使用aes的ctr模式后,对每个区块数据blocksi,将其初始计数器值iv定义为此区块唯一化编码blockidi:
27、iv=blockidi
28、通过filekey与每个区块对应的初始计数器值iv可得到基于aes加密得到得密文块ctblock:
29、ctblock=aes.newctr(filekey,iv)
30、对每个区块数据按16b大小与密文块进行顺序异或以得到对应的密文数据ciphertext;
31、步骤2.2.3、基于文件级加密密钥实现完整性审计;
32、生成密文后,对所有区块的唯一编码blockid进行异或,再将异或得到的数据fileid′经sha256进行映射,对比映射结果filekey′与文件加密密钥filekey即可完成密文的完整性审计;仅当二者一致则此区块编码blockid完整;
33、步骤2.3、完成密文生成后,进行密文的可审计上传;
34、步骤2.3.1、基于布谷鸟过滤器进行密文重复性审计;
35、调用云端数据容器cuckoofilter,在每一轮循环时,将此时的区块唯一化编码blockidi在cuckoofilter进行添加:
36、result=cuckoofilter.add(blockidi)
37、如果添加结果result=false表示此数据已存在容器cuckoofilter中,重复次数+1,并判断是否达到重复次数阈值numchunks·σ;如果达到该阈值时,表明此数据上传失败,取出已上传区块编码集合blockset中的所有区块编码blockid,并从云端数据容器cuckoofilter中进行删除;
38、如果添加结果result=true,表明此区块数据为首次上传,按以下方式将此区块编码存储到上传区块编码集合blockset中:
39、blockset=blockset∪{blockidi};
40、步骤2.3.2、基于区块链实现密钥托管服务;
41、当重复性审计通过,由云服务商提供云存储空间进行密文ciphertext的云端存储,同时返回可访问的云端连接url,同时用户通过加入区块链并注册对应id:uid,基于区块链提供的api调用区块链的智能合约,将此文件唯一化编码fileid与云端链接url进行交易上链操作,在本地仅保存文件区块编码集合fileset;
42、待上链的数据上传记录表示为txup{},包括:数据上传者uid、已上传的文件唯一化编码fileid、操作时间reqt以及上传者对文件唯一化编码fileid的签名。
43、在上述技术方案中,步骤3包括以下步骤:
44、步骤3.1、对已上传的云端可审计数据进行签名验证与解密密钥生成;
45、数据访问者通过交易记录中的数据上传者uid获取到对应的公钥uid.pk,基于区块链提供的api调用区块链的智能合约实现签名验证;
46、当验证成功表明此签名有效,即可从url中下载密文数据ciphertext′,同时从上传记录txup{}中按如下方式生成对应密文ciphertext′的解密密钥;
47、步骤3.2、对已下载的密文数据进行分块与解密;
48、设置待解密数据:ciphertext′,通过转为字节码后计算得到分块数量numchunks′,
49、通过循环得到每个密文区块的数据内容ctblocksi;
50、对数据上传者,从本地保存的文件区块编码集合fileset中获取已上传文件file的区块编码集合{blockidi},对每个区块唯一编码blockidi与filekey′通过基于aes加密按下式可得到密文块messblock:
51、对每个区块数据按16b大小与密文块messblock进行顺序异或以得到对应的明文数据plaintext;
52、对数据访问者,通过区块链提供的api调用智能合约进行交易请求,由数据上传者通过交易请求返回密文ciphertext′的完整区块编码集合{blockidi},并按上述流程进行数据的解密。
53、在上述技术方案中,步骤4包括以下到:
54、步骤4.1、数据上传者的数据完整性审计;
55、当数据上传者通过区块链的数据上传记录txup{}拿到云端数据下载链接url进行密文数据ciphertext′的下载,当下载的密文数据分块的数量与本地保存的区块编码数量一致时,确定云存储中的密文数据未被篡改;
56、步骤4.2、数据访问者的数据完整性审计;
57、数据访问者对{blockidi}的所有区块编码blockidi进行异或操作以得到对应的文件唯一化编码fileid′;
58、通过对比数据上传记录txup{}中的文件唯一化编码fileid,当下式成立则说明返回的是正确的;
59、fileid′?=fileid
60、如果不成立,则需要进一步进行步骤4.1所述的完整性审计;如果审计仍然不成立,则说明此密文数据已被云服务商进行篡改;
61、步骤4.3、数据本体的完整性审计;
62、对解密后的待审计数据plaintext进行分块,通过循环得到每个区块的数据内容ptblocksi;
63、其中循环次数numchunks是通过步骤4.1过程中计算得到,再通过fnv.new128()计算此时每个区块数据ptblocksi的唯一编码ptblockidi:
64、当满足{blockidi}={ptblockidi},则说明此密文本体通过完整性审计。
65、本发明还提供一种计算机可读存储介质,其存储有计算机程序,所述计算机程序被执行时实现上述的方法的步骤。
66、本发明的优点和有益效果为:
67、本发明的目的是为了解决云存储下解决服务商与用户间的信任问题而引入区块链和改进加密算法实现区块数据的可审计密文重复删除方法。具体来说,本发明针对云存储下用户数据由云服务商管理从而丧失对数据的所有权的问题,设计基于aes的改进加密算法来提供区块级别的密文审计,实现面向云服务商的可审计重复数据删除方法和面向用户的密文完整性审计方法。具体来说将文件进行特定大小的分块,并对此区块进行唯一编码,将此编码数据进行异或以得到文件级别的唯一编码,再针对aes对称加密的ctr模式进行改进,基于aes加密为字节级别,对每一区块的ctr设置为此区块的唯一编码,再结合文件编码进行区块加密,实现文件的密文生成同时可通过此文件的区块编码进行密文解密。再面向云服务商基于区块编码引入布谷鸟过滤器,保证亚线性重复性审计的同时支持索引的删除功能。再面向用户对云服务商的不信任引入区块链技术,将此文件的文件编码进行上链操作,实现文件级别和区块级别的完整性审计。
68、本发明在原有加密基础上仅进行较小的改动,无需过多工作量即可在云端进行部署,可推动云服务商和用户的相互信任,并可提供高级别的数据隐私保护。
1.一种云存储下基于区块链的可审计块级密文重复删除方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的云存储下基于区块链的可审计块级密文重复删除方法,其特征在于:步骤1按照以下步骤进行:
3.根据权利要求1所述的云存储下基于区块链的可审计块级密文重复删除方法,其特征在于:步骤2包括以下步骤:
4.根据权利要求1所述的云存储下基于区块链的可审计块级密文重复删除方法,其特征在于:步骤3包括以下步骤:
5.根据权利要求1所述的云存储下基于区块链的可审计块级密文重复删除方法,其特征在于:步骤4包括以下到: