当前位置: 首页 > 专利查询>清华大学专利>正文

基于可验证隐秘布隆过滤器的真实存储方法和系统技术方案

技术编号:32819569 阅读:55 留言:0更新日期:2022-03-26 20:16
本申请提出一种基于可验证隐秘布隆过滤器的真实存储方法,包括:将原始数据记录到一个空的布隆过滤器;当原始数据达到预定容量后,构造相同规模的随机二进制矩阵并与其进行不进位相加,获得隐秘布隆过滤器;将隐秘布隆过滤器和随机二进制矩阵分别按行和按列构造默克尔树,并将两个树根和记录数据的哈希方式记录到区块链中存证;接收用户的验证请求,本地查询获取结果,从隐秘布隆过滤器和随机二进制矩阵中获取相应的行和列,并构造默克尔证明发送至用户端;在用户端验证隐藏布隆过滤器中行和随机二进制矩阵中列的完整性,恢复出布隆过滤器相应的位,判断数据是否记录在布隆过滤器中。本申请在增加少量存储开销的情况下显著降低泄露的隐私数据。降低泄露的隐私数据。降低泄露的隐私数据。

【技术实现步骤摘要】
基于可验证隐秘布隆过滤器的真实存储方法和系统


[0001]本申请涉及可验证存储
,尤其涉及一种基于可验证隐秘布隆过滤器的真实存储方法和系统。

技术介绍

[0002]基于区块链的真实存储技术:
[0003]真实存储是将区块链作为一个真实存储平台,确保用户所存储的数据真实存在,不会被恶意篡改,并且面对用户的数据访问请求也能做出真实的回应。在基于区块链所构建的真实存储平台中,用户以交易的形式请求数据的增加、修改、撤销等操作,其它用户则可以按需对数据库的内容进行读取,并基于这些数据完成后续的计算工作。在对数据存取的整个流程中,区块链数据层提供的可审计性确保用户在访问数据时可以对其完整性进行验证;区块链网络层提供的去中心化特性则可以有效避免单点失效问题;区块链共识层提供的一致性和不可篡改性则确保用户访问所获取数据的真实性。因此相比于传统中心化的存储平台,基于区块链构建的分布式真实存储可以稳定运行,并且有效避免中心服务器宕机、恶意篡改、隐瞒数据,或者对不同用户提供不一致的访问结果等问题。
[0004]基于区块链的真实存储技术现阶段主要用于存证、协同数据库等领域,用于确保数据的完整性,当用户对数据的完整性提出质疑时,验证者可以在链下提供证明,用户可以结合链上所存储的证据进行完整性验证。实现真实存储的关键技术是构造针对所存储的数据设计可认证数据结构(Authenticated Data Structure,ADS),例如区块链中比较常见的默克尔树,在该ADS结构下,默克尔根被存在区块链上确保完整性,在对叶子节点(即单一数据)进行验证时,证明着需要将相应的默克尔路径上的哈希值以及默克尔根发送给验证者,验证者先查询区块链确认默克尔根的完整性,然后结合默克尔路径验证叶子节点对应数据的完整性。近几年,随着区块链技术的广泛应用,部分研究已经开始探索用新的数据结构来提升区块链查询效率,或者丰富查询结构,为了确保数据的可验证性,针对这些新的数据结构需要针对化设计相应的ADS结构。
[0005]布隆过滤器:
[0006]布隆过滤器(Bloom Filter,BF)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。
[0007]布隆过滤器是一个长度为m的位数组,用于记录数据并查询某数据是否存在。数据的插入和查询如图2所示,对于某数据,用k个哈希函数对其计算,得到k个字段,每个字段可以映射到BF(Bloom Filter,布隆过滤器)中的的某个位置(用字段模BF的长度取余),当插入该数据时,只需将k个字段对应的BF位设置为1;当需要查询某数据是否存在时,用同样的方法哈希计算出其k个字段,并查询BF中对应的k个位置是否同时为1,若是则说明该数据极大概率存在;若存在任意一位为0,则该数据必然不存在。BF存在一定的错误率,但可以通过
调节布隆过滤器长度和哈希字段个数将错误率降到极低。
[0008]当构造一个记录n条数据的BF时,其大小m和哈希函数个数k的最优选择可以通过下式获得:
[0009]k=ln(2)
×
(n/m)
[0010]不同k和n/m的值对应的布隆过滤器错误率可以在图3中查询,其中,图3中第二列为k的最优设计值,由于在实际应用过程中,k必须为整数,所以k通常取比最优值小的最大整数值。
[0011]布隆过滤器能够显著降低存储开销,并实现O(1)复杂度的查询效率。以记录1G条数据为例:若选择6个哈希函数,并确保错误率不超过1%,则布隆过滤器大小为10G bit,也就是1.25GB;若不用布隆过滤器,而是记录每个数据的哈希值,即32B,则存储开销为32GB,且查询开销至少为O(logn)。
[0012]可验证布隆过滤器:
[0013]布隆过滤器被广泛用于记录数据是否存在,例如在基于哈希的IP回溯技术(Hash

Based IP Traceback,HBT)中,中间节点将经过的数据包哈希值记录下来,当目的域需要查询报文转发路径时对其回溯,向中间节点发出请求并根据响应恢复该数据包的真实转发路径。为了减少存储开销,使用布隆过滤器记录数据包是一个很好的策略
[0014]基于哈希的IP回溯技术HBT的具体流程如下:
[0015](1)当数据包经过中间路由器时,路由器对IP数据包进行采样,去除包头的可变字段(例如TTL、校验和等),将包头的不变字段(例如地址字段、标志字段等)以及数据包数据部分的前八个字节作为数据摘要。
[0016](2)将数据摘要进行哈希,获得一个128位的哈希值,将该值分为4个字段从而得到相应的4个特征值,并将这它们所映射到的布隆过滤器位置1。
[0017](3)当目的端发现恶意报文时开始溯源,通过逆向洪泛的方式获取数据包的传输路径。当受害者节点V检测到攻击报文后,向其邻居路由器洪泛查询请求,当节点未存储该报文则忽略请求,存储有该报文则继续向其邻居洪泛请求,最终就构造出该报文的真实转发路径并追溯到攻击节点。
[0018]然而,在上述方案中,无法确保中间节点本地布隆过滤器的完整性,即节点所查询的布隆过滤器确实为当时记录数据包所产生的,未经过篡改。因此,中间节点按照一定时间间隔将本地记录数据后的布隆过滤器哈希上链存证非常有必要。然而在这样一种形式中,验证者若要验证布隆过滤器完整性,则需要接收整个布隆过滤器,不仅造成大量通信开销,还会泄露其中记录的其它数据包隐私。
[0019]为了解决验证过程中通信开销以及泄露隐私数据过多等问题,一种简单的方法是将布隆过滤器分段构造默克尔树,因此每次验证只需要返回数据特征值所映射位对应的段,显著减少泄露的隐私。然而,若要提升隐私保护力度,则需要尽量降低每段的大小,但却会导致构造默克尔树造成的开销显著增加,极端情况下,若每段大小为1位,构造默克尔树造成的存储开销将是布隆过滤器大小的512倍;若提升每段的大小,则单次验证泄露的隐私数据也会显著增加。

