1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 电子投票方法 装置 设备及计算机存储介质与流程

电子投票方法 装置 设备及计算机存储介质与流程

时间:2023-08-23 08:19:22

相关推荐

电子投票方法 装置 设备及计算机存储介质与流程

本发明属于投票技术领域,尤其涉及一种电子投票方法、装置、设备及计算机存储介质。

背景技术:

现有的电子投票(e-voting)系统均是中心化系统。这些系统主要使用加密技术及盲签名、环签名实现投票内容保密及投票者身份匿名。为了实现投票内容保密,投票者需对投票进行加密;为了实现匿名投票,投票者或通过与投票服务器进行交互产生投票的盲签名,或通过使用其他投票者的公钥生成投票的环签名。最终,投票者将经过盲(环)签名的加密投票发送给投票服务器,计票者通过解密投票服务器中的加密投票进行票数统计并将计票结果进行公示。

但是目前的电子投票系统存在问题,这些系统在不对加密投票进行解密的情况下,无法验证投票内容的有效性,而无效的投票内容则可能会影响最终的投票结果,导致投票结果不准确。

技术实现要素:

本发明实施例提供一种电子投票方法、装置、设备及计算机存储介质,利用门限秘密共享方案,能够在不解密投票者的选票的基础上,验证投票者的选票的有效性,整体安全性高,且提高了投票的准确性。

第一方面,本发明实施例提供一种电子投票方法,应用于投票服务器,该方法包括:

接收投票终端发送的加密后的k个选票;

接收所述投票终端发送的第二确认码,所述第二确认码为对所述k个选票对应的k个选项值进行拉格朗日插值计算得到的;

比对所述第二确认码与预先生成的第一确认码,依据比对结果,完成投票有效性的验证;并将验证通过的所述加密后的k个选票进行签名,并保存在区块链上;其中,所述k个选项值包含于n个投票选项值中,所述n个投票选项值为将所述第一确认码使用门限秘密共享方案共享得到的。

第二方面,本发明实施例提供一种电子投票方法,应用于投票终端,该方法包括:

接收输入的选票指令,将所述选票指令对应的k个选票进行加密后发送至投票服务器;

对所述k个选票对应的k个选项值进行拉格朗日插值计算,得到第二确认码;

将所述第二确认码发送至所述投票服务器,用于所述投票服务器比对所述第二确认码与预先生成的第一确认码,完成投票有效性的验证;其中,所述k个选项值包含于n个投票选项值中,所述n个投票选项值为将所述第一确认码使用门限秘密共享方案共享得到的。

第三方面,本发明实施例提供一种电子投票方法,应用于计票服务器,该方法包括:

对选票进行统计,得到计票结果;所述选票为前述投票服务器发送至区块链中保存的选票。

第四方面,本发明实施例提供了一种电子投票装置,应用于投票服务器,该装置包括:

选票接收模块,用于接收投票终端发送的加密后的k个选票;

第二确认码模块,用于接收所述投票终端发送的第二确认码,所述第二确认码为对所述k个选票对应的k个选项值进行拉格朗日插值计算得到的;

第一比对模块,用于比对所述第二确认码与预先生成的第一确认码,依据比对结果,完成投票有效性的验证;并将验证通过的所述加密后的k个选票进行签名,并保存在区块链上;其中,所述k个选项值包含于n个投票选项值中,所述n个投票选项值为将所述第一确认码使用门限秘密共享方案共享得到的。

第五方面,本发明实施例提供了一种电子投票装置,应用于投票终端,该装置包括:

选票发送模块,用于接收输入的选票指令,将所述选票指令对应的k个选票进行加密后发送至投票服务器;

插值计算模块,用于对所述k个选票对应的k个选项值进行拉格朗日插值计算,得到第二确认码;

确认码发送模块,用于将所述第二确认码发送至所述投票服务器,用于所述投票服务器比对所述第二确认码与预先生成的第一确认码,完成投票有效性的验证;其中,所述k个选项值包含于n个投票选项值中,所述n个投票选项值为将所述第一确认码使用门限秘密共享方案共享得到的。

第六方面,本发明实施例提供了一种电子投票装置,应用于计票服务器,该装置包括:

同态计算模块,用于对选票进行统计,得到计票结果;所述选票为前述投票服务器发送至区块链中保存的选票。

第七方面,本发明实施例提供了一种电子投票设备,该设备包括:

所述设备包括:处理器以及存储有计算机程序指令的存储器;

