Scratch, Click & Vote:实现互联网端到端投票
1. 现有互联网投票方案的问题
目前学术界设计的互联网投票方案未能满足所有安全需求。最突出的问题是,几乎所有方案都忽略了电子投票设备可能成为潜在对手这一事实。在远程投票系统中,最具潜在危险的是选民端的设备,选民的机器可能会被恶意软件感染,从而泄露选民的偏好,甚至更改选民投出的加密选票。
2. SC&V 方案的设计目标
设计 SC&V 方案的主要目标是获得一种可用于互联网投票的端到端(E2E)方案。与以往的工作不同,该方案要求满足所有关键要求,具体如下:
-
人类可验证
:选民获得的收据是人类可读的,中等文化水平的选民也能轻松检查。
-
选民友好
:选民无需执行任何复杂(普通选民难以理解)的操作,如重新加密、获取盲签名、执行不经意传输协议等。
-
抗恶意软件
:选举的完整性和选票的隐私不依赖于对选民使用设备的信任假设。
-
高效
:计算开销和通信量都较低。
3. SC&V 方案的设计版本
SC&V 方案采用分层设计,结合了多种技术,其设计版本如下:
-
版本 1
:从简单的互联网版 ThreeBallot 开始,选民使用运行在其 PC 上的应用程序填写投票卡,然后将填写好的选票发送到投票服务器(Proxy)。
-
版本 2
:为了平衡各列中“×”标记的数量,以抵御类似 Strauss 的攻击,增加了一列和一个“×”标记,形成“FourBallot”。
-
版本 3
:由于选民的 PC 确切知道选民的选择,引入了由 Proxy 准备的编码卡。编码卡对 PC 隐藏了选民选择的含义(每个候选人只被“点击”一次),并且降低了选民 PC 修改选民选择的可能性。
-
版本 4
:由于 Proxy 仍然知道选民的选择,引入了另一个服务器——选举管理机构(Election Authority,EA),负责准备选票。这样,Proxy 不知道选民的选择,而 EA 不知道是谁投了票。EA 以类似于 Punchscan 方案的方式准备投票卡,结合 ThreeBallot 机制,确保了投票过程的可验证性。在 Proxy 和 EA 不勾结的假设下,SC&V 提供了可验证的互联网投票,具有无条件的完整性和选民的完全隐私。
4. 投票所需物品及流程概述
4.1 选票和编码卡
投票过程结合了基于纸质的协议。为了投票,选民需要获得额外的信息,这些信息对用于投票的计算机是隐藏的。这些信息可以在选民亲自登记时获得、邮寄到选民的家庭地址,或者通过独立的电子链接发送。对于小规模选举或重要性有限的选举,可以使用带有验证码(CAPTCHA)的电子邮件发送信息,这些信息人类选民可以读取,但选民的计算机难以读取。投票通过电子网络进行。
有一个选举管理机构(EA)和一个代理服务器(Proxy)。EA 准备选票,Proxy 准备编码卡。还有一个审计员(Auditor)负责选举前和选举后的审计。
从选民 Alice 的角度来看,为了投票,她需要一张选票和一张编码卡:
-
选票
:由 EA 准备,包含以下被刮刮层覆盖的值:
- 候选人名单,通过某个随机排列 π 进行排列,后续表示为 π = π′ ◦ π′′,其中 π′ 和 π′′ 是随机的。
- 选票序列号 S l。
- 四个确认令牌:A、B、C、D,每列一个,其准备方式将在后面描述。
-
编码卡
:由 Proxy 准备,包含:
- 四列,每行恰好有一个标记 Y 表示“是”,3 个标记 n 表示“否”,每行 Y 的位置是随机的,且与其他选择相互独立。
- 编码卡序列号 S r。
4.2 选民视角的投票流程
- Alice 获得选票和编码卡后,将它们并排摆放,得到一个完整的选票。需要注意的是,Alice 只获得一张选票,但可以拥有任意数量的编码卡。此外,系统中有多个 Proxy,Alice 可以轻松找到她信任的 Proxy 并获取编码卡。
- Alice 访问由 Proxy 运营的选举网站,使用适当的认证方法(如用户名/密码对、电子签名等)进行身份验证。
-
她按照以下方式在屏幕上点击:
- 点击她投票的候选人所在行中 Y 的位置。
- 在其余每行中,点击一个 n 的位置。
- Proxy 对 Alice 的点击进行承诺,并将承诺传递给 EA。然后 Alice 输入编码卡序列号 S r,Proxy 检查 S r 后,将选民的选择转换为内部形式的选票矩阵。对于选民选择的候选人所在行,Proxy 放置三个“×”标记,而在对应不同候选人的每行中,只有 2 个“×”标记。
- 选票矩阵的列(称为选票列)被单独处理,类似于 ThreeBallot 方案。接下来,Proxy 为每个选票列获取 EA 的盲签名(BS),以防止 EA 在此时更改选票内容。
-
选民输入选票序列号 S l,Proxy 解除签名的盲化,并将带有 S l 的选票列发送给 EA。同时,选民选择一列作为收据,收据包含:
- T ∈ {A, B, C, D} 确认令牌的值。
- y 选票列。
- t,满足 T = signEA(t, S l),t 称为 T 的预令牌。
- 选票列被分离并像 Punchscan 方案一样公布,然后以类似的方式解密,每个候选人的选票数按照 ThreeBallot 方案进行统计。
4.3 投票流程的 mermaid 流程图
graph LR
A[选民获得选票和编码卡] --> B[访问选举网站并认证]
B --> C[按规则点击屏幕]
C --> D[Proxy 承诺点击并传递给 EA]
D --> E[选民输入编码卡序列号 Sr]
E --> F[Proxy 转换为选票矩阵]
F --> G[Proxy 获取盲签名]
G --> H[选民输入选票序列号 Sl]
H --> I[Proxy 解除盲签名并发送选票列给 EA]
I --> J[选民选择收据]
5. 选票和审计表
5.1 审计表 P
审计表 P 有 2 列,称为 P1 和 P2,有 2n 行(n 大于或等于最大选民数量)。P1 列记录选票序列号,P2 列包含对表 R 行的 4 个指针的承诺。例如,如果序列号 S 在 P1 中,那么在同一行的 P2 列中包含对数字 iA(S)、iB(S)、iC(S)、iD(S) 的承诺,其中 iX(S) 是表 R 中包含序列号为 S 的选票的 X 列条目的行号。
| P1 | P2 |
|---|---|
| … | … |
| S l(i) | BC(iA), BC(iB), BC(iC), BC(iD) |
| … | … |
5.2 审计表 R
审计表 R 由三部分组成:起始部分、中间部分和最终部分,每部分由一组连续的列组成。R 有 8n 行,对应 2n 张选票和 4·2n 个选票列。构建表 R 使用了两种排列:
- ρ1、ρ2:R 行的排列(即对 {1, …, 8n} 的排列)。
- 对于 i = 1, …, 8n,对 {1, …, m} 的排列 π′i、π′′i(m 是候选人数,即每个 8n 个选票列有 2 个排列),这些排列需要应用于选票列。
每行 i 在起始部分对应某个选票的一个选票列,对于每个 i,关于 W(i) 的数据放置在:
- 起始部分的第 i 行。
- 中间部分的第 ρ1(i) 行。
- 最终部分的第 ρ2(ρ1(i)) 行。
起始部分第 i 行包含以下条目:
- i:行索引(i ∈ [1, 8n])。
- πi:对包含 W(i) 的选票中使用的候选人排列 πi 的位承诺。
- H(t(i)):确认预令牌 t(i) 的哈希值,满足 T(i) = signEA(t(i), S l(i)),其中 T(i) 是与 W(i) 一起使用的确认令牌,S l(i) 是包含 W(i) 的选票的序列号。
- t(i) = BC(T(i), S i):对包含 W(i) 的选票的序列号 S l(i) 和确认令牌 T(i) 的位承诺。
- y(i) = [y0(i), y1(i), …, ym - 1(i)]:一个向量,在 W(i) 中包含“×”标记的位置 l 上持有“×”标记。在创建表 R 时,向量 y(i) 初始为空,投票后会被填充。
- ρ1(i):对值 ρ1(i) 的承诺。
中间部分第 i 行包含以下条目:
- π′j:对候选人排列 π′j 的承诺,其中 π j = π′j ◦ π′′j。
- y(j) ≪ (π′j)−1:向量 y(j) 经过 (π′j)−1 排列后的结果。
- π′′j:对排列 π′′j 的承诺。
- ρ2(i):对 ρ2(i) 的承诺。
最终部分第 i 行包含向量 v,它是 y(k) 先经过 (π′k)−1 排列,再经过 (π′′k)−1 排列后的结果(即按照候选人的标准顺序列出)。
5.3 审计表 R 的组织表格
| 部分 | 内容 |
|---|---|
| 起始部分(W(i)) | i, πi, H(t(i)), t(i), y(i), ρ1(i) |
| 中间部分(W(j)) | π′j, y(j) ≪ (π′j)−1, π′′j, ρ2(i) |
| 最终部分(W(k)) | v |
6. 选票和审计表的准备
6.1 准备步骤
- 确定选举参数 :EA 确定候选人数量 m、候选人的官方列表(及其官方顺序)以及选民总数的上限 n。
-
选择序列号和排列
:EA 随机选择 2n 个序列号,对于每个序列号 S:
- 随机选择一个随机排列 π。
- 随机选择确认预令牌 tA(S)、tB(S)、tC(S)、tD(S),并计算确认令牌 TA(S)、TB(S)、TC(S)、TD(S),计算公式为 TX(S) := signEA(S, tX(S)),其中 X = A, B, C, D。
- 创建审计表 P :EA 随机选择一个 1 到 8n 的排列 σ,将 σ(4j - 3) 到 σ(4j) 分配给第 j 个序列号 S l(j),这些数字作为指向审计表 R 行的指针,称为 iA(S l(j))、iB(S l(j))、iC(S l(j))、iD(S l(j))。然后为每个序列号 S l(j) 创建对这些值的承诺,并插入到包含 S l(j) 的行中。
- 准备审计表 R :EA 随机选择 R 表行的排列 ρ1 和 ρ2。对于第 j 个序列号 S l(j),其排列 π 分配给 R 起始部分的行 iA(S l(j))、iB(S l(j))、iC(S l(j))、iD(S l(j))。对于 R 的每行 i,EA 随机选择排列 π′i 和 π′′i,使得 πi = π′i ◦ π′′i。
- 填充 R 表条目 :根据前面的描述填充 R 的条目。
最后,选票被打印,其内容(候选人名单的排列、确认令牌和序列号)被隐藏在刮刮层下。
6.2 准备流程的 mermaid 流程图
graph LR
A[确定选举参数] --> B[选择序列号和排列]
B --> C[创建审计表 P]
C --> D[准备审计表 R]
D --> E[填充 R 表条目]
E --> F[打印选票并隐藏内容]
7. 选举前审计
为了检查审计表是否诚实地创建,执行以下步骤:
1. 审计员随机选择一组 n 张选票组成审计集 AS,其余选票组成选举集 ES,不进行检查。
2. 揭示 AS 中所有选票的内容,特别是它们的序列号,根据序列号可以确定 P 表中对应这些选票的行。
3. EA 打开表 P 中对应 AS 选票的所有位承诺,以及表 R 中对应 AS 选票列的所有位承诺。
4. 审计员检查选票和审计表中的条目是否正确创建。
5. 丢弃审计集 AS 中的所有选票,使用选举集 ES 中序列号的选票进行选举。在实践中,审计员可以只控制 AS 中有限数量的选票,并根据需要检查更多选票。
8. 编码卡的准备
编码卡以电子形式准备,并由 Proxy 在网页上作为承诺发布,其正确性通过以下标准方式检查:
1. Proxy 创建审计表 X,在其中对编码卡序列号 S r 和每张编码卡上 Y 标记的位置进行承诺。
2. 审计员随机选择一些编码卡组成审计集(这些编码卡不用于选举)。
3. Proxy 打开审计集中卡片的所有位承诺。
4. 审计员检查揭示的编码卡是否正确创建。
9. 选举流程
9.1 投票步骤
- 获取选票 :选民通过访问某些当局、由特殊快递在居住地送达、通过认证邮件服务等方式获得选票。同时,验证选民的身份,并将选票交到选民手中。选票分发的组织方式使得没有人知道谁获得了哪张选票,由于选票信息被刮刮层覆盖,这很容易实现。
- 获取编码卡 :选民从一个或多个 Proxy 获取(仍未使用的)编码卡,为方便起见,编码卡可以打印出来。
- 刮开选票 :选民刮开选票上的刮刮层。
- 登录网站 :选民登录由 Proxy 运营的选举网站并进行身份验证。
- 验证身份 :Proxy 验证选民的凭据。
- 选择编码卡 :选民选择一张编码卡,并将其与选票并排摆放。
- 点击选择 :选民在 PC 屏幕上点击与她的选择对应的单选按钮,即根据选票使用的排列和编码卡上 n 和 Y 标记的对齐方式进行点击。
- Proxy 承诺 :Proxy 对选民的点击进行承诺,将承诺发送给 EA 和选民(以便选民可以打印)。
- 输入编码卡序列号 :选民输入使用的编码卡序列号 S r。
- 转换选票列 :Proxy 将选民的选择转换为选票列。
- 获取盲签名 :Proxy 为每个选票列从 EA 获取盲签名,这些签名随后由 Proxy 存储用于选举后审计。
- 输入选票序列号 :选民输入选票序列号 S l。
- 传递信息 :Proxy 将 S l 和选票列传递给 EA。
- 录入信息 :EA 将获得的选票列录入表 R 起始部分的适当行(但在选举结束时发布),EA 发布从 Proxy 获得的选票列的承诺。
- 选择收据 :选民选择一张收据(四列之一)。
9.2 计票
当投票时间结束后,EA 公布选民的选择,将其插入表 R 起始部分的向量 y(i) 中。然后计算 R 中间部分的条目:y(j) ≪ (π′j)−1,以及最终部分的条目:v = (y(k) ≪ (π′k)−1) ≪ (π′′k)−1。
综上所述,SC&V 方案通过一系列的设计和流程,旨在提供一种安全、可验证、高效且选民友好的互联网投票解决方案。通过分层设计、引入编码卡、选举管理机构和审计机制等,有效地解决了现有互联网投票方案存在的问题。
10. 选举流程总结与优势分析
10.1 选举流程总结表格
| 阶段 | 步骤 | 具体内容 |
|---|---|---|
| 准备阶段 | 确定选举参数 | EA 确定候选人数量、官方列表及选民总数上限 |
| 选择序列号和排列 | EA 随机选序列号、排列及确认预令牌和令牌 | |
| 创建审计表 P | EA 选排列分配指针并创建承诺插入 P 表 | |
| 准备审计表 R | EA 选排列分配给 R 表行并确定 π′i 和 π′′i | |
| 填充 R 表条目 | 根据规则填充 R 表条目 | |
| 打印选票并隐藏内容 | 选票内容被刮刮层覆盖 | |
| 准备编码卡 | Proxy 创建审计表 X 并发布承诺 | |
| 选举前审计 | 选择审计集 | 审计员选 n 张选票组成审计集 AS |
| 揭示选票内容 | 揭示 AS 选票内容确定 P 表对应行 | |
| 打开承诺 | EA 打开 P、R 表对应位承诺 | |
| 检查条目 | 审计员检查选票和审计表条目 | |
| 丢弃审计集选票 | 丢弃 AS 选票,用 ES 选票选举 | |
| 投票阶段 | 获取选票 | 选民通过多种方式获选票并验证身份 |
| 获取编码卡 | 选民从 Proxy 获编码卡 | |
| 刮开选票 | 选民刮开选票刮刮层 | |
| 登录网站 | 选民登录选举网站并认证 | |
| 验证身份 | Proxy 验证选民凭据 | |
| 选择编码卡 | 选民选编码卡与选票并排 | |
| 点击选择 | 选民按规则点击屏幕 | |
| Proxy 承诺 | Proxy 对点击承诺并传 EA 和选民 | |
| 输入编码卡序列号 | 选民输入 Sr | |
| 转换选票列 | Proxy 转换选民选择为选票列 | |
| 获取盲签名 | Proxy 为选票列获 EA 盲签名 | |
| 输入选票序列号 | 选民输入 Sl | |
| 传递信息 | Proxy 将 Sl 和选票列传 EA | |
| 录入信息 | EA 录入选票列并发布承诺 | |
| 选择收据 | 选民选收据 | |
| 计票阶段 | 公布选择 | EA 公布选民选择插入 y(i) |
| 计算中间和最终部分条目 | 计算 y(j) ≪ (π′j)−1 和 v = (y(k) ≪ (π′k)−1) ≪ (π′′k)−1 |
10.2 优势分析
-
安全性高
:
- 通过引入选举管理机构(EA)和代理服务器(Proxy)相互制衡,EA 准备选票,Proxy 准备编码卡,且两者不勾结的假设下,保证了选民选择的隐私和选举的完整性。
- 采用盲签名技术,防止 EA 在投票过程中更改选票内容。
- 选举前的审计机制,随机选择选票和编码卡进行检查,确保审计表和选票的正确创建,避免潜在的欺诈行为。
-
选民友好
:
- 选民无需执行复杂的操作,如重新加密、获取盲签名、执行不经意传输协议等,只需简单地点击屏幕和输入序列号。
- 选民获得的收据是人类可读的,中等文化水平的选民也能轻松检查,增强了选民对投票过程的信任。
-
可验证性强
:
- 选票和审计表的设计使得整个投票过程可以被验证。审计表 P 和 R 记录了选票和选票列的相关信息,通过公开承诺和后续的验证步骤,选民和审计员可以检查投票过程是否公正。
- 投票结果的统计方式类似于 ThreeBallot 方案,保证了计票的准确性和可验证性。
-
高效性
:
- 计算开销和通信量都较低,不会给选民和服务器带来过大的负担。分层设计和合理的流程安排,使得投票过程能够快速、顺畅地进行。
11. 潜在风险及应对措施
11.1 潜在风险
- 恶意软件攻击 :选民的机器可能会被恶意软件感染,从而泄露选民的偏好或更改选民投出的加密选票。
- 服务器勾结 :虽然假设 Proxy 和 EA 不勾结,但仍存在两者勾结篡改投票结果的可能性。
- 审计不充分 :选举前审计可能无法覆盖所有选票和编码卡,存在漏检的风险。
11.2 应对措施
- 抗恶意软件设计 :SC&V 方案本身的设计使得选举的完整性和选票的隐私不依赖于对选民使用设备的信任。编码卡的引入对 PC 隐藏了选民选择的含义,降低了恶意软件篡改选民选择的可能性。
- 多服务器制衡 :引入多个 Proxy 和 EA,增加勾结的难度。同时,审计员的存在可以对服务器的行为进行监督。
- 加强审计 :在实践中,审计员可以根据需要增加对选票和编码卡的检查数量,确保审计的充分性。此外,可以引入第三方审计机构,提高审计的可信度。
12. 应用场景与展望
12.1 应用场景
- 小规模选举 :对于小规模选举或重要性有限的选举,如社区选举、社团选举等,可以使用带有验证码的电子邮件发送信息,实现低成本、高效的投票。
- 远程投票 :在一些情况下,选民可能无法亲自到投票站投票,如海外选民、行动不便的选民等,SC&V 方案可以提供安全、便捷的远程投票解决方案。
12.2 展望
- 技术改进 :随着技术的不断发展,可以进一步优化 SC&V 方案,如采用更先进的加密算法和身份验证技术,提高投票的安全性和效率。
- 推广应用 :将 SC&V 方案推广到更多的选举场景中,提高选举的公正性和透明度,增强选民对选举的参与度和信任度。
13. 总结
SC&V 方案为互联网投票提供了一种创新的解决方案,通过分层设计、引入编码卡、选举管理机构和审计机制等,有效地解决了现有互联网投票方案存在的安全、可验证性和选民友好性等问题。虽然存在一些潜在风险,但通过相应的应对措施可以得到有效控制。随着技术的发展和应用场景的拓展,SC&V 方案有望在未来的选举中发挥重要作用,推动选举的数字化和现代化进程。
13.1 整体流程 mermaid 流程图
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;
A([开始]):::startend --> B(准备阶段):::process
B --> B1(确定选举参数):::process
B --> B2(选择序列号和排列):::process
B --> B3(创建审计表 P):::process
B --> B4(准备审计表 R):::process
B --> B5(填充 R 表条目):::process
B --> B6(打印选票并隐藏内容):::process
B --> B7(准备编码卡):::process
B6 --> C(选举前审计):::process
B7 --> C
C --> C1(选择审计集):::process
C --> C2(揭示选票内容):::process
C --> C3(打开承诺):::process
C --> C4(检查条目):::process
C --> C5(丢弃审计集选票):::process
C5 --> D(投票阶段):::process
D --> D1(获取选票):::process
D --> D2(获取编码卡):::process
D --> D3(刮开选票):::process
D --> D4(登录网站):::process
D --> D5(验证身份):::process
D --> D6(选择编码卡):::process
D --> D7(点击选择):::process
D --> D8(Proxy 承诺):::process
D --> D9(输入编码卡序列号):::process
D --> D10(转换选票列):::process
D --> D11(获取盲签名):::process
D --> D12(输入选票序列号):::process
D --> D13(传递信息):::process
D --> D14(录入信息):::process
D --> D15(选择收据):::process
D15 --> E(计票阶段):::process
E --> E1(公布选择):::process
E --> E2(计算中间和最终部分条目):::process
E2 --> F([结束]):::startend
通过以上的分析和总结,我们可以看到 SC&V 方案在互联网投票领域具有很大的潜力和优势,为实现安全、可验证、高效且选民友好的互联网投票提供了一个可行的途径。
超级会员免费看

被折叠的 条评论
为什么被折叠?



