一种无需安全信道的基于安全多方乘积的匿名投票方法及系统与流程

文档序号:37279824发布日期:2024-03-12 21:17阅读:17来源:国知局
一种无需安全信道的基于安全多方乘积的匿名投票方法及系统与流程

本发明属于信息安全,涉及安全多方计算,具体是一种基于rsa加密算法和schnorr签名算法的无需安全信道的基于安全多方乘积的匿名投票方法及系统。


背景技术:

1、安全多方计算指的是,在不泄露参与计算各方隐私值的前提下,共同计算某个输入函数的技术。如何保证各方隐私不被泄露,是安全多方计算自诞生以来一直在被研究的问题。在安全多方计算框架中,多方协议可以分为半诚实模型和恶意对手模型。在半诚实模型当中,假设各方遵守协议规则,但是在协议完成之后,各方仍然试图通过分析协议执行期间收到的消息来了解私有信息。相比之下恶意对手模型被认为是各方执行一些任意操作来损害其他各方利益。因此,在安全多方计算的发展进程当中,半诚实模型相较于恶意模型来说,由于其难度要低得多,所以经常被使用在方案的设计当中。

2、安全多方乘积是安全多方计算的重要组成部分,和安全多方计算协议类似,安全多方乘积协议需要满足以下几种要求:正确性、隐私性、高效性等。对于传统的安全多方协议,需要各个数据提供者之间在已经认证过的安全信道中进行相互通信,这虽然能够提高通信效率并降低误差,但是对于用户隐私而言是有极大的缺陷的。

3、因此,一个能够保护用户隐私并且不需要安全认证信道的安全多方计算技术方案相较于现有的技术方案而言是具有显著优势的,其能够解决现有安全多方计算技术方案的用户隐私保护问题。此外,在进行多方投票计算时,现有大多数安全多方计算协议都采用加法运算来对投票结果进行统计,对于简单的0或1投票而言,加法相比较乘法而言有更加明显的优势。但是,对于有两个以上投票结果的安全多方计算而言,显然加法并不能得到理想的结果,基于此,本发明考虑采用安全多方乘法,来对投票的结果进行正确的统计。


技术实现思路

1、本发明的目是提供一种能够保护用户隐私且不需要安全信道就可以实现通信的基于安全多方乘法的匿名投票方法及系统,本发明采用rsa加密算法和schnorr签名算法的变体来实现对参与安全多方计算各方用户的隐私保护,并且能够将各部分信息进行加密,不需要安全信道就可以在公开网络中进行传输。

2、为实现上述目的,本发明采取如下技术方案:

3、本发明一种无需安全信道的基于安全多方乘积的匿名投票方法涉及rsa加密算法的变体以及schnorr签名算法,包括初始化阶段、用户提交阶段、用户认证阶段和安全多方乘积阶段四个阶段,其具体按如下步骤:

4、(1).初始化阶段

5、对用户、投票发起者进行初始化;

6、(2).用户提交阶段

7、用户作为参与安全多方计算的各方,根据安全多方计算的概念,提交用户自己所计算的结果,将这个结果通过rsa加密算法进行加密之后进行变体,投票发起者通过安全多方计算最终得到正确的乘积值;

8、(3).用户认证阶段

9、投票发起者接收到来自各方的信息之后,验证用户身份的合法性,对于不同的用户,通过不同用户提交的验证信息来进行验证;

10、(4).安全多方计算阶段

11、经过用户认证阶段之后,投票发起者确定参与计算的各方是否为合法用户;在接收到来自各方的加密信息后,投票发起者将各方的计算结果进行乘积计算。

12、优选的,步骤(1).系统初始化阶段具体如下:

13、安全多方计算协议方法在进行各个部分之前需要进行系统初始化。初始化分为两个部分:一部分是用户进行计算前的初始化;一部分是投票发起者收到所有用户的公开信息之后的初始化。

14、第一部分用户进行计算前的初始化,本发明需要对rsa加密算法和schnorr签名算法两个算法进行初始化,进而将两个算法进行关联。首先需要对rsa加密算法进行一般初始化,假设p和q是两个大素数,计算n=pq,选取欧拉函数选取一个大整数e,满足公开数据n和e作为公钥(n,e),通过公钥来计算密钥其中,d作为密钥由用户自己保存。本发明中所有用户的公钥采用相同的数值e,那么为了区分参与计算的各方用户,将各个用户的名称命名为ui,每个用户的公钥命名为(ni,e),私钥命名为di。在本发明对schnorr签名算法的初始化只需要选择一个生成元签名所需要使用的公私密钥则使用各个用户所生成的(ni,e)和di来对秘密消息进行签名。

15、第二部分是投票发起者收到所有用户公开信息之后的初始化,根据本发明中所设计的用户需要提交的份额算法(在下文步骤(2).用户提交阶段会详细描述),用户需要计算每个用户选择一个专属于自己的秘密数yi∈(1,2,…,q-1),计算注意此处的yi为了防止伪造,每个yi值都只使用一次。每个用户提交的公开数据为xi,yi。每个用户提交自己的公开数据m=(xi||yi)到投票发起者处。投票发起者在收到来自各方的m之后,对安全多方计算所需要用到的x和y的值进行初始化,计算身份信息的集合:

16、

17、式中,m指的是参与安全多方计算的m个用户。

