一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于可信硬件的安全云数据去重方法及系统与流程

2022-02-20 05:09:06 来源:中国专利 TAG:


1.本发明属于数据去重技术领域,特别涉及一种基于可信硬件的安全云数据去重方法及系统。


背景技术:

2.在海量数据当中,存在着大量的冗余数据,这些重复数据浪费了云服务器当中的存储空间。为了缓解存储压力,减少网络通信的开销,数据去重技术被应用于云存储系统当中。该技术只在云存储中保留相同文件的一个备份,从而极大地节省了存储成本。
3.现有技术的缺陷和不足:
4.1.数据去重方案中往往需要客户端和服务端之间频繁的进行通信,现有的解决方案大多缺乏对在不可信环境下数据安全的考虑,用户的信息在去重过程当中可能会被敌手窃取击,原始数据以及隐私信息因此被泄露;
5.2.现有方案往往欠缺对数据完整性的保障,恶意的用户可能会上传与标签不一致的数据,而半可信的云存储平台可能会由于外部攻击与内部攻击而损坏外包数据,因此数据的完整性可能会被破坏;
6.3.如何保证用户与服务端的通信安全问题,防止在通信过程中受到恶意攻击,是去重方案中的一项难题。


技术实现要素:

7.本发明的目的在于提供一种基于可信硬件的安全云数据去重方法及系统,以解决上述问题。
8.为实现上述目的,本发明采用以下技术方案:
9.一种基于可信硬件的安全云数据去重方法,包括以下步骤:
10.首先对原文件进行数据加密与标签生成,随后将加密文件与相应的标签发送至云存储平台,云存储平台经过对标签的重复检测后存储不存在相同副本的将加密文件,并赋给与对于该文件的权限。
11.进一步的,云存储平台所配备的可信硬件区域为完全可信的服务器,每个被设置好的可信硬件内部都包含一个唯一的密封密钥sk;用户首先生成对原始数据的哈希,与可信硬件进行远程认证成功后,将哈希发送至可信硬件内,之后enclave使用该密封密钥sk对文件哈希进行盲签名,用户收到盲签名后进行解盲,并且将得到的安全签名作为加密密钥;相同的文件哈希在同一个可信硬件内获得相同的签名,相同的文件会生成相同的加密密钥,使用对称加密来加密文件数据,保证数据去重的可行性。
12.进一步的,文件分块聚合步骤在client中进行,首先比较文件长度与公共参数中α的大小关系;若小于α则无需进行文件的分块集合过程,直接生成整个文件的哈希h;否则进行分块聚合,计算表示块集合的个数,向上取整,根据pub中的m来确定块集合中块的个数,生成块集合bi,并计算出哈希hi。
13.密钥生成步骤由client与cenclave共同完成;首先两者之间进行远端认证,若认证失败则返回错误信息,成功则继续进行;client根据前一个步骤确定文件是否分块,分别将文件哈希或块集合哈希发送至cenclave,cenclave利用可信区域的密封密钥s_k分别进行盲签名,client收到盲签名后进行解盲,如下公式分别计算出文件加密密钥与块集合加密密钥;
14.k=h

·
r-1
(mod n)
15.数据加密步骤由client完成,利用对称加密分别对文件或块集合进行加密,使用上一阶段生成的相应加密密钥完成加密过程,如下式所述;数据加密完成后,密文暂时保存在client中;
16.c=enc(kf,f)。
17.进一步的,标签生成分为两部分:文件标签生成、块集合标签生成;对文件在有限域内生成了一个文件名,并且利用索引生成对应的块集合索引值,将该值映射到有限域内,并且计算出相应的验证值,利用验证值可以进行后续的标签一致性检测过程。
18.进一步的,分为三个步骤:文件标签生成、块集合标签生成、标签集合生成;三个步骤均在client中执行;
19.其中在文件标签生成步骤,首先给文件在有限域内设置一个文件名namef,之后生成文件标签tf=h(f);块标签生成步骤,使用相应的文件名namef、上文选择的随机种子 x和块集合索引i,生成验证值βi=f(namef,x,i),并且将βi映射到乘法群的生成元上:随后根据前一个验证值与块集合数据生成第二个验证值δi如公式如公式最后进行标签集合生成过程,生成标签集合t如公式最后进行标签集合生成过程,生成标签集合t如公式随后生成的标签集合t将由client发送至cenclave。
20.进一步的,重复检测分为两部分:文件标签对比、块集合标签对比;如果文件标签存在重复,则此流程结束,不用进行存储过程;如果不存在重复的文件标签,则继续进行块标签的对比,对比完成之后生成字符串,该字符串记录了所有块集合是否存在相同副本的信息,根据此字符串上传密文数据,完成数据去重的过程,在文件标签对比过程中采用了 oram的读取方式,在块集合标签查找时,直接进行显式的读取,以此达到去重效率与时间开销的平衡。
21.进一步的,在重复检测步骤,cenclave收到标签集合t,首先以oram的读取方式对比文件标签,如果存在相同的文件副本,则无需进行后续的上传与存储过程,直接结束流程并进行所有权证明;如果不存在相同的文件标签,则继续进行块集合标签的对比,如果至少存在一个块集合标签相等,则创建一个字符串s:s=s1s2…
sd,当存在一个云存储中的块集合标签ts=ti时,时si=1,否则si=0;如果没有一个块集合标签相等,则令s= null;由此字符串s记录了块标签的重复信息;
22.在待上传数据生成步骤,根据字符串s生成需要上传的数据密文c

