本技术涉及安全多方计算的,尤其是涉及一种安全多方计算数据最值的方法及系统。
背景技术:
1、安全多方计算(smc)是解决一组互不信任的参与方之间保护隐私的协同计算问题,安全多方计算要确保输入的独立性、计算的正确性,同时不泄露输入值给参与计算的其他成员,主要是针对在无可信第三方的情况下,如何安全地计算一个约定函数的问题,安全多方计算在电子选举、电子投票、电子拍卖、秘密共享、门限签名等场景中有着重要的作用。
2、上述中的现有技术方案存在以下缺陷:在不存在可信第三方的情况下如何计算数据最值。
技术实现思路
1、本技术提供一种安全多方计算数据最值的方法和系统,其能够解决在不存在可信第三方的情况下计算数据最值的问题。
2、在本技术的第一方面,提供了一种安全多方计算数据最值的方法,设裁判方、参与方和申请计算数据最值的申请方,参与方有k个,k≥1,参与方的数据记为di,其中,i∈i,i={i|i∈n*且i≤k},申请方的数据记为d0,所述方法包括:
3、裁判方获取申请方发送的请求指令,调取一组素数p和q,并向申请方和参与方发送公钥(n,g),其中,n=pq,g∈g,g={g|g∈n*,g<n2且(l(gλmodn2))-1为整数,其中,λ=lcm(p-1,q-1),lcm(,)是最小公倍数函数};裁判方还用于根据请求指令和估算规则确定数值a;
4、参与方根据数值a和数据di加密生成加密值mi,再根据随机值ri和接收到的公钥(n,g)对加密值mi加密得到第一加密结果ci,并发送给申请方,ri∈h,h={ri|ri∈n*且ri<n};
5、申请方根据数值a和数据d0加密生成加密值m0,再根据随机值r0和接收到的公钥(n,g)对加密值m0加密得到第二加密结果c0,r0∈h;所述申请方还用于在接收到参与方发送的第一加密结果ci时,根据第二加密结果c0和第一加密结果ci构造比值序列(f1,f2,…,fk),并将所述比值序列(f1,f2,…,fk)发送至裁判方;
6、裁判方根据所述比值序列(f1,f2,…,fk)和解密模型得到解密序列(y1,y2,…,yk);
7、设定y0=0;
8、将y0加入所述解密序列(y1,y2,…,yk)形成新的解密序列(y0,y1,y2,…,yk);
9、获取所述新的解密序列(y0,y1,y2,…,yk)中的最大值ymax和最小值ymin,将所述最大值ymax和所述最小值ymin发送给申请方;
10、申请方接收到所述最大值ymax和所述最小值ymin后,计算实际最大值=(m0-ymax)/a,实际最小值=(m0-ymin)/a。
11、由以上技术方案可知,在申请方向裁判方发送请求指令,裁判方获取到请求指令后,建立公钥(n,g),将公钥(n,g)分别发送给申请方和参与方,同时还搭建解密模型。参与方在获取到公钥(n,g)时,对自身持有的数据做加密处理后传输至申请方,而申请方不仅在获取到公钥(n,g)时,对自身持有的数据做加密处理,还根据自身加密后的数据和参与方发送的加密后的数据构造比值序列,再将比值序列发送至裁判方中,裁判方根据比值序列和解密模型得到解密序列,基于解密序列生成数据序列,选择数据序列中的最大值和最小值发送至申请方中,申请方对裁判方返回的值再一次解密后得到包括申请方在内的所有参与方中数据的最大值和最小值。由此可知,在计算过程中不会泄露任意一方的数据,即可获取到包括申请方在内的所有参与方中数据的最大值和最小值,解决了在不存在可信第三方的情况下计算数据最值的问题。
12、在一种可能的实现方式中,所述裁判方还用于根据请求指令和估算规则确定数值a包括:
13、所述请求指令包括数据类型;
14、根据所述数据类型在数据库中匹配与所述数据类型对应的w组数组,所述数组中包括多个数值,其中,w∈w,w={w|w∈n·且w≥2};
15、计算每一组数组中任意两个数值的差值;
16、提取w组数组的差值最小值对应的精度值构建精度值序列(t1,t2,t3,…,tw);
17、获取所述精度值序列(t1,t2,t3,…,tw)中的第一众数、第一众数对应的第一占比值、第二众数以及第二众数对应的第二占比值,所述第一众数是指精度值序列(t1,t2,t3,…,tw)中占比值最高的精度值,所述第二众数是指第二占比值仅小于第一占比值的精度值;
18、当所述第一占比值达到第一预设值时,将所述第一众数作为目标数值t;
19、当所述第一占比值低于第一预设值时,判断第一占比值和第二占比值之和是否大于第一预设值;
20、若是,则将所述第一众数和第二众数的平均值向下取整作为目标数值t;
21、若否,将精度值序列(t1,t2,t3,…,tw)中精度值对应的占比值高于第二预设值的精度值作为目标精度值;
22、将目标精度值的平均值向下取整作为目标数值t;
23、计算数值a=10t。
24、在一种可能的实现方式中,所述参与方根据数值a和数据di加密生成加密值mi包括:mi=[adi]。
25、在一种可能的实现方式中,所述根据随机值ri和接收到的公钥(n,g)对加密值mi加密得到第一加密结果ci包括:
26、在一种可能的实现方式中,所述裁判方根据所述比值序列(f1,f2,…,fk)和解密模型得到解密序列(y1,y2,…,yk)之前,还需要建立解密模型,包括:
27、基于所述函数搭建函数μ=(l(gλmodn2))-1modn,其中,λ=lcm(p-1,q-1),lcm(,)是最小公倍数函数;
28、基于所述函数μ和所述函数λ得到私钥(λ,μ);
29、基于所述私钥(λ,μ)得到解密模型
30、在一种可能的实现方式中,所述申请方根据数值a和数据d0加密生成加密值m0包括:m0=[ad0]。
31、在一种可能的实现方式中,所述根据随机值r0和接收到的公钥(n,g)对加密值m0加密得到第二加密结果c0包括:
32、在一种可能的实现方式中,该方法还包括所述裁判方还用于确定异常范围:
33、计算所述w组数组中,每个数组的第一极差和第二极差,所述第一极差为最大值与最小值的差值,所述第二极差为仅次于最大值的较大值和仅大于最小值的较小值的差值;
34、依次计算每一个数组中所述第二极差与所述第一极差的比值,当所述比值小于占比预设值时,所述第一极差对应的最大值和最小值存在异常;
35、获取所述数组中存在异常的最大值和最小值,将所述存在异常的最大值中的最小值作为异常最大值,将所述存在异常的最小值中的最大值作为异常最小值,
36、所述异常最小值至所述异常最大值之间的范围为异常范围;
37、所述裁判方将所述异常范围发送至所述申请方。
38、在一种可能的实现方式中,该方法还包括所述申请方还用于判断所述实际最大值和所述实际最小值是否超出异常范围:
39、当所述实际最大值超出所述异常范围时,对所述实际最大值做异常标识;
40、当所述实际最小值超出所述异常范围时,对所述实际最小值做异常标识。
41、在本技术的第二方面,提供了一种安全多方计算数据最值的系统。该系统包括多个用户终端,所述系统用于执行如所述安全多方计算数据最值的方法,所述多个用户终端作为所述方法中的所述参与方。
42、综上所述,本技术包括以下至少一种有益技术效果:
43、1.参与方将数据di放大指定倍a后得到mi,再对mi进行加密得到第一加密结果ci,提高了第一加密结果ci的破解难度,从而解决了在不存在可信第三方的情况下计算数据最大值最小值的问题;
44、2.申请方将数据d0放大指定倍a后得到m0,再对m0进行加密得到第二加密结果c0,提高了第二加密结果c0的破解难度,从而解决了在不存在可信第三方的情况下计算数据最大值和最小值的问题;
45、3.裁判方使用解密模型时,并未直接解密出申请方和参数方的数据,所以解密过程也不会泄露任意一方的原始数据,从而解决了在不存在可信第三方的情况下计算数据最大值和最小值的问题。