用于在适度限制的区块链上的公共选举的方法及系统转让专利

申请号 : CN201910024922.9

文献号 : CN110032873A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : S·C·戴维斯

申请人 : 万事达卡国际公司

摘要 :

本公开题为用于在适度限制的区块链上的公共选举的方法及系统。一种用于在公共区块链中处理投票的方法包括:生成选举参考和候选人参考;生成由主私钥和主公钥组成的非对称密码密钥对;生成登记块以添加到区块链,所述区块链包括选举参考、候选人参考和主公钥;将登记块传输到与区块链相关联的节点;接收多个投票消息,每个包括投票和选举参考,其中所述投票包括选民参考和至少一个候选人参考;生成一个或多个投票块以添加到区块链,所述区块链包括接收的投票;以及将每个生成的投票块传输到与区块链相关联的节点。

权利要求 :

1.一种用于在公共区块链中处理投票的方法,包括:由处理服务器的生成模块生成选举参考和两个或更多个候选人参考;

由所述处理服务器的加密模块生成由主私钥和主公钥组成的非对称密码密钥对;

由所述处理服务器的所述生成模块生成至少一个登记块以添加到区块链,其中所述至少一个登记块中的每一个由块头和一个或多个数据值组成,其中所述至少一个登记块中的所述一个或多个数据值包括所述选举参考、所述两个或更多个候选人参考以及所述主公钥;

由所述处理服务器的传输设备将每个生成的登记块电子地传输到与所述区块链相关联的一个或多个节点;

由所述处理服务器的接收设备接收多个投票消息,其中每个投票消息至少包括投票和所述选举参考,其中所述投票至少包括一个或多个候选人参考中的一个和选民参考;

由所述处理服务器的所述生成模块生成至少一个投票块以添加到所述区块链,其中所述至少一个投票块中的每一个由块头和一个或多个数据值组成,其中所述至少一个投票块中的所述一个或多个数据值包括接收的投票中的每一个;以及由所述处理服务器的所述传输设备将每个生成的投票块电子地传输到与所述区块链相关联的一个或多个节点。

2.如权利要求1所述的方法,其中

每个接收的投票是加密的,

接收所述多个投票消息还包括由所述处理服务器的所述加密模块使用所述主私钥对每个加密的投票解密,以及包括在所述至少一个投票块中的所述一个或多个数据值中的所述投票是解密的投票。

3.如权利要求1所述的方法,还包括:

由所述处理服务器的所述加密模块生成由验证公钥和验证私钥组成的对称密码密钥对;以及由所述处理服务器的所述加密模块使用所述验证私钥在所述选举参考、所述两个或更多个候选人参考和所述主公钥上生成数字签名,其中生成的数字签名和验证公钥进一步被包括在所述一个或多个登记块中包括的所述一个或多个数据值中。

4.如权利要求3所述的方法,还包括:

由所述处理服务器的所述加密模块使用所述验证私钥在所述投票上生成针对所述投票中的每一个的投票数字签名,其中生成的投票数字签名伴随所述一个或多个投票块中的相应投票。

5.如权利要求1所述的方法,其中每个投票还包括投票随机数。

6.如权利要求1所述的方法,其中所述选举参考是通过应用散列算法生成的散列值。

7.如权利要求1所述的方法,其中所述候选人参考中的每一个是与所述区块链相关联并且使用相应公钥生成的区块链地址。

8.如权利要求1所述的方法,还包括:

由所述处理服务器的所述生成模块使用所述主私钥生成多个密钥组件;

在所述处理服务器的存储器中存储所述多个密钥组件;

在所述多个密钥组件的存储之后并且在所述一个或多个登记块的电子传输之前,从所述处理服务器删除所述主私钥;以及在所述多个投票消息的接收之后,由所述处理服务器的所述加密模块使用存储在所述存储器中的所述多个密钥组件来生成所述主私钥。

9.如权利要求1所述的方法,其中所述选民参考中的每一个是密码上唯一的值。

10.如权利要求9所述的方法,其中所述选民参考中的每一个是使用对称密码密钥对的选民公钥生成的。

11.一种用于在公共区块链中处理投票的系统,包括:处理服务器的接收设备和传输设备;

所述处理服务器的生成模块,所述生成模块配置为生成选举参考和两个或更多个候选人参考;以及所述处理服务器的加密模块,所述加密模块配置为加密由主私钥和主公钥组成的非对称密码密钥对,其中所述处理服务器的所述生成模块还配置为生成至少一个登记块以添加到区块链,其中所述至少一个登记块中的每一个由块头和一个或多个数据值组成,其中所述至少一个登记块中的所述一个或多个数据值包括所述选举参考、所述两个或更多个候选人参考和所述主公钥,所述处理服务器的所述传输设备配置为将每个生成的登记块电子地传输到与所述区块链相关联的一个或多个节点;

所述处理服务器的所述接收设备配置为接收多个投票消息,其中每个投票消息至少包括投票和所述选举参考,其中所述投票至少包括一个或多个候选人参考中的一个和选民参考,所述处理服务器的所述生成模块还配置为生成至少一个投票块以添加到所述区块链,其中所述至少一个投票块中的每一个由块头和一个或多个数据值组成,其中所述至少一个投票块中的所述一个或多个数据值包括接收的投票中的每一个,以及所述处理服务器的所述传输设备还配置为将每个生成的投票块电子地传输到与所述区块链相关联的一个或多个节点。

12.如权利要求11所述的系统,其中

每个接收的投票是加密的,

接收所述多个投票消息还包括由所述处理服务器的所述加密模块使用所述主私钥对每个加密的投票解密,以及包括在所述至少一个投票块中的所述一个或多个数据值中的所述投票是解密的投票。

13.如权利要求11的系统,其中

所述处理服务器的所述加密模块还配置为生成由验证公钥和验证私钥组成的对称密码密钥对,所述处理服务器的所述加密模块还配置为使用所述验证私钥在所述选举参考、所述两个或更多个候选人参考和所述主公钥上生成数字签名,以及生成的数字签名和验证公钥进一步被包括在所述一个或多个登记块中包括的所述一个或多个数据值中。

14.如权利要求13所述的系统,其中

所述处理服务器的所述加密模块配置为使用所述验证私钥在所述投票上生成针对所述投票中的每一个的投票数字签名,以及生成的投票数字签名伴随所述一个或多个投票块中的相应投票。

15.如权利要求11所述的系统,其中每个投票还包括投票随机数。

16.如权利要求11所述的系统,其中所述选举参考是通过应用散列算法生成的散列值。

17.如权利要求11所述的系统,其中所述候选人参考中的每一个是与所述区块链相关联并且使用对应公钥生成的区块链地址。

18.如权利要求11所述的系统,还包括:

所述处理服务器的存储器,其中

所述处理服务器的所述生成模块还配置为使用所述主私钥生成多个密钥组件,所述处理服务器的所述存储器配置为存储所述多个密钥组件,所述处理服务器配置为在所述多个密钥组件的存储之后并且在所述一个或多个登记块的电子传输之前删除所述主私钥,以及所述处理服务器的所述加密模块还配置为在所述多个投票消息的接收之后使用存储在所述存储器中的所述多个密钥组件来生成所述主私钥。

19.如权利要求11所述的系统,其中所述选民参考中的每一个是密码上唯一的值。

20.如权利要求19所述的系统,其中所述选民参考中的每一个是使用对称密码密钥对的选民公钥生成的。

