作业6 访问控制
题目
设计一个投票系统APP,投票信息关乎隐私,一般采用无记名投票,但在网络上投票具有可溯源性,明文传输别人窃听,就会知道投票人投谁的票。为了保护隐私、又要确认每个人都投了票,要求设计一款APP。
软件需求:
1、采用网络服务器server + 用户手机app模式,
2、主要功能包括:注册、登陆、报名参加选举人、app投票、统计公布选举结果。
3、投票,单选,内容为各选举人加弃权。
4、确认每个人都投了票,而且投了有效票。
5、任何人(包括服务器管理员)也不能知道投票人投了什么票。
6、网络传输要防止窃听。
设计要求,
1、写清楚你的系统为了完成上述功能要求,设计了那些功能模块,每个模块有什么功能;
2、写清楚你的认证协议,要核实身份,是不是有效注册用户;
3、写清楚你是如何保证隐私不被别人得到的;
4、写清楚如何保证无法伪造投票。
解答
功能模块
| 模块 | 功能 |
|---|---|
| 注册 | 将用户名与密码存储至服务端,并生成自己的私钥储存在本地,将公钥上传至服务器 |
| 登录 | 服务端检查用户身份,如果身份合法则允许进行投票 |
| 投票 | 已验证身份的用户向服务端匿名发送投票信息;服务端对其进行认证 |
| 统计公布结果 | 服务端对用户发送的投票信息进行认证和统计,并公布选举结果 |
认证协议、身份核实
使用Kerberos协议进行认证,Kerberos中的第一和第二阶段为登录/注册过程,即用户与AS之间进行身份验证服务交换,并用AS给的Ticket去访问TGS来拿得相应模块的Ticket。
在非匿名、需要确认报名者身份的部分,使用Kerberos进行身份认证。
保证隐私
用户端与服务端的通讯应在安全信道中进行,并对传输信息进行加密。用户需保管好自己的私钥。
用户端与服务端会使用Kerberos进行身份认证,保证客户端与服务端的真实性。
使用Kerberos加密,并将签名好的信息直接发送到服务端。
给网站配置SSL,通过非对称的方式加密用户和主办方之间的通信,有效防止被窃听,一定程度上可以保证除了主办方和投票用户之外的人拿不到投票数据。
无法伪造
使用非对称加密,主办方生成公钥私钥,并将公钥留给用户,私钥自己保留。用户生成公钥私钥,将公钥传给服务器,私钥自己保留。
凡是涉及到投票的信息,首先用用户私钥加密,再使用主办方公钥加密。故若用户的私钥不泄露,就可以保证不被伪造;主办方的私钥不泄露,就可以防止服务器管理员查看投票信息,只能主办方查看。
浙公网安备 33010602011771号