一种基于秘密分享的安全投票系统方案

一种基于秘密分享的安全投票方案

Zoey zhu

[email protected]

适用场景

    多个人大规模投票,对于一个问题选择出一个或多个选项,统计每个选项的得分。

交互流程

过程

创建投票数据

    投票人数量;候选人数量;胜选人数量

  • 投票人数量:n
  • 候选人数量:m
  • 阈值k, 后面有用

所需要数据实体

  1. 投票公告板实体
  2. 投票人实体
  3. 份额分配记录实体(X,Y)
  4. 份额累加记录实体

创建投票

输入:投票人数量;候选人数量 胜选人数量 64位验证码

计算:

投票过程

  1. 选择候选人,获得候选人列表
  2. 初始化pi=0,令

分片 exportraw()

  1. n为投票人,初始化split_vote=[],共有n-1个元素,
  2. 随机生成n-1个元素,存入split_vote;满足pi'+所有元素和=pi
  3. 用户本地保存pi'
  4. 用户分发split_vote给其他用户

后台处理投票

  1. 接收用户ID,以及split_vote,
  2. 获取投票用户序号list,剔除掉自己
  3. 分配分片数据,记录投票者-分配的用户份额关系

记票

在投票完成后,本地用户开始用选票记票,就是自身的pi'

  1. 遍历数据库,统计我获得别人的分片数据,和我自己的分片数据相加,记录sumi
  2. 获得n:投票人数量,将每个人的sum相加,所有的sum,获得target
  3. 获得k,

计票过程

  • for
  • 计算target & 按位与
  • target = target >>k 左移k位
  • end for

算法流程

你可能感兴趣的:(一种基于秘密分享的安全投票系统方案)