电子投票协议隐私特性验证与远程投票安全提升
电子投票协议的建模与分析
在电子投票领域,为了确保投票的隐私性、无收据性和抗胁迫性等重要特性,研究人员定义了一个基于应用π演算的框架来对加密投票协议进行建模。
投票者与及时性成员进程
以下是投票者进程
processV
的代码:
processV =
(* parameters : skvCh , v *)
(* her private key *)
in ( skvCh , skv ) .
(* public keys
of the
administrator
*)
in ( pkaCh1 , pubka ) .
ν
b l i n d e r .
ν
r .
ν
td .
let
committedvote = tdcommit ( v , r , td )
in
let
bl i ndedcom m i ttedvote=b l i n d ( committedvote , b l i n d e r )
in
out ( ch1 , ( pk ( skv ) , si gn ( blindedcommittedvote , skv ) ) ) .
in ( ch2 ,m2) .
let
r e s u l t = checksi gn (m2, pubka ) in
if
r e s u l t = bl i ndedcom m i ttedvote then
let
signedcommittedvote=unbl i nd (m2, b l i n d e r )
in
synch
1 .
out ( ch3 , ( committedvote , signedcommittedvote )) .
out (chT , ( v , r , committedvote ))
这个进程主要完成了投票者的一系列操作,包括接收私钥和管理员公钥,生成承诺投票、盲化承诺投票,签名并发送,最后接收签名结果并进行验证等。
及时性成员进程
processT
如下:
processT =
synch
1 .
(* reception
du
commitment
*)
in (chT , ( vt , rt , xt )) .
synch
2 .
if open ( xt , r t ) = vt
then
out ( board ,
vt )
及时性成员通过
chT
接收消息,验证承诺是否能正确打开得到投票值,若验证通过则将投票值发布到公告板上。
协议分析
由于该协议所需的等式理论超出了 ProVerif 的范围,无法进行自动化验证,因此分析只能手动进行。这里主要讨论无收据性,因为无收据性意味着投票隐私性。
为了证明无收据性,需要构建一个进程
V ′
来向胁迫者伪造所有秘密。以下是
V ′
的代码:
processV =
(* her private key *)
in ( skvCh , skv ) .
out ( chc , skv ) .
(* public keys
of the
administrator
*)
in ( pkaCh1 , pubka ) .
out ( chc , pubka ) .
ν
b l i n d e r .
ν
r .
ν
td .
out ( chc , b l i n d e r ) .
out ( chc , f (a , r , td , c )) .
out ( chc , td ) .
let
committedvote = tdcommit (a , r , td )
in
let
bl i ndedcom m i ttedvote=b l i n d ( committedvote , b l i n d e r )
in
out ( ch1 , ( pk ( skv ) , si gn ( blindedcommittedvote , skv ) ) ) .
out ( chc , ( pk ( skv ) , si gn ( blindedcommittedvote , skv ) ) ) .
in ( ch2 ,m2) .
let
r e s u l t = checksi gn (m2, pubka ) in
if
r e s u l t = bl i ndedcom m i ttedvote then
let
signedcommittedvote=unbl i nd (m2, b l i n d e r )
in
synch
1 .
out ( ch3 , ( committedvote , signedcommittedvote )) .
out ( chc , ( committedvote , signedcommittedvote )) .
out (chT , ( a , r , committedvote )) .
out ( chc , ( c , f (a , r , td , c ) , committedvote ))
V ′
的核心思想是投票为
a
,但向胁迫者输出秘密时,提供伪造的秘密以假装投了
c
。要证明无收据性,需要证明以下两个等价关系:
-
V ′\out(chc,·) ≈VA{a/v}
-
S[VA{c/v}chc | VB{a/v}] ≈S[V ′ | VB{c/v}]
其中,上下文
S
为
νpkaCh1.νchT.( | processK | processT | processT)
。第一个等价关系可通过去掉
V ′
中 “
out(chc, ...)
” 指令后与
VA{a/v}
直观比较得出;第二个等价关系则需要考虑两边的所有执行情况。
不同协议的特性总结
研究人员调查了文献中的两个协议,其特性总结如下表:
| 属性 | Fujioka 等人协议 | Okamoto 等人协议 |
| ---- | ---- | ---- |
| 投票隐私性 | ✓(无受信任权威) | ✓(及时性成员受信任) |
| 无收据性 | × | ✓(及时性成员受信任) |
从这个表格可以看出,不同协议在投票隐私性和无收据性方面的表现不同,并且达到这些特性所需的受信任权威也有所差异。
远程投票面临的安全问题
远程电子投票,即互联网投票,虽然具有方便选民在任何有网络连接的地方投票的优点,但目前应用并不广泛,主要原因是其存在诸多安全问题。
不安全的投票环境
- 计算机威胁 :连接到互联网的计算机面临着病毒、蠕虫、特洛伊木马等多种威胁。这些威胁利用软件漏洞进行恶意操作,甚至控制计算机。例如,在 2006 年报告了 8064 个新漏洞,2007 年前三季度报告了 5568 个新漏洞,很容易编写一个病毒在选举日改变选民的投票。
- 网络基础设施攻击 :攻击者可以通过攻击互联网支持基础设施,将选民引导到虚假的选举网站,利用选民的认证信息窃取选票,这种攻击被称为网络钓鱼/网络 pharming 攻击。
投票相关的其他问题
- 胁迫与投票出售 :远程投票无法保证选民独自投票,因此选民可能受到胁迫。同时,由于投票环境不受控制,选民可能会出售自己的选票。一种可能的保护措施是允许选民更新投票。
不同攻击的风险比较
与在线买票或胁迫攻击相比,攻击选民计算机或互联网基础设施以窃取/更改选票对选举完整性构成的潜在风险更高,原因如下:
1. 大规模的买票/胁迫行为很难不被发现,并且允许更新投票可以抑制这种行为。
2. 由于操作系统和应用程序存在大量安全漏洞,编写一个在选举日改变选票的病毒很容易。
3. 编写和传播病毒比试图胁迫一千名选民更便宜,也更难追踪到作者。
4. 由于攻击可以在世界任何地方进行,惩罚攻击者非常困难。
传统加密投票协议的局限性
在过去 30 年里,提出了许多加密投票协议,采用了盲签名、混币网络和同态加密等技术。然而,这些协议主要关注服务器端的选票操纵保护,假设客户端是可信的,以建立与选举服务器的安全通信通道并执行加密步骤和验证。但在实际中,连接到互联网的通用计算机并不可信,因此这些协议在这种环境下效果不佳。
CodeVoting 技术概述
为了解决远程投票中客户端平台不安全的问题,提出了 CodeVoting 技术。
CodeVoting 的工作原理
CodeVoting 并不取代传统的投票协议,而是在用户和运行传统投票协议的可信组件之间创建一个安全通道,因此可以看作是投票系统的一种用户界面。
其工作流程可以用以下 mermaid 流程图表示:
graph LR
A[选民] -->|投票信息| B[选民计算机]
B -->|通过 CodeVoting| C[可信组件(如智能卡)]
C -->|处理投票| D[投票服务器]
可信组件的选择
建议使用智能卡等防篡改设备作为客户端的可信组件。智能卡提供了比普通 PC 更安全的执行平台,通过 CodeVoting 在选民 PC 和智能卡之间创建安全通信通道,可以防止安装在选民 PC 上的恶意软件自动操纵选票。
同时,由于智能卡没有网络和 I/O 能力,选民 PC 的网络和 I/O 能力仍用于与选民和投票服务器交互。
投票操纵攻击类型
投票操纵攻击主要有以下两种类型:
-
预定候选人更改
:将选票更改为预定的候选人,这种攻击更具针对性。
-
随机候选人更改
:将选票更改为随机候选人,这种攻击可能更容易提前准备。
此外,还有伪造成功投票交付的攻击,攻击者只需显示 “您的投票已成功交付。感谢您的投票。” 消息,就可以减少特定候选人的选票。
综上所述,电子投票领域面临着协议分析和远程投票安全等多方面的问题,CodeVoting 技术为解决远程投票客户端平台不安全问题提供了一种新的思路。在后续部分,我们将进一步探讨 CodeVoting 技术的具体实现和评估。
电子投票协议隐私特性验证与远程投票安全提升
CodeVoting 技术的具体实现
为了实现 CodeVoting 技术,我们需要了解其具体的操作步骤,以下是详细的流程说明:
1.
初始化阶段
- 选民获得一张智能卡作为可信组件,该智能卡已预先配置好必要的密钥和程序。
- 选民的计算机安装 CodeVoting 相关软件,用于与智能卡建立通信。
2.
投票阶段
- 选民在计算机上打开投票界面,选择自己要投的候选人。
- 计算机将投票信息通过 CodeVoting 安全通道发送给智能卡。
- 智能卡接收到投票信息后,根据传统投票协议对其进行处理,例如加密、签名等。
- 智能卡将处理后的投票信息通过计算机网络发送给投票服务器。
3.
验证阶段
- 投票服务器接收到投票信息后,进行验证操作,确保投票的合法性和完整性。
- 如果验证通过,服务器记录该投票;否则,拒绝该投票并通知选民重新投票。
以下是一个简单的 mermaid 流程图,展示了 CodeVoting 技术的投票流程:
graph LR
A[选民选择候选人] --> B[计算机发送投票信息]
B --> C[智能卡处理投票信息]
C --> D[智能卡发送处理后信息]
D --> E[服务器验证投票信息]
E -->|验证通过| F[服务器记录投票]
E -->|验证失败| G[通知选民重新投票]
CodeVoting 技术的优势分析
CodeVoting 技术相比传统的远程投票方式具有以下显著优势:
1.
安全性高
:通过使用智能卡作为可信组件,建立安全通信通道,有效防止了恶意软件对选票的操纵。
2.
隐私性好
:选民的投票信息在传输和处理过程中得到加密保护,确保了投票的隐私性。
3.
用户友好
:CodeVoting 可以看作是一种用户界面,不需要选民具备专业的技术知识,操作简单方便。
4.
可扩展性强
:可以与各种传统投票协议相结合,适应不同的选举需求。
CodeVoting 技术的应用案例
为了更好地理解 CodeVoting 技术的实际应用,我们来看一个具体的案例。假设某公司要进行一次内部选举,采用远程投票的方式。公司为每个员工发放了一张智能卡,并在员工的计算机上安装了 CodeVoting 软件。
在选举当天,员工可以在自己的计算机上登录投票系统,选择自己支持的候选人。投票信息通过 CodeVoting 安全通道发送到智能卡,智能卡对其进行处理后发送到公司的投票服务器。服务器对投票信息进行验证,最终统计出选举结果。
通过这种方式,公司确保了选举的安全性和公正性,员工也可以方便地参与选举。
总结与展望
电子投票领域在保障投票隐私性、无收据性和抗胁迫性等方面面临着诸多挑战。通过对加密投票协议的建模和分析,我们可以更好地理解不同协议的特性和局限性。同时,远程投票的安全问题,特别是客户端平台的不安全,严重阻碍了其广泛应用。
CodeVoting 技术作为一种解决方案,通过在选民和可信组件之间建立安全通信通道,有效解决了客户端平台的安全问题。它具有安全性高、隐私性好、用户友好和可扩展性强等优势,在实际应用中也取得了良好的效果。
未来,我们可以进一步研究和改进 CodeVoting 技术,例如优化安全通道的建立方式、提高智能卡的处理能力等。同时,也可以探索将 CodeVoting 技术与其他新兴技术相结合,如区块链、人工智能等,以提升电子投票的安全性和效率。相信随着技术的不断发展,电子投票将变得更加安全、便捷和可靠。
以下是一个总结表格,对比了传统远程投票和使用 CodeVoting 技术的远程投票:
| 比较项目 | 传统远程投票 | 使用 CodeVoting 技术的远程投票 |
| ---- | ---- | ---- |
| 安全性 | 易受恶意软件和网络攻击 | 高,通过智能卡和安全通道保护 |
| 隐私性 | 难以保证 | 好,投票信息加密传输 |
| 用户体验 | 可能复杂 | 简单方便,用户友好 |
| 可扩展性 | 有限 | 强,可与多种协议结合 |
通过以上对比可以看出,CodeVoting 技术在远程投票领域具有明显的优势,有望成为未来电子投票的主流技术之一。
超级会员免费看
17

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