18、至此完成了系统的初始化,本发明中的安全多方计算方法所需的基础参数已计算完成。所述的保证用户隐私,通过将用户密钥和专属信息进行加密,将用户的隐私加密成密文,使用户可以不使用可信的安全通道,而使用公用网络进行多方安全计算。

19、优选的,步骤(2).用户提交阶段具体如下:

20、用户作为参与安全多方计算的各方,根据安全多方计算的概念,需要提交自己所计算的结果,本发明将这个结果通过rsa加密算法进行加密之后进行一定的变体,使得投票发起者最终可以得到正确的乘积值。本发明中将各个用户的投票结果,即私有值命名为vi=h(h≠0),在投票中不同的结果之间必须互质。vi作为一个秘密,将围绕vi进行变体加密。在一般的rsa加密中,假设加密数据为a,加密后的结果为b,那么在加密之后b=aemodn。在这个过程当中,任何人都可以对密文进行加密,但是只有用户自己知道密钥,才能够对密文信息进行解密。所以在本发明中,为了实现算法的安全性采用了离散对数,并在此基础上引入schnorr签名算法,此外,用户需要提交有关schnorr签名认证所需要的参数信息,将所需要提交的份额和自己专属的数值信息,作为schnorr签名的输入参数。

21、将用户所需要提交份额pi设计为:

22、

23、优选的,步骤(3).用户认证阶段具体如下:

24、该用户认证阶段主要使用schnorr签名算法的各个步骤。在投票发起者接收到来自各方的信息之后,首先需要验证用户身份的合法性,对于不同的用户,通过不同用户提交的验证信息来进行验证。本发明当中,投票发起者首先根据用户所提交的pi和ri计算哈希值εi,接着计算用于零知识证明的r′:

25、εi=h(ri||pi)

26、

27、如果计算的结果是ri′=ri,那么用户就可以通过验证,所提交的pi就是可信的,接收来自该用户的pi。

28、投票发起者计算用于零知识证明的r′如下:

29、

30、εi=h(ri||pi)

31、如果计算的结果是ri′=ri,则用户就能通过验证,所提交的pi是可信的,接收来自该用户的pi。

32、优选的,步骤(4).安全多方计算阶段具体如下:

33、所述的安全多方计算为安全多方乘积,乘积计算。经过用户认证阶段之后,投票发起者可以确定参与计算的各方是否为合法用户。在接收到来自各方的加密信息之后,投票发起者需要将各方的计算结果进行乘积计算。

34、在用户通过验证之后,投票发起者所拥有的信息有p(p1,p2,p3,…,pi),将p值与公钥进行相同处理:

35、

36、为了处理p的结果,则有:

37、

38、所有用户的公钥均为e,取任意两个不同于e的素数p′,q′用于处理v的参数;在得到p′,q′之后计算:

39、n′=p′q′

40、

41、对p进行取模:

42、

43、通过已有的和e,计算一个d′满足:

44、

45、得到了用于处理pmodn′的数对(d′,n′);

46、对pmodn′进行最后一步的计算,将最终的投票结果的连乘命名为v,有:

47、

48、在得到v值之后,投票发起者根据已有的选项进行除法运算得到最终的投票结果。

49、例如,在某个需要进行投票的应用场景中,设置三个数k,g,l,它们互相为质数,分别代表赞成票、反对票、弃权票。通过投票和处理,投票发起者收到了v的值。根据最初所设置的k,g,l,投票发起者只需要将v分别除以k,g,l,并在只有整数作为余数的情况下,统计对k,g,l分别进行除法的次数,就可以得知本次投票的结果。

50、在本发明当中,vi的值在最初进行安全多方投票结果命名时要求互质,那么在投票当中无论有几种结果,当投票发起者计算总的积时,所得到的只会是几个选项的n次幂,这样就能判断有多少种不同的结果。例如,当把选项设置为3、5、7,分别对应赞成、反对、弃权。有10个人参与了投票,其中有3个人投了3,2个人投了5,5个人投了7。那么得到的结果是11344725=33×52×75,通过计算就可以得到的是这三个选项分别对应的几次幂,从而得知最后的投票结果。

51、本发明还公开了一种无需安全信道的基于安全多方乘积的匿名投票系统,基于上述方法,其包括如下模块:

52、初始化模块:对用户、投票发起者进行初始化;

53、用户提交模块:用户作为参与安全多方计算的各方,根据安全多方计算的概念,提交用户自己所计算的结果,将这个结果通过rsa加密算法进行加密之后进行变体,使得投票发起者最终得到正确的乘积值;

54、用户认证模块:投票发起者接收到来自各方的信息之后,验证用户身份的合法性,对于不同的用户,通过不同用户提交的验证信息来进行验证;

55、安全多方计算模块:经过用户认证阶段之后,投票发起者确定参与计算的各方是否为合法用户;在接收到来自各方的加密投票信息后,投票发起者将各方的计算结果进行乘积计算。

56、本发明在安全多方计算过程中可以正确的进行多方乘积计算,不仅可以更加准确的得到各方运算结果,进行统计,而且可以通过加密算法的引入使得用户可以在公共网络进行通信并可以正确的判断用户身份。从正确性和安全性的角度来说,本发明可以让安全多方乘积运算更好的运行。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1