可左右滑动选省市

一种区块链车联网中的隐私保护数据订阅方法

更新时间:2024-07-06
一种区块链车联网中的隐私保护数据订阅方法 专利申请类型:发明专利;
源自:北京高价值专利检索信息库;

专利名称:一种区块链车联网中的隐私保护数据订阅方法

专利类型:发明专利

专利申请号:CN202210327669.6

专利申请(专利权)人:北京理工大学
权利人地址:北京市海淀区中关村南大街5号

专利发明(设计)人:祝烈煌,张璨,徐畅,丁瑶玲

专利摘要:本发明涉及一种区块链车联网中的隐私保护数据订阅方法,属于区块链及隐私信息保护技术领域。本方法在区块链中存储密文形式的数据与索引,并将查询的主题进行混淆,在保证查询结果正确性的前提下,外部攻击者无法根据链上存储的密文数据推断出明文的内容,也无法推断出用户查询的主题。本方法采用的基于哈希链的订阅密钥管理与分配法,用户可以通过订阅密钥查询订阅期内指定主题的内容,并解密查询结果,用户无法查询和解密在其订阅期和订阅主题以外的内容。用户在解密查询结果后,可以批量认证查询结果的完整性,实现车联网订阅查询结果的高效可验证。

主权利要求:
1.一种区块链车联网中的隐私保护数据订阅方法,其特征在于,包括以下步骤:步骤1:系统初始化;订阅服务商首先初始化数据订阅查询系统,生成一系列密钥,包括主密钥、用于产生数字签名的公私钥对,以及两个哈希链;
步骤1.1:订阅服务商生成一个主密钥k,和一个用于产生数字签名的公私钥对(pk,sk);pk表示公钥,sk表示私钥;
步骤1.2:订阅服务商生成两个哈希链U、V,每个哈希链均由L个哈希构成,L代表系统可支持的最大更新次数,由订阅服务商自行设置;
步骤1.3:设订阅数据中拟包含的所有主题集合为W,对W中的每个主题w,生成一个哈希链Sw,由L个哈希构成,并将其加入哈希链集合S;
步骤1.4:订阅服务商在区块链中部署车载数据订阅查询的智能合约,将pk公开发布到区块链,将k、U、V、S、sk秘密保存;
步骤2:订阅服务商更新数据;在完成系统初始化后,订阅服务商定期将自己新产生的数据和对应的主题加密混淆,并发布到区块链上;
c
设当前是订阅服务商的第c次更新,c为一个1到L之间的整数,更新的数据集合为D,其中包含n个子集 分别对应步骤1中主题集合W的主题w1,w2,…,wn,n代表集合W中的主题个数;
步骤2.1:订阅服务商初始化一个更新字典;
c
步骤2.2:对D中的每个子集 执行以下步骤:
步骤2.2.1:使用两条哈希链U、V,和哈希链集合S计算加密密钥;
步骤2.2.2:使用主密钥k和两条哈希链U、V,计算头索引;
步骤2.2.3:设d是 中的第j条数据,对 中的每条数据d执行以下步骤:步骤2.2.3.1:若d为 中的最后一条数据,且当前更新次数c>1,则利用主密钥k和集合S生成后继索引;否则,随机生成一串比特,作为后继索引;
步骤2.2.3.2:得到当前索引;当j=1时,当前索引为步骤2.2.2中产生的头索引;否则,当前索引为第j‑1次执行步骤2.2.3.1时产生的后继索引;
步骤2.2.3.3:使用步骤2.2.3.2中产生的当前索引与哈希链集合S计算异或密钥,将异或密钥与步骤2.2.3.1中产生的后继索引进行异或操作,得到异或后的后继索引;
步骤2.2.3.4:使用私钥sk计算对数据d的签名,将签名和使用哈希链集合S与步骤
2.2.3.2中产生的当前索引计算的密钥进行异或操作,得到异或后的数字签名;
步骤2.2.3.5:使用步骤2.2.1中产生的加密密钥对d加密,得到加密后的密文数据;
步骤2.2.3.6:将当前的更新次数c、异或后的后继索引、异或后的数字签名以及加密后的密文数据,进行拼接;以步骤2.2.3.2中产生的当前索引作为查询索引作为查询索引,以拼接后的数据所谓查询索引对应的值,构造键值对,并添加到更新字典中;
步骤2.3:订阅服务商将更新字典上传到区块链;
步骤3:订阅服务商向用户分发订阅密钥;在用户进行订阅查询之前,要向订阅服务商发送订阅请求,并向订阅服务商付费;
设用户订阅由第a次更新到第b次更新之间的主题为w的所有数据;订阅服务商在收到用户支付的相应费用后,根据用户的订阅请求,生成并分发订阅密钥;
步骤3.1:从哈希链U中找到第a个哈希ua,从哈希链V中找到第b个哈希vb;
步骤3.2:从哈希链集合S中找到和主题w相关的哈希链Sw,并从Sw中找到第b个哈希hb;
步骤3.3:将ua、vb、hb和主密钥k通过安全信道发送给用户;
步骤4:用户订阅查询;在获得由步骤3中订阅服务商发来的订阅密钥后,用户执行订阅查询操作;
设用户查询由第p次更新到第q次更新之间主题为w的所有数据,其中订阅查询需满足p<q、p≥a以及q≤b;用户首先生成订阅查询令牌,并发送到区块链网络,智能合约在收到查询令牌后,执行查询操作,向用户返回密文形式的查询结果;
步骤4.1:用户使用从订阅服务商中获取的哈希hb,计算b‑q次哈希值,得到哈希hq;
步骤4.2:用户使用hq和步骤3获取的密钥k,计算头索引;
步骤4.3:用户生成查询令牌,包括p、q、hq和步骤4.2中产生的头索引;
步骤4.4:用户将查询令牌发送给区块链智能合约;
步骤4.5:智能合约在收到用户的查询令牌后,解析令牌得到p、q、hq和头索引,并初始化查询结果集合;
步骤4.6:智能合约将当前索引设置为步骤4.5中解析得到的头索引;
步骤4.7:智能合约在区块链中查询当前索引对应的值,若值非空,执行步骤4.7.1‑
4.7.6;否则,执行步骤4.8:
步骤4.7.1:将查询到的值解析为四部分,包括更新次数c、异或后的后继索引、异或后的数字签名、密文数据;
步骤4.7.2:使用步骤4.3中解析得到的哈希hq,计算q‑c次哈希值,得到哈希hc;
步骤4.7.3:将从步骤4.7.1中解析得到的异或后的后继索引、步骤4.7.2中计算的哈希hc,与当前索引计算得到的异或密钥进行异或操作,恢复出后继索引;
步骤4.7.4:将从步骤4.7.1中解析得到的异或后的数字签名、步骤4.7.2中计算的哈希hc,与当前索引计算得到的异或密钥进行异或操作,恢复出数字签名;
步骤4.7.5:将从步骤4.7.1中解析得到的更新次数、从步骤4.7.4中得到的数字签名与从步骤4.7.1中解析得到的密文数据进行拼接,加入查询结果集合;
步骤4.7.6:将当前索引设置为从步骤4.7.3中得到的后继索引;
步骤4.8:智能合约向用户返回查询结果集合;
步骤5:用户验证并解密查询结果;在收到由智能合约发来的密文形式的查询结果集合后,用户首先使用订阅密钥解密集合中的数据,之后批量验证数字签名,并移除签名有误的数据,最终恢复出原始数据,即为最终的查询结果;
步骤5.1:初始化一个签名集合与一个解密数据集合;
步骤5.2:对于查询结果集合中的每个条目,用户将其解析为三部分,包括更新次数c、数字签名、密文数据,并执行以下步骤:步骤5.2.1:使用步骤3中从订阅服务商中获取的哈希ua,计算c‑a次哈希值,得到哈希uc;
步骤5.2.2:使用步骤3中从订阅服务商中获取的哈希vb,计算b‑c次哈希值,得到哈希vc;
步骤5.2.3:使用步骤3中从订阅服务商中获取的哈希hb,计算b‑c次哈希值,得到哈希hc;
步骤5.2.4:使用步骤5.2.1‑5.2.3中得到的uc、vc和hc计算解密密钥;
步骤5.2.5:使用步骤5.2.4中得到的解密密钥,解密步骤5.2中解析得到的密文数据,得到解密后的数据;
步骤5.2.6:将步骤5.2中解析得到的数字签名加入签名集合,将步骤5.2.5中得到的解密后的数据加入解密数据集合;
步骤5.3:使用执行步骤5.2后得到的签名集合与解密数据集合,批量验证数字签名的合法性;若验证通过,则将解密数据集合视作订阅查询得到的查询结果;若不通过,则移除那些导致批量验证不通过的无效签名信息与解密数据信息,将移除无效数据后得到的解密数据集合视作订阅查询得到的查询结果。 说明书 : 一种区块链车联网中的隐私保护数据订阅方法技术领域[0001] 本发明涉及一种数据隐私保护方法,具体包括一种区块链车联网中的隐私保护数据订阅方法,属于区块链及隐私信息保护技术领域。背景技术[0002] 随着智能网联汽车技术的发展,车联网吸引了越来越多人的关注。车联网以装载车载单元OBU的智能汽车为载体,通过自身网络模块与路旁单元RSU等基础设施,实现车与车(V2V)、车与基础设施(V2I)乃至车与万物(V2X)的通信。[0003] 车联网的出现为车辆用户带来了更多便利。以数据订阅这一车联网中的典型应用为例,订阅服务商定期将自己的数据发布在云服务器,其中每条数据均包含一个特定的主题,如新闻、天气等,用户需要向订阅服务商购买针对特定时间段(如2022年)和特定主题(如时事新闻)的订阅密钥,当用户需要查询订阅期内某个主题的数据时,通过订阅密钥生成查询令牌发送到云服务器,云服务器向用户返回查询结果。[0004] 显然,上述的车联网数据订阅方案基于中心化架构,一旦中心化的云服务器出现单点故障,方案的可靠性将无法保证。此外,恶意的云服务器可能出于自身利益(如节省自身的计算资源),向用户返回错误的查询结果,而用户本身无法验证查询结果的正确性,这进一步破坏了公平性,即用户付出了订阅费用,但没有得到正确的订阅查询结果。[0005] 区块链技术具有无中心化和数据不可篡改的特点,将区块链技术应用于车联网数据订阅这一场景,可有效解决传统中心化架构导致的单点崩溃故障与查询结果可能存在错误的问题。然而,在车联网数据订阅中,隐私问题同样重要。一旦存储在云服务器的订阅数据泄露,可能会导致数据的非法访问,即未授权用户也可以看到这些数据的内容,这将给订阅服务商造成重大的经济损失。此外,用户查询的主题可能会泄露用户的隐私信息,如家庭住址、个人爱好、职业等敏感信息,这些信息一旦被恶意攻击者所获知,可能会用于电信诈骗等非法用途,严重危害的用户的安全。发明内容[0006] 本发明的目的是针对现有技术存在的缺陷,为了解决车联网数据订阅中存在的单点故障与查询结果不正确的技术问题,同时实现保护订阅服务商的数据隐私和用户的查询隐私,创造性地提出一种区块链车联网中的隐私保护数据订阅方法。[0007] 本发明的创新点在于:第一,在区块链中存储密文形式的数据与索引,并将查询的主题进行混淆,在保证查询结果正确性的前提下,外部攻击者无法根据链上存储的密文数据推断出明文的内容,也无法推断出用户查询的主题。第二,提出了一种基于哈希链的订阅密钥管理与分配方法,用户可以通过订阅密钥查询订阅期内指定主题的内容,并解密查询结果,用户无法查询和解密在其订阅期和订阅主题以外的内容。第三,用户在解密查询结果后,可以批量认证查询结果的完整性,实现车联网订阅查询结果的高效可验证。[0008] 本发明采用以下技术方案实现。[0009] 一种区块链车联网中的隐私保护数据订阅方法,包括以下步骤:[0010] 步骤1:系统初始化。[0011] 订阅服务商首先初始化数据订阅查询系统,生成一系列密钥。具体地,包括以下步骤:[0012] 步骤1.1:订阅服务商生成一个主密钥k,和一个用于产生数字签名的公私钥对(pk,sk)。pk表示公钥,sk表示私钥。[0013] 步骤1.2:订阅服务商生成两个哈希链U、V,每个哈希链均由L个哈希构成,L代表系统可支持的最大更新次数,由订阅服务商自行设置。[0014] 步骤1.3:设订阅数据中拟包含的所有主题集合为W,对W中的每个主题w,生成一个哈希链Sw,由L个哈希构成,并将其加入哈希链集合S。[0015] 步骤1.4:订阅服务商在区块链中部署车载数据订阅查询的智能合约,将pk公开发布到区块链,将k、U、V、S、sk秘密保存。[0016] 步骤2:订阅服务商更新数据。[0017] 在完成系统初始化后,订阅服务商定期(如每天一次)将自己新产生的数据和对应的主题加密混淆,并发布到区块链上。[0018] 设当前是订阅服务商的第c次更新,c为一个1到L之间的整数,更新的数据集合为cD,其中包含n个子集 分别对应步骤1中主题集合W的主题w1,w2,…,wn,n代表集合W中的主题个数。[0019] 具体地,包括以下步骤:[0020] 步骤2.1:订阅服务商初始化一个更新字典。[0021] 步骤2.2:对Dc中的每个子集 执行以下步骤:[0022] 步骤2.2.1:使用两条哈希链U、V,和哈希链集合S计算加密密钥。[0023] 步骤2.2.2:使用主密钥k和两条哈希链U、V,计算头索引。[0024] 步骤2.2.3:设d是 中的第j条数据,对 中的每条数据d执行以下步骤:[0025] 步骤2.2.3.1:若d为 中的最后一条数据,且当前更新次数c>1,则利用主密钥k和集合S生成后继索引;否则,随机生成一串比特,作为后继索引。[0026] 步骤2.2.3.2:得到当前索引。当j=1时,当前索引为步骤2.2.2中产生的头索引;否则,当前索引为第j‑1次执行步骤2.2.3.1时产生的后继索引。[0027] 步骤2.2.3.3:使用步骤2.2.3.2中产生的当前索引与哈希链集合S计算异或密钥,将异或密钥与步骤2.2.3.1中产生的后继索引进行异或操作,得到异或后的后继索引。[0028] 步骤2.2.3.4:使用私钥sk计算对数据d的签名,将签名和使用哈希链集合S与步骤2.2.3.2中产生的当前索引计算的密钥进行异或操作,得到异或后的数字签名。[0029] 步骤2.2.3.5:使用步骤2.2.1中产生的加密密钥对d加密,得到加密后的密文数据。[0030] 步骤2.2.3.6:将当前的更新次数c、异或后的后继索引、异或后的数字签名以及加密后的密文数据,进行拼接。以步骤2.2.3.2中产生的当前索引作为查询索引作为查询索引,以拼接后的数据所谓查询索引对应的值,构造键值对,并添加到更新字典中。[0031] 步骤2.3:订阅服务商将更新字典上传到区块链。[0032] 步骤3:订阅服务商向用户分发订阅密钥。[0033] 在用户进行订阅查询之前,要向订阅服务商发送订阅请求,并向订阅服务商付费。[0034] 设用户订阅由第a次更新到第b次更新之间的主题为w的所有数据。订阅服务商在收到用户支付的相应费用后,根据用户的订阅请求,生成并分发订阅密钥。[0035] 具体地,包括以下步骤:[0036] 步骤3.1:从哈希链U中找到第a个哈希ua,从哈希链V中找到第b个哈希vb。[0037] 步骤3.2:从哈希链集合S中找到和主题w相关的哈希链Sw,并从Sw中找到第b个哈希hb。[0038] 步骤3.3:将ua、vb、hb和主密钥k通过安全信道发送给用户。[0039] 步骤4:用户订阅查询。[0040] 在获得由步骤3中订阅服务商发来的订阅密钥后,用户可以执行订阅查询操作。[0041] 设用户查询由第p次更新到第q次更新之间主题为w的所有数据,其中订阅查询需满足p<q、p≥a以及q≤b。用户首先生成订阅查询令牌,并发送到区块链网络,智能合约在收到查询令牌后,执行查询操作,向用户返回密文形式的查询结果。[0042] 具体地,包括以下步骤:[0043] 步骤4.1:用户使用从订阅服务商中获取的哈希hb,计算b‑q次哈希值,得到哈希hq。[0044] 步骤4.2:用户使用hq和步骤3获取的密钥k,计算头索引。[0045] 步骤4.3:用户生成查询令牌,包括p、q、hq和步骤4.2中产生的头索引。[0046] 步骤4.4:用户将查询令牌发送给区块链智能合约。[0047] 步骤4.5:智能合约在收到用户的查询令牌后,解析令牌得到p、q、hq和头索引,并初始化查询结果集合。[0048] 步骤4.6:智能合约将当前索引设置为步骤4.5中解析得到的头索引。[0049] 步骤4.7:智能合约在区块链中查询当前索引对应的值,若值非空,执行步骤4.7.1‑4.7.6;否则,执行步骤4.8:[0050] 步骤4.7.1:将查询到的值解析为四部分,包括更新次数c、异或后的后继索引、异或后的数字签名、密文数据。[0051] 步骤4.7.2:使用步骤4.3中解析得到的哈希hq,计算q‑c次哈希值,得到哈希hc。[0052] 步骤4.7.3:将从步骤4.7.1中解析得到的异或后的后继索引、步骤4.7.2中计算的哈希hc,与当前索引计算得到的异或密钥进行异或操作,恢复出后继索引。[0053] 步骤4.7.4:将从步骤4.7.1中解析得到的异或后的数字签名、步骤4.7.2中计算的哈希hc,与当前索引计算得到的异或密钥进行异或操作,恢复出数字签名。[0054] 步骤4.7.5:将从步骤4.7.1中解析得到的更新次数、从步骤4.7.4中得到的数字签名与从步骤4.7.1中解析得到的密文数据进行拼接,加入查询结果集合。[0055] 步骤4.7.6:将当前索引设置为从步骤4.7.3中得到的后继索引。[0056] 步骤4.8:智能合约向用户返回查询结果集合。[0057] 步骤5:用户验证并解密查询结果。[0058] 在收到由智能合约发来的密文形式的查询结果集合后,用户首先使用订阅密钥解密集合中的数据,之后批量验证数字签名,并移除签名有误的数据,最终恢复出原始数据,即为最终的查询结果。[0059] 具体地,包括以下步骤:[0060] 步骤5.1:初始化一个签名集合与一个解密数据集合。[0061] 步骤5.2:对于查询结果集合中的每个条目,用户将其解析为三部分,包括更新次数c、数字签名、密文数据,并执行以下步骤:[0062] 步骤5.2.1:使用步骤3中从订阅服务商中获取的哈希ua,计算c‑a次哈希值,得到哈希uc。[0063] 步骤5.2.2:使用步骤3中从订阅服务商中获取的哈希vb,计算b‑c次哈希值,得到哈希vc。[0064] 步骤5.2.3:使用步骤3中从订阅服务商中获取的哈希hb,计算b‑c次哈希值,得到哈希hc。[0065] 步骤5.2.4:使用步骤5.2.1‑5.2.3中得到的uc、vc和hc计算解密密钥。[0066] 步骤5.2.5:使用步骤5.2.4中得到的解密密钥,解密步骤5.2中解析得到的密文数据,得到解密后的数据。[0067] 步骤5.2.6:将步骤5.2中解析得到的数字签名加入签名集合,将步骤5.2.5中得到的解密后的数据加入解密数据集合。[0068] 步骤5.3:使用执行步骤5.2后得到的签名集合与解密数据集合,批量验证数字签名的合法性。若验证通过,则将解密数据集合视作订阅查询得到的查询结果;若不通过,则移除那些导致批量验证不通过的无效签名信息与解密数据信息,将移除无效数据后得到的解密数据集合视作订阅查询得到的查询结果。[0069] 有益效果[0070] 本发明,对比现有技术,具有以下优点:[0071] 1.更高的可靠性。本发明方法,使用无中心化的区块链技术,将数据的存储和查询操作放在区块链上,解决了传统中心化车联网架构下的数据订阅机制因单点故障等原因导致的系统崩溃问题,且任何人都不能修改存储在区块链上的数据。此外,本发明方法,使用智能合约在区块链上执行订阅查询过程,确保了查询结果能够正确地执行。因此,与现有车联网数据订阅机制相比,本发明具有更强的可靠性。[0072] 2.更有效的隐私保护。本发明方法,使用密码学技术对订阅服务商上传的原始数据进行加密,对用户订阅查询时的主题进行混淆,外部攻击者无法恢复链上数据,也无法推断出用户查询的主题。此外,用户无法恢复出属于其订阅之外的数据,阻止了数据的非授权访问。因此,在区块链车联网中的数据订阅场景下,本发明可以保护订阅服务商的数据隐私和用户的查询隐私。[0073] 3.高效可验证。本发明方法,支持用户对查询结果完整性的验证。此外,在用户收到查询结果时,只需执行一次批量验证操作,即可验证查询结果的完整性,验证操作次数和查询结果数量无关。因此,本发明实现了区块链车联网中数据订阅查询结果的高效可验证。附图说明[0074] 图1为本发明方法的流程示意图;[0075] 图2为本发明方法中第c次更新时的加密索引结构示意图;[0076] 图3为本发明方法中用户解密过程示意图。具体实施方式[0077] 下面结合附图和实施例对本发明做进一步详细说明。[0078] 实施例[0079] 如图1所示,一种区块链车联网中的隐私保护数据订阅方法,包括以下步骤:[0080] 步骤1:系统初始化。[0081] 订阅服务商首先需要初始化数据订阅查询系统,生成一系列密钥。具体地,包括以下步骤:[0082] 步骤1.1:订阅服务商生成一个主密钥k,和一个用于产生数字签名的公私钥对(pk,sk)。[0083] 步骤1.2:订阅服务商生成两个哈希链U={u1,...,uL}和V={v1,...,vL},每个哈希链均由L个长度为256比特的哈希构成,其中L代表系统可支持的最大更新次数,由订阅服务商自行设置。具体地,U中哈希ui的计算规则为:当i=1时,ui为一段长度为256比特的随机字符串,当1<i≤L时,ui=H(ui‑1),这里的H代表SHA256哈希函数。V中哈希vi的计算规则为:当i=l时,vi为一段长度为256比特的随机字符串,当1≤i<L时,vi=H(vi+1),这里的H代表SHA256哈希函数。[0084] 步骤1.3:设订阅数据中拟包含的所有主题集合为W,对W中的每个主题w,生成一个哈希链Sw,由L个长度为256比特的哈希构成,并将其加入哈希链集合S。Sw中哈希 的计算规则为:当i=L时, 为一段长度为256比特的随机字符串,当1≤i<L时,这里的H代表SHA256哈希函数。[0085] 步骤1.4:订阅服务商在区块链中部署车载数据订阅查询的智能合约,将pk公开发布到区块链,将k,U,V,S,sk秘密保存。[0086] 步骤2:订阅服务商更新数据。[0087] 在完成系统初始化后,订阅服务商定期(如每天一次)将自己新产生的数据和对应的主题加密混淆,并发布到区块链上。假设当前是订阅服务商的第c次更新,其中c为一个1到L之间的整数,更新的数据集合为Dc,其中包含n个子集 分别对应步骤1.3中主题集合W的主题w1,w2,...,wn,这里n代表集合W中的主题个数。第c次更新时的加密索引结构示意图如图2所示。[0088] 具体地,包括以下步骤:[0089] 步骤2.1:订阅服务商初始化一个更新字典Dic。[0090] 步骤2.2:对Dc中的每个子集 执行以下步骤:[0091] 步骤2.2.1:分别找到步骤1.2中产生的两条哈希链U,V中的第c个哈希,记为uc和vc;找到步骤1.3中产生的哈希链集合S中对应 主题w的哈希链Sw,进一步找到Sw中的第c个哈希hc,计算加密密钥Kc=F(hc,uc||vc)。其中F为一个安全的伪随机函数,输入为一个长度为256比特的字符串和一个长度为任意比特的字符串,输出为一个长度为256比特的字符串,||为字符串拼接操作。[0092] 步骤2.2.2:计算头索引r1=F(hc,k),其中k为步骤1.1中产生的密钥。[0093] 步骤2.2.3:对 中的每条数据d(这里假设d是 中的第j条数据),执行以下步骤:[0094] 步骤2.2.3.1:设后继索引为rj+1,若d为 中的最后一条数据,且当前更新次数c>1,则计算rj+1=F(hc‑1,k),其中hc‑1为步骤2.2.1中哈希链Sw的第c‑1个哈希;否则,rj+1为一段长度为256比特的随机字符串。[0095] 步骤2.2.3.2:设当前索引为rj,当j=1时,rj=r1,即步骤2.2.2中产生的头索引;否则,rj为第j‑1次执行步骤2.2.3.1时产生的后继索引。[0096] 步骤2.2.3.3:计算异或后的后继索引 其中 为异或操作。[0097] 步骤2.2.3.4:计算Schnorr数字签名σ=Π.Sig(d,sk),其中Π.Sig代表Schnorr签名方案中的数字签名生成算法,sk为步骤1.1中产生的私钥;之后计算异或后的签名其中G为一个安全的伪随机函数,输入为两个长度为256比特的字符串,输出为一个长度与Schnorr数字签名长度相同的字符串。[0098] 步骤2.2.3.5:计算密文数据E=Γ.Enc(Kc,d),其中Γ.Enc为AES加密方案中的加密算法,Kc为步骤2.2.1中产生的加密密钥。[0099] 步骤2.2.3.6:构造查询索引为rj,对应值为c||Φ||σ′||E的键值对,并添加到更新字典Dic中,其中rj为步骤2.2.3.2中得到的当前索引,c为当前的更新次数,Φ,σ′,E分别为步骤2.2.3.3‑2.2.3.5中产生的异或后的后继索引、异或后的数字签名与密文数据。[0100] 步骤2.3:订阅服务商将通过步骤2.1和步骤2.2产生的更新字典Dic上传到区块链。[0101] 步骤3:订阅服务商向用户分发订阅密钥。[0102] 在用户进行订阅查询之前,需要向订阅服务商发送订阅请求,并向订阅服务商付费。这里假设用户订阅由第a次更新到第b次更新之间的主题为w的所有数据。订阅服务商在收到用户支付的相应费用后,根据用户的订阅请求,生成并分发订阅密钥。[0103] 具体地,包括以下步骤:[0104] 步骤3.1:从步骤1.2产生的哈希链U中找到第a个哈希ua,从步骤1.2产生的哈希链V中找到第b个哈希vb。[0105] 步骤3.2:从步骤1.3产生的哈希链集合S中找到和主题w相关的哈希链Sw,并从Sw中找到第b个哈希hb。[0106] 步骤3.3:将ua,vb,hb和步骤1.1中产生的密钥k通过安全信道发送给用户。[0107] 步骤4:用户订阅查询。[0108] 在获得由步骤3中订阅服务商发来的订阅密钥后,用户可以执行订阅查询操作。假设用户查询由第p次更新到第q次更新之间主题为w的所有数据,其中订阅查询需满足(1)p<q;(2)p≥a;(3)q≤b。用户首先生成订阅查询令牌,并发送到区块链网络,智能合约在收到查询令牌后,执行查询操作,向用户返回密文形式的查询结果。[0109] 具体地,包括以下步骤:[0110] 步骤4.1:用户使用步骤3.3中从订阅服务商中获取的哈希hb和步骤1.3中定义的SHA256哈希函数H,计算b‑q次哈希值,得到哈希hq。[0111] 步骤4.2:计算头索引ind=F(hq,k),其中F为步骤2.2.1中定义的伪随机函数,k为步骤3.3中用户从订阅服务商获取的密钥。[0112] 步骤4.3:用户生成查询令牌T=(p,q,ind,hq),p,q分别代表用户本次订阅查询周期的起始值和结束值。[0113] 步骤4.4:用户将查询令牌T发送给区块链智能合约。[0114] 步骤4.5:智能合约在收到用户的查询令牌T后,解析令牌得到p,q,ind,hq,其中p,q分别代表用户本次订阅查询周期的起始值和结束值,ind代表头索引,hq为查询操作所用的哈希值,并初始化查询结果集合Res。[0115] 步骤4.6:智能合约设置当前索引r=ind。[0116] 步骤4.7:智能合约在区块链中查询当前索引r对应的值,若值非空,执行步骤4.7.1‑4.7.6;否则,执行步骤4.8:[0117] 步骤4.7.1:将查询到的值解析为四部分,分别为(1)更新次数c、(2)异或后的后继索引Φ、(3)异或后的数字签名σ′和(4)密文数据E。[0118] 步骤4.7.2:使用步骤4.3中解析得到的哈希hq和步骤1.3中定义的SHA256哈希函数H,计算q‑c次哈希值,得到哈希hc。[0119] 步骤4.7.3:计算后继索引 其中 为异或操作,F为步骤2.2.1中定义的伪随机函数。[0120] 步骤4.7.4:计算数字签名 其中G为步骤2.2.3.4中定义的伪随机函数。[0121] 步骤4.7.5:将c||σ||E加入查询结果集合Res,其中c为步骤4.7.1中解析得到的更新次数,σ为步骤4.7.4中得到的数字签名,E为步骤4.7.1中解析得到的密文数据,||为字符串拼接操作。[0122] 步骤4.7.6:设置当前索引r=r′,其中r′为从步骤4.7.3中得到的后继索引。[0123] 步骤4.8:智能合约向用户返回查询结果集合Res。[0124] 步骤5:用户验证并解密查询结果。[0125] 在收到由智能合约发来的密文形式的查询结果集合后,用户首先使用订阅密钥解密集合中的数据,之后批量验证数字签名,并移除签名有误的数据,最终恢复出原始数据,即为最终的查询结果。用户解密过程示意图如图3所示。[0126] 具体地,包括以下步骤:[0127] 步骤5.1:初始化一个签名集合∑与一个解密数据集合R。[0128] 步骤5.2:对于查询结果集合中的每个条目,用户将其解析为三部分,分别为(1)更新次数c;(2)数字签名σ;(3)密文数据E,并执行以下步骤:[0129] 步骤5.2.1:使用步骤3.3中从订阅服务商中获取的哈希ua和步骤1.3中定义的SHA256哈希函数H,计算c‑a次哈希值,得到哈希uc。[0130] 步骤5.2.2:使用步骤3.3中从订阅服务商中获取的哈希vb和步骤1.3中定义的SHA256哈希函数H,计算b‑c次哈希值,得到哈希vc。[0131] 步骤5.2.3:使用步骤3.3中从订阅服务商中获取的哈希hb和步骤1.3中定义的SHA256哈希函数H,计算b‑c次哈希值,得到哈希hc。[0132] 步骤5.2.4:计算解密密钥Kc=F(hc,uc||vc),其中F为步骤2.2.1中定义的伪随机函数。[0133] 步骤5.2.5:将步骤5.2中解析得到的密文数据E解密,得到解密后的数据d=Γ.Dec(Kc,E),其中Γ.Dec为AES加密方案中的解密算法。[0134] 步骤5.2.6:将步骤5.2中解析得到的数字签名σ加入签名集合∑,将步骤5.2.5中得到的解密后的数据d加入解密数据集合R。[0135] 步骤5.3:计算b=Π.BatchVer(pk,R,∑),pk为步骤1.1中产生的订阅服务商的公钥,Π.BatchVer为Schnorr签名方案中的批量验证算法。若b=true说明验证通过,则将R视作订阅查询得到的查询结果;若b=false说明验证不通过,则需要从R中移除那些导致批量验证不通过的无效签名信息与解密数据信息,将移除无效数据后得到的R视作订阅查询得到的查询结果。[0136] 为了说明本发明的内容及实施方法,本说明书给出了上述具体实施例。但是,本领域技术人员应理解,本发明不局限于上述最佳实施方式,任何人在本发明的启示下都可得出其他各种形式的产品,但不论在其形状或结构上作任何变化,凡是具有与本申请相同或相近似的技术方案,均落在本发明的保护范围之内。

专利地区:北京

专利申请日期:2022-03-30

专利公开日期:2024-06-18

专利公告号:CN114726503B

电话咨询
读内容
搜本页
回顶部