(19)国家知识产权局
(12)发明 专利申请
(10)申请公布号
(43)申请公布日
(21)申请 号 202211196732.3
(22)申请日 2022.09.28
(71)申请人 湖南大学
地址 410082 湖南省长 沙市岳麓区麓山 南
路2号
(72)发明人 刘琴 唐子逸
(74)专利代理 机构 长沙瀚顿知识产权代理事务
所(普通合伙) 43223
专利代理师 吴亮 朱敏
(51)Int.Cl.
G06F 16/2458(2019.01)
G06F 16/27(2019.01)
G06F 16/22(2019.01)
(54)发明名称
一种基于区块链的可验证关键词Top-K查询
方法
(57)摘要
本发明提供了基于区块链的可验证关键词
Top‑K非模糊查询以及模糊查询方法, 方案结合
RSA累加器、 倒排索引以及前缀树等相关技术来
构建ADS, 实现了对非模糊查询和模糊关键词的
排名搜索验证。 本发明框架可以使轻节点有效的
验证查询结果正确性, 且在搜索、 验证、 存储以及
更新操作的性能上表现出色, 具有很好的实用价
值。
权利要求书4页 说明书11页 附图2页
CN 115510126 A
2022.12.23
CN 115510126 A
1.一种基于区块链的可验证关键词Top ‑K非模糊查询方法, 其特征在于, 所述区块链包
括全节点和轻节点, 全节点为同步了所有区块链数据的节点, 包含块头和块体所有信息, 每
个块头包括一个ADS结构ADS1; 轻节点作为用户参与到区块链中, 轻节点只包含块头信息;
所述方法包括:
步骤S110: 全节点执行密钥生成算法Genkey(1k)→(pk, sk)和累计值生成算法
构建共识证明;
Genkey(1λ)→(pk, sk)包括: λ∈[1, N]为安全参数, 给定RSA累加器参数N=p ·q和g, 其
中p和q为大素数, |p ·q|>3 λ, g是循环群 QRN的生成元, 输出公共参数pk={N, (g, QRN)}和私
钥sk=(p‑1)(q‑1);
包括: 根据所有数据D构建倒排索引, 其中每个关键词都
对应一系列对象, 所述对象按照时间由旧到新进行排序, 计算验证矩阵V[i][j]=H(Obji, j,
j)i∈[1, m], j∈[1, n], 其中i代表第i个关键词, j代表关键词中排序的第j个对象, H为抗碰
撞哈希函数, m为D中关键词总数, n为单个关键词所包含对象的总数, Obji, j为第i个关键词
的第j个对象, 当有数据更新时, 更新
其中, P为通用哈
希函数, P(x)∈{0, 1}3λ代表x对应的素数值, 之后, 统计每个关键词包含的对象个数, 计算
其中counti是第i个关键词目前所包含对象的总数, 此时
counti=n, 最后使
将ΦI, ΦC和
作为ADS1添加到块头;
步骤S120: 轻节点向区块链里任意全节点发起非模糊查询请求, 所述非模糊查询请求
包括查询关键词w及Top ‑K查询结果数k到全节点;
步骤S130: 全节点收到所述非模糊查询请求后, 全节点执行查询算法Search(w, k) →R
获得结果R, 执行验证生成算法GenProof(w, k, pk) →VO计算验证对象VO, 并发送R和VO给轻
节点;
Search(w, k)→R包括: 根据w, 将倒排索引中w对应的 由新到旧的前k个对象加入R;
GenProof(w, k, pk) →VO包括: 计算
计算
其中, w是数据D倒排索引中的第r个关键词,
countr为w目前所包含对象的总数,
步骤S140: 轻节点收到全节点返回的结果R和验证对象VO后, 执行验证算法Verify(w,
k, R, VO, pk) →(1, 0)使用VO对R进行验证;
Verify(w, k, R, VO, pk) →(1, 0)包括: 轻节点从块头获取ADS1值, 判断等式
是否成立, 如果不成立则返回0表示验证失败, 成立则继续
验证, 根据countr计算V[r][j]并判断等式
是否成
立, 如果不成立则返回0表示验证失败, 成立则返回1表示验证成功;
步骤S150: 有新块增加时, 全节点执行添加数据更新算法
更新区块链信息;
包括: 新对象Obj包含的关键词wi是需要更新信息关键词,
i∈add, add为数据D中所有需更新信息的关键词的索引集合, 对于每个关键词wi, 计算权 利 要 求 书 1/4 页
2
CN 115510126 A
2count′i为新块增加后wi包含对象的总数, 计
算
在块头存 储Φ′I、 Φ′C、
2.一种基于区块链的可验证关键词Top ‑K模糊查询方法, 其特征在于, 所述区块链包括
全节点和轻节点, 全节点为同步了所有区块链数据的节点, 包含块头和块体所有信息, 每个
块头包括一个ADS结构ADS2; 轻节点作为用户参与到区块链中, 轻节点只包含块头信息; 所
述方法包括:
步骤S210: 全节点执行密钥生成算法Genkey(1k)→(pk, sk)和累计值生成算法AccGen
(D, pk)→{ΦT}, 构建共识证明;
Genkey(1λ)→(pk, sk)包括: λ∈[1, N]为安全参数, 给定RSA累加器参数N=p ·q和g, 其
中p和q为大素数, |p ·q|>3 λ, g是循环群 QRN的生成元, 输出公共参数pk={N, (g, QRN)}和私
钥sk=(p‑1)(q‑1);
AccGen(D, pk) →ΦT包括: 根据所有数据D构建前缀树T, 将前缀树T的根节点的哈希值
ΦT作为ADS2保存到块头;
其中, 前缀树T是有序的多路树数据结构, 用于存储关键字, 从根节点到每个叶子节点
路径上的所有节点字符组成一个关键 字;
前缀树T的非叶子节点包括: 字符s、 所有子节点的哈希值连接后的哈希值Ch、 所有祖先
节点的字符组成的字符串Ap和所有子节点字符的集合Sc; 前缀树T根节点的字符为起始符
“$”;
前缀树T的叶子节点包括: 结束符 “#”、 该叶子节点包含的所有对象的累计值
和该叶子节 点中包含的所有对象的集合So, 验证矩阵V[j]=H
(Objj, j), H为抗碰撞哈希函数, n为叶子节点所包含对象的总数, wi为该叶子节点对应的关
键词, 将该叶子节点包含的对象由旧到新进行排序, Objj为第j个对象, P为通用哈希函数, P
(x)∈{0, 1}3 λ代表x对应的素 数值;
步骤S220: 轻节点向区块链里任意全节点发起模糊查询请求, 所述模糊查询请求包括
查询关键词w及Top ‑K查询结果数k到全节点, 其中w包 含模糊查询字符 “*”或“?”;
步骤S230: 全节点收到所述模糊查询请求后, 全节点执行查询算法Search(w, k) →R获
得查询结果R, 执行验证生成算法GenProof(w, k, pk) →VO计算验证对象VO, 并发送R和VO给
轻节点;
Search(w, k) →R包括: 如果w包含模糊查询字符 “*”则执行第一模糊查询, 如果w包含模
糊查询字符 “?”则执行第二模糊查询;
第一模糊查询包括: 对于查询关键词w= “s1s2…st*”, 其中s1、 s2、…、 st为第1至第t个字
符, 字符“*”为第t+1个字符, 在前缀树T中搜索得到w的最长子串ws=“s1s2…sl”, 如果l<t,
则使
如果l=t, 则将
视为根节点得到子树
提取子树
中叶子节点So中前k
个对象加入到R中; 其中,
为Ap||s的值为ws的节点, | |为字符串连接操作;
第二模糊查询包括: 对于查询关键词w= “s1s2…sh? sh+2sh+3…st”, 其中s1、 s2、…、 sh、…、
st为第1至第h再至第t个字符, 字符 “?”为第h+1个字符, 在前缀树T中搜索得到字符串权 利 要 求 书 2/4 页
3
CN 115510126 A
3
专利 一种基于区块链的可验证关键词Top-K查询方法
文档预览
中文文档
18 页
50 下载
1000 浏览
0 评论
0 收藏
3.0分
温馨提示:本文档共18页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 SC 于 2024-02-18 22:33:11上传分享