首页> 中国专利> 基于区块链云外包计算数据的隐私保护方法

基于区块链云外包计算数据的隐私保护方法

摘要

本发明公开了一种基于区块链云外包计算数据的隐私保护方法,主要解决当前云外包计算过程中的数据隐私保护技术存在的高时间复杂度和可扩展性问题,其技术方案为:使用计算节点的日志信息构建区块链,并使用区块链技术来进行计算数据的安全存储验证;采用quorum技术,针对每一轮计算选取适当的计算节点集合来完成计算任务;采用基于门限秘密共享的安全多方计算方法分割和重构秘密信息。本发明克服了现有技术中计算网络缺乏可扩展性和安全性以及数据验证过程复杂度高的问题,在数据隐私得到有效保证的同时大大提高了计算网络的可扩展性和计算过程的高效性。

著录项

  • 公开/公告号CN108712429A

    专利类型发明专利

  • 公开/公告日2018-10-26

    原文格式PDF

  • 申请/专利权人 西安电子科技大学;

    申请/专利号CN201810508966.4

  • 发明设计人 马文平;陈岱;

    申请日2018-05-24

  • 分类号H04L29/06(20060101);H04L9/30(20060101);H04L29/08(20060101);

  • 代理机构61205 陕西电子工业专利中心;

  • 代理人田文英;王品华

  • 地址 710071 陕西省西安市雁塔区太白南路2号

  • 入库时间 2023-06-19 07:00:22

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-07-10

    授权

    授权

  • 2018-11-20

    实质审查的生效 IPC(主分类):H04L29/06 申请日:20180524

    实质审查的生效

  • 2018-10-26

    公开

    公开

说明书

技术领域

本发明属于计算机技术领域,更进一步涉及信息安全技术领域中的一种基于区块链云外包计算数据的隐私保护方法。本发明通过门限秘密共享方法对用户身份信息和用户外包数据进行分割和重构,使用区块链技术对计算结果进行安全存储和验证,不仅可以有效地对用户身份信息和用户外包数据进行隐私保护,同时大大降低了云外包计算的计算开销,增加了计算网络的可扩展性。

背景技术

云计算在学术界和工业界已经受到越来越多的关注,而云外包计算作为云计算中最重要的应用服务之一也逐渐受到重视。在云外包计算环境中,参与者的本地计算能力非常有限,而云计算服务提供商以低廉的价格提供计算资源。但是,出于对自己隐私信息的保护,参与者往往不希望直接将信息委托给云计算服务提供商,也不希望服务提供商得知计算结果。因此,云外包计算中的数据隐私保护受到越来越多的关注和研究。安全多方技术是实现云外包计算数据的隐私保护的常用计算之一,该技术一般将秘密信息经过一系列处理后外包存储在外包服务器上,当需要对所有参与者的秘密信息进行特定计算时,则通过quorum技术选取适当的计算节集合来完成这些计算,从而避免用户数据隐私泄漏,同时实现了计算的可扩展性。

南京邮电大学在其拥有的发明专利技术“一种云外包场景下的数据隐私保护方法”(申请号:201210520091.2,公开号:CN 103037306 B)中公开了一种云外包环境下的用户身份信息和计算数据的隐私保护方法。该方法包括:通过分析应用场景,将安全多方计算技术应用到用户数据的隐私保护中,以添加随机数、运用点积性质、同态加密、不经意传输协议等技术,计算并查找出被查询数据库中距离查询输入位置最近的点,并针对不同应用场景采取对应级别的保护措施,从而实现查询过程中对计算输入、计算结果以及用户身份信息的隐私保护。但是,该方法存在的不足之处是,第一,由于采用了安全多方计算技术来实现用户数据的隐私保护,因而使用固定的云节点来进行外包计算,这导致了外包计算网络缺乏可扩展性和动态性,无法满足安全外包计算在大规模网络下的应用。第二,虽然该方法中的分级别的隐私保护方案在某种情况下可以降低系统的计算开销,但是仍然采用同态加密、不经意传输等技术,这导致了系统仍然具有较高平均计算复杂度。

