一种基于区块链的云存储数据完整性检测方法及系统与流程

文档序号:24405939发布日期:2021-03-26 17:06阅读:189来源:国知局
一种基于区块链的云存储数据完整性检测方法及系统与流程

1.本发明属于云存储技术领域,特别涉及一种基于区块链的云存储数据完整性检测方法及系统。


背景技术:

2.随着互联网的迅猛发展,数据资源迅速膨胀,个人用户及企业的本地平台存储能力和计算能力都较为有限,扩展本地平台的花费较大,因此商家通过专门向用户提供云计算平台来提供计算能力和存储能力成为主流的解决方式。在这种模式下,商家通过提供服务来盈利,用户也避免了升级硬件的庞大开销,实现互利共赢。但数据外包给用户带来便利的同时,用户也就失去了数据的硬件控制,数据的安全性问题也成就为了一个无法忽视的问题。
3.云端数据安全性问题的根源在于云服务商与用户间的信任问题,云服务商与用户双方无法达成可信的信任体系。云服务商出于成本管控可能疏于对客户文件的管理,云端设备的故障,来自外部的攻击,甚至是云服务商本身对用户数据的窥探,都有可能造成用户数据的泄露、遗失及受损。另一方面,即使用户的数据受损,也可能无法实现有效的问责,云服务商会逃避责任不予承认。因此问题的本质在于双方缺乏信任基础,一旦出现问题,被质疑方难以提供双方都认可的依据。
4.传统的解决方式是引入第三方信任机构形成三方认证模型,但这种方式依旧存在问题,无法保障第三方机构不会出于利益或其他原因联合另一方来进行蒙骗行为,而区块链的出现为这一问题提供了新的解决方案。
5.区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。区块链的节点信息由所有区块链的参与者共同维护,因此区块链上的所有信息都是公开透明的,且信息一经发布就永久保留,无法篡改。区块链所拥有的公开验证、不可篡改的特性使其可以作为可信的第三方解决云计算环境下用户的顾虑,一切结果都可以发布到区块链中,由区块链的所有用户进行认证和维护。因此将区块链结合到云计算领域,利用区块链的优势解决云计算环境的弊端,可以更加有效地为用户的数据安全性提供保障。


技术实现要素:

6.本发明主要目的是针对云服务商与用户间信任不足的问题以及传统三方认证模型的弊端,提出一种基于区块链的云存储数据完整性检测方法及系统,采用区块链作为可信第三方代替传统的第三方,有效解决云服务商和用户间的信任问题,同时避免了传统第三方的可信度问题。传统第三方还为用户提供了计算服务,因此为减轻用户的计算负担引入布谷鸟过滤器,将用户校验的过程简化为简单的过滤器查询操作,实现高效验证。
7.为实现上述目的,本发明公开了一种基于区块链的云存储数据完整性检测方法,其特征在于,包括如下步骤:
8.步骤一、初始化阶段:初始化系统,生成公开参数及用户签名所需的公私钥;
9.步骤二、文件处理阶段:用户将待上传的文件采用对称加密算法加密,而后将文件分成若干文件块,对每一个文件块采用格签名算法生成签名集,根据签名集构建默克尔树,最后根据签名集构建布谷鸟过滤器,最终用户在本地平台保留布谷鸟过滤器,将文件块上传至云服务器;
10.步骤三、用户审计云服务器阶段:用户随机选择文件块生成完整性验证请求,同时将验证请求发布到区块链中,并将验证请求和区块链地址一起发送到云服务器;
11.步骤四、云服务器证明阶段:云服务器根据用户的公钥计算用户请求的文件块的签名结果,将签名结果发布至区块链中,将签名结果、对应的文件及区块链地址返回给用户;
12.步骤五、用户验证阶段:用户获取云服务器的签名结果后首先对签名结果进行验证,验证通过后只需要根据签名查询是否存在于布谷鸟过滤器中即可,若存在则完整性验证通过,否则文件的完整性受损,简化了签名的验证过程。
13.进一步的改进,所述步骤一中,生成用户公私钥的具体步骤为:
14.选定一个随机矩阵作为用户的私钥,矩阵作为公钥且需要满足as=a(

s)=qi
n
(mod 2q);
15.其中z表示整数域,m,n代表矩阵的维度,取值为2的幂,q是一个随机素数且满足q=1(mod 2n),i
n
表示维数为n的单位矩阵,mod表示取余操作。
16.进一步的改进,所述格签名算法具体步骤为:
17.用户从离散高斯分布中采样获得向量y,通过h(ay mod 2q,μ)计算出结果c,然后从集合{0,1}中随机选择元素b并计算z=y+(

1)
b
sc,通过拒绝采样定理以概率输出签名对(z,c)。若签名算法未输出签名对,则重新启动签名算法生成新的签名,直到输出签名结果为止;
18.其中表示以0为中心,标准差为σ的离散高斯分布,表示以0为中心,标准差为σ的离散高斯分布,是以c为中心,标准差为σ的高斯分布;h表示哈希函数,本方案中使用的是输出分布在上的函数,表示长度为n,1个个数为k的二进制向量集;μ代表待签名消息,(z,c)为最终生成的签名对,为其中
19.进一步的改进,用户构建默克尔树的具体步骤为:
20.用户将文件分为x个文件块{f1,f2,...,f
x
},f
x
表示第x个文件块;将文件块的签名的哈希值作为默克尔树的叶子节点,随后用每两个叶子节点的哈希值连接在一起用哈希函数计算新的哈希值作为这两个叶子节点的父节点的哈希值,层层递归直至生成根节点,默克尔树即构建完成。
21.进一步的改进,用户构建布谷鸟过滤器的具体步骤为:
22.首先初始化一个大小为n的空哈希表,计算默克尔树叶子节点r
i
的哈希值i1=hash(r
i
);f=fingerprint(r
i
);插入时只需查询i1,i2对应哈希表的位置是
否为空,若两个位置都为空则随机选择空位将f插入,若只有一个位置为空则将f插入该空位,若两个位置都不为空则随机选择一个位置i,用f替换位置i的原有元素e,将元素e重新定位若i
e
对应的位置为空则将e插入,否则将原有元素踢出并重新定位原有元素,直到所有元素定位完毕;然后重复上述过程直到将所有节点r
i
插入完毕;
23.其中,i1,i2两个值代表数据在布谷鸟过滤器哈希表中的两个候选位置,hash()代表哈希函数,fingerprint是另一个哈希函数,生成的哈希值f即为布谷鸟过滤器中存储的值,称为指纹,布谷鸟过滤器中存储的是数据的指纹值而非原值。
24.进一步的改进,用户审计云服务器的具体步骤为:
25.当用户想要验证云端文件的数据完整性时,采用随机数生成器随机生成s个数{a1,a2,...,a
s
},这s个随机数即为要验证完整性的文件编号,用户将验证请求发布到区块链网络中,然后将验证请求及验证请求所在区块链地址发送给云服务器。
26.进一步的改进,云服务器证明文件完整性的具体步骤为:
27.云服务器接收到用户要验证的文件编号{a1,a2,...,a
s
}后,使用用户的公钥a通过c

i

h(ay mod 2q,a
i
)计算这s个文件的签名结果{c
′1,c
′2,...,c

s
},将结果发布到区块链中并返回给用户。
28.进一步的改进,用户验证云服务器返回结果的具体步骤为:
29.用户收到签名结果{c
′1,c
′2,...,c

s
}后,首先验证c

=h(az+qc

mod 2q,μ)是否成立,若成立则使用这些签名结果计算布谷鸟过滤器中是否存在相应结果。每个节点r

