多方密文决策场景方案

多方密文决策

投票决策作为用户表达观点和意见的重要方式,在日常生活中应用广泛,如小区公共事务决策、党群事务决策、股东大会表决等。目前也已产生大量电子投票应用,来简化线下纸质化投票、唱票、计票的繁琐流程。

但在传统电子投票中,投票者投出的选票均为明文,可能包含投票者身份信息及其选择的候选人信息,所以整个投票过程的隐私性和正确性都强依赖于计票者的信誉。计票者知道每张选票的选择,有机会篡改选票,甚至公布错误计票结果。

所以传统电子投票应用仍无法有效解决对投票者的隐私保护、对计票者的行为监督以及对计票结果的公开验证。

ACV隐私保护解决方案

WeDPR多方密文决策(Anonymous Ciphertext Voting,ACV)解决方案,可有效实现:

  • 投票者的选票为密文格式,除投票者本人之外,任何人无法获得投票者的选择。
  • 将中心式的计票权力分散至多个计票者,只有一定数量的计票者共同参与,才能计票成功。
  • 通过零知识证明,实现公众对投票者密文选票、计票者计票过程及计票结果的公开可验证。

其重要功能和指标如下:

  • 核心功能特性:(以投票应用为例)
    • 支持多种常用投票规则
    • 投票者身份和投票选择隐匿
    • 投票者可独立验证自己投出选票被正确计入结果
    • 公众可独立验证投票结果正确性
    • 不依赖可信第三方服务或可信硬件执行环境
  • 性能指标
    • 百字节投票记录大小
    • 毫秒级投票处理延时
    • 千级每秒投票处理并发量

ACV核心算法组件特性

WeDPR-Lab开源社区版中提供了ACV解决方案的核心算法组件和使用示例,具体包括:

  • 多方密文决策的Demo示例
  • 明文决策数值向密文决策凭证转换的通用方法
  • 多方联合统计密文决策凭证的通用方法
  • 密文决策凭证的格式约束的零知识证明
  • 密文决策凭证之间的代数约束关系的零知识证明
    • 密文状态下证明v1 + v2 <= v3
  • 密文决策凭证的范围约束关系的零知识证明
    • 密文状态下证明v1 > 0
  • 密文决策凭证统计过程中计算约束的零知识证明
    • 密文状态下证明统计所需密钥x = 统计者真实密钥y
  • 其他基础工具代码

ACV示例快速体验

完成安装步骤之后,进入示例目录,运行公开可验证密文账本Demo。

cd WeDPR-Lab-Core/solution/anonymous_ciphertext_voting
cargo run

cargo run之后按照demo指引,设置中文或英文作为演示语言,按步骤输入即可进行体验。

为了便于用户更易理解多方密文决策ACV的效果,我们设定了如下示例场景。

  • 4个投票者为3个候选人进行投票, 每个投票者都可向其中任意一个或多个候选人投出包含一定数值的密文选票,”,
  • 3个计票者需合作才能统计出每个候选人的最终得票。

整个demo流程中,用户将体验隐匿密文投票的全过程,具体包括

  1. 投票者如何使用密文选票进行匿名投票;
  2. 计票者如何联合解密得到计票结果;
  3. 任意验证者如何借助零知识证明来验证整个过程中投票者与计票者行为的正确性。

具体流程描述如下:

  1. 每个投票者进行身份认证,认证后获得并公布密文空白选票。 其中,密文空白选票代表的数额表示:该投票者可以投出的密文选票总额上限。
  2. 投票者选择为每个候选人分别投出的数额。
  3. 投票者将确定好的候选人及数额转化为密文选票,并公布密文选票。
  4. 投票者生成并公布以下3个零知识证明,分别用于证明:
    • 投给每个候选人的密文选票数额非负;
    • 每个密文选票格式正确(否则会导致后续计票失败);
    • 投票者投出的密文选票数额之和小于等于其初始选票数额。
  5. 任意验证者通过步骤1、3、4公布的密文选票与零知识证明,验证每个投票者的密文选票是否正确、合法。
  6. 针对每一个候选人,3个计票者联合统计其得票,公布各自的局部统计结果。
  7. 每个计票者生成并公布一个零知识证明,用于证明:
    • 计票者公布的计票信息是使用正确的计票者密钥计算而得,而不是随意构造而得。
  8. 任意验证者通过计票者在步骤6、7公布的密文统计结果和零知识证明,验证计票者统计过程的正确性。
  9. 任意公众都可通过汇集流程6中各计票者的局部统计结果,获得每个候选人的最终得票。

(其中,步骤5、8也可在步骤9之后进行集中验证。)