技术实现思路

[0020]本申请旨在至少在一定程度上解决相关技术中的技术问题之一。
[0021]为此,本申请的第一个目的在于提出一种基于可验证隐秘布隆过滤器的真实存储方法,解决了现有布隆过滤器的可验证存储方法的验证过程中通信开销以及泄露隐私数据过多的技术问题,实现了在构建可验证布隆过滤器的同时,对存储开销和隐私保护进行权衡,在增加少量存储开销的情况下显著降低了泄露的隐私数据,从而有效支撑可验证布隆过滤器技术在实际协作过程中的应用。
[0022]本申请用二进制矩阵来构造布隆过滤器,对于所记录数据量达到预期容量的布隆过滤器(Bloom Filter,BF),在存证过程中,会先用一个随机二机制矩阵(Random binary matrix,RBM)与其进行不进位相加从而获得隐秘布隆过滤器(Hidden Bloom Filter,HBF)本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于可验证隐秘布隆过滤器的真实存储方法,其特征在于,包括以下步骤:创建一个空的布隆过滤器二进制矩阵,并将原始数据记录到布隆过滤器中;当布隆过滤器所记录数据达到预定容量后,构造相同规模的随机二进制矩阵并与其进行不进位相加,从而获得隐秘布隆过滤器;将所述隐秘布隆过滤器和所述随机二进制矩阵分别按行和按列构造默克尔树,并将两个树根以及使用布隆过滤器记录数据时的哈希方式记录到区块链中存证;接收用户的验证请求,先本地查询获取结果,然后从隐秘布隆过滤器和随机二进制矩阵中获取相应的行和列,并构造默克尔证明发送至用户端;在用户端接收所述默克尔证明,之后根据收到的证明和区块链中存储的默克尔根验证隐藏布隆过滤器中行和随机二进制矩阵中列的完整性,然后恢复出布隆过滤器相应的位,最后判断数据是否记录在布隆过滤器中。2.如权利要求1所述的方法,其特征在于,对于所构造的布隆过滤器,首先根据传统布隆过滤器的使用方法,根据数据量和准确率要求确定布隆过滤器的大小,进而设定布隆过滤器的行数和列数,行数和列数具体值根据实际隐私保护需求而设置,每记录一条数据需要将布隆过滤器中的记录数据映射到的若干位置设为1。3.如权利要求2所述的方法,其特征在于,在将数据记录到布隆过滤器的过程中,先将待记录的数据进行哈希并获得若干个特征字段,然后将每个特征字段映射到布隆过滤器中的一个位置,该位置包括对应的行和对应的列,最后将布隆过滤器中映射到的位置设为1。4.如权利要求1所述的方法,其特征在于,所述随机二进制矩阵与布隆过滤器规模相同,所述随机二进制矩阵和所述布隆过滤器进行不进位相加后,所得到的隐秘布隆过滤器也存在相同的规模,其中,规模相同指行数、列数以及大小都相同。5.如权利要求1所述的方法,其特征在于,所述隐秘布隆过滤器按行构造默克尔树,每一行作为默克尔树的叶子节点;所述随机二进制矩阵按列构造默克尔树,每一列作为默克尔树的叶子节点,构造完后将两个默克尔树根以及布隆过滤器对应的哈希方式放到区块链上,所述布隆过滤器、所述随机二进制矩阵和所述隐秘布隆过滤器都在本地进行存储。6.如权利要求1所述的方法,其特征在于,对于用户请求查询与验证的数据,先将数据哈希并获得若干个特征字段,并将其映射到布隆过滤器中的若干个位置,若其中存在一个特征字段所映射到的位置为0,则确定该数据并未记录在布隆过滤器中,于是返回该结果,并构造不存在证明;若所有特征字段所映射到的位置都...

【专利技术属性】
技术研发人员:徐恪徐松松赵乙
申请(专利权)人:清华大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1