。如果s不为null,则根据字符串s中记录的信息将相应的块集合填入,生成c

=c1′
c2′…cd

;如果s为null,则说明没有任何块集合重复,此时密文c

=c1,c2…cd
,将所有块集合密文填入;随后client 将待上传的密文传输至云存储平台。
23.进一步的,一种基于可信硬件的安全云数据去重系统,包括数据加密模块用于对
原文件进行数据加密;
24.标签生成模块用于对原文件进行标签生成;
25.去重模块用于将加密文件与相应的标签发送至云存储平台,云存储平台经过对标签的重复检测后存储不存在相同副本的将加密文件,并赋给与对于该文件的权限。
26.与现有技术相比,本发明有以下技术效果:
27.本发明在云存储平台中配置了安全的可信硬件区域th,所有与用户文件隐私相关的算法与操作都将在可信硬件中实现,在其中运行的代码称之为cenclave。用户要和云存储平台进行通信之前,要与th进行远程认证以保证数据的安全传输,当th接收到用户传输的数据之后,将与云存储服务器css进行oram隐式读取,实现安全的去重过程。
28.在本方案中,对于不同大小的文件实行不同粒度的去重模式。若用户上传的文件数据量不大,或者用户数据的隐私程度较高而不愿意进行跨用户的文件块去重,则无需对这些文件进行分块处理,直接生成整个文件的标签并且进行重复检测;若用户的文件数据量较大且没有特殊的隐私需求,则对其进行块级的重复去重方案,以块标签做为去重粒度进行重复检测,进行文件分块之后对用户文件先进行文件级的重复检测,之后再进行块级的重复检测,以此达到最佳的去重效率。
29.在本方案中对文件的收敛密钥进行一个由th完成的签名过程,其用密封秘钥对密钥进行盲签名,client收到该签名后进行去盲而得到一个唯一且私密的密钥,由于拥有相同文件的用户一定会生成相同的密钥,因此我们的方案在避免了离线字典攻击的情况下生成了支持重复去重的加密密钥;
30.本方案实现了细粒度的块级重复去重,虽然增加了算法的复杂度和执行时间,但是提高了跨用户重复去重的效率。为了实现去重效率和运行时间的相互平衡,本方案采取了将文件分块之后再聚合成为块集合的设计,而文件分块的大小与块集合内数据块的个数均由系统参数决定,这一设置使得本系统具有较高的灵活性,在实际应用当中可以根据不同的情况进行不同的系统参数设置,以便达到不同的最终效果;
31.本方案对于标签的查找过程进行了安全保护方面的考虑,对文件级和块级的标签查找进行了两种不同的方案实现。th内的安全区是一个绝对的可信区域,因此用户的标签可以暴露在th的可信区域中而css是需要隐藏的。对于文件级的去重过程,数据的标签由客户端通过安全通道传输至th,cenclave通过oram的隐藏式读取方式读取存储在css存储的文件标签列表,随后用来做标签的对比;对于不存在文件标签重复的块标签,此时云存储当中没有相同的文件标签以及该文件的所有文件块,css和恶意第三方无法猜测原文件的标签以及明文,而块数量较多的情况下如果使用oram的读取方式会导致效率的下降,因此本方案对于块标签的重复检测采取显示的读取方式,以此达到安全性和效率的平衡;
32.在所有权证明阶段,如存在相同的文件标签则需要进行所有权证明,服务器向客户端发起一个挑战,客户端生成文件的签名私钥和签名公钥最后聚合成文件签名发送给服务器,服务器则找出文件标签所对应的签名并且进行聚合,最后和收到的签名做出对比,如果一致则证明用户拥有该文件。为了防止数据伪造攻击,本方案在存储数据之前设计了标签一致性检测的过程,以此证明块集合的密文是从相应的密文产生的。
附图说明
33.图1基于可信硬件的安全云数据去重方案系统模型;
34.图2可信硬件与云存储服务器交互过程;
35.图3文件分块与聚合过程;
36.图4为数据初始化阶段和数据去重阶段示意图;
37.图5所有权证明阶段示意图;
38.图6数据存储阶段示意图;
39.图7文件下载阶段示意图。
具体实施方式
40.以下结合附图对本发明进一步说明:
41.提出了新的数据加密算法、标签生成算法与重复检测算法。数据去重的过程是首先对原文件进行数据加密与标签生成过程,随后将密文与相应的标签发送至云存储平台,云存储平台经过对标签的重复检测后存储不存在相同副本的密文,并赋给相应用户对于该文件的权限。本文将对以上三个算法进行详细说明。为了简化描述,首先在表1中定义了本章所使用的符号及含义:
42.表1涉及符号及含义
[0043][0044]
在本文提出的基于可信硬件的安全去重方案中,由于数据加密算法与标签生成算法需要使用几种密码学算法,因此在系统初始化时需要生成一些列的公开参数以提供给用户、可信硬件以及云存储服务器所使用。系统设置函数syssetup描述了本方案在系统设置阶段的公开参数生成过程。这一阶段需要由云存储平台进行并且发布,生成的公开参数需要有一个安全参数作为输入。
[0045]
syssetup(λ)