Jared Saia and Mahdi Zamani在其发表的论文“Recent Results in ScalableMulti-Party Computation”(SOFSEM 2015:Theory and Practice of Computer Science,Springer Berlin Heidelberg,2015:24-44.)中提出一种基于可扩展安全多方计算的用户数据隐私保护的改进方法。该方法考虑到云外包计算中大规模网络条件下安全多方计算的复杂性问题,采用快速拜占庭协议(FBA)中的quorum技术来实现大规模网络的计算,在计算过程中针对每一轮计算选取适当的计算节点集合来完成计算任务,从而大大提高了计算网络的可扩展性,但是,该方法的不足之处是,第一,使用快速拜占庭协议来进行就合法计算节点集合的选取,而快速拜占庭协议本身需要消耗非常高昂的计算代价。而且在实际应用中为保证计算数据的安全性,需要频繁的对计算节点集合进行选取,这进一步增加了计算开销,使得该方案缺乏实用性。第二,该方法采用不经意传输协议、同态密码机制等复杂密码学工具来构建安全多方计算,这也导致了计算开销过大。

发明内容

本发明的目的在于针对上述现有技术的不足,提出一种基于区块链的云外包计算数据隐私保护方案,以解决当前安全多方计算在计算过程中存在的计算开销过大和缺乏可扩展性的问题。

为实现上述目的,本发明的具体思路是:使用计算节点的日志信息构建区块链,并使用区块链技术中的机制来进行计算数据的安全存储和安全检验,保证计算安全性的同时提高了数据验证的效率;采用quorum技术,针对每次计算选取适当的计算节点集合来完成计算任务,从而实现了云安全外包计算的可扩展性;采用基于门限秘密共享的安全多方计算方法分割和重构秘密信息,从而提高了云安全外包计算的隐私性保护。

本发明的具体步骤包括如下:

(1)构建动态计算网络;

随机选取m个云服务器节点,将所有的云服务器节点作为计算节点组成动态计算网络,其中,m的取值等于服务发起方的总数;

(2)生成计算节点公私密钥对;

利用ElGamal密钥生成算法,生成每个计算节点的公私密钥对,将公私密钥对中的公钥发送给服务发起方;

(3)注册计算节点;

(3a)动态计算网络外的计算节点,向动态计算网络发送注册请求和该计算节点的信息;

(3b)动态计算网络在收到该动态计算网络外的计算节点发送的注册请求后,在动态计算网络中广播所接收的计算节点的信息;

(3c)动态计算网络中的计算节点判断所接收的计算节点的信息是否在恶意节点集合中,若是,则判定该计算节点不合法,忽略所接收的计算节点的注册请求,否则,判定所接收的计算节点合法,执行步骤(3d);

(3d)将合法的计算节点添加到动态计算网络中;

(4)生成服务方集合:

(4a)在服务发起方集合中随机选取n个服务发起方,将所选取的每个服务发起方作为服务方,将所有的服务方组成服务方集合,其中,m的取值等于服务发起方的总数,表示向上取整操作;

(4b)服务发起方将生成的服务方集合的信息发送到动态计算网络中的每个计算节点;

(4c)动态计算网络中的每个计算节点接收并保存服务方集合的信息;

(5)存储数据:

(5a)服务发起方向动态计算网络发送数据存储请求;

(5b)从动态计算网络中任意选取等于服务方总数的多个计算节点,组成存储节点集合,将存储节点集合的信息发送给服务发起方;

(5c)服务发起方将待计算数据提交至服务方;

(5d)利用秘密分割方法,服务方将服务发起方提交的待计算数据分割为多个数据块,数据块的个数等于存储节点的总数;

(5e)服务方使用存储节点集合中每个存储节点的公钥,分别对存储节点自身对应的分割后的数据块进行加密,将加密后的数据块发送至对应的存储节点;

(5f)存储节点接收并保存加密后的数据块;

(6)生成参与计算方集合:

(6a)服务方发送计算请求、计算函数和自身信息给参与计算方;

(6b)判定参与计算方接收的服务方的信息是否在服务方集合中,若是,则随机选取与存储节点总数相等的计算节点,组成参与计算方集合,否则,忽略接收到的计算请求;

(7)生成数据区块:

(7a)参与计算方分别从对应的存储节点复制数据块;

(7b)每个参与计算方分别将复制数据块输入计算函数,将计算的时间戳、输入数据块、计算函数、计算函数的输出和参与计算方本身的信息组成日志信息;

(7c)参与计算方在动态计算网络中广播日志信息;

(7d)动态计算网络中的计算节点和参与计算方将接收的日志信息,按照日志信息中时间戳的先后顺序封装成数据区块;

(7e)从参与计算方集合中随机选取一个参与计算方,在动态计算网络中广播所选参与计算方数据区块;