所述处理器执行所述计算机程序指令时实现如以上第一方面所述的电子投票方法。

第八方面,本发明实施例提供了一种电子投票设备,该设备包括:

所述设备包括:处理器以及存储有计算机程序指令的存储器;

所述处理器执行所述计算机程序指令时实现如以上第二方面所述的电子投票方法。

第九方面,本发明实施例提供了一种电子投票设备,该设备包括:

所述设备包括:处理器以及存储有计算机程序指令的存储器;

所述处理器执行所述计算机程序指令时实现如以上第三方面所述的电子投票方法。

第十方面,本发明实施例提供了一种计算机存储介质,所述计算机存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现如以上第一方面或第二方面或第三方面所述的电子投票方法。

本发明实施例的电子投票方法、装置、设备及计算机存储介质,通过门限秘密共享方案共享第一确认码之后,会得到n个投票选项值用来对应n个投票选项,这里的n个投票选项值均为第一确认码的一个份额;之后,在投票者选择后,将投票者选择的k个选票对应的选项值进行拉格朗日差值计算,得到第二确认码。由于门限秘密共享方案是把一个秘密分成若干秘密份额分给n个选项值,这些选项值中k个或k个以上的选项值所构成的子集可以合作重构这个秘密。因此,理论上重构得到的第二确认码与预先生成的第一确认码应该是相同的,通过将两者比较可以确认投票是否有效。可见,本发明实施例能够对投票有效性进行验证:投票服务器无需对已加密的投票进行解密,只通过确认码即可验证投票内容是否有效,这不会破坏投票的保密性。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单的介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一个实施例提供的应用于投票服务器的电子投票方法的流程示意图;

图2是本发明一个实施例提供的应用于投票终端的电子投票方法的流程示意图;

图3是本发明一个实施例提供的应用于计票服务器的电子投票方法的流程示意图;

图4是本发明一个实施例提供的电子投票系统结构示意图;

图5是本发明另一个实施例提供的应用于投票服务器的电子投票装置的结构示意图;

图6是本发明另一个实施例提供的应用于投票终端的电子投票装置的结构示意图;

图7是本发明另一个实施例提供的应用于计票服务器的电子投票装置的结构示意图;

图8是本发明又一个实施例提供的电子投票设备的结构示意图。

具体实施方式

下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优选项值更加清楚明白,以下结合附图及具体实施例,对本发明进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本发明,并不被配置为限定本发明。对于本领域技术人员来说,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更好的理解。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。

为了解决现有技术问题,本发明实施例提供了一种电子投票方法、装置、设备及计算机存储介质,应用于电子投票系统,电子投票系统包含投票终端、投票服务器、计票服务器以及区块链;投票终端用于与投票者进行人机交互,并与投票服务器连接;投票服务器前端与投票终端连接,后端连接用于存储信息的区块链;计票服务器用于与计票者进行人机交互,并与区块链连接。

下面首先对本发明实施例所提供的电子投票方法进行介绍。

图1示出了本发明一个实施例提供的电子投票方法的流程示意图。应用于投票服务器,该方法包括:

s11:接收投票终端发送的加密后的k个选票;

这里的k个选票,指的是投票者从全部选项中选择出的k个选项,并将该选择结果通过投票终端发送至投票服务器。其中,k的取值可以根据实际投票规定进行设置,本发明对此不作限定。

另外,单次接收到的k个选票是由一个投票者生成的。因为投票终端在接收到一个投票者的全部选票后,将全部选票发送至投票服务器内。在一个实施例内,当投票服务器接收到多个投票终端发送的选票,按照接收到投票终端发送选票的顺序依次处理每个投票者的选票。

s12:接收投票终端发送的第二确认码,第二确认码为对k个选票对应的k个选项值进行拉格朗日插值计算得到的;

s13:比对第二确认码与预先生成的第一确认码,依据比对结果,完成投票有效性的验证;并将验证通过的加密后的k个选票进行签名,保存在区块链上;其中,k个选项值包含于n个投票选项值中,n个投票选项值为将第一确认码使用门限秘密共享方案共享得到的。

shamir(k,n)门限秘密共享方案是把一个秘密分成n个组分,其中k个或k个以上的组分所构成的子集可以通过拉格朗日插值计算来重构这个秘密。

在本发明实施例中,秘密为第一确认码,n为投票选项的总个数,组分指的是每个投票选项的选项值,k为投票者所投的k个选票,例如总共有10个选项,n=10,投票者选择了其中的5个投票,则k=5。