(pub):此函数在系统中公开执行,输入安全参数λ。首先随机生成一个质数q使得的dlp复杂度至少为λ比特;选择一个安全的哈希函数h(
·
):一个阶为q的乘法群g和g1为的生成元;一个伪随机函数f(
·
):(k《 λ);选择一个区分文件是否分块的长度α;选择一个固定的分块长度l;选择一个块集合所包含的块个数m。如公式(1-1)生成公开参数pub。
[0046][0047]
其次在标签生成算法和后续验证过程中需要使用用户的公钥和私钥来进行计算,因此密钥生成函数keygen描述了本方案中的用户密钥生成过程。这一过程由client完成,生成关于此用户的密钥对(skc,pkc)。
[0048]
keygen(p)

(skc,pkc):此算法在client中执行,输入公共参数p。当文件长度大于length的情况下,client随机选择一个计算出任意选择n个随机数选取以上计算得出的结果,由此得到了client的私钥如公式(1-2),公钥如公式(1-3)。
[0049][0050][0051]
(1)数据加密算法
[0052]
数据加密是去重方案的一个重要算法,为了保证用户数据的私密性,同时需要确定能够将相同的明文加密生成相同的密文。传统的消息锁定式加密算法使用了确定性的对称加密,并且将文件哈希作为加密密钥,因此同样的明文总会生成同样的明文,但是极易受到暴力离线字典的攻击。因此本方案提出了一种新的数据加密算法,通过引入盲签名算法来保证加密密钥的安全性与唯一性,同时保证同样的文件能够生成相同的密文。
[0053]
在本方案中,云存储平台所配备的可信硬件区域可以被看做是一个完全可信的服务器,而每个被设置好的可信硬件内部都包含一个唯一且不会被敌手窃取的密封密钥sk。用户首先生成对原始数据的哈希,与可信硬件进行远程认证成功后,将哈希发送至可信硬件内,之后enclave使用该密封密钥sk对文件哈希进行盲签名,用户收到盲签名后进行解盲,并且将得到的安全签名作为加密密钥。而相同的文件哈希总是可以在同一个可信硬件内获得相同的签名,因此相同的文件总会生成相同的加密密钥,使用对称加密来加密文件数据,以此保证数据去重的可行性。
[0054]
文件分块聚合步骤在client中进行,首先比较文件长度与公共参数中α的大小关系。若小于α则无需进行文件的分块集合过程,直接生成整个文件的哈希h;否则进行分块聚合,计算表示块集合的个数,向上取整,根据pub中的m来确定块集合中块的个数,生成块集合bi,并计算出哈希hi。
[0055]
密钥生成步骤由client与cenclave共同完成。首先两者之间进行远端认证,若认证失败则返回错误信息,成功则继续进行。client根据前一个步骤确定文件是否分块,分别将文件哈希或块集合哈希发送至cenclave,cenclave利用可信区域的密封密钥sk分别进行盲签名,client收到盲签名后进行解盲,如公式(1-4)分别计算出文件加密密钥与块集合加密密钥。
[0056]
k=h

