利用CodeVoting提升远程投票安全性
1. CodeVoting概述
在远程投票场景中,如互联网投票,选民使用的平台往往不受控制,这使得投票过程存在被恶意操纵的风险。CodeVoting技术旨在保护选民的投票免受这种恶意操纵,它采用“代码表”方法,保障选民与连接在其个人电脑上的投票安全终端(VST)之间的通信安全,而VST则运行加密投票协议,防止投票在服务器端被篡改。
2. CodeVoting的安全性评估
2.1 抵御投票操纵的假设条件
CodeVoting在以下假设条件下可抵御选民个人电脑端的投票操纵:
- VST正确执行协议,且不受选民电脑的操纵。
- CodeCard由VST在安全可控的环境中生成,且只有选民在场。
- 选民对CodeCard严格保密。
- 候选人与其ID的对应关系不可更改。
2.2 更改投票的概率分析
在上述假设下,攻击者将选票更改为预定候选人的可能性极低。以5位字母数字符号为例,猜对正确投票代码的概率(P_{gcvc}=\frac{1}{36^5}),即小于六千万分之一;若同时使用大小写字母,概率则变为(P_{gcvc}=\frac{1}{62^5}),小于九亿分之一。
随机更改攻击的成功概率与上述情况相近。若有(n)个候选人,猜对随机有效投票代码的概率为(P_{grvc}=n\times P_{gcvc})。
2.3 应对暴力攻击的措施
为防止简单的拒绝服务攻击,VST不应在选民插入无效投票代码时自动封锁。但这也给攻击者提供了暴力破解有效投票代码的机会。可通过以下措施降低暴力攻击的成功率:
-
延迟投票代码验证功能
:例如设置三秒延迟,攻击者在一小时内最多只能尝试1200次。
-
扩大投票代码的范围
:增加代码长度或使用更多符号,如大小写字母。使用62个符号时,5位代码一小时暴力攻击成功的概率为七十六万三千四百四十四分之一,6位代码则超过四千七百万分之一。
2.4 防止虚假投票确认攻击
攻击者可能会欺骗选民,使其误以为已投票,而实际并未投票。为防止此类攻击,可使用投票交付确认码。VST在收到投票成功交付的确认信息(如选举服务器签署的消息)后才会释放该代码。若确认码与投票代码长度相同,此类攻击的成功概率与更改投票为预定候选人的攻击相同。VST收到的确认信息可存储在内部,作为投票交付的证明,以便选民在其投票未被计入最终统计时提出抗议。
2.5 应对买票/胁迫问题
CodeVoting存在一个问题,选民可能在选举前将CodeCard交给攻击者,攻击者在选举日可要求选民使用其控制的电脑投票,从而获得投票收据,实现买票和胁迫。为防止此类攻击,可采用允许选民多次投票(即更新投票)的投票协议。选民在不受攻击者控制的机器上更新投票的可能性将降低买票和胁迫攻击的发生。
2.6 发现恶意干扰后的处理
CodeVoting虽能检测投票过程中的恶意干扰,但无法强制恶意电脑正常运行。若检测到恶意干扰,选民应更换电脑重新投票。
3. VST的可信度
CodeVoting依赖于VST的正确运行,因此其可信度至关重要。可通过以下方式验证VST:
-
生产阶段测试
:在VST生产过程中进行测试。
-
独立认证机构随机测试
:由独立认证机构进行额外的随机测试。
-
选民参与验证
:选民可在实际选举前进行模拟选举,以验证其VST的可靠性。
然而,VST内的应用程序可能会检测到正在进行测试,从而在测试中正常运行,但在实际选举日更改选民的投票。为防止这种情况,可使用安全的防篡改硬件(如智能卡)运行经过认证的公开源代码软件。因为攻击者难以控制安全的防篡改硬件,所以在其上运行的签名应用程序可保证正确运行。
4. CodeVoting的局限性
4.1 不支持大型候选人名单
CodeVoting的原始CodeCard格式要求为每个可能的候选人设置一个条目,当候选人数量较多(如超过三十人)时,CodeCard的尺寸可能过大,或因使用小字体而导致可用性问题。
4.2 CodeCard重用问题
若选民在多次选举中使用同一张CodeCard,攻击者有可能将其选票替换为随机选票。攻击者需收集第一次选举中使用的代码,并控制选民每次投票使用的电脑。为增加攻击难度,可在VST内执行整个投票协议,不向选民电脑泄露选民身份信息,使不同电脑仅通过解锁PIN识别选民。当然,选民也可在选举间为VST获取新的CodeCard以保护自己。
4.3 同时选举问题
同时选举是CodeCard重用的一种特殊情况,选民可能无法或不方便前往当地机构获取新的CodeCard。一种解决方案是在所有同时进行的选举中使用顺序的候选人ID,但这可能会导致大型候选人名单的问题。
5. Matrix CodeVoting介绍
为解决CodeVoting的上述局限性,引入了Matrix CodeVoting技术。它通过使用加密矩阵以紧凑形式存储大量候选人ID转换,支持大型候选人名单选举,并在连续选举中重用CodeCard时提供更好的安全性。
5.1 Matrix CodeVoting的具体细节
- 替换CodeCard :Matrix CodeVoting用Matrix CodeCard取代了原始的CodeCard。
- 选票格式变化 :候选人由数字(如54598、39027等)而非字母(如A、B、C等)标识。
- 加密过程 :选民使用Matrix CodeCard将候选人ID转换为投票代码,与原始CodeCard的直接关联方式不同。
以下是一个使用Matrix CodeCard将候选人ID转换为投票代码的示例:
| Candidate number d5 | d4 | d3 | d2 | d1 |
| — | — | — | — | — |
| 0 | A | S | Q | B | U | E |
| 1 | W | E | P | S | I | n | M |
| 2 | E | W | L | V | R | c | a |
| 3 | R | Q | I | G | S | o | t |
| 4 | Y | U | M | N | J | d | r |
| 5 | V | N | H | Y | H | i | i |
| 6 | B | J | T | U | T | n | x |
| 7 | M | M | F | K | C | g |
| 8 | O | X | E | W | E |
| 9 | U | T | Z | A | P |
| Vote code | v5 | v4 | v3 | v2 | v1 |
|---|---|---|---|---|---|
| Y | J | L | B | P |
假设候选人ID为46209,根据Matrix CodeCard,对应的投票代码为YJLBP。
5.2 候选人ID的选择
选择候选人ID时需谨慎,以降低攻击者猜测有效投票代码的概率。例如,若有九个候选人,使用从00001到00009的候选人ID是不明智的,因为所有候选人的投票代码仅最后一位不同,攻击者更改选民投票的成功概率为(P_{gvvc}=\frac{8}{25}),即首次尝试的成功率为32%。可通过增加投票代码的范围(如使用大小写字母)来降低此概率。候选人ID应尽可能不同,以减少攻击者根据选民输入的代码猜测有效投票代码的可能性。
5.3 安全参数k
由于候选人ID采用十进制,最多只有10个ID在所有位置都不同。为此,引入安全参数(k),它定义了所有候选人ID之间不同数字的数量。(k)的值应根据攻击者首次尝试从选民插入的代码中猜对有效投票代码的概率来选择,即(P_{gvvc}=(\frac{1}{numberOfCodeSymbols - 1})^k)。
以下是不同安全参数(k)和候选人ID长度下不同候选人ID的数量统计(结果为100轮随机代码生成的平均值):
| Candidate ID Length | Security Parameter | 5 | 6 | 7 | 8 |
| — | — | — | — | — | — |
| | k = 4 | 68 | 502 | 3483 | 25014 |
| | k = 5 | - | 65 | 387 | 2380 |
| | k = 6 | - | - | 58 | 298 |
从表中可以看出,Matrix CodeVoting通过略微增加候选人ID的长度,能够安全地支持大型候选人名单选举。
5.4 同时选举中的问题及应对
虽然Matrix CodeVoting为大型候选人名单选举提供了解决方案,但在同时选举中,若攻击者获得使用同一Matrix CodeCard生成的不同投票代码,可能会关联这些代码,发现矩阵的部分内容并替换选民的投票。暴露整个矩阵所需的最少代码数量为11个。为降低这种威胁,应选择候选人ID,使不同选举的投票代码中没有重复数字能建立候选人ID之间的唯一对应关系,增加投票代码关联的难度。因此,Matrix CodeCard的重用应限制在少数选举中,以防止成功的关联攻击。
综上所述,CodeVoting和Matrix CodeVoting技术为远程投票的安全性提供了有效的解决方案,但在实际应用中仍需注意各种潜在问题,并采取相应的措施加以防范。未来,还可进一步增强CodeVoting技术,引入对多候选人选择和排序的支持。目前,CodeCard和Matrix CodeCard的工作原型已在智能卡(如JavaCards)中实现,接下来将致力于将CodeCard原型与VST(JavaCard)内的全加密投票客户端集成。
6. 总结与展望
6.1 技术优势总结
CodeVoting技术为远程投票的安全性带来了显著提升。它通过“代码表”方法,有效保护了选民与VST之间的通信,防止投票在客户端平台被恶意操纵。同时,VST运行的加密投票协议保障了投票在服务器端的安全性。Matrix CodeVoting作为CodeVoting的增强版,解决了原始CodeVoting不支持大型候选人名单和CodeCard重用的问题,使得该技术在更广泛的选举场景中具有实用性。
6.2 未来工作方向
未来,计划进一步增强CodeVoting技术,主要方向是引入对多候选人选择和排序的支持。这将使投票系统更加灵活,满足不同选举的需求。以下是未来工作的一些具体步骤:
1.
需求分析
:深入研究不同选举场景下多候选人选择和排序的需求,确定系统需要支持的功能和规则。
2.
技术设计
:设计支持多候选人选择和排序的算法和数据结构,确保系统的高效性和安全性。
3.
开发实现
:在现有的CodeVoting和Matrix CodeVoting原型基础上进行开发,实现多候选人选择和排序的功能。
4.
测试验证
:对新功能进行全面的测试,包括功能测试、性能测试和安全测试,确保系统的稳定性和可靠性。
6.3 现有原型进展
目前,CodeCard和Matrix CodeCard的工作原型已在智能卡(如JavaCards)中实现。这为技术的进一步发展提供了坚实的基础。接下来的工作重点是将CodeCard原型与VST(JavaCard)内的全加密投票客户端集成。集成过程可以按照以下步骤进行:
1.
接口设计
:设计CodeCard原型与全加密投票客户端之间的接口,确保两者能够进行有效的通信和数据交换。
2.
集成开发
:根据接口设计,将CodeCard原型集成到全加密投票客户端中。
3.
兼容性测试
:对集成后的系统进行兼容性测试,确保在不同的环境和设备上都能正常运行。
4.
安全评估
:对集成后的系统进行安全评估,确保投票过程的安全性和可靠性。
7. 流程总结与对比
7.1 CodeVoting流程总结
以下是CodeVoting的主要流程:
1.
CodeCard生成
:VST在安全可控的环境中为选民生成CodeCard。
2.
投票准备
:选民获取CodeCard,并在投票时使用其与VST进行通信。
3.
投票过程
:选民根据CodeCard上的信息,输入投票代码进行投票。
4.
投票确认
:VST在收到投票成功交付的确认信息后,释放投票交付确认码。
5.
异常处理
:若检测到投票过程中的恶意干扰,选民更换电脑重新投票。
7.2 Matrix CodeVoting流程总结
Matrix CodeVoting的流程与CodeVoting类似,但有一些关键区别:
1.
Matrix CodeCard生成
:使用Matrix CodeCard取代原始的CodeCard。
2.
候选人ID转换
:选民使用Matrix CodeCard将候选人ID转换为投票代码。
3.
投票过程
:选民输入转换后的投票代码进行投票。
4.
其他步骤
:与CodeVoting相同,包括投票确认和异常处理。
7.3 两者对比
| 对比项 | CodeVoting | Matrix CodeVoting |
|---|---|---|
| 支持候选人数量 | 有限,不适合大型候选人名单 | 支持大型候选人名单 |
| CodeCard重用性 | 存在安全风险,建议每次选举更换 | 相对更安全,可在少数选举中重用 |
| 候选人ID标识 | 字母为主 | 数字为主 |
| 加密方式 | 直接关联 | 通过加密矩阵转换 |
7.4 流程图展示
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
A(CodeVoting流程):::process --> B(CodeCard生成):::process
B --> C(投票准备):::process
C --> D(投票过程):::process
D --> E(投票确认):::process
E --> F{是否有恶意干扰}:::process
F -->|是| G(更换电脑重新投票):::process
F -->|否| H(结束):::process
I(Matrix CodeVoting流程):::process --> J(Matrix CodeCard生成):::process
J --> K(投票准备):::process
K --> L(候选人ID转换):::process
L --> M(投票过程):::process
M --> N(投票确认):::process
N --> O{是否有恶意干扰}:::process
O -->|是| P(更换电脑重新投票):::process
O -->|否| Q(结束):::process
综上所述,CodeVoting和Matrix CodeVoting技术为远程投票的安全性提供了有效的解决方案。通过不断的改进和完善,这些技术有望在未来的选举中得到更广泛的应用。同时,在实际应用中,需要根据具体的选举需求和场景,选择合适的投票技术,并采取相应的安全措施,以确保投票过程的公平、公正和安全。
超级会员免费看
20

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