本发明实施例投票服务器使用shamir(k,n)秘密共享方案共享预先生成的第一确认码,产生n个选项值分别对应于n个投票选项。之后,投票者选择其中的k个进行投票,并对投票者选择的k个选项值进行拉格朗日插值计算得到第二确认码,后续即可通过第一确认码与第二确认码的比对结果。

通过门限秘密共享方案共享第一确认码之后,会得到n个投票选项值用来对应n个投票选项,这里的n个投票选项值均为第一确认码的一个份额;之后,将投票者选择的k个选票对应的选项值进行拉格朗日差值计算,得到第二确认码。由于门限秘密共享方案是把一个秘密分成若干秘密份额分给n个选项值,这些选项值中k个或k个以上的选项值所构成的子集可以合作重构这个秘密。因此,理论上重构得到的第二确认码与预先生成的第一确认码应该是相同的,通过将两者比较可以判断投票者是否从n个投票选项中选择选项,即完成投票的有效性的验证,并将通过有效性验证的选票发送至区块链上,其中,所发送的选票处于加密状态且有签名;未通过有效性验证的选票作废。可见,本发明实施例能够对投票有效性进行验证:投票服务器无需对已加密的投票进行解密,只通过确认码即可验证投票内容是否有效,这不会破坏投票的保密性。

在一种实施例中,s12之前,该方法还包括:

分别为每个投票者对应的身份信息生成的一个随机数,作为投票者对应的第一确认码。

在本实施例中,采用随机数作为第一确认码,这是因为依据前述实施例提到的验证需求,并不需要限定第一确认码的具体数值。采用随机数作为第一确认码进行验证的话,能够进一步降低第一确认码和第二确认码被人破解的风险,提高验证的可靠性。

具体的,上述依据比对结果,完成投票有效性的验证包括:当第二确认码与第一确认码一致时,加密后的k个选票通过有效性验证。

本发明中的有效的投票指的是:这k个投票需要是从所提供的n个投票选项中选择出来的,而不能是自己编造设置的,因此,理论上若k个选票是有效的,则第一确认码应该是与第二确认码相同的,若两者不相同,则表明投票终端发送的k个选票有误,投票无效。

在一种实施例中,在s11之前,该方法还包括:

接收投票终端发送的身份认证请求,将身份认证请求携带的投票者的身份信息与投票者信息进行比对认证,投票者信息为投票发起设备发送至投票服务器的信息。

由于在进行投票过程中,很多场景下并非是每个人都能够进行投票的,例如某些网站只能是会员才能够投票,因此在最初需要进行资格认证,确认投票者是否具有投票权限。资格认证的过程可以如下:

投票发起者通过投票发起设备将投票者信息发送至投票服务器,这里的投票者信息为投票者的姓名、手机号、账号、人脸信息、指纹信息中的任意一种或多种的组合,此外还可以是其他能够表征投票者身份的信息,本发明对此不作限定。

之后,投票者通过投票终端与投票服务器进行交互,来完成资格认证。具体过程为:投票者将自身信息通过投票终端发送至投票服务器,投票服务器将该信息与投票发起者发送的投票者信息进行比对,比对成功,则资格认证成功,反之,资格认证失败。进一步的,该方法还包括:

若身份认证请求携带的投票者的身份信息与投票者信息比对认证通过,则将投票者的身份信息与为投票者分配的签名公钥进行关联,并将投票者的签名公钥保存至区块链内;签名公钥用于验证区块链上保存的签名后的上述k个选票。

其中,区块链(blockchain),本质上是一个去中心化的数据库。在资格认证完成后,投票终端还为每个合格投票者产生一对ecdsa/sm2/sm9签名密钥对,并将合格投票者的公钥与投票者身份进行关联,之后通过投票服务器将该公钥发送到区块链保存。

前述实施例提到的签名,仅需要采用普通的签名方式即可,可以不采用环签名或者盲签名的方式,从而能够降低计算量。当然,具体采用哪种签名方式本发明不作限定。上述签名密钥对也可以采用其他算法生成,本发明对此不作限定。

在一种实施例中,上述k个选项值为:投票服务器与投票终端之间对k个选票运行k-out-of-n不经意传输协议(k-out-of-noblivioustransferprotocol),得到的k个选票对应的k个值。

