信息安全概论作业六:访问控制
题目内容
设计一个投票系统APP,投票信息关乎隐私,一般采用无记名投票,但在网络上投票具有可溯源性,明文传输别人窃听,就会知道投票人投谁的票。为了保护隐私、又要确认每个人都投了票,要求设计一款APP。
软件需求:
- 采用网络服务器server + 用户手机app模式,
- 主要功能包括:注册、登陆、报名参加选举人、app投票、统计公布选举结果。
- 投票,单选,内容为各选举人加弃权。
- 确认每个人都投了票,而且投了有效票。
- 任何人(包括服务器管理员)也不能知道投票人投了什么票。
- 网络传输要防止窃听。
设计要求,
- 写清楚你的系统为了完成上述功能要求,设计了那些功能模块,每个模块有什么功能;
- 写清楚你的认证协议,要核实身份,是不是有效注册用户;
- 写清楚你是如何保证隐私不被别人得到的;
- 写清楚如何保证无法伪造投票。
大家加油吧。
题目作答
功能模块与对应功能
模块名 | 功能 |
---|---|
统计模块 | 用于后台统计用户投票数据 |
登录/注册模块 | 用户登录/注册 |
投票模块 | 用户对自己欲投票的对象进行投票 |
公示模块 | 主办方公示最终结果 |
认证协议
使用修改了一点的Kerberos协议进行认证,修改将在下一节中说。
其中登录/注册过程可以看作是Kerberos中的第一和第二阶段,即Client既与AS之间进行身份验证服务交换,又用AS给的Ticket去访问TGS来拿得对应模块的Ticket。
保证隐私不被别人得到
首先可以给网站配置SSL,通过非对称的方式加密用户和主办方之间的通信,有效防止被窃听,一定程度上可以保证除了主办方和投票用户之外的人(但不包括服务器管理者)拿不到投票数据。
考虑到该系统的用户有主办方、服务器管理者、普通用户等,因而可以使用“基于角色的访问控制”,给不同的用户组分配不同的角色。上文中留了个坑,说要修改Kerberos,就是在这里改的:可以对AS增加一个功能:判定用户当前的角色是否可以访问对应的TGS(或者说模块),通过访问控制实现只给主办方访问统计模块的权限。
如何保证不被伪造 + 不被别人拿信息
这里可以使用非对称加密,主办方生成公钥私钥,并将公钥留给用户,私钥自己留着。用户生成公钥私钥,将公钥传给服务器,私钥自己留着。
凡是涉及到投票的信息,先用用户私钥加密一次,再用主办方公钥加密一次。用户的私钥不泄露,就可以保证不被伪造;主办方的私钥不泄露,就可以防止服务器管理员查看投票信息,只能主办方查看。