缩略图
Primary Education

安全多方计算及其应用

作者

穆晨旗

中国船舶重工集团有限公司第七一六研究所 江苏连云港 222000

本文在归纳总结了安全多方计算的相关理论基础后,探究了安全多方计算在电子投票方面的应用,提出一种电子投票方案,采用了分布式同态加密的方法,基于ElGamal 协议的思想构建了加密算法中要用到的函数,设计了投票流程。

第一章 安全多方计算的背景

安全多方计算(Secure Multiparty Computation,亦称多方安全计算)的概念最初由姚期智教授在 1982 年于文献 [1] 中提出。他描述了一个分布式计算场景:有若干个参与者,他们各自掌握部分数据,要求将这些数据作为输入,共同计算一个约定函数,最终得到一个公开且正确的计算结果,但他们之间互相不信任,因此所有参与方都不希望在这个过程中公开自己最初所持有的数据。

在理想状况下,这个问题十分容易解决:只需让这些参与者将数据交给可信的第三方,并由其进行计算,然后告知所有参与者结果即可。然而在实际操作中常常没有合适的个人或团体来扮演这个角色。针对这种情况,姚教授设计了安全多方计算,用于解决在没有可信第三方的条件下的约定函数计算问题。安全多方计算在涉及信息安全的许多应用场景中发挥着重要作用,例如电子投票、矩阵计算、数据发掘等。

第二 章 安全电子投票

2.1 安全多方计算的基本概念

2.1.1 安全多方计算问题的形式化表达

假设有 Πn 个计算参与方 p1,....,pn ,每个参与方持有一份输入数据(保密),设 Δpi. 持有的输入数据为 mi 。则约定函数为 f(m1,...,mn)=(y1,...,yn) 。在整个计算流程执行完之后,每个参与方 Δpi 获得自己的输出结果 yi ,并且不知道其他参与方得到的输出结果。

2.1.2 参与方与攻击者

参与方:参与计算的各方,也称为参与者,根据其行为模式可分为以下三类:

诚实参与者:在整个计算流程中,始终对自己的输入、计算出的中间结果、输出进行保密,并且严格按照协议的要求完成各个步骤。

半诚实参与者:在整个计算流程中,有可能泄漏自己的输入、计算出的中间结果、输出中的若干环节给攻击者,但仍然严格按照协议的要求完成各个步骤。

恶意参与者:在整个计算流程中,不仅泄漏自己的输入、计算出的中间结果、输出给攻击者,而且会完全按攻击者的要求执行计算的各个步骤,包括改变输入或中间结果信息或提前结束计算等行为。

攻击者:目的为破环安全多方计算协议的正确性或安全性的人。攻击者会将部分半诚实参与方转为恶意参与方,这一过程又称为腐败。

2.2 安全多方计算的计算模型

安全多方计算主要的两种计算模型为半诚实模型和恶意模型 [2]。半诚实模型中仅存在诚实参与者和半诚实参与者,与之相对,恶意模型中存在恶意参与者。另外还有一种只存在诚实参与方的诚实模型,由于该模型太过理想化,很少有人实际使用它。

2.3 安全多方计算的安全定义

如何验证一个安全多方计算协议是安全的,即具有安全性?文献[2] 中提出了一种形式化的安全定义方式。由于在实际分析时几乎不会直接引用其中提出的形式化定义,这里只简要介绍其思路:首先定义一种理想模型,该模型中存在可信第三方,且这个第三方可以与任意一个参与方进行秘密且安全的通信,这保证了这个理想模型是安全的;接下来用这个模型去和我们要验证的协议进行比较,若无法比较出两者在输入、输出及中间计算结果上的差异,那么可以认为这个真实的

协议是安全的。

2.4 安全多方计算的安全需求我们默认一个完整的安全多方计算协议满足以下需求:

保密性:任何一个参与方不能直接得知(可以由自己的数据进行推导)其他参与方的输入、中间结果、输出这三种数据。

正确性:所有参与方获得的计算结果是正确的。

输入独立性:诚实方的输入不受腐败方影响。

公平性:诚实方接受到输出的充要条件是腐败方接受到输出。

2.5 电子投票的基本模型

一个完整的电子投票模型 [3] 由以下四个要素构成:注册机构、投票者、选票发放机构、计票机构,部分模型还会包含监票机构和公告板。

2.6 电子投票的安全性需求

电子投票的安全性隐患目前已经是一个不可忽视的问题。1992年,Fujioka 提出了七个电子投票的安全性需求,并以此为基础设计了新的电子投票方案 FOO[4] ,这些需求后来被学术界视作安全标准:

1. 合法性:只计入有效的票。

2. 完整性:有效的票必须全部被统计。

3. 隐私性:投票内容对投票者之外的人保密。

4. 唯一性:任意一个投票者至多投一次票。

5. 公平性:投票的最终结果不受任何影响

6. 适格性:投票者必须具有投票权。

7. 可验证性:选举结果可被验证,不可伪造。

第三章 基于同态加密的安全电子投票方案

3.1 基于同态加密的改进方案

3.1.1 投票情景设置