在本实施例中,投票者在投票终端进行投票时,所看到的各个选项并非以n个投票选项值的方式呈现,投票者选择k个选票后,投票终端并不知道k个选票对应的选项值。之后,投票终端与投票服务器之间对所选出来的k个选票进行不经意传输,来使得投票终端得到k个选票对应的k个选项值,供投票终端对k个选项值进行拉格朗日计算,得到第二确认码。不经意传输协议是密码学的一个基本协议,该协议使得服务的接收方以不经意的方式得到服务发送方输入的某些消息,这样就可以保护接收者的隐私不被发送者所知道。从而提高了选票的安全性。

图2示出了本发明另一个实施例提供的电子投票方法的流程示意图。应用于投票终端,该方法包括:

s21:接收输入的选票指令,将选票指令对应的k个选票进行加密后发送至投票服务器。

由于在投票过程中,需要对投票者的选票进行加密来保证信息的安全性,因此需要进行密钥的生成,在一种实施例中,可以令计票服务器生成一对elgamal加密密钥对,并将加密公钥发送至区块链进行保存,将加密私钥发送至投票终端,供投票终端进行加密,区块链中的加密公钥用于解密接收到的选票信息。

s22:对k个选票对应的k个选项值进行拉格朗日插值计算,得到第二确认码。

s23:将第二确认码发送至投票服务器,用于投票服务器比对第二确认码与预先生成的第一确认码,完成投票有效性的验证;其中,k个选项值包含于n个投票选项值中,n个投票选项值为将第一确认码使用门限秘密共享方案共享得到的。

在一种实施例中,k个选项值为:投票终端与投票服务器之间对k个选票运行k-out-of-n不经意传输协议得到的k个选票对应的k个值。

基于前述实施例,进一步的,该方法还包括:

s25:计算k个选项值的哈希值,作为第二返回码。

计算k个哈希值,实际上是根据选择,确定对应的k个选项的哈希值。

s26:比对第一返回码和第二返回码,确定所述第二返回码对应的投票选项值,将所确定的投票选项值对应的投票选项标识进行显示;其中,第一返回码为投票服务器发送的、n个投票选项值的哈希值。

在本实施例中,投票服务器会生成n个投票选项值的哈希值作为第一返回码发送至投票终端,由于n个投票选项值分别对应于n个投票选项,因此依据第一返回码,可以得知每个投票选项对应的哈希值。投票者进行选票后,投票终端将k个选票与投票服务器进行不经意传输,得到投票服务器返回的k个选项值,这k个选项值反映的是投票服务器实际接收到的k个选票。之后计算k个选项值的哈希值作为第二返回码,将第二返回码与第一返回码进行比对的目的,是为了确认第二返回码中的各个哈希值所对应的投票选项。将第二返回码对应的投票选项标识进行显示,使得投票者能够通过查看投票选项标识来验证投票服务器接收到的k个选票是否为自身的实际投票,从而完成cast-as-intented验证:即验证投票服务器接收的k个选票是否包含投票者所选定的投票选项。并且,通过这种方式,投票终端无需对已加密的投票进行解密,只通过返回码即可验证投票内容是否正确,这不会破坏投票的保密性。

需要注意的是,s25~s26与s22~s23之间并无先后顺序的限定,两者也可以通过不同的进程并行处理,本实施例对此不作限定。

进一步的,在其他实施例中,投票者在投票终端对投票选项进行选择时,实际上是对第一返回码中的哈希值进行选择,投票终端并不知道实际的选项值,因此为了计算后续的第二返回码,投票终端需要得知投票者所选择的k个选项的选项值。

其中,第一确认码为投票服务器为投票者对应的身份信息生成的一个随机数。

在一种实施例中,验证通过的选票保存在区块链中,该方法还包括:

接收输入的存储验证指令后,查看区块链保存的选票信息,验证选票信息中是否包含存储验证指令携带的身份信息对应的选票。

即验证其投票是否存储在投票箱中,从而完成record-as-cast验证:即验证他们的选票是否被投票服务器正确储存。

在投票结束后,计票服务器需要对投票结果进行统计。在本发明另一个实施例中,应用于计票服务器,该方法包括:对选票进行统计,得到计票结果;选票为以上任实施例中保存的选票。

其中,选票保存在区块链中。

此外,为了保证数据传输过程的完整性,计票服务器还可以生成一对ecdsa/sm2/sm9签名密钥对,并将签名公钥发送至区块链进行保存;用于在计票服务器发送数据至区块链时,进行签名。

