访问控制


题目要求

?? 设计一个投票系统APP,投票信息关乎隐私,一般采用无记名投票,但在网络上投票具有可溯源性,明文传输别人窃听,就会知道投票人投谁的票。为了保护隐私、又要确认每个人都投了票,要求设计一款APP。

软件需求:

  • 采用网络服务器server + 用户手机app模式,

  • 主要功能包括:注册、登陆、报名参加选举人、app投票、统计公布选举结果。

  • 投票,单选,内容为各选举人加弃权。

  • 确认每个人都投了票,而且投了有效票。

  • 任何人(包括服务器管理员)也不能知道投票人投了什么票。

  • 网络传输要防止窃听。

设计要求

  • 写清楚你的系统为了完成上述功能要求,设计了那些功能模块,每个模块有什么功能;

  • 写清楚你的认证协议,要核实身份,是不是有效注册用户;

  • 写清楚你是如何保证隐私不被别人得到的;

  • 写清楚如何保证无法伪造投票。

功能模块

  • 注册模块:用户进行注册

  • 登录模块:用户进行登录

  • 报名模块:用户报名参加选举

  • 投票模块:用户进行匿名投票

  • 公示模块:统计公布选举结果

认证协议

?? 使用Kerryberos协议

?? 注册时使用初始用户anyone初始用户取得TGT, 注册后KDC保存密码和ID用来生成密钥

?? 登陆时,身份验证服务交换。当用户完成身份认证,便可获得访问TGS的票据。即Client既与AS之间进行身份验证服务交换,又用AS给的Ticket去访问TGS来拿得对应模块的Ticket, 与身份认证模式相同, 认证注册用户

隐私防窥与防止多投

?? Kerryberos协议中的AS服务器维护一个身份数组, 将投票的用户删除, 保留投票信息, 用户投票信息保存在本地

防止投票伪造

?? 投票信息用用户私钥加密一次,再用主办方公钥加密一次