We believe the best way to increase awareness and participation of political activities in autocracy regimes like P.R.China is to increase its residents' ability to perform various democratic routines such as voting.
Voting is hard because traditionally:
- it's expensive to verify every voters' identity.
- it's impossible to prove that no fraud/mistake occurred in the process.
- it's expensive to hide the voters' choices from public.
目前最大的困难是身份验证。我们必须实现一种身份验证机制,以确保在一次投票中:
- 投票人必须(99%以上概率)是中华人民共和国公民。在未获许可的情况下,很难(1%以下概率)冒充其他公民的身份。
- 同一个公民身份多次投票应可被区分并视为无效(类似于投票站在选民册上划线)
- 第三方最多只能知道投票人进行了身份验证,但无法确定投票人究竟投了什么票(赞成/反对/弃权),从而无法追究投票人的责任。
投票流程初步设计如下:
- 用户通过某种方式,公开地、不透露其他隐私地、不可复制地证实自己确实是某身份证号码的持有者,也即生成一个proof of identity.
- 用户生成密钥对,将公钥与身份证号码一起公开,再用私钥对上述proof进行签名并公开,以证明该密钥对确实由该身份证号码持有者持有。
- 用户利用私钥签名登陆投票网站,登陆时上传或告诉网站在哪里可以获取他的公钥、身份证号码和proof of identity。
- 投票网站用自己的私钥,为每个用户签发proof of participation; 该proof of participation包含投票的标题和选项等信息,以及proof of identity
- 用户持proof of participation,通过某种只可得知投票结果、不可得知每个人投票选项的算法进行投票。为方便起见,投票网站应直接实现此功能,而不借助eth等分布式平台。
- 投票截止时间到达后,投票网站宣布投票结果。公开所有数据,任何人可独立验证所有proof
核心问题:如何不可复制地、不依赖官方合作地、不透露隐私地证明自己是某国人?