说明书 :

用于在适度限制的区块链上的公共选举的方法及系统

技术领域

[0001] 本公开涉及在公共区块链中投票的处理,特别涉及使用适度限制 的(moderated)区块链来提供在公共选举中投票,所述公共选举在 保持个人投票匿名性的同时维持关于投票和投票计数的透明度。

背景技术

[0002] 公共选举是政府的基石。选举在许多司法管辖区定期举行,并可 能导致从数百到数千万的任何数量的投票,所有所述投票常常是在单 日的几个小时跨度内必须进行、核实和计数。传统上,投票是通过纸 质选票进行的,然后所述纸质选票必须用手进行计数,需要相当多的 个人。最终,机械机器被制造以辅助纸质选票的计数。然而,这些仍 然必须由个人操作,并且结果由授权人员列表,并且在机械的操作和 选票的标记中易受故障和混乱的影响。
[0003] 一些司法管辖区已试图使用计算系统来提供电子投票,所述电子 投票可以在接收所述投票时自动将投票进行列表并提供及时的结果, 而不需要相当多的人员。然而,这样的系统需要在每个投票位置安装 单独的计算设备,这可能会很昂贵,并且已经屡次发现不安全并且容 易遭受黑客和其他操纵。结果,尽管涉及大量的时间和资源成本,许 多司法管辖区由于纸质选票的可靠性和安全性继续使用它们。
[0004] 一些司法管辖区利用了区块链来为选举公布投票。这样的方法已 涉及使用被设计用于以传统方式转移数字货币的区块链,其中选民在 他们希望投票支持的候选人的“盒”(区块链地址)中放置“硬币” (数字货币的单位)。这为选民提供能力以确保他们的投票被正确投 出了,并使得任何个人或实体能够对投票进行计数以确认选举的结果。 然而,为了保持可信,传统的区块链不断地更新,并且在整个过程中 公开地可用,这意味着可以在进行投票时对投票计数。另外,每个选 民必须被单独登记并提供货币单位,需要在举行选举之前进行大量处 理,并冒着在配置过程中暴露选民身份的风险。因此,传统的区块链 可以提供关于投票篡改的安全性,但不能维持由传统投票方法提供的 选民匿名性和总体结果的保护。
[0005] 因此,需要技术解决方案,以利用区块链来改进公共选举中的投 票,所述区块链可以提供选民的完全匿名性并且在投票已结束之前不 能列表投票,同时维持验证个人投票和总体结果的能力以及由区块链 提供的防止选举篡改的安全性。

发明内容

[0006] 本公开提供用于在公共区块链中处理投票的系统和方法的描述。 公共区块链用于确保选举可被审核并且投票可被正确地列表,而不可 能发生投票篡改,并且其中投票能够核实他们的个人投票,以确保其 被计数用于适当候选人。区块链中的节点在传统的区块链机制之上利 用加密,以确保投票不能被提前计数,同时仍然被公布到区块链,以 在整个过程和随后的验证中提供透明性。另外,选民使用密码上唯一 的参考而不需要转移任何货币进行投票可以提供选民的完全匿名性, 同时仍然使得选民能够被澄清(cleared)作为授权选民,并能够在整 个过程中跟踪他们的个人投票。因此,本文讨论的方法和系统可以通 过本文讨论的利用额外密码密钥对和密码上唯一的参考值的专门配置 来提供在投票中使用区块链的所有益处,但是没有传统区块链的使用 的任何负面影响。
[0007] 用于处理公共区块链中的投票的方法包括:由处理服务器的生成 模块生成选举参考和两个或更多个候选人参考;由处理服务器的加密 模块生成由主私钥和主公钥组成的非对称密码密钥对;由处理服务器 的生成模块生成至少一个登记块以添加到区块链,其中所述至少一个 登记块中的每一个由块头和一个或多个数据值组成,其中在所述至少 一个登记块中的所述一个或多个数据值包括选举参考、两个或更多个 候选人参考以及主公钥;由处理服务器的传输设备将每个生成的登记 块电子地传输到与区块链相关联的一个或多个节点;由处理服务器的 接收设备接收多个投票消息,其中每个投票消息至少包括投票和选举 参考,其中所述投票至少包括选民参考和一个或多个候选人参考中的 一个;由处理服务器的生成模块生成用于添加到区块链的至少一个投 票块,其中所述至少一个投票块中的每一个由块头和一个或多个数据 值组成,其中所述至少一个投票块中的所述一个或多个数据值包括接 收的投票中的每一个;以及由处理服务器的传输设备将每个生成的投 票块电子地传输到与区块链相关联的一个或多个节点。
[0008] 用于在公共区块链中处理投票的系统包括:处理服务器的接收设 备和传输设备;处理服务器的生成模块,所述生成模块配置为生成选 举参考和两个或更多个候选人参考;
以及处理服务器的加密模块,所 述加密模块配置为加密由主私钥和主公钥组成的非对称密码密钥对, 其中所述处理服务器的所述生成模块还配置为生成至少一个登记块以 添加到区块链,其中所述至少一个登记块中的每一个由块头和一个或 多个数据值组成,其中所述至少一个登记块中的所述一个或多个数据 值包括选举参考、两个或更多个候选人参考以及主公钥,处理服务器 的传输设备配置为将每个生成的登记块电子地传输到与区块链相关联 的一个或多个节点,处理服务器的接收设备配置为接收多个投票消息, 其中每个投票消息至少包括投票和选举参考,其中所述投票至少包括 选民参考和一个或多个候选人参考中的一个,处理服务器的生成模块 进一步配置为生成至少一个投票块以添加到区块链,其中所述至少一 个投票块中的每一个由块头和一个或多个数据值组成,其中所述至少 一个投票块中的所述一个或多个数据值包括接收的投票中的每一个, 并且所述处理服务器的所述传输设备进一步配置为将每个生成的投票 块电子地传输到与区块链相关联的一个或多个节点。

附图说明

[0009] 当结合附图阅读时,从示例性实施例的以下详细描述中可以最好 地理解本公开的范围。附图中包括以下的图:
[0010] 图1是说明根据示例性实施例的用于使用适度限制的区块链处理 用于公共选举的投票的高级系统架构的框图;
[0011] 图2是说明根据示例性实施例的用于处理针对适度限制的区块链 的投票的图1的系统的处理服务器的框图;
[0012] 图3是说明根据示例性实施例的用于在图1的系统中使用适度限 制的区块链配置公共选举和选民的登记的过程的流程图;
[0013] 图4是说明根据示例性实施例的用于在图1的系统中处理适度限 制的区块链上的公共选举中的投票的过程的流程图;
[0014] 图5是说明根据示例性实施例的用于处理公共区块链中的投票的 示例性方法的流程图;
[0015] 图6是说明根据示例性实施例的计算机系统架构的框图。
[0016] 根据下文提供的详细描述,本公开的适用性的其他领域将变得显 而易见。应当理解,示例性实施例的详细描述仅旨在用于说明目的, 并且因此并不旨在必然限制公开的范围。

具体实施方式