·
r-1
(mod n)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1-4)
[0057]
数据加密步骤由client完成,利用对称加密分别对文件或块集合进行加密,使用上一阶段生成的相应加密密钥完成加密过程,如公式(1-5)。数据加密完成后,密文暂时保存在client中。
[0058]
c=enc(kf,f)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1-5)
[0059]
(2)标签生成算法
[0060]
标签生成是去重方案的一个重要算法,为了保证用户数据的完整性,需要保证从数据中生成相应的标签,并从该标签中可以验证数据的完整性。由于本方案实现了文件级 块级的数据去重,因此标签生成分为两部分:文件标签生成、块集合标签生成。在本算法中,
对文件在有限域内生成了一个文件名,并且利用索引生成对应的块集合索引值,将该值映射到有限域内,并且计算出相应的验证值,利用验证值可以进行后续的标签一致性检测过程。
[0061]
其中在文件标签生成步骤,首先给文件在有限域内设置一个文件名namef,之后生成文件标签tf=h(f)。块标签生成步骤,使用相应的文件名namef、上文选择的随机种子x和块集合索引i,生成一个验证值βi=f(namef,x,i),并且将βi映射到乘法群的生成元上:随后根据前一个验证值与块集合数据生成第二个验证值δi如公式(1
‑ꢀ
6),最后进行标签集合生成过程,生成标签集合t如公式(1-7)。
[0062][0063][0064]
随后生成的标签集合t将由client发送至cenclave。
[0065]
(3)重复检测算法
[0066]
重复检测是去重方案的一个核心算法,为了保证数据的去重过程,需要进行标签的比对。由于本方案实现了文件级 块级的数据去重,因此重复检测分为两部分:文件标签对比、块集合标签对比。如果文件标签存在重复,则此流程结束,不用进行存储过程。如果不存在重复的文件标签,则继续进行块标签的对比,对比完成之后生成一个字符串,该字符串记录了所有块集合是否存在相同副本的信息,用户则根据此字符串上传密文数据,以此来完成数据去重的过程,并且对于存在副本的数据节省了数据传输以及相应的存储空间与计算时间。在本算法中,为了保护用户的所有权信息不被窃取,在文件标签对比过程中采用了oram的读取方式,以此来隐藏读写的操作过程。而在块集合标签查找时,由于此时在云存储中不存在相应的文件,因此可以直接进行显式的读取,以此达到去重效率与时间开销的平衡。
[0067]
在重复检测步骤,cenclave收到标签集合t,首先以oram的读取方式对比文件标签,以此来保证用户的所有权信息不被泄露。如果存在相同的文件副本,则无需进行后续的上传与存储过程,直接结束流程并进行所有权证明。如果不存在相同的文件标签,则继续进行块集合标签的对比,如果至少存在一个块集合标签相等,则创建一个字符串s:s= s1s2…
sd,当存在一个云存储中的块集合标签ts=ti时,时si=1,否则si=0。如果没有一个块集合标签相等,则令s=null。由此字符串s记录了块标签的重复信息。
[0068]
在待上传数据生成步骤,用户根据字符串s生成需要上传的数据密文c

。如果s不为 null,则根据字符串s中记录的信息将相应的块集合填入,生成c

=c1′
c2′…cd

。如果s 为null,则说明没有任何块集合重复,此时密文c

=c1,c2…cd
,将所有块集合密文填入。
[0069]
随后client将待上传的密文传输至云存储平台。
[0070]
实施例:
[0071]
本方案只阐述文件级 块级的数据去重流程。
[0072]
1)系统初始化阶段
[0073]
根据第3部分中所提出的syssetup函数,云存储平台根据输入的安全参数λ并运行此函数,生成公开参数pub:
[0074]
2)数据初始化阶段
[0075]
client运行第3部分中所提出的keygen函数,生成此用户的密钥对(skc,pkc)。随后 client运行第3部分中提出的数据加密算法,若文件根据系统参数无需分块则得到文件密文c,若需要分块则得到密文c={c1,c2…cd
,i∈[0,d]}。随后client运行第3部分中所提出的标签生成算法,得到标签集合
[0076]
3)数据去重阶段
[0077]
cenclave和client运行第3部分中所提出的重复检测算法,若存在相同的文件标签则结束本阶段并进行所有权证明阶段,若不存在相同的文件标签则client生成待上传密文c