i
的指纹f
i
=fingerprint(r

i
);i1=hash(r

i
);查询i1或i2对应的哈希表中f
i
是否存在,若所有的f
i
都存在于布谷鸟过滤器中,则文件完整性验证通过,否则认为完整性受损。
30.一种基于区块链的云存储数据完整性检测系统,所述系统包括:
31.用户,文件拥有者,本地存储空间有限,因此将文件委托存储于云服务器。
32.云服务器,具有很大的存储空间和很强的计算能力,为用户提供存储及计算服务,使用户能随时随地上传和下载数据。
33.区块链,用于信息的发布和公示,由于其不可篡改和公开透明的特点,可以取代传统三方验证模型中的tpa作为新的可信第三方。
34.本发明的优点和有益效果在于,使用格签名算法对用户数据进行签名,相比其他签名算法,能够有效抵御量子计算的攻击,安全性强且效率高。除此之外,本发明还引入了区块链作为信息公示和认证平台取代了传统方法中的第三方机构,有效避免了第三方机构出于利益或其他原因与其中一方勾结,保证了信息的透明和公开审计,提供用户和云服务器双方认可的结果,构建双方的信任体系。同时,由于取消了传统的第三方机构,用户无法享受到第三方机构提供的计算能力,因此本发明提供了布谷鸟过滤器,将格签名算法和布谷鸟过滤器结合起来,简化了计算操作,将复杂的签名验证过程简化为简单的过滤器查询过程,有效降低了完整性验证过程中用户的计算难度。综上所述,本发明能够有效的针对云端数据完整性做出判断,且提供了有效的第三方平台保障结果的正确性和有效性。
附图说明
35.图1是本发明提供的云存储数据完整性检测方法的流程图;
36.图2是本发明提供的默克尔树构建过程的示意图;
37.图3是本发明提供的布谷鸟过滤器的插入过程示意图;
38.图4是本发明提供的云存储数据完整性检测系统的模型图;
具体实施方式
39.为详细阐述本发明的目的、方法及优点,下面将结合附图和具体实施方式对本发明作更进一步的详细说明。
40.本实施例中,用户与云服务器二者间任何一方都无法提供令双方都认可的结果,因此引入区块链网络作为第三方对双方的结果进行公示和认证。区块链是由一个个区块直链式连接所形成的,一旦信息被添加到区块中则无法被修改,区块生成后也无法撤销,且区块链所有用户都会本地保留所有区块,因此区块链上的所有信息都是公开透明的,且一经发布无法修改,所有用户都可以对区块链上的信息进行核查,因此区块链网络可以认为是可信第三方对用户和云服务器行为进行审计。
41.实施例1、
42.本发明提供了一种基于区块链的云存储数据完整性验证方法,其流程如图1所示,主要包括:
43.s101:生成系统的公开参数和用户公私钥。
44.具体地,首先生成公开参数p={q,m,n,σ,i
n
,m},这些公开参数不涉密,是后续其他计算等所需要的基础数据。
45.然后生成一个随机矩阵作为用户的私钥,生成矩阵作为用户的公钥,矩阵a需要满足as=a(

s)=qi
n
(mod 2q)。
46.私钥用户自己本地妥善保管,公钥可以与公开参数一起发布到区块链中,也可以之后同文件一起定向发送到云服务器。
47.s102:用户将文件分割为文件块。
48.具体地:用户采用文件分割工具将文件等分为大小相同的若干文件块,然后将分割出的文件块按顺序命名为{1,2,...,n}。
49.可选地,用户分割文件前可以根据文件重要程度选择是否将文件采用对称加密算法进行加密。
50.s103:用户对102得到的文件块通过101得到的秘钥采用格签名算法进行签名。
51.具体地:用户从离散高斯分布中随机采样得到向量y,使用公钥a,待签名文件μ,通过h(ay mod 2q,μ)计算出签名结果c,可以看出结果c只需要公钥即可计算。然后从集合{0,1}中随机抽取元素b,计算z

