1.一种基于PBFT共识机制的对称可搜索加密方法,其特征在于包括如下步骤:准备阶段;
检索阶段;
共识阶段;
更新阶段。
2.如权利要求1所述的基于PBFT共识机制的对称可搜索加密方法,其特征在于,所述准备阶段包括如下步骤:
创建合约账户:为每个用户创建一个合约账户,并编写智能合约;智能合约的功能包括:①接收用户发送的检索陷门;②接收服务器发送的押金,并向其发送检索陷门;③接收由主云服务器节点发送的检索结果并对结果进行验证;④将验证后的结果发送至用户;
密文数据准备:用户选取密钥,然后利用SSE算法对明文数据进行加密并建立密文索引,将密文数据和索引上传至云服务器节点;数据传输过程无需借助区块链,只在区块链中记录存有用户数据的服务器地址和数量;
密钥申请和协商:用户及各个服务器节点均需要向CA节点申请数字证书;利用公钥密码算法实现用户和云服务器节点之间的安全通信;SSE密钥由用户生成,并保存在本地。
3.如权利要求2所述的基于PBFT共识机制的对称可搜索加密方法,其特征在于,所述检索阶段包括如下步骤:
广播请求:用户向区块链中广播一条检索请求消息,消息中包含用户创建的合约账户地址AC,不含检索陷门;
云服务器节点加入:收到用户检索请求的服务器节点则做出响应;对于某一检索请求,云服务器可能处于三种状态:①离线,即未收到请求,不响应;②在线但不参与,即收到请求,但由于资源或网络问题不参与检索过程,不响应;③在线且参与,即收到请求,且对请求做出响应;同一时刻,必须至少有4个服务器节点在线且参与系统运行;
在线且参与检索的云服务器节点需要构造一笔向合约账户支付押金的交易,用于向合约账户购买此次检索中用户提交的陷门;服务器节点支付的押金会暂存于合约账户,若云服务器节点返回的检索结果通过验证或用户未发送检索陷门,合约账户将押金退回给云服务器节点;如果验证失败,押金则转至用户账户;
合约账户收到云服务器节点的押金之后,将支付押金的服务器节点地址汇总后发送给用户;
陷门分发:用户U在本地将待查询关键字利用SSE密钥生成检索陷门T;用户在收到智能合约发送的汇总后的地址
智能合约收到用户服务费之后,提取出各服务器的地址和对应的陷门,之后构建一笔交易,将陷门发送给云服务器节点Si(i=0,1,2,…),交易内包含
检索:云服务器收到陷门之后,利用本地存储的索引和密文数据执行SSE检索算法,然后将检索结果的特征信息广播至区块链;参与检索的多个云服务器节点需要借助改进后的PBFT共识机制,在共识阶段对检索结果进行验证,同时对云服务器节点的行为进行监督;
结果验证:合约账户收到主节点发送的交易后校验F的值,F为代表本次检索结果是否存在的标志参数;若F=1,表示本次检索成功,然后从交易附加的节点地址中随机选取一个,向其发送一条请求检索结果R的消息,云服务器节点Si收到消息后将检索结果R发送给合约账户;合约账户使用R验证<[I1,I2,I3,…],[Hash(RI1), Hash(RI2), Hash(RI3),…]>,验证通过后构建一笔交易将R发送给用户;验证失败则对恶意节点行为进行记录,并从交易附带的地址中选取另一节点索取检索结果继续验证,直至验证成功或索取到所有节点的检索结果;每次检索完成后合约账户广播恶意节点行为记录列表;若F=0,说明本次检索失败,无对应结果,合约账户则构建一笔空的交易发送给用户;
用户解密:用户账户收到合约账户的交易后从中提取出R,用户使用本地存储的SSE密钥解密R得到明文结果,如果解密成功,则检索完成;
有两种情况会导致解密失败:1)由于在共识过程中各个云服务器节点检验的是局部数据的哈希值,可能会出现哈希碰撞,导致有两个及以上的密文数据能对同一交易列表List中的交易验证成功,但错误的密文数据无法解密出明文;2)用户端计算出现错误:若用户验证失败,则向合约账户发送失败消息;合约账户向其余所有节点索取检索结果,如果有不一致的结果,则合约账户将不一致的结果发给用户继续验证;如果用户对新的结果仍然验证失败,则说明用户计算出错;将所有节点的检索结果发给用户,之后不再对用户的失败消息做出响应。
4.如权利要求3所述的基于PBFT共识机制的对称可搜索加密方法,其特征在于,所述共识阶段包括如下步骤:
陷门分发和检索:从全部存有用户密文的云服务器节点中选举出一个主节点,新区块由主节点负责生成;主节点若在线则必须响应用户检索请求,主节点若离线则首先进行新的主节点的选举;参与检索的云服务器节点获取到检索陷门T之后在本地利用索引和密文数据执行SSE算法的检索过程;
广播R的特征:云服务器节点在本地检索完成后得到检索结果;设检索结果为R,如果检索成功,则R为陷门对应的密文数据,如果检索失败,陷门没有对应的密文数据,则使用统一的规则对R进行随机填充;云服务器节点根据检索到的R,构造一笔含有
建立List并广播:主节点广播R的特征的同时从区块链网络收集其他节点的包含R的特征的交易,将收集到的所有交易排序后存入列表List,并将该列表向全网广播;List的收集需要设置一个截止时间,超过截止时间后的交易则判定为无效,不收录至List中;List中的交易数量n,需要满足4≤n≤NS,NS为收到用户陷门的节点数量;
验证List:每个节点接收到交易列表List后,利用本地检索结果R对List中交易的
发送Commit:如果一个节点收到的2f个其它节点发来的摘要都和自己相等,就向全网广播一条Commit消息,f为可容忍的恶意节点数;
发送汇总后的结果:如果一个节点收到2f+1条Commit消息,即可提交新区块及其交易到本地的区块链和状态数据库;主节点将交易列表List中所有的
5.如权利要求4所述的基于PBFT共识机制的对称可搜索加密方法,其特征在于,所述更新阶段包括云服务器节点更新和云服务器节点数据更新。
6.如权利要求5所述的基于PBFT共识机制的对称可搜索加密方法,其特征在于,云服务器节点在以下两种情况下需要进行更新:主节点离线:在检索开始前,首先校验节点状态,必须满足在线节点数大于3f+1,且主节点在线;若主节点离线,则触发节点更新机制,新的主节点可以由最近一次成功向用户提供检索结果的非主节点的云服务器节点担任;或由剩余节点重新选举出主节点,但新加入的节点不能参与主节点的选举;
针对于某一用户的密文数据某一节点的恶意行为记录数达到上限M;上限M暂时没有可靠的计算方法,需要结合使用的SSE算法的安全性和系统实际运行情况进行综合计算,实际应用中可以设定一个初始值,之后根据系统运行情况进行调整;
节点行为由合约账户通过节点支付押金的记录与检索中生成的交易列表List进行对比;恶意行为包括:1)在检索过程中,节点宕机或退出检索过程;2)获取陷门后不参与检索;
3)提供错误的检索结果;
节点的恶意行为记录达到上限M之后则不允许其参与对于该用户的检索过程,通过在合约账户处建立节点黑名单可以限制其向合约账户获取检索陷门。
7.如权利要求5所述的基于PBFT共识机制的对称可搜索加密方法,其特征在于,在以下
3种情况下需要对云服务器节点的数据进行更新:
1)引入新的服务器节点:参与系统运行的云服务器节点数若低于4个,无法满足PBFT共识算法正常运行的要求;此时需要引入新的节点来保证系统正常运行,新的节点加入后需要更新和同步本地密文数据,这一过程需要用户节点和其他云服务器节点的参与;
2)对于某一云服务器节点存储的多个用户的密文数据,该节点在每一个用户的合约账户的恶意行为记录都达到上限并被记入黑名单;
3)节点正常运行达到时间上限Mt或检索数量上限Mn;Mt与Mn实际应用中可以设定一个初始值,之后根据系统运行情况进行调整;
对于情况2)和3)的数据更新有以下两种措施:(1)不引入新的密钥和密文数据情况下,则将该节点从系统踢出,对于该节点发出的任何消息其余节点和合约账户均不再做出响应;
(2)在SSE算法基础上,引入新密钥k’,并生成新的索引index’和密文数据c’,将其发送给新节点或发给被加入黑名单的节点,记为X;此时需要对部分步骤进行修改:①在检索请求中,用户需要额外用新密钥k’生成新的检索陷门T’,并将两个陷门T和T’同时发送给合约账户;②节点X参与检索时,合约账户需要将其对应的陷门T’发送给节点X;③在共识过程中,由于节点X的密文数据c’与其他节点的数据c不同,检索结果也不一致,共识过程中无法实现节点间互相验证;因此需要将与明文数据有关的局部信息进行公开,用于密文数据不同的云服务器节点间对检索结果进行相互验证;对于同一关键字,所有检索结果中的文档ID都相同;使用文档ID可以构造检索结果的< I,Hash(RI) >参数,在此基础上可以在以上申请中执行数据的正常检索过程。