,之后client将c

发送至css。
[0078]
以上数据初始化阶段和数据去重阶段如图4。
[0079]
4)所有权证明阶段
[0080]
此过程由challgen、resgen、challauth三个子函数完成,如图5。云存储拥有与用户相同的文件标签,才会进行所有权证明过程。cenclave运行函数challgen生成一个挑战challenge,随后将挑战发送给client。client运行函数resgen生成文件签名τ,随后将文件签名τ发送给cenclave进行验证。收到client的响应之后,cenclave运行函数 challauth。若res=true则证明用户拥有该文件;反之流程终止。
[0081]
(1)challgen(d,pub)

(challenge):此函数在cenclave中执行,输入块集合数量 d,公共参数pub。如果存在相同的文件标签ts=tf,则cenclave要与client执行所有权证明的步骤,具体分为以下两步:(1)根据文件块集合的数量d,生成随机的l个数使其落在[1,d]的区间内,计算出z={z1,z2…zl
}。(2)对于任意选择一个组成一个挑战challenge={i,ui}。
[0082]
(2)resgen(challenge,bi,ci,pub)

(τ):此函数在client中执行,输入挑战challenge,块集合明文bi,块集合密文ci,公共参数p。client收到cenclave发来的挑战之后进行解析,之后聚合生成所有权证据。client用块集合bi生成签名私钥ski=h(bi),从而得出签名公钥继而如(2-1)中构成块集合的签名。
[0083][0084]
最终如(1-7)中将每一个块集合的签名τi聚合成为文件的签名τ,client将τ发送给 cenclave等待验证。
[0085][0086]
challauth(challenge,τ,τi)

(res):此函数在cenclave中执行,输入获得的文件签名τ,查找到的文件标签tf所对应的文件签名τi,发出的挑战challenge。cenclave在收到 client的响应之后,需要验证所收到的签名是否一致,以此来判断用户是否拥有和云存储完全相同的文件f。cenclave用查找到的响应的块集合签名τi构建聚合签名构建聚合签名随后验证τ=τ

是否成立。如果成立,则完成此次所有权证明,令res=true;反之,令res=false,该用户不能获得此文件的所有权。最后返回参数res。
[0087]
5)数据存储阶段
[0088]
此阶段由blockcheck函数完成,client将密文c

与标签集合t发送至服务端的 cenclave,cenclave执行函数blockcheck,若res=true,则cenclave向css存储文件密文c

和相应的文件信息:文件名namef,标签公钥pkc。并且更新相应的文件和块标签列表,其中文件标签列表是以oram的形式组织的。若res=false,则说明此用户为恶意用户,终止流程。过程描述如图6。
[0089]
blockcheck(c

,t,s,pub)

(res,af):此算法在cenclave中执行,输入收到的密文 c

,标签集合t,字符串s,公共参数pub。对于每一个i∈[i,d],如果si=0,则cenclave需要对密文c

和ti进行相应的验证运算,以此来保证该标签是用相应的密文所生成的,取得标签ti所对应的ci。
[0090]
h(ci′
)=h(ci)
ꢀꢀꢀꢀ
(2-3)
[0091][0092]
如果没有一个i(i∈[i,d])使得以上两个等式成立,那么证明该标签和密文不符,因此返回错误信息res=false并且中止流程;反之令res=true且继续流程,并且返回相应的文件权限af。
[0093]
6)文件下载阶段
[0094]
这一过程主要由datadec函数实现,此过程的流程图如图7。client执行datadec函数,若返回的res=true,则成功完成此阶段;否则文件数据被损坏。
[0095]
datadec(c

,af,kf,ki,tf)

(res):此函数在client中执行,输入下载的文件密文c

,用户权限af,文件加密密钥kf,块加密密钥ki。首先client将相应文件权限af发送给 cenclave,得到回应之后下载相应密文c

。如果是以文件形式存储的,则解密为文件明文 f=dec(c

,kf);如果是以文件块形式存储的,则解密为文件密文f= dec(b1,k1)||dec(b2,k2)||

||dec(bi,ki)。此外,client对于文件的正确性进行检测,判断 tf=h(f)是否成立,若成立则验证通过即与原明文一致,令res=true,否则令res=false。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献