(7f)计算节点判定接收到的数据区块与自己封装的数据区块是否相同,若是,则数据区块通过验证,执行步骤(7g),否则,数据区块未通过验证,执行步骤(7h);

(7g)计算节点发送验证通过的信息给参与计算方;

(7h)计算节点发送验证未通过的信息给参与计算方;

(7i)判定是否有多于计算节点总数一半的计算节点返回了验证通过信息,若是,则执行步骤(8),否则,执行步骤(6);

(8)构建区块链:

(8a)判定参与计算方是否已创建区块链,若是,执行步骤(8b),否则,执行步骤(8c);

(8b)将通过验证的数据区块添加到区块链的末端;

(8c)将通过验证的数据区块作为第一个区块,创建区块链;

(9)输出重构结果:

(9a)将区块链末端的区块中的计算函数的输出发送给服务方;

(9b)服务方对接收的函数的输出进行重构操作,将重构结果发送至各服务发起方。

本发明与现有技术相比具有以下优点:

第一,由于本发明在云外包计算过程中,每执行一次计算都重新选取存储节点集合和参与计算方集合,克服了现有技术采用固定的参与计算节点执行计算,可能导致的计算网络缺乏可扩展性和安全性的问题,使得本发明具有更高的安全性和可扩展性的优点。

第二,由于本发明使用参与计算节点在计算过程中产生的日志信息构建区块链,从而实现对用户身份信息和用户外包计算数据进行安全存储和验证,克服了现有技术采用快速拜占庭协议来进行数据验证,导致的高时间复杂度问题,使得本发明在云安全外包计算过程提高了用户身份信息和用户外包数据的安全性以及外包计算的效率。

附图说明

图1为本发明的流程图;

图2为本发明的仿真图。

具体实施方式

下面结合附图对本发明做进一步的描述。

参照图1,对本发明的具体实施步骤做进一步的描述。

步骤1,构建动态计算网络。

随机选取m个云服务器节点,将所有的云服务器节点作为计算节点组成动态计算网络,其中,m的取值等于服务发起方的总数。

步骤2,生成计算节点公私密钥对。

利用ElGamal密钥生成算法,生成每个计算节点的公私密钥对,将公私密钥对中的公钥发送给服务发起方。其中,ElGamal密钥生成算法如下:

a=gk>

b=gkM>

其中,a表示ElGamal密钥生成算法生成的计算节点的公钥,g表示随机选取的正整数,k表示随机选取的正整数,mod表示同余操作,p表示在正整数范围内随机选取的素数,b表示加密后的计算节点的身份信息,M表示计算节点的待加密身份信息。

步骤3,注册计算节点。

动态计算网络外的计算节点,向动态计算网络发送注册请求和该计算节点的信息;

动态计算网络在收到该动态计算网络外的计算节点发送的注册请求后,在动态计算网络中广播所接收的计算节点的信息。

动态计算网络中的计算节点判断所接收的计算节点的信息是否在恶意节点集合中,若是,则判定该计算节点不合法,忽略所接收的计算节点的注册请求,否则,判定所接收的计算节点合法,将合法的计算节点添加到动态计算网络中。

其中,恶意节点集合是由下述步骤得到的:

第1步,动态计算网络创建一个空的恶意节点集合;

第2步,动态计算网络将服务发起方提交的待计算数据和计算函数在动态计算网络中广播;

第3步,动态计算网络中各计算节点将接收的待计算数据输入计算函数,得到一个对应的输出;

第4步,计算节点将输入的待计算数据和对应的输出在动态计算网络中广播;

第5步,计算节点判定所接收的待计算数据和对应的输出,是否与自己的待计算数据和对应的输出相同,若是,则第1步,否则,执行第6步;

第6步,将计算节点、所接收的待计算数据和对应输出不相同的计算节点添加到恶意节点集合中。

步骤4,生成服务方集合。

在服务发起方集合中随机选取n个服务发起方,将所选取的每个服务发起方作为服务方,将所有的服务方组成服务方集合,其中,m的取值等于服务发起方的总数,表示向上取整操作。

服务发起方将生成的服务方集合的信息发送到动态计算网络中的每个计算节点。

动态计算网络中的每个计算节点接收并保存服务方集合的信息。

步骤5,存储数据。

服务发起方向动态计算网络发送数据存储请求。