其中,前述实施例提到的签名,仅需要采用普通的签名方式即可,可以不采用环签名或者盲签名的方式,从而能够降低计算量。当然,具体采用哪种签名方式本发明不作限定。上述加密密钥对和签名密钥对也可以采用其他算法生成,本发明对此不作限定。

在投票结束后,计票服务器需要对投票结果进行统计。过程可以如下:

在使用elgamal同态加密技术对投票进行加密的情况下,对区块链内保存的加密后的投票进行同态计算,得到同态计算结果;之后解密同态计算结果,得到计票结果(即最终票数的统计结果)。其中,这里的同态计算具体为乘法同态计算。

其中,本实施例采用elgamal同态加密技术来保证投票内容保密。由于乘同态:对加密的数据进行相乘得到一个输出,将这一输出进行解密,其结果与用同一方法处理未加密的原始数据得到的输出结果是一样的,因此,通过乘同态计算进行验证,能够不需要对投票进行解密,而是直接对计票结果进行解密即可,从而提高投票的保密性和安全性。

同态加密:同态加密是一种无需对加密数据进行提前解密就可以执行计算的方法。它提供了一种急需的方法,能够在原有基础上使用区块链技术。通过使用同态加密技术在区块链上存储数据可以达到一种完美的平衡,不会对区块链属性造成任何重大的改变。也就是说,区块链仍旧是公有区块链。然而,区块链上的数据将会被加密,因此照顾到了公有区块链的隐私问题,同态加密技术使公有区块链具有私有区块链的隐私效果。

之后为了验证计票结果的正确性,需要对投票的加密私钥、计票结果的明文密文均进行验证。本实施例采用的是非交互式零知识证明,并将证明结果和计票结果明文发送至区块链,来供他人依据该证明结果和计票结果明文验证计票结果是否正确,完成counted-as-recorded验证。在一种实施例中,该方法还包括:

对选票的加密私钥、计票结果的明文和密文进行非交互式零知识证明,将证明结果和计票结果明文发送至区块链,用于使用户对证明结果进行验证。

其中,零知识证明(zkps),是一种使证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的验证方式。本实施例采用零知识证明,即能够使他人在验证计票结果的正确性的时候,并无法获取实际的计票信息,从而提高了投票的安全性。零知识证明可提供计票过程准确性以及计票结果正确性的证明,实现counted-as-recorded公开可验证,即任何人均可以对计票结果的正确性进行验证。其中,对加密私钥、计票结果的明文和密文均进行验证的具体方式,是对如下公式进行验证:其中,skenc为加密私钥,m为明文,(r,s)为密文。

其中,由于计票服务器对与投票服务器之间进行交互的数据进行了签名,因此计票服务器对证明结果和计票结果明文进行签名,并将签名后的证明结果和计票结果明文发送至区块链。

为方便理解,以下对前述提到的相关技术内容进行详细阐述:

数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用hash函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。

具体的,前述elgamal同态加密算法如下:

1、参数生成:p是素数,不同的素数代表不同的投票选项,g1是的本原元,

2、密钥产生:选择一个整数x∈[1,p-1]作为加密私钥,计算加密公钥

3、加密:输入公钥g2和明文m。选择随机数k∈[1,p-1],并计算计算输出密文(r,s)。

4、解密:输入加密私钥x和密文(r,s)。计算m=sr-xmodp;输出明文m。

具体的,k-out-of-n不经意传输协议如下:

其中,表示逐比特加,例如:

具体的,shamir(k,n)秘密共享方案如下:

投票服务器选择一个k-1次多项式f(x)=a0+a1x+…+ak-1xk-1,其中f(0)=a0=s。s为秘密,也就是第一确认码。

投票服务器计算f(x)上的n个点(xi,yi),每个点都是秘密s的一个份额,即每个点为一个投票选项的选项值。

任意k个点(x1,y1),(x2,y2),…,(xk,yk)可使用拉格朗日插值计算来重构秘密(第一确认码),具体关系式为:

具体的,非交互式零知识证明协议如下:

假设待证明的关系式为:nizkp{(α):y=gα}(m)

若等式成立则验证通过,否则验证失败。例如,若示证者在计算过程中,明文m出错,则后续验证则会不成立。另外,在实际证明过程中,依据则对于公式一s/m作为y,r作为g,skenc作为α;对于公式二pkenc作为y,g1作为g,skenc作为α。