[0017] 术语表
[0018] 区块链-基于区块链的货币的所有交易的公共分类帐(ledger)。 一个或多个计算设备可以包括区块链网络,所述区块链网络可配置为 处理和记录作为区块链中的块的部分的交易。一旦块完成,所述块就 添加到区块链并且由此更新交易记录。在许多情况下,区块链可以是 按时间顺序的交易的分类账,或者可以以可适于由区块链网络使用的 任何其他顺序呈现。在一些配置中,区块链中记录的交易可以包括目 的地地址和货币金额,这样区块链记录多少货币可归属于特定地址。 在一些情况下,交易是财务的,而其他交易不是财务的,或者可包括 额外的或不同的信息,诸如源地址、时间戳等等。在一些实施例中, 区块链还可以或可替代地包括几乎任何类型的作为交易的形式的数 据,所述数据是或者需要放置在分布式数据库中,所述分布式数据库 维持不断增长的数据记录的列表,所述数据记录被硬化(harden)以 防止(甚至由其操作员的)篡改和修正,并且所述区块链可以由区块 链网络通过工作证明和/或与所述区块链相关联的任何其他合适的验 证技术来确认和验证。在一些情况下,关于给定交易的数据可以进一 步包括附加到交易数据的不直接是交易的部分的额外数据。在一些情 况下,区块链中这样的数据的包含可构成交易。在这样的情况下,区 块链可能不直接与特定的数字的、虚拟的、法定的或其他类型的货币 相关联。
[0019] 用于适度限制的区块链上的公共选举的系统
[0020] 图1说明用于使用适度限制区块链进行的公共选举,以及利用多 个密码密钥对和密码上唯一的参考值来处理其上的投票的系统100。
[0021] 系统100可以包括处理服务器102。下文更详细地讨论的处理服 务器102可以是多个具体配置的计算系统之一,被配置为作为用于公 共选举的区块链的适度限制器而操作,所述处理服务器102可配置为 对添加到区块链的所有块(包括用于候选人的登记、投票的投出和列 表等等的块)数字地签名。系统100可以包括区块链网络108。区块 链网络108可以由多个节点构成,每个所述节点可配置为使用合适的 验证机制(诸如工作的证明)来生成和验证块,以向区块链添加块。 在系统100中,处理服务器102可配置为对块数字地签名,所述块在 加入区块链之前由节点生成并验证。在一些实施例中,处理服务器102 可以是节点。在其他实施例中,区块链网络108可以完全由作为节点 的处理服务器102组成。换言之,区块链网络108中的每个节点可配 置为在被添加到区块链之前对块数字地签名。
[0022] 在选举开始之前,处理服务器102可以首先生成用于在选举中使 用的值。在一些实施例中,处理服务器102或区块链网络108中的节 点可以创建用于选举中的新区块链。在其他实施例中,可以使用现有 的区块链,其中与新选举相关的被添加到区块链的所有条目可以包括 与选举相关联的特定参考值。这样的参考值在本文中可称为选举参考。 在一些情况下,选举参考可以是由处理服务器102生成的散列值,所 述散列值可以相对用于任何其他选举的参考值来说在密码上唯一,诸 如以确保投票和与给定选举有关的其他条目没有冲突。在一些这样的 情况下,通过对与选举相关联的特定数据集合(诸如选举中候选人的 参考)进行散列可以生成选举参考,下文将更详细地讨论。在一些情 况下,选举参考仍然可用于使用新区块链的情况,诸如以容纳额外的 选举或以其他方式确保通过适度限制区块链执行的投票和其他功能的 精确度。
[0023] 也可以在选举前为在选举中可以投票的候选人中的每一个生成参 考值。在一些实施例中,针对候选人的参考值可以是密码上唯一的散 列值,以防止在相同或其他选举中与其他候选人的冲突。在一些例子 中,候选人参考可以相当大(例如64),以防止冲突并且还以防止投 票错误(例如以避免在给定选举中由于单个数位的打字错误而对一个 候选人而不是另一个候选人的意外投票)。
[0024] 一旦生成了选举参考和候选人参考,用于选举的第一块就可以使 用合适的块生成和验证机制(例如由处理服务器102或区块链网络108 中的节点,如适用)生成,并添加到区块链。在正在使用新区块链的  情况下,块可以是如本领域技术人员已知的创世(genesis)块。创世 块可以由块头、选举参考和候选人参考组成。在一些情况下,候选人 参考可能伴有识别与每个参考相关联的候选人的名称或其他数据。在 一些情况下,块中的数据值还可以包括处理服务器102的地址,诸如 用于由其他系统在与处理服务器102通信中使用。块头可以至少包括 时间戳和对块中伴随块头的数据的参考,本文称为数据参考值。在示 例性实施例中,数据参考值可以是通过将一个或多个散列算法应用于 伴随数据(诸如创世块的选举参考和主公钥)而生成的散列值。在一 些情况下,数据参考值可以是伴随数据的Merkle树的根。
[0025] 如果块不是创世块,并且对于区块链中的所有后续块,块头还可 以包括块参考值,所述块参考值可以是对添加到区块链的先前块(例 如由时间戳确定的)的参考,诸如先前块的块头的散列值。注意到, 块参考值可以是指区块链中的前块,即使所述前块与不同的选举相关。 在区块链用于多个选举的情况下,每个块可以包括针对选举的选举参 考作为块或块的块头中的数据值之一。数据参考值和块参考值的使用 可以确保区块链的不变性,因为区块链上(例如投票或候选人参考的) 单个数据值的修改将需要修改该块的数据参考值,以及然后修改后续 添加的块的块参考值,以及然后修改下一个添加的块中的块参考值, 依次类推通过整个区块链,这必须在添加新块之前在区块链中的每个 单个节点处执行,由于对处理和网络通信的限制这可能是不可能的。
[0026] 一旦针对选举的第一个块被添加到了区块链,选民104就可以被 登记以投票。每个选民104可以拥有或以其他方式访问选民设备106, 选民104将使用所述选民设备106来投出他或她的选票以用于选举。 选民设备106可以是具体配置为执行本文讨论的功能的任何计算设 备,例如具体配置的台式计算机、膝上型计算机、笔记本计算机、平 板计算机、蜂窝电话、智能电话、智能手表、智能电视、可穿戴计算 设备、可植入计算设备等等。选民104可以使用选民设备106生成投 票密钥对,所述投票密钥对可以是由投票私钥和投票公钥组成的密码 密钥对。针对选民104的投票地址可以使用与该选民104相关联的投 票公钥或者由选民设备106或其他系统(诸如处理服务器102或者审 核实体110)来生成。审核实体110可以是用于在系统100中执行额 外功能以协助选举的额外计算系统。选民的投票地址可以提交到处理  服务器102以添加到区块链。在一些实施例中,投票地址可以使用 Base58check编码来生成。
[0027] 在示例性实施例中,选民104的身份和选民104的投票权利可以 在区块链上登记选民的投票地址之前得到核实。在这样的实施例中, 审核实体110可由选民104(例如经由投票设备108)提供信息以核实 选民的身份和投票权利。例如,审核实体110可以是政府机构,所述 政府机构可以使用合适的身份核实机制核实选民104是在选举的司法 管辖区内的登记的选民并且是他们所声称的人。审核实体110可以使 用任何合适的通信网络和方法来将选民的成功验证通知到处理服务器 102。
[0028] 一旦选民的投票权利得到了核实,他们的登记就可以被添加到区 块链。可以生成新块,所述新块包括用于选民的登记的数据值,所述 数据值可以至少包括选举参考和选民的投票地址。在一些实施例中, 选民登记还可以包括适于在选举中使用的额外数据,诸如审核实体 110可能需要的投票凭据、委托签名等等。处理服务器102(例如或者 区块链网络108中的节点,如果适用)可以继续接收选民登记,所述 选民登记可以相应地添加到区块链。在一些情况下,可以以预确定的 时间间隔(例如每10分钟)添加新块。在其他情况下,在接收登记时 可以添加新块。在一些实施例中,新选民登记可以在选举之前的任何 时间由处理服务器102继续接收,但是只能直到在选举开始之前预确 定的为止被接受。
[0029] 当将具有选民登记的新块添加到区块链时,每个选民104可以能 够通过查看区块链来核实它们被登记以投票。由于区块链是公开可用 的,所以选民104可以用针对选举的选举参考查看块及其中包括的数 据值,并识别他们的投票地址。这可以向选民104指示他们已经成功 地登记以在该选举中投票。通过利用由选民104自己使用他们自己的 设备而生成的地址,通过消除对为每个单个选民104生成地址或其他 标识符并分发它们的集中式系统的需要,可以比传统投票系统中更快 地执行登记。另外,通过允许选民104使用他们自己的投票设备106, 可以在不需要分布在整个管辖范围内的投票位置处的计算系统的情况 下执行选举。事实上,如下文更详细讨论的,系统100可以使用本文 讨论的方法和系统来完全消除对投票位置的需要。
[0030] 当计划开始投票时,处理服务器102可以生成选举主密钥对。选 举主密钥对可以是由处理服务器102使用合适的密钥生成机制生成的 密码密钥对,所述密码密钥对由主私钥和对应主公钥组成。在一些实 施例中,主密钥对可以利用合适的密钥生成算法,使得使用主公钥加 密的消息可以通过主私钥解密,而不需要知道用于加密的主公钥。可 以生成至少包括选举参考和主公钥的新的数据值,以在投票开始时或 之前添加到区块链,以供选民104在选举中用以投票。在示例性实施 例中,处理服务器102可以在数据值添加到区块链之前对其数字地签 名。在一些情况下,处理服务器102可以使用主私钥来生成数字签名, 作为处理服务器102对选举的适度限制的部分。在其他情况下,处理 服务器102可以生成由验证私钥和验证公钥组成的额外密码密钥对, 本文称为验证密钥对。在这样的情况下,处理服务器102可以使用验 证私钥来对其贡献给区块链的用于选举的所有数据值签名。验证公钥 可以与主公钥一起被包括,然后其可以由选民104和审核实体110使 用来核实添加到区块链的数据值的数字签名,以核实它们是由授权的 适度限制器(例如处理服务器102)作出的。
[0031] 在一些实施例中,处理服务器102可配置为一旦主公钥已被公布 到区块链就删除主私钥。在这样的实施例中,这样做可以确保在选举 结束之前投票不能被解密。在这些实施例中,处理服务器102可配置 为从主私钥生成一个或多个组件,所述组件可用于稍后重建密钥。在 一些情况下,处理服务器102可以将单独密钥组件分配给单独审核实 体110,以防止任何实体或系统重新创建主私钥的能力直到选举已结 束。在这些情况下,每个审核实体110可以具有其自己的关联密码密 钥对,本文称为审核密钥对,所述审核密钥对由审核私钥和审核公钥 组成,并且处理服务器102可以用其审核公钥加密正在分配到每个审 核实体110的密钥组件,并且可以将审核公钥和对应加密密钥组件的 对与主公钥一起公布到区块链。审核实体110可以使用其审核私钥来 解密密钥组件,并且可以使用与处理服务器102相关联的公钥(诸如 验证公钥或由处理服务器102生成的另一密码密钥对的公钥)来重新 加密密钥组件。重新加密的密钥组件可以在选举已结束后(例如直接 地或通过区块链上的公布)返回到处理服务器102,其中所述处理服 务器102可以对密钥组件进行解密并重新创建主私钥。关于将私钥分 解为组件、其分配以及在重新创建私钥中的使用的额外信息可以在 2016年1月1日由Steven C.Davis提交的题为“Method and System for Distributed Cryptographic Key Provisioning and Storage via Elliptic Curve Cryptography”的美国专利申请号15/001775中找到,本文通 过参考将其全部合并于此。
[0032] 在投票开始并且主公钥已公布到区块链之后,选民104可以开始 投放(place)其投票。选民104可以通过在提交具有其投票的用于被 包括在区块链上的新数据值来投放他们的投票。选民104使用其投票 设备104,可以使用先前已发布到区块链的他们的候选人参考来选择 候选人。选民104还可以生成针对他们的投票的他们自己的参考值(本 文称为选民参考)以与他们的投票一起被包括。选民参考可以是可由 选民104使用来识别他们的投票以确保他们的投票被作出并对正确候 选人计数的任何值。在一些情况下,选民104可以手动选择选民参考。 在其他情况下,选民设备106可配置为生成选民参考,所述选民参考 可能相对其他选民参考是密码上唯一的,以确保冲突。在一个示例中, 选民设备106可以生成密码密钥对,使用公钥来生成选民参考,并且 然后可以抛弃密钥。一旦生成了选民参考并选择了候选人(一个或多 个),选民设备106就可以使用主公钥加密数据。在一些情况下,可 以在加密之前在数据中包括随机数(nonce)作为进一步的安全措施。 然后,选民设备106可以将加密的投票以及它属于的选举参考提交到 处理服务器102、审核实体110或区块链网络108中的节点。然后可 以将加密的投票和选举参考作为数据值发布到添加到区块链的新块 中。选民104可以通过识别区块链上的加密的投票来确保接收了他们 的投票。
[0033] 在一些实施例中,一旦选民104投放了其投票,在公布到区块链 的加密的投票不能归因于他们时,他们就可以提交核实以核实他们已 投票。在这样的实施例中,一旦选民104核实其加密的投票被接收并 添加到区块链,选民104可以向处理服务器102发出核实消息,所述 核实消息包括选举参考、他们的投票公钥、最近添加到区块链的块中 包括的块参考值以及使用其投票私钥生成的块参考值的数字签名。然 后,处理服务器102可以使用投票公钥验证数字签名,并将验证消息 发布到区块链。通过使用块参考值,可以确保选民104验证其投票的 时间被登记并且不可变。另外,通过使用针对最近块的块参考值,而 不是与他们的加密的投票相关联的任何数据或者必然地包括他们的加 密的投票的块的块参考值,防止任何实体形式能够识别什么加密投票 与选民104相关联。换言之,区块链随后将包括各种加密的投票以及 来自选民104的对他们已投票的各种验证,但是没有任何能力将核实 的选民与他们的投票进行匹配。
[0034] 一旦投票结束了,处理服务器102就可以解密投票。在删除了主 私钥的情况下,处理服务器102可以使用本文讨论的方法重新创建主 私钥。处理服务器102可以识别发布到区块链的所有加密的投票,并 且在示例性实施例中,可以随机地洗牌(shuffle)加密的投票的列表, 以进一步禁止将投票与选民104匹配的能力。处理服务器102可以使 用主私钥对每个加密的投票进行解密。然后,处理服务器102可以将 解密的投票连同选举参考以及包括验证公钥和使用验证私钥在解密的 投票上生成的数字签名(如果可用)一起发布到区块链。
[0035] 一旦解密的投票已发布到区块链,任何利害关系方都可以对投票 进行计数。任何对选举结果感兴趣的实体都可以使用所包括的公钥来 验证与解密的投票一起公布的数字签名,并且可以通过识别包括在每 个解密的投票中的各自的候选人参考来列表对每个候选人的投票。每 个选民104也可以能够通过利用他们的选民参考来核实他们的投票被 计数了并且用于正确的候选人。选民104可识别包括其选民参考的解 密的投票,并识别其中包括的候选人参考,以确保他们的投票准确无 误地作出并且未被篡改。在一些实施例中,处理服务器102可以列表 针对每个候选人参考的投票,并且可以向用于选举的区块链进行包括 选举参考和结果(例如对每个候选人参考的投票的数量)的最后公布。 然后,处理服务器102可以删除用于该选举的主密钥对和验证密钥对。
[0036] 如本文讨论的,处理服务器102可以能够通过使用选举参考来对 用于多个选举(包括用于同时进行的多个选举)的公共区块链上的投 票执行适度限制。即使大量选举在利用相同的区块链并且由相同的处 理服务器(一个或多个)102在进行适度限制,选举参考也可以使得 所有投票能够被正确地计数用于正确选举。另外,密码学上唯一候选 人参考的使用可以进一步防止对不正确的候选人或在其他选举中的候 选人的投票的误计数,而密码学上唯一的选民参考可以使得选民104 能够在区块链中的任何选举中容易地找到他们的投票。
[0037] 因此,本文讨论的方法和系统提供使用公共区块链的投票,所述 使用公共区块链的投票与传统纸质和电子投票相比是重大的技术改 进,并且与先前在公共选举中使用区块链的尝试相比有重大改进。使 用主密钥对来加密投票以及如本文所讨论的利用所述主密钥对的方式 防止任何实体在正在举行选举时能够解密投票并且列表结果。使用选 民参考和本文讨论的用于选民验证的方法还可以防止任何实体将选民 104与投票匹配,从而完全保护选民104匿名性。本文讨论的方法和 系统也可以使用最少数量的处理服务器102来实现,从而减少与通过 电子方法举行公共选举相关联的成本和处理功率。而且,本文讨论的 方法允许选民104使用个人选民设备106投出投票,同时维持投票过 程的完全安全性,消除对投票位置的需要和向其部署终端和人员的成 本。因此,本文讨论的方法和系统可以实现传统投票方法的每个好处, 而同时提供速度和效率的显著提高、成本和资源消耗的降低,而没有 任何负面影响。
[0038] 处理服务器
[0039] 图2说明系统100中处理服务器102的实施例。对于本领域技术 人员将显而易见的是,图2中说明的处理服务器102的实施例仅作为 说明而提供,并且对于适于执行本文讨论的功能的处理服务器102的 所有可能配置可能并非详尽无遗。例如,图6中说明的并且下文更详 细地讨论的计算机系统600可以是处理服务器102的合适配置。
[0040] 处理服务器102可以包括接收设备202。接收设备202可配置为 经由一个或多个网络协议通过一个或多个网络接收数据。在一些情况 下,接收设备202可配置为通过一种或多种通信方法(诸如射频、局 域网、无线区域网、蜂窝通信网络、蓝牙、互联网等等)从区块链网 络108中的节点、选民设备106、审核实体110、其他处理服务器102 以及其他系统和实体接收数据。在一些实施例中,接收设备202可以 由多个设备组成,诸如用于通过不同网络接收数据的不同接收设备, 诸如用于通过局域网接收数据的第一接收设备和用于通过互联网接收 数据的第二接收设备。接收设备202可以接收电子地传输的数据信号, 其中数据可以在数据信号上叠加或以其他方式在数据信号上编码,并 且通过由接收设备202接收数据信号来解码、解析、读取或以其他方 式获得。在一些情况下,接收设备202可以包括解析模块,用于解析 所接收的数据信号以获得叠加在其上的数据。例如,接收设备202可 以包括解析器程序,所述解析器程序配置为接收数据信号并将所接收 的数据信号转换为用于由处理设备执行的功能的可用输入,以实行本 文描述的方法和系统。
[0041] 接收设备202可配置为接收由选民设备106电子地传输的数据信 号,所述数据信号可以与登记消息、加密的投票或验证消息叠加或以 其他方式用登记消息、加密的投票或验证消息编码。接收设备202还 可用接收由审核实体电子地传输的数据信号,所述数据信号可以在选 民权利的确认、来自选民设备106的消息、加密的密钥部件或与之相 关联的消息上叠加或以其他方式用其编码,所述来自选民设备106的 消息经由审核实体110来核实和转发。接收设备202还可用配置为接 收来自区块链网络108中的节点和/或其他处理服务器102的数据信 号,所述数据信号与用于验证的新块、经验证的块或要包括在新生成 的块中的数据叠加,或以其他方式用其编码。
[0042] 处理服务器102还可以包括通信模块204。通信模块204可配置 为在处理服务器102的模块、引擎、数据库、存储器和其他组件之间 传输数据,以用于执行本文讨论的功能。
通信模块204可以由一种或 多种通信类型组成,并且利用用于计算设备内的通信的各种通信方法。 例如,通信模块204可以由总线、接触针连接器、电线等等组成。在 一些实施例中,通信模块204还可配置为在处理服务器102的内部组 件与处理服务器102的外部组件之间通信,外部组件诸如是外部地连 接的数据库、显示设备、输入设备等等。处理服务器102还可以包括 处理设备。处理设备可配置为执行本文讨论的处理服务器102的功能, 如对于本领域技术人员将显而易见的。在一些实施例中,处理设备可 以包括多个引擎和/或模块,并且/或者由多个引擎和/或模块组成,所 述引擎和/或模块(诸如查询模块214、生成模块
216、加密模块218、 散列模块220等等)专门配置为执行处理设备的一个或多个功能。如 本文使用的,术语“模块”可以是特别编程为接收输入、使用输入执 行一个或多个过程并提供输出的软件或硬件。基于本公开,由各种模 块执行的输入、输出和过程对于本领域技术人员将显而易见。
[0043] 在一些实施例中,处理服务器102可以包括选民数据库206。选 民数据库206可配置为使用合适的数据存储格式和模式来存储多个选 民简档208。选民数据库206可以是关系数据库,所述关系数据库利 用结构化查询语言来存储、识别、修改、更新、访问等等存储在所述 关系数据库中的结构化数据集合。每个选民简档208可以是配置为存 储与选民104相关的数据的结构化数据集合。选民简档208可以包括 (例如)选民识别数据,所述选民识别数据可用于核实选民的身份和 在一个或多个选举中投票的权利,以用于如本文讨论的选民登记过程。 在一些情况下,选民简档208可以配置为存储与一个或多个选举中的 选民登记相关联的数据,诸如提供的选民地址和投票公钥。
[0044] 处理服务器102可以包括查询模块214。查询模块214可配置为 对数据库执行查询以识别信息。查询模块214可以接收一个或多个数 据值或查询字符串,并且可以对指示的数据库(诸如选民数据库206) 基于其执行查询字符串,以识别存储在所述指示的数据库中的信息。 然后,必要时查询模块214可以将识别的信息输出到处理服务器102 的适当的引擎或模块。例如,查询模块214可以对选民数据库206执 行查询,以识别与所接收的选民登记消息有关的选民简档206,所述 所接收的选民登记消息用于核实选民的身份和权利。查询模块214还 可以对区块链数据执行查询以识别包括在其中的数据值,诸如以识别 用于投票的解密和列表的加密的投票或者以识别用于重新组成主私钥 的加密的密钥组件。
[0045] 处理服务器102还可以包括生成模块216。生成模块216可配置 为生成数据以由处理服务器102在执行本文讨论的功能时使用。生成 模块216可以接收作为输入的指令,可以基于指令生成数据,并且可 以将生成的数据输出到处理服务器102的另一模块或引擎。例如,生 成模块216可配置为生成用于区块链中的验证和存储的块头和新块。 生成模块216还可配置为在选举之前生成用于提供给审核实体110的 主私钥的密钥组件以及使用密钥组件生成主私钥。
[0046] 处理服务器102还可以包括加密模块218。加密模块218可配置 为加密数据并生成密码密钥对,所述密码密钥对在执行本文讨论的功 能时由处理服务器102使用。加密模块218可以接收作为输入的指令, 所述指令可以伴有数据(例如用于加密或解密),可以按照指令生成密 钥、加密数据或解密数据,并且可以将结果输出到处理服务器102的 另一模块或引擎。例如,加密模块218可配置为生成非对称密码密钥 对(诸如主密钥对)和对称密码密钥对(诸如验证密钥对)。加密模 块218还可配置为使用公钥加密数据和使用私钥解密数据,诸如如本 文讨论的使用主私钥来解密经加密的投票。
[0047] 处理服务器102还可以包括散列模块220。散列模块220可配置 为对处理服务器102进行散列以执行本文讨论的功能来生成散列值。 散列模块220可以接收要散列的数据,可以将一个或多个散列算法应 用到数据以生成散列值,并且可以将生成的散列值输出到处理服务器 102的另一模块或引擎。例如,散列模块220可配置为如本文讨论的 生成用于公共选举的选举参考和候选人参考。
[0048] 处理服务器102还可以包括传输设备222。传输设备222可配置 为经由一个或多个网络协议通过一个或多个网络传输数据。在一些情 况下,传输设备222可配置为经由一种或多种通信方法、局域网、无 线区域网、蜂窝通信、蓝牙、射频、互联网等等将数据传输到其他处 理服务器102、区块链网络104中的节点、选民设备106、审核实体 110以及其他实体。在一些实施例中,传输设备222可以由多个设备 组成,诸如用于通过不同网络传输数据的不同传输设备,诸如用于通 过局域网传输数据的第一传输设备和用于经由互联网传输数据的第二 传输设备。传输设备222可以电子地传输具有可以由接收计算设备解 析的叠加的数据的数据信号。在一些情况下,传输设备222可以包括 一个或多个模块,用于将数据叠加、编码或以其他方式格式化到适于 传输的数据信号。
[0049] 传输设备222可配置为将数据信号电子地传输到区块链108中的 节点以公布到区块链,所述数据信号被叠加用于包括在新生成的块或 新生成的块中的数据值或以其他方式用其编码。传输设备222还可配 置为将数据信号电子地传输到选民设备106和审核实体110以执行本 文讨论的额外功能,诸如以从审核实体110寻求对选民身份或权利的 核实,所述数据信号被叠加了确认消息和其他数据交换或以其他方式 用其编码。
[0050] 处理服务器102还可以包括存储器224。存储器224可配置为存 储由处理服务器102在执行本文讨论的功能时使用的数据,诸如公钥 和私钥、对称密钥等等。存储器224可配置为使用合适的数据格式化 方法和模式来存储数据,并且可以是任何合适类型的存储器,诸如只 读存储器、随机存取存储器等等。存储器224可以包括(例如)加密 密钥和算法、通信协议和标准、数据格式化标准和协议、用于处理设 备的模块和应用程序的程序代码以及对于本领域技术人员将显而易见 的在执行本文公开的功能时可适于由处理服务器102使用的其他数 据。在一些实施例中,存储器224可以由关系数据库组成,或可以以 其他方式包括关系数据库,所述关系数据库利用结构化查询语言来存 储、识别、修改、更新、访问等等存储在所述关系数据库中的结构化 数据集合。存储器224可配置为存储(例如)与区块链网络108相关 联的区块链或与其关联的其他数据,诸如审核公钥、选民地址、投票 公钥、选举参考、候选人参考、投票登记时间段、投票时间段等等。
[0051] 选举和选民登记过程
[0052] 图3说明在系统100中使用适度限制的区块链来登记新选举和登 记有资格在选举中投票的选民的过程。
[0053] 在步骤302中,处理服务器102可以生成用于登记要举行的新公 共选举所必需的参考值和密钥。这可以包括由处理服务器102的散列 模块220生成用于选举的选举参考,由散列模块220生成用于在选举 中运行的每个候选人的候选人参考,由处理服务器的加密模块218生 成主密钥对,以及由加密模块218生成验证密钥对。在选举期间删除 主私钥的实施例中,步骤302还可以包括由处理服务器的生成模块216 生成多个密钥组件,所述密钥组件可以使用与审核实体110相关联的 审核公钥由加密模块218加密。在步骤304中,处理服务器102的生 成模块216可以生成登记块,所述登记块可以至少包括主公钥、验证 公钥、选举参考、使用验证公钥在密钥和参考上生成的数字签名,以 及由加密的密钥组件及其相应审核公钥组成的对。在步骤306中,可 以验证登记块并将其发布到区块链。在步骤308中,处理服务器102 的查询模块214可以对处理服务器102的存储器224执行查询以删除 主私钥。
[0054] 在步骤310中,选民104可以使用选民设备106下载用于他们希 望登记以投票的选举的登记块。在步骤312中,选民设备106可以生 成选民凭证。选民凭证可以至少包括由投票公钥和投票私钥组成的投 票密钥对、使用投票公钥生成的选民地址以及用于核实选民104的身 份或选举权利所需的任何识别信息。在步骤314中,选民设备106可 以使用合适的通信网络和方法将选民凭证电子地传输到审核实体 110。在步骤316中,审核实体110可以从投票设备106接收投票凭证, 所述投票凭证还可以包括用于选民想要登记的选举的选举参考。
[0055] 在步骤318中,审核实体110可使用合适的方法核实选民的身份 及他们在与选举参考相关联的选举中的投票权利。如果选民104被核 实,则在步骤320中,审核实体110可以将选民登记数据转发到处理 服务器102。在步骤322中,处理服务器102的接收设备202可以接 收选民登记数据,所述选民登记数据可至少包括选举参考、投票地址 以及还可被包括在区块链中以用于审核选民登记的任何选民凭证。在 步骤324中,生成模块216可以生成新块,所述新块包括作为包含在 其中的数据值的选民登记数据,所选民登记数据可被验证并公布到区 块链。
[0056] 用于通过适度限制的区块链在公共选举中投票的过程
[0057] 图4说明使用上文讨论的系统100的适度限制的区块链的用于在 公共选举中投票的投出、处理和计数的过程。
[0058] 在步骤402中,选民104可以使用他们的选民设备106来产生选 民参考,所述选民参考可以由选民104使用来跟踪他们的投票,并确 保在正确的选举中对适当的候选人的所述投票被计数。在一些情况下, 选民104可以手动选择他们的选民参考。在其它情况下,选民设备106 可以生成密码密钥对,并使用所述密码密钥对的公钥来生成选民参考, 所述选民参考可以有降低与其他选民参考冲突的可能性的大的大小 (例如64字节)。在步骤404中,选民104可以在选举中选择候选人, 并且选民设备106可以生成他们的投票。投票可以使用在用于选举的 区块链中公布的主公钥通过加密选民参考和他们选择的候选人的候选 人参考的组合的消息来生成。在一些情况下,在加密之前,任意随机 数也可以包括在消息中。选民设备106可以将加密的投票和用于选举 参考的选举参考电子传输到处理服务器102。
[0059] 在步骤406中,处理服务器102的接收设备202可以接收加密的 投票和选举参考。在步骤408中,处理服务器102的生成模块216可 以生成新块,所述新块包括任何接收的加密投票及其选举参考作为其 中的数据值,并且可以通过所述处理服务器102的传输设备
222将生 成的块电子地传输到区块链网络108中的节点,以验证和公布到区块 链。一旦选民104投出了他们的票,在步骤410处,选民设备106可 以生成核实消息,用于核实他们选民
104已经投票。在一些情况下, 选民设备106可以在生成和提交核实消息之前等待,直到在发布的区 块链中已识别加密的投票。核实消息可以至少包括在添加到区块链的 最新块中包括的选举参考、投票公钥、块参考值,以及使用投票私钥 生成的块参考值的数字签名。在步骤412中,选民设备106可将核实 消息提交到处理服务器102。在步骤414中,处理服务器
102的接收 设备202可以接收核实消息。在步骤416中,处理服务器102的生成 模块216可以生成新块,所述新块包括作为其中的数据值的任何接收 的核实消息,并且可以经由所述处理服务器102的传输设备222将所 生成的块电子地传输到区块链网络108中的节点,以验证和公布(例 如发布)到区块链。
[0060] 在选举期间或一旦选举已结束,在步骤418处,审核实体110可 以识别提供给其的密钥组件(例如在区块链中或通过与处理服务器 102分开的通信接收的),所述密钥组件是使用与相应审核实体110 相关联的审核公钥加密的。在步骤420中,审核实体110可以使用他 们的审核私钥对加密的密钥组件进行解密,并且然后可以使用与处理 服务器102相关联的并且在选举的登记期间发布的验证公钥对密钥组 件重新加密。在一些实施例中,在密钥组件的解密和重新加密中可以 使用额外组件,诸如用于生成和使用共享的秘密的数据。在步骤422 中,重新加密的密钥组件可以被传输到处理服务器102,诸如在直接 通信中或通过包括在公布到区块链的新生成的块中包括的数据值中。
[0061] 在步骤424中,处理服务器102的接收设备202可以接收重新加 密的密钥组件,处理服务器102的加密模块218可以使用验证私钥对 重新加密的密钥组件解密,并且,一旦选举已结束(例如不再接受投 票),处理服务器102的生成模块216就可从中生成主私钥。在步骤 426中,处理服务器102可以洗牌为任何给定选举(例如由选举参考 识别的)接收的所有加密的投票,并且处理服务器102的加密模块218 可以使用用于该选举的主私钥来解密所有加密的投票。在步骤428中, 处理服务器102的生成模块216可以生成一个或多个投票块,所述投 票块包括作为包含在其中的数据值的解密的投票,然后可以将所述解 密的投票分配到区块链网络108中的节点,并将其公布(例如发布) 到区块链。然后,投票可以由希望这样做的任何实体计数,并且每个 选民104都可以能够使用他们的选民参考来核实他们的投票作出了并 且对正确的候选人计数。在一些实施例中,处理服务器102可以列表 对每个候选人的投票,并公布包括包含选举结果的数据值的额外块。
[0062] 用于在公共区块链中处理投票的示例性方法
[0063] 图5说明用于使用密码上唯一的参考值和与适度限制的区块链结 合的密码密钥对来处理用于公共选举的投票的方法500。
[0064] 在步骤502中,可以由处理服务器(例如处理服务器102)的生 成模块(例如生成模块216)生成选举参考和两个或更多个候选人参 考。在步骤504中,可以由处理服务器的加密模块(例如加密模块218) 生成由主私钥和主公钥组成的非对称密码密钥对。在步骤506中,至 少一个登记块可以由处理服务器的生成模块生成以添加到区块链,其 中所述至少一个登记块中的每一个由块头和一个或多个数据值组成, 其中所述至少一个登记块中的所述一个或多个数据值包括选举参考、 两个或更多个候选人参考和主公钥。
[0065] 在步骤508中,每个生成的登记块可以由处理服务器的传输设备 (例如传输设备222)电子地传输到与区块链相关联的一个或多个节 点。在步骤510中,多个投票消息可以由处理服务器的接收设备(例 如接收设备202)接收,其中每个投票消息至少包括投票和选举参考, 其中所述投票至少包括选民参考和一个或多个候选人参考中的一个。 在步骤512中,至少一个投票块可以由处理服务器的生成模块生成以 添加到区块链,其中所述至少一个投票块中的每一个由块头和一个或 多个数据值组成,其中所述至少一个投票块中的所述一个或多个数据 值包括接收的投票中的每一个。在步骤514中,每个生成的投票块可 以由处理服务器的传输设备电子地传输到与区块链相关联的一个或多 个节点。
[0066] 在一个实施例中,每个接收的投票可以被加密,接收多个投票消 息可以进一步包括由处理服务器的加密模块使用主私钥对每个加密的 投票进行解密,并且包含在至少一个投票块中的一个或多个数据值中 的投票可以是被解密的投票。在一些实施例中,方法500还可以包括: 由处理服务器的加密模块生成由验证公钥和验证私钥组成的对称密码 密钥对;以及由处理服务器的加密模块使用验证私钥在选举参考、两 个或更多个候选人参考以及主公钥上生成数字签名,其中所述生成的 数字签名和验证公钥被进一步包括在一个或多个数据值中,所述一个 或多个数据值包括在所述一个或多个登记块中。在进一步的实施例中, 方法500可以甚至进一步包括由处理服务器的加密模块使用验证私钥 在投票上为投票中的每个投票生成投票数字签名,其中生成的投票数 字签名伴随一个或多个投票块中的相应投票。
[0067] 在一个实施例中,每一个投票可进一步包括投票随机数。在一些 实施例中,选举参考可以是通过应用散列算法生成的散列值。在一个 实施例中,候选人参考中的每一个可以是与区块链相关联的并使用相 应的公钥生成的区块链地址。在一些实施例中,方法500还可以包括 由处理服务器的生成模块使用主私钥生成多个密钥组件;在处理服务 器的存储器(例如存储器224)中存储多个密钥组件;在存储多个密 钥组件之后并在电子传输一个或多个登记块之前,从处理服务器删除 主私钥;以及在接收到多个投票消息之后,由处理服务器的加密模块 使用存储在存储器中的多个密钥组件来生成主私钥。在一个实施例中, 选民参考中的每一个可以是密码上唯一的值。在另一实施例中,选民 参考中的每一个可以使用对称密码密钥对的选民公钥来生成。
[0068] 计算机系统架构
[0069] 图6说明计算机系统600,其中本公开的实施例或本公开的部分 可实现为计算机可读代码。例如,图1的处理服务器102可以使用硬 件、软件、固件、其上存储有指令的非暂时性计算机可读介质或其组 合在计算机系统600中实现,并且可以在一个或多个计算机系统或其 他处理系统中实现。硬件、软件或其任何组合可以体现用于实现图3-5 的方法的模块和组件。
[0070] 如果使用可编程逻辑,则这样的逻辑可以在由可执行软件代码配 置为专用计算机或专用设备(例如可编程逻辑阵列、专用集成电路等 等)的商业可用处理平台上执行。本领域技术人员可以理解,公开的 主题的实施例可以用各种计算机系统配置来实践,包括多核多处理器 系统、小型计算机、大型计算机、链接或集群的具有分布式功能的计 算机以及可以嵌入到几乎任何设备中的普及或微型计算机。例如,至 少一个处理器设备和存储器可以用于实现上文描述的实施例。
[0071] 本文讨论的处理器单元或设备可以是单个处理器、多个处理器或 其组合。处理器设备可以具有一个或多个处理器“核心”。本文讨论 的术语“计算机程序介质”、“非暂时性计算机可读介质”和“计算 机可用介质”通常用于指有形介质,诸如可移除存储单元618、可移 除存储单元622和安装在硬盘驱动器612中的硬盘。
[0072] 根据本示例计算机系统600描述本公开的各种实施例。在阅读本 说明书之后,对本领域技术人员将变得显而易见的是,如何使用其他 计算机系统和/或计算机架构来实现本公开。虽然操作可描述为按顺序 的过程,但一些操作实际上可以并行、同时发生和/或在分布式环境中 执行,并且利用存储在本地或远程以供单或多处理器机器访问的程序 代码。另外,在一些实施例中,可以在不背离公开的主题的精神的情 况下重新安排操作顺序。
[0073] 处理器设备604可以是具体配置为执行本文讨论的功能的专用或 通用处理器设备。处理器设备604可以连接到通信基础设施606,诸 如总线、消息队列、网络、多核消息传递方案等等。网络可以是适于 执行本文公开的功能的任何网络,并且可以包括局域网(LAN)、广 域网(WAN)、无线网络(例如WiFi)、移动通信网络、卫星网络、 互联网、光纤、同轴电缆、红外线、射频(RF)或其任何组合。其他 合适的网络类型和配置对于本领域技术人员将显而易见。计算机系统 600还可以包括主存储器608(例如随机存取存储器、只读存储器等 等),并且还可以包括次级存储器610。次级存储器610可以包括硬 盘驱动器612和可移除存储驱动器614,诸如软盘驱动器、磁带驱动 器、光盘驱动器、闪存等等。
[0074] 可移除存储驱动器614可以以众所周知的方式从可移除存储单元 618读取和/或写入到可移除存储单元618。可移除存储单元618可包 括可由可移除存储驱动器614读取和写入的可移除存储介质。例如, 如果可移除存储驱动器614是软盘驱动器或通用串行总线端口,则可 移除存储单元618可以分别是软盘驱动器或便携式闪存驱动器。在一 个实施例中,可移除存储单元618可以是非暂时性计算机可读记录介 质。
[0075] 在一些实施例中,次级存储器610可包括用于允许计算机程序或 其他指令加载到计算机系统600中的替代装置,例如可移除存储单元 622和接口620。这样的装置的示例可以包括程序盒和盒接口(例如如 在视频游戏系统中发现的)、可移除存储器芯片(例如EEPROM、 PROM等等)和关联插座,以及其他可移除存储单元622和接口620, 如对于本领域技术人员将显而易见的。
[0076] 存储在计算机系统600中的数据(例如在主存储器608和/或次级 存储器610中)可以存储在任何类型的合适的计算机可读介质上,诸 如光存储器(例如光盘、数字通用光盘、蓝光盘等等)或磁带存储器 (例如硬盘驱动器)。数据可配置为以任何类型的合适数据库配置, 诸如关系数据库、结构化查询语言(SQL)数据库、分布式数据库、 对象数据库等等。合适的配置和存储类型对于本领域技术人员将显而 易见。
[0077] 计算机系统600还可以包括通信接口624。通信接口624可配置 为允许在计算机系统600和外部设备之间转移软件和数据。示例性通 信接口624可以包括调制解调器、网络接口(例如以太网卡)、通信 端口、PCMCIA槽和卡等等。经由通信接口624转移的软件和数据可 以是信号的形式,所述信号可以是电子的、电磁的、光学的或对本领 域技术人员将显而易见的其他信号。信号可以经由通信路径626传播, 所述通信路径626可配置为传送信号,并且可以使用电线、电缆、光 纤、电话线、蜂窝电话链路、射频链路等等来实现。
[0078] 计算机系统600还可以包括显示接口602。显示接口602可配置 为允许数据在计算机系统600和外部显示器630之间转移。示例性显 示接口602可以包括高清晰度多媒体接口(HDMI)、数字视频接口 (DVI)、视频图形阵列(VGA)等等。显示器630可以是用于显示 经由计算机系统600的显示接口602传输的数据的任何合适类型的显 示器,包括阴极射线管(CRT)显示器、液晶显示器(LCD)、发光 二极管(LED)显示器、电容式触摸显示器、薄膜晶体管(TFT)显 示器等等。
[0079] 计算机程序介质和计算机可用介质可以指存储器(诸如主存储器 608和次级存储器610),所述存储器可以是存储器半导体(例如DRAM 等等)。这些计算机程序产品可以是用于向计算机系统600提供软件 的装置。计算机程序(例如计算机控制逻辑)可以存储在主存储器608 和/或次级存储器610中。计算机程序还可以通过通信接口624接收。 当执行时这样的计算机程序可使计算机系统600能够实现本文讨论的 本方法。特别地,计算机程序在执行时可以使处理器设备604能够实 现图3-5说明的方法,如本文讨论的。因此,这样的计算机程序可以 表示计算机系统600的控制器。在使用软件实现本公开的情况下,软 件可存储在计算机程序产品中,并可使用可移除存储驱动器614、接 口620和硬盘驱动器612或通信接口624加载到计算机系统600中。
[0080] 处理器设备604可包括配置为执行计算机系统600的功能的一个 或多个模块或引擎。每个模块或引擎可以使用硬件实现,并且在一些 情况下还可以利用软件,诸如与存储在主存储器608或次级存储器610 中的程序代码和/或程序相对应的软件。在这样的情况下,程序代码可 以在由计算机系统600的硬件执行之前由处理器设备604(例如由编 译模块或引擎)编译。例如,程序代码可以是以编程语言编写的源代 码,所述编程语言翻译成较低级语言(诸如汇编语言或机器代码), 用以由处理器设备604和/或计算机系统600的任何额外硬件组件执 行。编译的过程可以包括使用词法分析、预处理、解析、语义分析、 语法制导翻译、代码生成、代码优化以及可以适于将程序代码翻译成 适于控制计算机系统600以执行本文公开的功能的较低级语言的任何 其他技术。对于本领域技术人员将显而易见的是,这样的过程导致计 算机系统600是唯一地编程以执行上文讨论的功能的专门配置的计算 机系统600。
[0081] 除其他特征外,与本公开一致的技术提供用于在公共区块链中处 理投票的系统和方法。虽然上文已描述公开的系统和方法的各种示例 性实施例,但是应当理解,它们只是出于示例的目的而非限制的目的 提供的。它并非详尽无遗,也不限制对公开的精确形式的披露。在不 偏离广度或范围的情况下,根据上述教导修改和变化是可能的,或者 可以从公开的实践获得所述修改和变化。