作业6 访问控制
设计一个投票系统APP,投票信息关乎隐私,一般采用无记名投票,但在网络上投票具有可溯源性,明文传输别人窃听,就会知道投票人投谁的票。为了保护隐私、又要确认每个人都投了票,要求设计一款APP。
软件需求:
1、采用网络服务器server + 用户手机app模式,
2、主要功能包括:注册、登陆、报名参加选举人、app投票、统计公布选举结果。
3、投票,单选,内容为各选举人加弃权。
4、确认每个人都投了票,而且投了有效票。
5、任何人(包括服务器管理员)也不能知道投票人投了什么票。
6、网络传输要防止窃听。
设计要求,
1、写清楚你的系统为了完成上述功能要求,设计了那些功能模块,每个模块有什么功能;
2、写清楚你的认证协议,要核实身份,是不是有效注册用户;
3、写清楚你是如何保证隐私不被别人得到的;
4、写清楚如何保证无法伪造投票。
大家加油吧。
功能模块
注册:进行用户注册
登录:进行用户登录
报名:报名参加选举人
投票:进行投票,单选,选项为各选举人和弃权
结果:显示统计公布的选举结果
认证协议
利用Kerberos协议与公钥私钥的机制。
用户通过Kerberos服务获得了与服务器交流的Ticket,并在注册/登录过程中使用服务器的公钥加密注册/登录信息发送给服务器,服务器用自己的私钥解密,经过注册/登录模块的处理,将回应用用户的公钥加密,用户接收到之后用自己私钥解密,完成注册/登录过程,确认有效用户。
保证隐私
使用“基于角色的访问控制(RBAC)”,在用户注册时,给用户分配不同的角色,对于投票方面相关的信息:普通用户仅有投票、察看自己投票信息和察看最终结果权限;服务器管理员仅有对投票结果进行公示的权限,(而没有察看投票数据权限);
具体实现可以在Kerberos认证过程中:令AS根据不同用户角色信息,返回相应有限权限的授权票据(TGT);然后TGS根据相应有限权限的授权票据(TGT)返回相应有限权限应用服务票据(ST);
最后用户凭借ST票据仅能使用与其角色相关的应用功能。
保证无法伪造
系统可以生成公钥和私钥,并将公钥向用户公开;用户在得到公钥后,投票的具体信息就可以经过公钥加密后再发送给系统;用户只能用私钥解密。
攻击者不能获得私钥故无法破解密文;而系统要回复加密信息给用户需要用户提供的公钥给系统用于加密,用户用自己的私钥来解密;