y+(

1)
b
sc,通过拒绝采样定理以概率输出签名对(z,c)。
52.特别地,若拒绝采样定理没有输出结果,则不断重复步骤103直到输出签名结果为止。
53.s104:用户根据103得到的签名结果构建默克尔树。
54.具体地:用户对每一个文件块签名生成签名对的结果为{(z1,c1),(z2,c2),...,
(z
n
,c
n
)},根据签名对公钥生成的部分{c1,c2,...,c
n
}构建默克尔树。
55.特别地,构建默克尔树的过程,如图2所示。
56.s105:用户根据103得到的签名集构建布谷鸟过滤器。
57.具体地:用户获得的签名结果为{(z1,c1),(z2,c2),...,(z
n
,c
n
)},为构建布谷鸟过滤器,首先构建一个长度为n的一维空哈希表,然后计算每个签名对c
x
的哈希值i
1,x
=hash(c
x
);f
x
=fingerprint(c
x
);x∈[1,n]。i1,i2即为映射元素在过滤器哈希表中的位置,要插入时只需要查询i1,i2所对应的位置是否为空即可。
[0058]
具体的插入方式如图3所示。这里又分为三种情况:
[0059]
情况一,i1,i2两个位置皆为空,那么随机选择一个位置进行插入即可。
[0060]
情况二,i1,i2两个位置只有一个位置为空,那么只需要将元素插入到空的位置。
[0061]
情况三,i1,i2两个位置都不为空,则需要随机选择一个位置i,i=i1or i2,用映射元素f
i
替换该位置中的原有元素e,并重新定位元素e在哈希表中的位置若i
e
对应的位置为空,则将元素e插入到表中,否则再用e替换掉表中原有元素并重新定位这个元素的位置,重复这个过程直到所有元素都定位完毕。
[0062]
特别地,f是数据的指纹值,布谷鸟过滤器中存储的都是指纹值而非原值,便于进行元素的二次定位。fingerprint()函数可以是任意将不同长度的值映射到同一长度的哈希函数。
[0063]
可选地,若要存储的元素过多,可以将过滤器的哈希表构建为二维n
×
m大小。
[0064]
将所有签名都插入到哈希表中之后布谷鸟过滤器即构建完成。
[0065]
s106:用户将105得到的布谷鸟过滤器本地保留,将102得到的文件块和默克尔树上传到云服务器。这一步完成代表着用户对文件的处理结束,文件上传完成,之后用户随时可以对文件的完整性进行验证。
[0066]
可选地,用户将文件上传到云服务器之后可以选择是否将文件公开,若将文件公开则系统的其他参与者也可以获取文件,否则只有用户本人才能下载。
[0067]
s107:用户生成随机数发给云服务器作为要验证完整性的文件标号。
[0068]
具体地:当用户想要验证云端文件的完整性时,使用随机数生成器随机生成s个随机数{a1,a2,...,a
s
},由于文件块是以数字顺序命名的,因此这s个随机数即作为要验证完整性的文件编号。然后用户将验证请求发布到区块链网络中,并将验证请求连同请求所在的区块链地址一同发送到云服务器。
[0069]
s108:云服务器根据101获得的公钥计算107的文件签名返回给用户。
[0070]
具体地:云服务器收到用户的验证请求后,首先定位到每个文件块的位置i,然后使用用户的公钥计算每个文件块的签名c

=h(ay mod 2q,μ
i
),将结果发布到区块链中,然后将结果和所在的区块链地址连同原文件一起返回给用户。
[0071]
s109:用户查询108获得的签名结果是否存在于105得到的布谷鸟过滤器中判断文件完整性是否受损。
[0072]
具体地:用户在103生成文件签名c,当用户收到云服务器返回的签名结果{c
′1,c
′2,...,c

s
}后,首先使用c

=h(az+qc

mod 2q,μ)验证签名是否正确,验证通过后对布谷鸟过滤器执行查询操作查询是否所有签名结果都处于布谷鸟过滤器中即可,大幅简化了格签名验证阶段的时间复杂度。
[0073]
布谷鸟过滤器的查询操作具体为:计算每个签名r

i
的指纹f
i
=fingerprint(r

i
)。然后计算指纹所对应的哈希表中的位置,i1=hash(r

i
););之后只需要查询哈希表中i1或i2这两个位置f
i
是否存在即可。若所有指纹f都存在于过滤器中,则文件完整性验证通过,否则文件的完整性受损。
[0074]
实施例2
[0075]
本发明还提供了一种基于区块链的云存储数据完整性验证系统,如图4所示,该系统主要包括:用户,云服务器,区块链。其中,
[0076]
用户是文件拥有者,本地存储空间有限,因此将文件委托存储于云服务器。系统中用户众多,因此用户与用户间也可以进行互动,如下载其他用户公开的文件、代理其他用户完整性验证的请求等。
[0077]
云服务器,具有很大的存储空间和很强的计算能力,为用户提供存储及计算服务,使用户能随时随地上传和下载数据。同样,系统中云服务器也可以有多个,用户上传文件时同一个文件分割出的文件块应统一上传到一个云服务器。
[0078]
区块链,用户和云服务器间的沟通和监管平台,记录和公示用户及云服务器间的所有交互记录。区块链由系统的所有参与者共同维护,共同监督用户与云服务器的行为,保障系统的正常运转。
[0079]
上述即为本发明的详细内容,对本发明的原理、内容、优点等作出了详细的阐述。但以上实施例的说明只是为了帮助理解本发明的思想和方法,并不意味着构成限定,具体实施过程中对于各种细节可以进行各种变化。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1