图5示出了本发明提供的一种电子投票装置的结构示意图,应用于投票服务器,包括:

选票接收模块11,用于接收投票终端发送的加密后的k个选票;

第二确认码模块12,用于接收所述投票终端发送的第二确认码,所述第二确认码为对所述k个选票对应的k个选项值进行拉格朗日插值计算得到的;

第一比对模块13,用于比对所述第二确认码与预先生成的第一确认码,依据比对结果,完成投票有效性的验证;并将验证通过的所述加密后的k个选票进行签名,并保存在区块链上;其中,所述k个选项值包含于n个投票选项值中,所述n个投票选项值为将所述第一确认码使用门限秘密共享方案共享得到的。

在一种实施例中,该装置还包括:

第一确认码模块,用于分别为每个投票者对应的身份信息生成的一个随机数,作为所述投票者对应的第一确认码。

在一种实施例中,第一比对模块13具体用于:比对所述第二确认码与预先生成的第一确认码;当所述第二确认码与所述第一确认码一致时,所述加密后的k个选票通过有效性验证,否则,未通过有效性验证。

在一种实施例中,该装置还包括:

身份认证模块,用于接收所述投票终端发送的身份认证请求,将所述身份认证请求携带的投票者的身份信息与所述投票者信息进行比对认证,所述投票者信息为投票发起设备发送至所述投票服务器的信息。

其中,本发明实施例提供的电子投票装置,用于实现上述应用于投票服务器的电子投票方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。

图6示出了本发明提供的一种电子投票装置的结构示意图,应用于投票终端,包括:

选票发送模块21,用于接收输入的选票指令,将选票指令对应的k个选票进行加密后发送至投票服务器;

插值计算模块22,用于对k个选票对应的k个选项值进行拉格朗日插值计算,得到第二确认码;

确认码发送模块23,用于将第二确认码发送至投票服务器,用于投票服务器比对第二确认码与预先生成的第一确认码,完成投票有效性的验证;其中,k个选项值包含于n个投票选项值中,n个投票选项值为将第一确认码使用门限秘密共享方案共享得到的。

在一种实施例中,该装置还包括:

第二返回码模块,用于计算k个选项值的哈希值,作为第二返回码;

第二比对模块,用于比对第一返回码和第二返回码,确定所述第二返回码对应的投票选项值,将所确定的投票选项值对应的投票选项标识进行显示;其中,第一返回码为投票服务器发送的、n个投票选项值的哈希值。

在一种实施例中,该装置还包括:存储验证模块,用于接收输入的存储验证指令后,查看区块链保存的选票信息,验证选票信息中是否包含存储验证指令携带的身份信息对应的选票。

其中,本发明实施例提供的电子投票装置,用于实现上述应用于投票终端的电子投票方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。

图7示出了本发明提供的一种电子投票装置的结构示意图,应用于计票服务器,包括:

同态计算模块31,用于对选票进行统计,得到计票结果;选票为前述任一项实施例中区块链内保存的选票。

在一种实施例中,该装置还包括:

计票结果验证模块32,用于对选票的加密私钥、计票结果的明文和密文进行非交互式零知识证明,将证明结果和计票结果明文发送至区块链,用于使用户对证明结果进行验证。

在一种实施例中,选票通过同态加密技术进行加密;同态计算模块31具体用于:对选票进行同态计算,对计算结果进行解密,得到计票结果。

其中,本发明实施例提供的电子投票装置,用于实现上述应用于计票服务器的电子投票方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。

图8示出了本发明实施例提供的电子投票设备的硬件结构示意图。

电子投票设备可以包括处理器801以及存储有计算机程序指令的存储器802。处理器801通过读取并执行存储器802中存储的计算机程序指令,以实现上述实施例中的任意一种电子投票方法。

具体地,上述处理器801可以包括中央处理器(cpu),或者特定集成电路(applicationspecificintegratedcircuit,asic),或者可以被配置成实施本发明实施例的一个或多个集成电路。

存储器802可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器802可包括硬盘驱动器(harddiskdrive,hdd)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(universalserialbus,usb)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器802可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器802可在综合网关容灾设备的内部或外部。在特定实施例中,存储器802是非易失性固态存储器。在特定实施例中,存储器802包括只读存储器(rom)。在合适的情况下,该rom可以是掩模编程的rom、可编程rom(prom)、可擦除prom(eprom)、电可擦除prom(eeprom)、电可改写rom(earom)或闪存或者两个或更多个以上这些的组合。

