作业6 访问控制
设计一个投票系统APP,投票信息关乎隐私,一般采用无记名投票,但在网络上投票具有可溯源性,明文传输别人窃听,就会知道投票人投谁的票。为了保护隐私、又要确认每个人都投了票,要求设计一款APP。
软件需求:
1、采用网络服务器server + 用户手机app模式,
2、主要功能包括:注册、登陆、报名参加选举人、app投票、统计公布选举结果。
3、投票,单选,内容为各选举人加弃权。
4、确认每个人都投了票,而且投了有效票。
5、任何人(包括服务器管理员)也不能知道投票人投了什么票。
6、网络传输要防止窃听。
设计要求,
1、写清楚你的系
功能要求,设计了那些功能模块,每个模块有什么功能;
2、写清楚你的认证协议,要核实身份,是不是有效注册用户;
3、写清楚你是如何保证隐私不被别人得到的;
4、写清楚如何保证无法伪造投票。
解答:
1.功能模块设计
| 模块 | 模块功能 |
| 身份认证模块 | 用户进行注册、登录操作 |
| 报名模块 | 用户报名参加选举,进入候选名单 |
| 投票模块 | 用户进行匿名投票 |
| 结果公示模块 | 进行结果公示 |
2.身份认证
在身份认证过程中我们可以参考作业5中仿照Kerberos认证设计的认证模式,用户向服务器AS请求TGS票据,再向TGS验证票据;再用返回ticket用于与服务器进行身份验证。
通过这种方式即可实现身份认证。
3.用户隐私保护
我们采用基于用户的访问控制模型RBAC,让用户只拥有作为投票者的访问权限,将访问投票结果的权限首先只交给投票主办方,其他用户无法获得;
在提高信息安全性方面,可以使用公开密钥密码通信,攻击者在未获得接收方私钥的情况下是不能仅使用密文和公钥进行破译的,可以从一定程度上保护用户信息的安全。
4.防止投票伪造
首先是防止他人伪造用户的方法:
系统可以生成一对密钥,即生成公钥和私钥,并将公钥向用户公开;用户在得到公钥后,投票的具体信息就可以经过公钥加密后再发送给系统;系统只能用私钥解密。
与3同理攻击者不能获得私钥故无法破解密文;而系统要回复加密信息给用户需要用户提高用户的公钥给系统用于加密,用户保存自己的私钥来解密;
以及防止用户个人进行多次投票的方法:
在用户进行投票之后对用户的role进行修改,使用户不能进行下一次投票,确保每人都投一个有效票。

浙公网安备 33010602011771号