从动态计算网络中任意选取等于服务方总数的多个计算节点,组成存储节点集合,将存储节点集合的信息发送给服务发起方。

服务发起方将待计算数据提交至服务方。

利用秘密分割方法,服务方将服务发起方提交的待计算数据分割为多个数据块,数据块的个数等于存储节点的总数。其中,秘密分割方法如下:

其中,di表示对服务发起方提交的待计算数据分割后的第i个数据块,且0<i≤n,n表示存储节点总数,s表示待分割的计算数据,a1表示随机选取的非零整数,an-1表示随机选择非零整数,且a1≠an-1,xi表示从有限域中随机选取的第i个非零整数。

服务方使用存储节点集合中每个存储节点的公钥,分别对存储节点自身对应的分割后的数据块进行加密,将加密后的数据块发送至对应的存储节点。

存储节点接收并保存加密后的数据块。

步骤6,生成参与计算方集合。

服务方发送计算请求、计算函数和自身信息给参与计算方。

判定参与计算方接收的服务方的信息是否在服务方集合中,若是,则随机选取与存储节点总数相等的计算节点,组成参与计算方集合,否则,忽略接收到的计算请求。

步骤7,生成数据区块。

参与计算方分别从对应的存储节点复制数据块。

每个参与计算方分别将复制数据块输入计算函数,将计算的时间戳、输入数据块、计算函数、计算函数的输出和参与计算方本身的信息组成日志信息。

参与计算方在动态计算网络中广播日志信息。

动态计算网络中的计算节点和参与计算方将接收的日志信息,按照日志信息中时间戳的先后顺序封装成数据区块。

从参与计算方集合中随机选取一个参与计算方,在动态计算网络中广播所选参与计算方数据区块。

计算节点判定接收到的数据区块与自己封装的数据区块是否相同,若是,则数据区块通过验证,计算节点发送验证通过的信息给参与计算方,否则,数据区块未通过验证,计算节点发送验证未通过的信息给参与计算方。

步骤8,判定是否有多于计算节点总数一半的计算节点返回了验证通过信息,若是,则执行步骤9,否则,执行步骤6。

步骤9,构建区块链。

判定参与计算方是否已创建区块链,若是,将通过验证的数据区块添加到区块链的末端,否则,将通过验证的数据区块作为第一个区块,创建区块链。

步骤10,输出重构结果。

将区块链末端的区块中的计算函数的输出发送给服务方。

服务方对接收的函数的输出进行重构操作,将重构结果发送至各服务发起方。其中,重构方法如下:

其中,s表示重构后的数据,∑表示连加操作,t表示参与计算方集合中任意t个参与计算方,di表示经过计算后的第i个数据块,Π表示连乘操作,xi表示从有限域中随机选取的第i个非零整数,xj表示从有限域中随机选取的第j个非零整数,且j≠i。

下面结合本发明的仿真实验对本发明的效果做进一步说明。

1.仿真实验条件:

本发明的仿真实验环境中主要涉及的编程语言为Java,JDK版本为jdk1.8.0_77,集成开发工具是Eclipse Luna,使用的CloudSim版本是3.0.3等。各主要计算节点的配置如下:虚拟节点Ubuntu Server 16.04,64bit,处理器Intel Core i5-4590 3.30GHz,2GB运行内存,20GB磁盘空间。

2.仿真实验内容:

本发明的仿真实验是采用本发明的方法和现有技术的采用拜占庭协议进行云外包计算方法,对本发明中参与计算方集合选取规模为3至15的情况进行一次计算。将采用本发明的方法进行一次计算的花费的时间,与现有技术进行一次计算的所花费时间进行对比,得到如图2所示的两条曲线。

3.仿真实验结果分析:

图2是采用本发明区块链技术和现有技术门限秘密共享方法的云外包计算的计算性能曲线对比图,其中,横轴表示参与计算方集合的选取规模,物理单位为个,纵轴表示完成一次计算的时间,物理单位为毫秒。其中,虚线表示现有技术参与计算方集合选取规模和计算时间的关系曲线,实线表示本发明参与计算方集合选取规模和计算时间的关系曲线。由图2可见,在参与计算方集合规模较小时,选取参与计算方的个数较小,因而两个方案的计算性能差别不大。随着参与计算方规模增大,由于本发明采用随机的方式选取参与计算方集合,进而使用区块链技术验证选取的参与计算方集合,因而在参与计算方规模大于10时,相比现有技术,本发明具有更好的安全性和计算性能。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号