论文学习笔记 How not to prove your election outcome

一、投票系统的错误总结

论文学习笔记 How not to prove your election outcome

二、投票系统介绍

论文学习笔记 How not to prove your election outcome

投票系统安全目标

  1. 当投票者没有收到正确的码时,恶意的客户端更改投票应该被检测出来。
  2. 只要至少有一个服务器端的组件是诚实的,完整可验证性(个人可验证性&普遍可验证性)可得到保证

三、**说明

论文学习笔记 How not to prove your election outcome

四、个人可验证性阶段协议

论文学习笔记 How not to prove your election outcome

五、FIAT-SHAMIR转换的陷阱:提供虚假的选票有效性证明

论文学习笔记 How not to prove your election outcome

后果:投票者认为选票被接收到(验证通过),但该投票在混合后解密却无效
问题总结:hash函数的输入(零知识证明的挑战值)没有包含所有需要证明的语句
解决问题:所有语句都包含在hash的输入中,包括所有幂次证明中的基本元素

六、客户端证明不充足:当选择码与选票不匹配时,生成选票有效性的证明

论文学习笔记 How not to prove your election outcome

后果:不知道是否会导致真正的攻击(有些码返回给voter而有些码不可复原,规范不明确)
原因: ZKPs的正确性不代表预选择码与投票一致,因为验证的是码的乘积而不是单独的码
解决问题

  1. 为每个元素生成单独的ZKPs
  2. 服务器端只能在所有代码都被正确检索的情况下返回代码,那么可以证明产品证明是充分的

七、单独可验证性:为操作的投票返回正确的选择码(服务器勾结的情况下)

论文学习笔记 How not to prove your election outcome
后果:投票者认为正确投了票,实际上票被操作
问题总结:恶意的VVC与一个恶意的客户端合谋,恶意生成投票参数
解决问题:生成可证明的正确的投票参数

八、使用BAYER-GROTH中的陷门承诺和伪造shuffle证明

8.1 BAYER-GROTH承诺

论文学习笔记 How not to prove your election outcome

8.2 使用BAYER-GROTH中的陷门承诺和伪造shuffle证明

论文学习笔记 How not to prove your election outcome

8.3 使用BAYER-GROTH中的陷门承诺和伪造shuffle证明:已知随机数

论文学习笔记 How not to prove your election outcome

8.4 使用BAYER-GROTH中的陷门承诺和伪造shuffle证明:不知道随机数

论文学习笔记 How not to prove your election outcome

8.5 弱FIAT-SHAMIR转换的普遍可验证性失败

论文学习笔记 How not to prove your election outcome

8.6 弱FIAT-SHAMIR转换的普遍可验证性失败:转换成一组通过验证的假解密证明

论文学习笔记 How not to prove your election outcome
后果:使某些投票无效(不喜欢的)
问题总结:hash函数的输入没有包含所有需要证明的语句
解决问题:所有语句都包含在hash的输入中