基于多方全同态加密的安全多方计算实现系统及方法技术方案

技术编号:39592349 阅读:9 留言:0更新日期:2023-12-03 19:46
一种基于多方全同态加密的安全多方计算实现系统及方法,包括:合约部署者

【技术实现步骤摘要】
基于多方全同态加密的安全多方计算实现系统及方法


[0001]本专利技术涉及的是一种信息安全领域的技术,具体是一种利用区块链作为可靠交互信道的基于多方全同态加密的安全多方计算实现系统及方法


技术介绍

[0002]现有基于全同态加密的安全多方计算分为两大类,即多密钥全同态加密和多方全同态加密

其中多密钥全同态加密的密文长度较长,且同态运算过程复杂

多方全同态加密则是所有参与方必须在密钥生成阶段确定,并在此阶段参与相关密钥的生成过程,所以无法动态增加参与方

现有的基于全同态加密算法实现的多方安全计算需要在密钥生成和聚合阶段或者密钥转换和解密阶段进行交互和计算,其中一种是与同态计算时一样将交互的协调和密钥的聚合过程交给计算方,另一种是各方两两之间进行交互

前者需要确保计算方正确执行计算,而后者要求交互双方需要同时在线

此外这些方案也都在要求参与方是半诚实的同时要求计算方也是半诚实的,如何在不引入复杂且昂贵的零知识证明的前提下减弱对计算方的安全性假设是一个需要解决的问题


技术实现思路

[0003]本专利技术针对现有技术存在的上述不足,提出一种基于多方全同态加密的安全多方计算实现系统及方法,将区块链作为数据传输的通道和计算的平台,在不引入半诚实计算方的前提下,利用区块链解决安全多方计算中要求各个参与方必须同时在线的问题;利用区块链解决安全多方计算中参与者可靠的交互通信问题;利用智能合约解决计算任务分配问题,确保密钥聚合

外包计算等正确完成

[0004]本专利技术是通过以下技术方案实现的:
[0005]本专利技术涉及一种基于多方全同态加密的安全多方计算实现系统,包括:合约部署者

多方计算参与方

数据提供方和区块链共识节点,其中:合约部署者根据应用场景确定计算逻辑,编写和部署合约,提供公共参考多项式
(CRP)
,并在密钥转换后利用本地的私钥解密出结果;多方计算参与方根据区块链状态执行公钥和运算密钥的生成过程中以及密钥转换过程中份额的生成和公布;数据提供方按照需求利用生成的公钥加密本地的数据并公布;区块链共识节点进行公开的公钥的聚合

运算密钥的聚合

数据的同态计算以及密钥转换的聚合计算

技术效果
[0006]本专利技术在不引入半诚实计算方的前提下,利用区块链解决安全多方计算中要求各个参与方必须同时在线的问题;利用区块链解决安全多方计算中参与者可靠的交互通信问题;利用智能合约解决计算任务分配问题,确保密钥聚合

外包计算等正确完成

相比现有技术,安全多方计算的各个参与方不需要同时在线;密文态的计算由区块链的共识节点完成,各参与方不需要各自独立进行计算,也不需要引入中心化的计算方;密钥聚合

同态计算以及密钥转换的执行过程记录在区块链中无法篡改并可以追溯

附图说明
[0007]图1为本专利技术流程图;
[0008]图2合约部署与密钥生成示意图;
[0009]图3密钥转换与下载解密示意图;
[0010]图4多方计算参与方直接交互示意图;
[0011]图5多方计算参与方与计算方交互示意图

具体实施方式
[0012]如图1所示,为本实施例涉及一种基于多方全同态加密的安全多方计算实现方法,包括:
[0013]步骤
1)
合约部署者根据需求确定计算逻辑和加密参数,生成公私钥对以及协议需要的公共参考多项式
CRP
,编写并部署包含用同态算法编写的计算逻辑的合约,具体包括:
[0014]1.1)
合约部署者确定加密参数
params
和运算逻辑
f(x1,x2,...,x
k
)
,生成公私钥对
(sk

pk)
,以及两个公共参考多项式
pkcrp

evkcrp
,将
f
用同态加法和同态乘法实现为智能合约中
Eval
的运算部分

[0015]1.2)
部署合约,调用
Init(params,pk,pkcrp,evkcrp)
进行智能合约初始化