在一个示例中,电子投票设备还可包括通信接口803和总线810。其中,如图8所示,处理器801、存储器802、通信接口803通过总线810连接并完成相互间的通信。

通信接口803,主要用于实现本发明实施例中各模块、装置、单元和/或设备之间的通信。

总线810包括硬件、软件或两者,将在线数据流量计费设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(agp)或其他图形总线、增强工业标准架构(eisa)总线、前端总线(fsb)、超传输(ht)互连、工业标准架构(isa)总线、无限带宽互连、低引脚数(lpc)总线、存储器总线、微信道架构(mca)总线、外围组件互连(pci)总线、pci-express(pci-x)总线、串行高级技术附件(sata)总线、视频电子标准协会局部(vlb)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线810可包括一个或多个总线。尽管本发明实施例描述和示出了特定的总线,但本发明考虑任何合适的总线或互连。

另外,结合上述实施例中的电子投票方法,本发明实施例可提供一种计算机存储介质来实现。该计算机存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种电子投票方法。

以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(asic)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、rom、闪存、可擦除rom(erom)、软盘、cd-rom、光盘、硬盘、光纤介质、射频(rf)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。

以上所述,仅为本发明的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。

技术特征:

1.一种电子投票方法,应用于投票服务器,其特征在于,包括:

接收投票终端发送的加密后的k个选票;

接收所述投票终端发送的第二确认码,所述第二确认码为对所述k个选票对应的k个选项值进行拉格朗日插值计算得到的;

比对所述第二确认码与预先生成的第一确认码,依据比对结果,完成投票有效性的验证;并将验证通过的所述加密后的k个选票进行签名,并保存在区块链上;其中,所述k个选项值包含于n个投票选项值中,所述n个投票选项值为将所述第一确认码使用门限秘密共享方案共享得到的。

2.根据权利要求1所述的方法,其特征在于,在所述接收所述投票终端发送的第二确认码之前,所述方法还包括:

分别为每个投票者对应的身份信息生成的一个随机数,作为所述投票者对应的第一确认码。

3.根据权利要求1所述的方法,其特征在于,所述依据比对结果,完成投票有效性的验证包括:

当所述第二确认码与所述第一确认码一致时,所述加密后的k个选票通过有效性验证。

4.根据权利要求1所述的方法,其特征在于,在所述接收投票终端发送的加密后的k个选票之前,所述方法还包括:

接收所述投票终端发送的身份认证请求,将所述身份认证请求携带的投票者的身份信息与所述投票者信息进行比对认证,所述投票者信息为投票发起设备发送至所述投票服务器的信息。

5.根据权利要求4所述的方法,其特征在于,所述方法还包括:

若所述身份认证请求携带的投票者的身份信息与所述投票者信息比对认证通过,则将所述投票者的身份信息与为所述投票者分配的签名公钥进行关联,并将所述投票者的签名公钥保存至所述区块链内;所述签名公钥用于验证所述区块链上保存的签名后的上述k个选票。

6.根据权利要求1-5任一项所述的方法,其特征在于,所述k个选项值为:所述投票服务器与所述投票终端之间对所述k个选票运行k-out-of-n不经意传输协议,得到的所述k个选票对应的k个值。

7.一种电子投票方法,应用于投票终端,其特征在于,包括:

接收输入的选票指令,将所述选票指令对应的k个选票进行加密后发送至投票服务器;

对所述k个选票对应的k个选项值进行拉格朗日插值计算,得到第二确认码;

将所述第二确认码发送至所述投票服务器,用于所述投票服务器比对所述第二确认码与预先生成的第一确认码,完成投票有效性的验证;其中,所述k个选项值包含于n个投票选项值中,所述n个投票选项值为将所述第一确认码使用门限秘密共享方案共享得到的。

8.根据权利要求7所述的方法,其特征在于,所述k个选项值为:所述投票终端与所述投票服务器之间对所述k个选票运行k-out-of-n不经意传输协议得到的所述k个选票对应的k个值。

9.根据权利要求8所述的方法,其特征在于,所述方法还包括:

计算所述k个选项值的哈希值,作为第二返回码;

比对第一返回码和所述第二返回码,确定所述第二返回码对应的投票选项值,将所确定的投票选项值对应的投票选项标识进行显示;其中,所述第一返回码为所述投票服务器发送的、所述n个投票选项值的哈希值。