采用半诚实模型;包括 Πn 个投票者 Δpi 和 m 个候选人 cq ,i 和 q 为正整数,分别表示其中的任意一位( 1⩽i⩽n , 1⩽q⩽m );投票者之间平等,投票结束后任意 Δpi 均可计票,即无可信第三方;不需要理想的安全信道; k 为每位候选人得票的票号数, k=(log2n)+1 。

3.1.2 加密算法设计

本小节展示基于 ElGamal 加密协议来设计的加密算法的核心部分。首先,将公钥和私钥用类实现;加密算法可分为密钥生成算法、加密算法、解密算法三个部分,分别用函数进行实现:

1. 公钥类 ElgamalPublicKey:包含变量 p:随机生成的大素数,变量 g:p 的原根,代表公钥的变量 h;方法 encrypt 和方法 evaluate。

2. 私钥类 ElgamalPrivateKey:包含变量 p(同 1),代表私钥的变量 x (生成过程见 3)。

3. 密钥生成函数 keyGen:输入密钥大小 size(单位:比特),输出大小为 size 的公钥(p,g,h)和私钥 (ρp,ρX), 。具体作用:随机生成 p 并计算 p 的原根 g ,然后从集合 (1,p-1) 中随机生成 x ,然后计算 h=powmod(g,x,p),最后将 p、g、h 输出。其中 powmod(a,b,c) 为自己实现的幂取模函数,作用为更快速地计算( a⌣b ) %c 详细代码在此不赘述。

4. 加密函数encrypt:输入需要加密的明文 m ,输出加密后的密文C(c1,c2) 。具体作用:从集合 (1,p-1) 中随机生成y,使得y 与 p-1 互质,计算 c1=powmod(g,y,p) ,temp=powmod (h,p) , c2=(m.temp)%p ,将结果输出。

5. 解密函数 decrypt:输入密文 C( c1,c2 ),输出明文 m 。具体作用:

计 算 temp=powmod (C[0],x,p) ,invs=powmod(temp,p-2,p), ,m= (C[1]*invs)%p,然后输出 m 。

3.1.3 投票流程

根据安全多方计算的应用场景,没有可信的第三方担任分发密钥的角色,所以要让参与方自己生成密钥,然后将这些密钥合成一个公共的密钥,因此采用分布式的思想,具体流程设计如下:

1. 每个投票者 Δpi 用密钥生成函数生成自己的私钥 Xi 和公钥 hi, 然后公开公钥 hi∘ 。然后投票者各自计算公共公钥 Δh , 使其等于所有公钥的乘积。

2. 每个投票者 ρpi 在系统上通过选择选票的最后一位的值 a 对所有候选人 Cj 投票表决,最后每个投票者可以得到一个属于自己的共计 mk 位的形如 00...0a100...0aj00...0am 的 01 字符串,即一个二进制数,然后每个投票者该数用十进制数 vi (即选票)表示。

3. 每个投票者 Δpi 将自己的选票 vi 随机划分为若干整数 Vij ,(j 为不等于 i 的正整数, 1⩽j⩽n ),使 vi 为所有 Vij 的和,然后使用加密函数加密所有随机数,得到 encrypt(vij) ,(其中所用到的变量 h 为公共公钥h)。

4. 每个投票者 ρpi 将 encrypt(vij) 发送给其他投票者 Δpj ,所有投票者均收到 n-1 个计算结果,接着各自计算所有 encrypt(vij) 的乘积(C[0] 和 C[1] 分别相乘,最后得出结果的形式仍形如 C( c1,c2 ),记为encryp ⋅(vj) ,其中投票者 Δpi 自己加密的结果为encrypt (vij) 。

5. 每个投票者 ρpi 将 encrypt(vj) 发送给其他投票者 Δpj ,所有投票者均收到 n-1 个计算结果,接着各自计算所有 encrypt(vj) 的乘积,记最终的结果为C( c1,c2). 。

6. 所有投票者 Δpi 共同计算  ,然后用解密函数解密,即计算 decrypt(c2,c1). , 然后将得到的结果转为二进制数,每 k 位划分一次,即可得到每位候选人的得票情况。

第四章 总结

本文首先介绍了多方安全计算的提出和意义以及发展前景等背景相关内容,然后指出电子投票存在安全性问题。然后对本文将要用到的安全多方计算的理论部分进行归纳总结。最后提出一种投票方案,采用了分布式同态加密的方法,基于 ElGamal 协议的思想构建了加密算法中要用到的函数,设计了投票流程,。

参考文献

[1] Yao A C. Protocols for secure computations[C]//23rd annual symposium on foundations of computer science (sfcs 1982). IEEE, 1982: 160-164.

[2] Micali S, Goldreich O, Wigderson A. How to play any mental game[C]//Proceedings of the Nineteenth ACM Symp. on Theory of Computing, STOC. ACM, 1987: 218-229.

[3] SUN M H.Modern cryptography research on secure multiparty computation protocols[M].Beijing:Publishing House of Electronics Industry,2016:72-74.

[4] FUJIOKA A,OKATOMA T,OHTA T.A practical secret voting scheme for large-scale elections[C]//Advances in CryptologyAUSCRYPT’92.1992:244-251.

作者简介:穆晨旗(1998.7-),男,汉族。江苏省连云港市。本科,助理工程师,研究方向:信息技术。