[发明专利]基于可验证隐秘布隆过滤器的真实存储方法和系统在审
| 申请号: | 202111302206.6 | 申请日: | 2021-11-04 |
| 公开(公告)号: | CN114238430A | 公开(公告)日: | 2022-03-25 |
| 发明(设计)人: | 徐恪;徐松松;赵乙 | 申请(专利权)人: | 清华大学 |
| 主分类号: | G06F16/2458 | 分类号: | G06F16/2458;G06F16/27;G06F21/62;G06F21/64 |
| 代理公司: | 北京清亦华知识产权代理事务所(普通合伙) 11201 | 代理人: | 单冠飞 |
| 地址: | 10008*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 基于 验证 隐秘 过滤器 真实 存储 方法 系统 | ||
1.一种基于可验证隐秘布隆过滤器的真实存储方法,其特征在于,包括以下步骤:
创建一个空的布隆过滤器二进制矩阵,并将原始数据记录到布隆过滤器中;
当布隆过滤器所记录数据达到预定容量后,构造相同规模的随机二进制矩阵并与其进行不进位相加,从而获得隐秘布隆过滤器;
将所述隐秘布隆过滤器和所述随机二进制矩阵分别按行和按列构造默克尔树,并将两个树根以及使用布隆过滤器记录数据时的哈希方式记录到区块链中存证;
接收用户的验证请求,先本地查询获取结果,然后从隐秘布隆过滤器和随机二进制矩阵中获取相应的行和列,并构造默克尔证明发送至用户端;
在用户端接收所述默克尔证明,之后根据收到的证明和区块链中存储的默克尔根验证隐藏布隆过滤器中行和随机二进制矩阵中列的完整性,然后恢复出布隆过滤器相应的位,最后判断数据是否记录在布隆过滤器中。
2.如权利要求1所述的方法,其特征在于,对于所构造的布隆过滤器,首先根据传统布隆过滤器的使用方法,根据数据量和准确率要求确定布隆过滤器的大小,进而设定布隆过滤器的行数和列数,行数和列数具体值根据实际隐私保护需求而设置,每记录一条数据需要将布隆过滤器中的记录数据映射到的若干位置设为1。
3.如权利要求2所述的方法,其特征在于,在将数据记录到布隆过滤器的过程中,先将待记录的数据进行哈希并获得若干个特征字段,然后将每个特征字段映射到布隆过滤器中的一个位置,该位置包括对应的行和对应的列,最后将布隆过滤器中映射到的位置设为1。
4.如权利要求1所述的方法,其特征在于,所述随机二进制矩阵与布隆过滤器规模相同,所述随机二进制矩阵和所述布隆过滤器进行不进位相加后,所得到的隐秘布隆过滤器也存在相同的规模,其中,规模相同指行数、列数以及大小都相同。
5.如权利要求1所述的方法,其特征在于,所述隐秘布隆过滤器按行构造默克尔树,每一行作为默克尔树的叶子节点;所述随机二进制矩阵按列构造默克尔树,每一列作为默克尔树的叶子节点,构造完后将两个默克尔树根以及布隆过滤器对应的哈希方式放到区块链上,所述布隆过滤器、所述随机二进制矩阵和所述隐秘布隆过滤器都在本地进行存储。
6.如权利要求1所述的方法,其特征在于,对于用户请求查询与验证的数据,先将数据哈希并获得若干个特征字段,并将其映射到布隆过滤器中的若干个位置,
若其中存在一个特征字段所映射到的位置为0,则确定该数据并未记录在布隆过滤器中,于是返回该结果,并构造不存在证明;
若所有特征字段所映射到的位置都为1,则确定该数据被记录在布隆过滤器中,返回该结果,并构造存在证明,
其中,所述请求查询与验证的数据与所述原始数据的哈希方式相同。
7.如权利要求6所述的方法,其特征在于,当用户收到“不存在”的回复时,先查询区块链确认不存在证明中两个默克尔根的完整性;其次,结合默克尔路径验证隐藏布隆过滤器中行和随机二进制矩阵中列的完整性;然后,将所查询数据用与原始数据相同的处理方法得到对应布隆过滤器中的若干个位置,并判断数据记录方所返回的置0位是否为其中之一;最后,用所述置0位对应的隐秘布隆过滤器中的位数和随机二进制矩阵中的位数进行不进位相加,并判断所得结果是否为0:
若为0,且之前的验证都通过,则相信此次查询结果;
若不为0,或之前的任意验证失败,则不相信该回复。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于清华大学,未经清华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111302206.6/1.html,转载请声明来源钻瓜专利网。





