多方密文决策场景方案¶
ACV隐私保护解决方案¶
多方密文决策(Anonymous Ciphertext Voting, ACV)具有以下核心优势:
- 实名认证的决策者、非本人无法获知自己的决策数值
- 全密文决策,满足企业级安全和性能要求
- 全流程可验证,包括决策过程与决策结果统计过程
- 密文决策凭证的密文格式证明
- 密文决策数值的算术、逻辑全关系证明
- A + B = C, A * B = D
- A > B, A != B
其重要功能和指标如下:
- 功能特性(以投票应用为例)
- 支持多种常用投票规则
- 支持非固定候选人的另选他人模式
- 投票者身份和投票选择隐匿
- 投票者可独立验证自己投出选票被正确计入结果
- 公众可独立验证投票结果正确性
- 基于零知识证明算法
- 不依赖可信硬件执行环境
- 不依赖可信第三方服务
- 国密算法和监管支持
- 性能指标
- 百字节投票记录大小
- 毫秒级投票处理延时
- 千级每秒投票处理并发量
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流程中,用户将体验隐匿密文投票的全过程,具体包括
- 投票者如何使用密文选票进行匿名投票;
- 计票者如何联合解密得到计票结果;
- 任意验证者如何借助零知识证明来验证整个过程中投票者与计票者行为的正确性。
具体流程描述如下:
- 每个投票者进行身份认证,认证后获得并公布初始密文选票。 其中,初始密文选票代表的数额表示:该投票者可以投出的密文选票总额上限。
- 投票者选择为每个候选人分别投出的数额。
- 投票者将确定好的候选人及数额转化为密文选票,并公布密文选票。
- 投票者生成并公布以下3个零知识证明,分别用于证明:
- 投给每个候选人的密文选票数额非负;
- 每个密文选票格式正确(否则会导致后续计票失败);
- 投票者投出的密文选票数额之和小于等于其初始选票数额。
- 任意验证者通过步骤1、3、4公布的密文选票与零知识证明,验证每个投票者的密文选票是否正确、合法。
- 针对每一个候选人,3个计票者联合统计其得票,公布各自的局部统计结果。
- 每个计票者生成并公布一个零知识证明,用于证明:
- 计票者公布的计票信息是使用正确的计票者密钥计算而得,而不是随意构造而得。
- 任意验证者通过计票者在步骤6、7公布的密文统计结果和零知识证明,验证计票者统计过程的正确性。
- 任意公众都可通过汇集流程6中各计票者的局部统计结果,获得每个候选人的最终得票。
(其中,步骤5、8也可在步骤9之后进行集中验证。)