[0016]所述的智能合约的接口包括:
[0017]Init(params,pk,pkcrp,evkcrp)
:智能合约初始化,传入的参数有加密参数
params、
合约部署者公钥
pk、
生成公钥所需的公共参考多项式
pkcrp、
生成运算密钥所需的公共参考多项式
evkcrp。
[0018]GenPk(share)
:公钥份额的上传和聚合,其中
share
为公钥份额,最后将计算出公钥
cpk。
[0019]GenEvk(share)
:运算密钥份额的上传和聚合,
share
为运算密钥份额,最后计算出运算密钥
evk。
[0020]Eval()
:执行同态运算,其中包含利用各个密文的数据标识
key
获得密文的功能,最后将计算出密文结果
result_before_sw。
[0021]GenKeySwitch(share)
:密钥转换份额的上传和聚合,参数
share
为密钥转换份额,最后将计算出密钥转换后结果
result_after_sw。
[0022]SetData(key,cipher)
:数据提供方上传密文的接口,传入的参数分别为数据标识
key
和对应的密文
cipher
,将键值对
(key,cipher)
存储在区块链上

[0023]GetData(key)
:各方从区块链获取数据的接口,传入的参数
key
为请求的数据标识
。key
取值可为
"params"、"pkcrp"、"evkcrp"、"pk"、"cpk"、"result_before_sw"、"result_after_sw"
,分别表示加密参数

生成公钥的
CRP、
生成运算密钥的
CRP、
合约部署者的公钥

协议聚合出的公钥

运算结果

密钥转换后的密文结果

此外上传的密文数据也可通过对应的数据标识
key
得到

[0024]步骤...

【技术保护点】

【技术特征摘要】
1.
一种基于多方全同态加密的安全多方计算实现系统,其特征在于,包括:合约部署者

多方计算参与方

数据提供方和区块链共识节点,其中:合约部署者根据应用场景确定计算逻辑,编写和部署合约,提供公共参考多项式
(CRP)
,并在密钥转换后利用本地的私钥解密出结果;多方计算参与方根据区块链状态执行公钥和运算密钥的生成过程中以及密钥转换过程中份额的生成和公布;数据提供方按照需求利用生成的公钥加密本地的数据并公布;区块链共识节点进行公开的公钥的聚合

运算密钥的聚合

数据的同态计算以及密钥转换的聚合计算
。2.
一种根据权利要求1所述系统的基于多方全同态加密的安全多方计算实现方法,其特征在于,包括:步骤
1)
合约部署者根据需求确定计算逻辑和加密参数,生成公私钥对以及协议需要的公共参考多项式
CRP
,编写并部署包含用同态算法编写的计算逻辑的合约;步骤
2)
多方计算参与方
P
i
从区块链获取相关的加密参数
、CRP
和合约部署者的公钥,生成本地的私钥,并计算出公钥份额和运算密钥的份额,并将两者上链,最后智能合约生成公钥
cpk
和运算密钥
evk
;步骤
3)
数据提供方从区块链获取上一步计算得到的公钥,对本地的隐私数据加密,并将密文上链,具体为:数据提供方
Q
j
调用
GetData("cpk")
得到协议公钥
cpk
,根据需要加密隐私数据
x
r

c
r

Enc(x
r
,cpk),
并参照
Eval
中同态计算的参数设置数据标识
key
r
并调用
SetData(key
r
,c
r
)
,数据标识由数据提供方
id
与密文
id
连接构成,如设
to_byte()
可将整数转为4字节的字节流,则数据提供方
Q
j
的第
k
个数据可用
to_byte(j)||to_byte(k)
进行标识,智能合约记录已上传的加密数据,当所需加密数据均上传后,触发事件通知合约部署者执行同态运算;步骤
4)
合约部署者调用函数
Eval()
并从链上获取运算密钥
evk
,根据数据标识从链上获取相应密文数据;然后由确定的计算逻辑
f
以及运算密钥
evk
进行同态运算;最后将同态运算结果存储到区块链上并触发事件通知多方计算参与方进行密钥转换;步骤
5)
多方计算参与方从区块链获取计算结果,利用本地的私钥和合约部署者的公钥生成密钥转换的份额,并将其上链,最后智能合约生成密钥转换结果,区块链共识节点利用各方份额完成密钥转换结果的聚合,具体为:多方计算参与方
P
i
调用
GetData("result_before_sw")
得到同态运算结果
result_before_sw
,生成密钥转换份额
swshare
i
并调用
GenKeySwitch(swshare
i
)
参与密钥转换结果的聚合,智能合约同样记录已上传的份额数量,当所有多方计算参与方都上传份额后自动完成聚合,得到
result_after_sw
并在计算完成后触发事件通知合约部署者解密数据,步骤
6)
合约部署者从区块链获取密钥转换结果,并利用本地的私钥解密此密文,得到最后的结果,具体为:合约部署者通过调用函数
GetData("result_after_sw")
得到密钥转换后的结果
result_after_sw
,利用本地的私钥可解密得到
result

Dec(result_after_sw,sk)
;所述的智能合约的接口包括:
Init(params,pk,pkcr...

【专利技术属性】
技术研发人员:李聪聪范磊王凯刘杰
申请(专利权)人:优刻得科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1