STROBE-Voting:双投单收选票编码机制解析
立即解锁
发布时间: 2025-08-31 01:59:15 阅读量: 14 订阅数: 16 AIGC 


电子投票安全与验证
### STROBE-Voting:双投单收选票编码机制解析
在选举投票系统中,选票的编码、验证以及安全性是至关重要的要素。STROBE-Voting 作为一种独特的投票方案,采用了“Send Two, Receive One”(双投单收)的选票编码方式,为选举的公正性和可验证性提供了新的解决方案。
#### 选票的可验证性与验证方法
独立的选举验证者能够确认公布记录中任何选票的合规性。对于细心的选民来说,只需检查退回选票(通过其选票哈希码识别)是否列出了正确的短代码,以及孪生选票的哈希码是否作为未密封选票列出且短代码匹配。为方便选民,可公布每张空白孪生选票的图像,选民能将其与手中的实体选票轻松比对,确认短代码是否一致。这种方式实现了责任的清晰划分,选民无需进行复杂的数学运算,仅通过比较选票和代码就能验证自己的选择是否被正确记录。此外,选票正确性的验证还可与选举结果的验证相结合,任何感兴趣的各方(包括选民)都可通过编写和/或执行独立的选举验证应用程序来完成。
#### 未投票情况的处理
为应对部分选民在某些竞选项目中选择不投票的情况,每个竞选项目都设有空白或“未投票”选项及相关的短选择代码。该“未投票”选项与其他选择一样处理,其短选择代码由所有普通选项的零加密向量和与“未投票”选项关联的一加密向量推导得出。若选民未选择任何竞选选项,该竞选项目的“未投票”短选择代码将作为退回选票相关信息的一部分公布,这样可防止公布的信息泄露某张选票具体参与了哪些竞选项目的投票。
在一些选举中,选民可在竞选项目中选择多个选项。此时,每个所选选项的短选择代码都会公布,同时会为该竞选项目提供多个“未投票”选择代码,数量足以满足选民在该竞选项目中可能做出的选择数量。例如,在“最多选三个”的竞选项目中,会准备三个“未投票”选择代码并显示在选票上。若选民做出三个选择,将公布三个相应的选择代码;若只做出两个选择,则公布两个相应的选择代码和三个“未投票”选择代码中的一个;若只做出一个选择,则公布所选的短代码和两个“未投票”选择代码;若未做出任何选择,则公布所有三个“未投票”选择代码。
#### 详细示例说明
假设通过阈值密钥分配组合预先确定的一组选举受托人独立生成的 ElGamal 公钥,生成了一个单一的公钥,用 E 表示使用公钥进行的加密。假设有一场选举,只有一个“单选”竞选项目,候选人有 Alice、Bob 和 Carol。为应对选民可能不选择任何候选人的情况,添加了第四个伪候选人“未投票”,并将其与实际候选人同等对待。选票投票加密的结构如下表所示:
| 投票候选人 | 投票(加密向量) | 示例选择代码 |
| --- | --- | --- |
| Alice | ⟨E(1), E(0), E(0), E(0)⟩ | Q4 |
| Bob | ⟨E(0), E(1), E(0), E(0)⟩ | D6 |
| Carol | ⟨E(0), E(0), E(1), E(0)⟩ | L7 |
| 未投票 | ⟨E(0), E(0), E(0), E(1)⟩ | R9 |
选择代码是通过对每个关联的加密向量进行 SHA - 256 哈希运算并截取一个字节生成的。每个投票的短选择代码会印在选民用于选择候选人的椭圆旁边。除了在每张打印选票上包含一个长选票代码外,在每个椭圆旁边添加短选择代码是实体选票上唯一可观察到的变化。
相关的实体选票可能如下所示:
```plaintext
Alice ◦Q4
Bob ◦D6
Carol ◦L7
none R9
Ballot code: XC3K0 - A21BM - 8WP8Q - MWQ6E - UYW9Y - ZPBL5 - 93LRE - M3J62 - MJ1W7 - 87DYF
```
与每张选票关联的加密信息会作为选举的一部分公开,但会根据短选择代码重新排序(短选择代码保证是唯一的),以避免泄露哪个加密对应哪个候选人。一张选票的公开信息如下:
| 投票(加密向量) | 示例选择代码 |
| --- | --- |
| ⟨E(0), E(1), E(0), E(0)⟩ | D6 |
| ⟨E(0), E(0), E(1), E(0)⟩ | L7 |
| ⟨E(1), E(0), E(0), E(0)⟩ | Q4 |
| ⟨E(0), E(0), E(0), E(1)⟩ | R9 |
| Ballot code: XC3K0 - A21BM - 8WP8Q - MWQ6E - UYW9Y - ZPBL5 - 93LRE - M3J62 - MJ1W7 - 87DYF |
每张选票的公开信息还包括以下非交互式零知识证明(使用 Fiat - Shamir 启发式方法):
- 每个加密都是零或一的加密(应用 Cramer - Damgård - Schoenmakers 析取技术到 Chaum - Pedersen 的零加密和一加密证明)。
- 每行都恰好有一个一的加密(Chaum - Pedersen 证明每行加密的乘积是一的加密)。
- 每列都恰好有一个一的加密(Chaum - Pedersen 证明每列加密的乘积是一的加密)。
该竞选项目的所有加密信息会按上述排序方式使用 SHA - 256 进行哈希运算,生成打印在选票上的长选票代码。在有多场竞选项目的选票中,每个竞选项目的加密信息会按此方式一起哈希,同时保留竞选项目的顺序,形成一个单一的选票代码。长选票代码用于锁定选票上的所有加密信息,防止恶意的选举管理员替换不同的加密信息,因为更改加密信息会导致哈希值与选票上显示的长选票代码不匹配。
选举结束时,所有选定的加密选票会进行同态组合,形成加密计票结果,然后进行可验证解密,得出经过验证的计票结果。虽然上述非交互式零知识证明表明每张选票(以及每张选票上投出的每个加密选票)都是合规的,但无法确保短选择代码与每张选票上的正确候选人匹配,这一功能由孪生选票在投票结束后完全解密来实现。
#### 单选票变体方案
由于成本或其他因素,
0
0
复制全文
相关推荐









