法国安全研究人员Pierrick Gaudry在俄罗斯官方计划于下月举行的2019俄罗斯杜马选举中使用的基于区块链投票系统中发现严重安全漏洞。
Pierrick Gaudry是法国Lorraine大学和研究机构INRIA的研究人员,他根据投票系统的公钥计算出了系统的私钥。私钥和公钥一起在选举中被用来计算选票。
俄罗斯基于区块链的投票系统20分钟被攻破
Gaudry称该基于区块链的系统中存在漏洞是因为俄罗斯官方使用了 ElGamal加密方案的变种,由于使用的加密密钥太短导致不够安全。也就意味着目前主流的计算机也可以在几十分钟内攻破加密方法。研究人员称用标准的个人电脑和免费的软件大约20分钟就破解了。在知道了私钥后,加密数据很快就可以破解了。
使用的加密方案
提取密钥所用时间
因为投票系统的协议不是英文的,研究人员没有进一步研究,因此攻击者有了密钥之后能做什么,仍然是未知的。在最坏的情况下,所有投票人的选票在投票后都会被看到。
该区块链投票系统是莫斯科信息技术部开发的,是基于以太坊区块链平台的智能合约。该投票系统本来计划9月8日开始运行12小时,与官方投票同步。莫斯科居民可以通过互联网、手机、电脑举行投票,投票结果会在公有以太坊区块链上加密保存。该系统部署应用后,莫斯科的互联网投票系统将是第一个在有法律约束力的选举而非受控条件下的测试中使用的基于区块链的系统。
补丁和修复
莫斯科在7月将该基于区块链的投票系统源码公布在GitHub上,并邀请安全研究人员举行测试。Gaudry提交发现后,莫斯科信息技术部称会修复该问题,并称密钥的长度会修改为1024。
至于选择弱密钥的原因,研究人员猜测设计者采取了补偿方案,设计者使用了3个256位的素数,但3个256位的素数的安全性和1个756位素数的安全性是不同的。
对于官方计划使用1024位的公钥来修复该漏洞,研究人员称1024位是不够的,至少应该使用2038位的密钥。
莫斯科官方统一给予Gaudry 100万卢布(合1.5万美元,10.8万人民币)的奖励。美国称吃一堑长一智,从俄罗斯的选举系统漏洞中也学到很多,会进一步加强美国使用的选举系统的安全性。
Github地址:https://github.com/moscow-technologies/blockchain-voting