1.一种基于区块链和多密钥同态加密的数据协同方法,其特征在于,该方法涉及的三方实体定义为任务发起者、参与方和数据协同平台,即区块链节点,所述方法包括如下步骤:
1)网络预认证阶段:为了避免隐私泄露和防止数据提供者失去对数据的控制,同时为分布式计算提供公共可验证性,利用区块链技术对分布式结算进行公开审计,结合多密钥同态加密完成安全数据聚合操作,首先区块链数据协同平台对加入该平台的数据联盟方进行审核、注册,组成区块链网络,所有用户被分为两种类型:协同任务发起者即开发者联盟、计算参与方即数据持有者;
2)任务发布阶段:任务生成器负责收集计算任务,任务发起者在用户端数据协同平台即区块链节点上使用智能合约部署他/她的数据协同任务,包括任务摘要、参与方加入算法、聚合计算算法、数据审查算法即参与方身份和数据集校验,其中任务摘要包括任务描述、数据集要求、算法仓库地址,具体智能合约功能如下:①初始化聚合:由任务发布者制定协同任务的聚合要求、聚合算法,并通过区块链平台进行全网广播,由参与方调用智能合约自动执行;
②参与方加入:参与方根据自身数据集和协同任务需求选择网络中合适的智能合约,校验自身信誉值或身份信息注册聚合交易成为参与方;
③设置随机数:生成系统随机数作为协同任务的公共参数,并发送给参与方;
④停止:依据聚合要求在参与方数量或数据量上限后,停止参与方加入;
⑤查看参与方:调用智能合约查看参与方身份信息、数据存证以及公钥;
⑥聚合计算:利用同态加密算法对多方加密数据进行协同计算;
⑦获取聚合值:参与方调用智能合约获取聚合密文;
⑧得到随机数:获取所有参与方的公钥对用于多密钥同态解密;
3)任务初始化阶段:参与方根据任务摘要找到感兴趣的任务,并发起智能合约调用请求,提交数据集,区块链数据协同平台通过任务摘要提供数据集案例或数据处理模型地址,λ智能合约根据本次交易的安全参数λ,调用LWE.Setup(1)来生成多密钥同态加密的公共参数CRS用于后续加密过程,通过不经意传输即OT任务参与方通过下载模型至本地完成初步计算,并获得公共参数CRS,用于后续加密过程;
4)分布式计算阶段:参与方通过上一步智能合约摘要中的数据集案例或数据处理模型地址,对本地数据处理后并发起智能合约调用请求,每个参与方根据公共参数CRS独立生成自己的密钥三元组即PKi、BKi、KSi,PKi、BKi、KSi分别为公钥、自举密钥、密钥转换密钥,通过分布式计算模型完成本地计算后并发起智能合约调用请求,对于输入比特m∈{0,1},运行nLWE.Enc(m)并返回一个LWE密文,其中 这是一个标准的LWE加密,从T 中
均匀采样得到a作为mask,从Dα中采样得到e作为误差,输出密文ct=(b,a)∈Tn+1+1满足同态计算后密文的维度增加,应存储参与方的索引以便解密和进行同态操作,然后提交经过同态加密的计算结果,每个数据提供者即DP会对自己的隐私数据生成佩德森承诺,以确保数据的保密性和一致性,该确认将会经过DP的签名并作为CT和ST上传到区块链进行保存,每个参与方独立生成自己的密钥并加密数据集,发送至区块链节点;
5)多密钥同态聚合阶段:参与方发起智能合约调用请求,当调用请求满足访问控制算法时,提交经过同态加密的数据集和公共参数CRS的自身公钥PKi,智能合约自动在区块链节点上执行协同计算,将参与方数据和计算过程中间信息上传至区块链完成存证,用于合约达成区块链共识,参与方由于只掌握自身数据集的明文,只能得到协同计算的结果;当参与方数量或数据集大小达到条件触发智能合约要求后,区块链数据协同平台对多方数据集进行记录,完成同态评估过程,并利用参与方公钥序列得到最终的LWE密文 并返回参与方;
6)联合解密:所有参与计算的参与方共同解密密文,得到协同任务的聚合结果。