10.根据权利要求9所述的方法,其特征在于,所述第一确认码为所述投票服务器为投票者对应的身份信息生成的一个随机数。

11.根据权利要求7所述的方法,其特征在于,所述验证通过的选票保存在区块链中,所述方法还包括:

接收输入的存储验证指令后,查看所述区块链保存的选票信息,验证所述选票信息中是否包含所述存储验证指令携带的身份信息对应的选票。

12.一种电子投票方法,应用于计票服务器,其特征在于,包括:

对选票进行统计,得到计票结果;所述选票为权利要求1-6任一项中保存的选票。

13.根据权利要求12所述的方法,其特征在碍于,所述方法还包括:

对所述选票的加密私钥、计票结果的明文和密文进行非交互式零知识证明,将证明结果和所述计票结果明文发送至所述区块链,用于使用户对所述证明结果进行验证。

14.根据权利要求12所述的方法,其特征在于,所述选票通过同态加密技术进行加密;所述对选票进行统计,得到计票结果包括:

对所述选票进行同态计算,对计算结果进行解密,得到所述计票结果。

15.一种电子投票装置,应用于投票服务器,其特征在于,包括:

选票接收模块,用于接收投票终端发送的加密后的k个选票;

第二确认码模块,用于接收所述投票终端发送的第二确认码,所述第二确认码为对所述k个选票对应的k个选项值进行拉格朗日插值计算得到的;

第一比对模块,用于比对所述第二确认码与预先生成的第一确认码,依据比对结果,完成投票有效性的验证;并将验证通过的所述加密后的k个选票进行签名,并保存在区块链上;其中,所述k个选项值包含于n个投票选项值中,所述n个投票选项值为将所述第一确认码使用门限秘密共享方案共享得到的。

16.一种电子投票装置,应用于投票终端,其特征在于,包括:

选票发送模块,用于接收输入的选票指令,将所述选票指令对应的k个选票进行加密后发送至投票服务器;

插值计算模块,用于对所述k个选票对应的k个选项值进行拉格朗日插值计算,得到第二确认码;

确认码发送模块,用于将所述第二确认码发送至所述投票服务器,用于所述投票服务器比对所述第二确认码与预先生成的第一确认码,完成投票有效性的验证;其中,所述k个选项值包含于n个投票选项值中,所述n个投票选项值为将所述第一确认码使用门限秘密共享方案共享得到的。

17.一种电子投票装置,应用于计票服务器,其特征在于,包括:

同态计算模块,用于对选票进行统计,得到计票结果;所述选票为权利要求1-6任一项中保存的选票。

18.一种电子投票设备,应用于投票服务器,其特征在于,所述设备包括:处理器以及存储有计算机程序指令的存储器;

所述处理器执行所述计算机程序指令时实现如权利要求1-6任意一项所述的电子投票方法。

19.一种电子投票设备,应用于投票终端,其特征在于,所述设备包括:处理器以及存储有计算机程序指令的存储器;

所述处理器执行所述计算机程序指令时实现如权利要求7-11任意一项所述的电子投票方法。

20.一种电子投票设备,应用于计票服务器,其特征在于,所述设备包括:处理器以及存储有计算机程序指令的存储器;

所述处理器执行所述计算机程序指令时实现如权利要求12-14任意一项所述的电子投票方法。

21.一种计算机存储介质,其特征在于,所述计算机存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现如权利要求1-6或者7-11或者12-14任意一项所述的电子投票方法。

技术总结

本发明公开了一种电子投票方法、装置、设备及计算机存储介质。应用于投票服务器的方法包括:接收投票终端发送的加密后的k个选票;接收投票终端发送的第二确认码,第二确认码为对k个选票对应的k个选项值进行拉格朗日插值计算得到的;比对第二确认码与预先生成的第一确认码,依据比对结果,完成投票有效性的验证;并将验证通过的加密后的k个选票进行签名,并保存在区块链上;其中,k个选项值包含于n个投票选项值中,n个投票选项值为将第一确认码使用门限秘密共享方案共享得到的。根据本发明实施例,能够在不解密投票者的选票的基础上,验证投票者的选票的有效性,整体安全性高,且提高了投票的准确性。

技术研发人员:张亮轩;郑翀;张一锋;范贵甫

受保护的技术使用者:中钞信用卡产业发展有限公司杭州区块链技术研究院

技术研发日:.07.31

技术公布日:.12.10

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。