一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

区块链数据保密查询的存储系统及不经意传输方法

2022-04-13 18:18:16 来源:中国专利 TAG:


1.本发明涉及数据的传输技术领域。


背景技术:

2.随着区块链技术的快速发展,人们对区块链的隐私保护问题越来越重视,目前针对区块链隐私保护问题的研究主要集中在保密区块链交易双方的身份和交易内容,由此产生了一些区块链加密货币,例如门罗币、零币等。这些加密货币在区块链上完成交易后,全网无法得知该交易的发起者和接收者,文献“李旭东,牛玉坤,魏凌波等.比特币隐私保护综述[j].密码学报,2019,6(02):133-149.”对主流的隐私保护货币进行了归纳总结。在区块链用户隐私保护方面,文献“cheng lichen,liu jiqiang,jin yi,et al.account guarantee scheme:making anonymous accounts supervised in blockchain[j].acm transactions on internet technology(toit),2021,21(1):1-19.”提出了在区块链中监管匿名账户,从而保护个人隐私。
[0003]
在大数据时代下,数据已经成为推动人类社会发展的重要资源,所以研究如何在区块链上存储数据、保护隐私成为了新的发展方向。目前提出了用户将数据存储在区块链上以便用于交易和计算的思想,但还需要解决数据管理和存储空间的问题。在数据管理方面,obour等人提出一种基于区块链和代理重加密的数据共享方案,利用区块链中的处理节点作为代理服务器并加密数据,在确保数据安全的同时抵抗合谋攻击。在存储空间方面,nguyen binh truong等人提出链上-链下共同存储方式,将存储者的数据访问地址以加密的形式存储在链上,将用户的大量数据存储在链下,若查询者需要访问该用户数据,则需要被授予存储者访问令牌,并交予第三方获得真正的地址,显然该系统存在第三方泄漏数据地址和查询者信息的风险。文献“吕建富,赖英旭,刘静.基于链上链下相结合的日志安全存储与检索[j].计算机科学,2020,47(03):298-303.”出了一种基于链上-链下相结合的日志安全存储与检索模型,利用区块链分布式存储技术,该模型保证了数据的机密性和完整性,并通过链上索引的方式进行数据检索,然而该方案没有解决用户在检索数据、传输数据时导致个人信息泄漏的问题。miyachi等人将医疗数据存储在区块链上,并对数据共享、存储、访问和计算进行了隐私保护方面的评估和分析;同时提出了一个模块化的混合隐私保护框架,该框架基于保护患者的隐私信息来管理不同类型的医疗数据,保密电子病例、消费者基因数据等信息,但攻击者可以通过收集用户共享、传输的医疗数据推测出用户的个人敏感信息。
[0004]
综上所述,对于区块链数据存储和数据查询的隐私保护没有得到完全解决,查询者获取数据时,全网通过查询区块链上传输了哪些数据,可推出查询者的敏感信息。例如,bob认为自己得了某种遗传病,得知alice有这种遗传病的dna样品存储在区块链上,他想获取alice的dna样本进行比较,但bob又不想让别人知道自己有这种遗传病,这时对查询者的隐私保护研究就显得极为重要。


技术实现要素:

[0005]
本发明为了解决目前的区块链数据存储和数据查询存在不能很好的对隐私进行保护的问题。
[0006]
区块链数据保密查询的存储系统,所述存储系统是基于区块链技术搭建的,基于区块链技术搭建的存储系统包括轻节点、全节点、重加密节点;
[0007]
轻节点、全节点对应构成链上的网络层,链上的网络层全网公示,用于查询者选择区块链数据,每个区块分为块头和块身,重加密节点构成链下的数据存储层,链下的数据存储层存储大量的加密信息;
[0008]
轻节点负责记录区块链的块头以及促进区块链的运转;全节点负责记录整个链上的信息,为查询者提供块身中的索引信息;重加密节点负责保存链下数据存储层的大量数据;
[0009]
存储者将密文发送至重加密节点存放在链下数据存储层,将索引信息发送至全节点存放在链上网络层的块身中形成索引信息列表;
[0010]
重加密节点收到发布的新区块后就进行一次mapreduce运算,将新区块中所有存储者的数据按照存储者用户名进行分类,存储在数据存储层。
[0011]
进一步地,所述索引信息由存储者生成,其中包括数据标题、密文哈希值。
[0012]
进一步地,在进行mapreduce运算的过程中,重加密节点产生各个分节点同时进行并行运算,首先map阶段负责将数据进行切割,然后shuffle阶段进行分组和排序,reduce阶段进行归约,最后重加密节点再进行汇总,最终重加密节点将所有的数据按照存储者用户名分类存储在数据存储层中。
[0013]
进一步地,在进行mapreduce运算的过程中,重加密节点还通过分布式存储的方式将数据备份在各个分节点处。
[0014]
进一步地,轻节点记录区块链的块头时,块头由轻节点进行分布式存储。
[0015]
进一步地,所述轻节点记录的区块链的块头记录有上一区块头的哈希值,还记录随机数、merkle树根哈希值、时间戳信息。
[0016]
区块链数据保密查询的不经意传输方法,包括数据存储过程和不经意传输的过程;
[0017]
所述的数据存储过程包括以下步骤:
[0018]
存储者利用椭圆曲线加密算法对上传的信息进行加密得到密文和标识符,并将密文转为哈希值;同时为该密文选取标题和序号;存储者将密文发送至区块链数据保密查询的存储系统的重加密节点存储在数据存储层中,再将自己的用户名和该密文的序号、标题、标识符、密文哈希值组成一个索引信息发送至全节点;索引信息中的序号用于不经意传输时按从小到大的顺序依次发送,标题则为查询者提供信息类别,标识符用于加密查询者公钥,密文哈希值用于数据不经意传输完成后的验证;全节点将所有索引信息公开存储在链上块身中形成索引信息列表,同时依次将每一条索引信息转化为哈希值,用merkle树数据结构的方式形成一个根哈希值存储在块头中;
[0019]
所述的不经意传输过程包括以下步骤:
[0020]
(1)查询者确定获取数据的序号后,利用索引信息中的标识符加密自己的公钥发送给存储者;
[0021]
(2)存储者将自己的私钥与查询者发送的加密数据进行结合,产生重加密密钥,并将重加密密钥发送给重加密节点;
[0022]
(3)重加密节点在数据存储层中收到存储者上传的密文,利用重加密密钥依次对其进行二次加密,然后依次发送给查询者;
[0023]
(4)查询者按序号找到重加密节点发送的二次加密密文,利用自己的私钥进行解密获取存储者的原始数据。
[0024]
进一步地,所述利用椭圆曲线加密算法对上传的信息进行加密的过程包括以下步骤:
[0025]
将数据的存储者记为alice,alice选择sa作为私钥,通过椭圆曲线加密算法生成公钥pa=sa·
g,将原始数据编码成椭圆曲线上的点后进行公钥加密得到链下密文ci,每加密一个原始数据时alice需要选择一个随机数ri,同时利用这个随机数生成一个标识符ci'。
[0026]
进一步地,所述将密文转为哈希值的过程是利用sha256哈希函数实现的。所述依次将每一条索引信息转化为哈希值的过程是利用sha256哈希函数实现的。
[0027]
本发明的有益效果为:
[0028]
针对这类问题,本发明利用椭圆曲线加密算法设计了一个区块链中保密查询用户隐私的不经意传输方案方案,并引入代理重加密机制行传递数据,结合链上-链下协同存储方式,提高用户效率,减少存储空间,确保数据安全。该方案使得查询者在获取了存储者的某个数据后,全网和存储者无法得知查询者获取了哪一个数据,同时全网和查询者也无法获取存储者的其他数据,很好的保护了存储者和查询者的隐私。
附图说明
[0029]
图1为merkle树数据结构示意图;
[0030]
图2为区块链存储框架示意图;
[0031]
图3为mapreduce框架流程示意图;
[0032]
图4为区块链网络层数据存储框架示意图;
[0033]
图5为区块链不经意传输阶段流程图示意图。
具体实施方式
[0034]
为使本发明的目的、技术方案和优点更加清楚明了,下面通过附图中示出的具体实施例来描述本发明。但是应该理解,这些描述只是示例性的,而并非要限制本发明的范围。在此,还需要说明的是,为了避免因不必要的细节而模糊了本发明,在附图中仅仅示出了与根据本发明的方案密切相关的结构和/或处理步骤,而省略了与本发明关系不大的其他细节。
[0035]
在具体说明本发明之前,首先对发明涉及到的一些内容进行说明:
[0036]
不经意传输协议:不经意传输协议(oblivious transfer,ot)是密码学的基本工具,该协议保证接收方获取发送方的某个数据后,发送方不知道接收方获取了哪一个数据,同时接收方无法获取发送方的其他数据,目前研究最多的是协议。
[0037]
merkle树数据结构:merkle树数据结构主要用来快速归纳和校验数据的完整性,将数据分组进行哈希运算,向上不断递归运算产生新的哈希节点,最终只剩下一个merkle
根哈希值,如图1所示。merkle树具有不可篡改、可验证、高效率等特点,运用在区块链中极大的提高了区块链运行效率和可扩展性。
[0038]
具体实施方式一:
[0039]
本实施方式为区块链数据保密查询的存储系统。
[0040]
本发明的区块链数据保密查询的不经意传输方法是基于区块链数据保密查询的存储系统实现的,首先说明一下区块链数据保密查询的存储系统,具体如下:
[0041]
改进的区块链存储框架:由于数据在区块链上进行同步时会占用大量空间,本发明根据链上与链下相结合的存储思想,设计链上存储索引信息、链下存储原始数据的存储框架,释放了区块链上的大量存储空间。本发明将区块链分为网络层和数据存储层,链上的网络层全网公示,用于查询者选择区块链数据;链下的数据存储层存储大量的加密信息,如图2所示。
[0042]
图2中索引信息由存储者生成,其中包括数据标题、密文哈希值等,存储者将密文发送至重加密节点存放在链下数据存储层,将索引信息发送至全节点存放在链上网络层的块身中形成索引信息列表。该框架中有三类节点,分别是轻节点、全节点、重加密节点。轻节点负责记录区块链的块头以及促进区块链的运转;全节点负责记录整个链上的信息,包含块头和块身,为查询者提供块身中的索引信息;重加密节点负责保存链下数据存储层的大量数据。
[0043]
基于mapreduce的数据存储模型:mapreduce是一种编程模型,用于大规模数据集的并行运算,从而提高计算效率。重加密节点收到发布的新区块后就进行一次mapreduce运算,将新区块中所有存储者的数据按照存储者用户名进行分类,存储在数据存储层,以便在完成不经意传输阶段时节省筛选存储者数据的时间,图3给出了mapreduce的框架流程。
[0044]
在执行mapreduce的过程中,重加密节点产生各个分节点同时进行并行运算,首先map阶段负责将数据进行切割,然后shuffle阶段进行分组和排序,reduce阶段进行归约,最后重加密节点再进行汇总,最终重加密节点将所有的数据按照存储者用户名分类存储在数据存储层中。重加密节点通过分布式存储的方式将数据备份在重加密节点对应的各个分节点处,分节点将密文取哈希后与链上索引信息中的密文哈希值进行对比验证,保证数据的可用性和完整性。
[0045]
具体实施方式二:
[0046]
本实施方式为区块链数据保密查询的不经意传输方法,是基于区块链数据保密查询的存储系统实现的。
[0047]
本实施方式所述的区块链数据保密查询的不经意传输方法,包括数据存储部分和不经意传输部分;
[0048]
在数据存储部分,重加密节点将存储者加密后的数据采用mapreduce进行归类后,分布式存储在链下数据存储层,确保数据的完整性;全节点将存储者发送的索引信息存储在链上的块身中,使得查询者能根据索引信息找到自己想要的数据,不论是存储者本身还是各个节点(轻节点、全节点、重加密节点),都无法随意篡改数据,确保了数据的可靠性和可验证性。在不经意传输部分,查询者和存储者通过重加密节点进行不经意传输后,所有节点和存储者无法得知查询者获取了哪一个数据,同时存储者的私钥和原始数据不会泄漏。
[0049]
链上-链下数据存储:链上网络层中的每个区块分为块头和块身,块头由轻节点进
行分布式存储,上一区块头的哈希值记录在本块头中,防止数据被篡改;此外,块头中还记录了随机数、merkle树根哈希值、时间戳等信息。索引信息存放在块身中形成索引信息列表,按照从左到右的顺序排列,由全节点进行记录,使得查询者根据块身中的索引信息列表找到自己想要的数据。图4展示了区块链网络层中每个区块的数据结构。
[0050]
存储者利用椭圆曲线加密算法对上传的信息进行加密得到密文和标识符,再用sha256哈希函数将密文转为哈希值,同时为该密文选取标题和序号。存储者将密文发送至重加密节点存储在数据存储层中,再将自己的用户名和该密文的序号、标题、标识符、密文哈希值组成一个索引信息发送至全节点。索引信息中的序号用于不经意传输时按从小到大的顺序依次发送,标题则为查询者提供信息类别,标识符用于加密查询者公钥,密文哈希值用于数据不经意传输完成后的验证。全节点将所有索引信息公开存储在链上块身中形成索引信息列表,同时用sha256哈希函数依次将每一条索引信息转化为哈希值,用merkle树数据结构的方式形成一个根哈希值存储在块头中。
[0051]
不经意传输:重加密节点通过对密文进行二次加密,使得存储者不需要提供私钥,查询者仅利用自己的私钥就能完成对二次加密后的密文进行解密,交互过程分为四个步骤:
[0052]
(1)查询者确定获取数据的序号后,利用索引信息中的标识符加密自己的公钥发送给存储者;
[0053]
(2)存储者将自己的私钥与查询者发送的加密数据进行结合,产生重加密密钥,并将重加密密钥发送给重加密节点;
[0054]
(3)重加密节点在数据存储层中收到存储者上传的密文,利用重加密密钥依次对其进行二次加密,然后依次发送给查询者;
[0055]
(4)查询者按序号找到重加密节点发送的二次加密密文,利用自己的私钥进行解密获取存储者的原始数据。整个过程中存储者不知道查询者获得了哪个数据,具体过程如图5所示。
[0056]
在整个过程中,查询者获得数据后,可验证原始数据是否正确,利用存储者的公钥加密原始数据后取哈希值,然后与索引信息中的密文哈希值进行对比,相等则验证成功。
[0057]
具体协议设计:
[0058]
假设alice为数据存储者,bob为查询者,bob想要获取alice存储在区块链上的某个数据,但不想让全网和alice知道自己获取了哪一个数据。协议分为数据存储阶段和不经意传输阶段,alice在区块链正常运行下执行数据存储阶段,bob在需要获取区块链上的数据时执行不经意传输阶段。在整个协议过程中,均采用椭圆曲线加密算法进行加密解密,所有的数据均编码到椭圆曲线上的点进行运算。符号含义如表1所示,其中所有的i∈(1,2,3

n)。
[0059]
表1协议符号含义
[0060][0061]
协议构造:假设用户alice拥有原始数据m1,m2,m3…mn
,公钥pa和私钥sa,随机数ri。bob拥有公钥pb和私钥sb。alice利用私钥和随机数将数据存储到区块链中,bob需要查询数据时发起申请,通过验证身份后,开始与alice进行交互。协议1的伪代码算法如下:
[0062][0063]
协议1:区块链保密数据查询的不经意传输方案
[0064]
数据加密阶段:
[0065]
alice选择sa作为私钥,通过椭圆曲线加密算法生成公钥pa=sa·
g,将原始数据编码成椭圆曲线上的点后进行公钥加密得到密文ci,每加密一个原始数据时alice需要选择一个随机数ri,同时利用这个随机数生成一个标识符ci',加密过程如下:
[0066][0067]
数据保密查询阶段:
[0068]
第一步:bob选择随机数sb作为私钥,产生公钥pb=sb·
g。bob利用索引信息中的标识符和序号x计算x=c'
x
pb,然后将x发送给alice;
[0069]
第二步:alice计算k=sa·
x得到重加密密钥,并将k发送给重加密节点;
[0070]
第三步:重加密节点在链下存储层中找到alice所有的密文ci,利用重加密密钥k依次计算wi=k-ci,并将wi返回给bob;
[0071]
第四步:bob通过序号找到对应的w
x
(即i取x),利用私钥sb和alice的公钥pa计算m
x
=sb·
p
a-w
x
,并得到alice原始数据。
[0072]
协议结束。
[0073]
正确性分析:
[0074]
(1)第四步解密结果是正确的,bob对w
x
进行解密过程如下:
[0075]mx
=sb·
p
a-w
x
=sb·
sa·
g-k c
x
[0076]
=sb·
sa·
g-sa·
c'
x-sa·
pb c
x
.
[0077]
=sb·
sa·
g-sa·rx
·
g-sa·
sb·
g m
x
r
x
·
sa·
g=m
x
[0078]
(2)bob无法解密alice的其他数据,假设bob选择第y个二次加密密文wy进行解密,由于y≠x,所以ry≠r
x
,解密过程如下:
[0079][0080]
(3)bob和重加密节点无法获取alice的私钥,因为已知k=sa(c'
x
pb)中的k、pb、c'i,无法推出sa的值,已知wi=k-ci=sa·
pb sa·ri
·
g-m
i-ri·
sa·
g=sa·
sb·
g-m
x
中的wi、k、pb、ri·
g、mi、sb·
g,无法由任何一个等式推出sa的值。
[0081]
(4)alice和重加密节点无法知道bob获取了哪一个数据,在第二步中,alice收到bob发送的加密数据x后,可利用标识符依次计算pi=x-ci'解密得到bob的公钥,但得到n个数据时却不知道哪一个是bob的公钥,每个数据都有1/n的概率是bob的公钥,所以alice得到的数据均不可区分,具有很好的隐私性。
[0082]
目前防止隐私数据泄漏成为区块链隐私保护的研究热点,对于数据的隐私保护不局限于原始数据本身,查询者的访问数据也需要保密,不经意传输协议可以解决这类问题。本发明首先对传统的区块链数据链上-链下存储方式进行改进,其次利用椭圆曲线加密算法设计了一个区块链数据保密查询的不经意传输方案,实现了区块链数据存储者和查询者的隐私保护。经过分析,本发明设计的方案计算效率高,占用存储空间少,同时数据具有完整性、可靠性和可验证性等优势,具有实用价值。
[0083]
以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献