访问控制
题目要求
?? 设计一个投票系统APP,投票信息关乎隐私,一般采用无记名投票,但在网络上投票具有可溯源性,明文传输别人窃听,就会知道投票人投谁的票。为了保护隐私、又要确认每个人都投了票,要求设计一款APP。
软件需求:
-
采用网络服务器server + 用户手机app模式,
-
主要功能包括:注册、登陆、报名参加选举人、app投票、统计公布选举结果。
-
投票,单选,内容为各选举人加弃权。
-
确认每个人都投了票,而且投了有效票。
-
任何人(包括服务器管理员)也不能知道投票人投了什么票。
-
网络传输要防止窃听。
设计要求
-
写清楚你的系统为了完成上述功能要求,设计了那些功能模块,每个模块有什么功能;
-
写清楚你的认证协议,要核实身份,是不是有效注册用户;
-
写清楚你是如何保证隐私不被别人得到的;
-
写清楚如何保证无法伪造投票。
功能模块
-
注册模块:用户进行注册
-
登录模块:用户进行登录
-
报名模块:用户报名参加选举
-
投票模块:用户进行匿名投票
-
公示模块:统计公布选举结果
认证协议
?? 使用Kerryberos协议
?? 注册时使用初始用户anyone初始用户取得TGT, 注册后KDC保存密码和ID用来生成密钥
?? 登陆时,身份验证服务交换。当用户完成身份认证,便可获得访问TGS的票据。即Client既与AS之间进行身份验证服务交换,又用AS给的Ticket去访问TGS来拿得对应模块的Ticket, 与身份认证模式相同, 认证注册用户
隐私防窥与防止多投
?? Kerryberos协议中的AS服务器维护一个身份数组, 将投票的用户删除, 保留投票信息, 用户投票信息保存在本地
防止投票伪造
?? 投票信息用用户私钥加密一次,再用主办方公钥加密一次