信息安全概论 作业6 访问控制
题目
设计一个投票系统APP,投票信息关乎隐私,一般采用无记名投票,但在网络上投票具有可溯源性,明文传输别人窃听,就会知道投票人投谁的票。为了保护隐私、又要确认每个人都投了票,要求设计一款APP。
软件需求:
- 采用网络服务器server + 用户手机app模式,
- 主要功能包括:注册、登陆、报名参加选举人、app投票、统计公布选举结果。
- 投票,单选,内容为各选举人加弃权。
- 确认每个人都投了票,而且投了有效票。
- 任何人(包括服务器管理员)也不能知道投票人投了什么票。
- 网络传输要防止窃听。
设计要求:
- 写清楚你的系统为了完成上述功能要求,设计了那些功能模块,每个模块有什么功能;
- 写清楚你的认证协议,要核实身份,是不是有效注册用户;
- 写清楚你是如何保证隐私不被别人得到的;
- 写清楚如何保证无法伪造投票。
解答
模块设置
| 模块名称 | 模块功能 |
|---|---|
| 注册/登录模块 | 负责处理用户的注册和登录 |
| 报名模块 | 负责处理用户报名参加选举人的操作 |
| 投票模块 | 负责处理投票 |
| 统计模块 | 负责处理投票状态、统计票数、公布选举结果 |
认证协议与防伪造
使用Kerberos协议。它可以保证信息传输过程中防止窃听和篡改。
同时使用公钥私钥的机制,达到防伪造的目的。
用户通过Kerberos服务获得了与服务器交流的ticket,并在注册/登录过程中使用服务器的公钥加密注册/登录信息发送给服务器,服务器用自己的私钥解密,经过注册/登录模块的处理,将回应用用户的公钥加密,用户接收到之后用自己私钥解密,完成注册/登录过程,确认有效用户。
隐私保护
由于服务器管理员可能通过查看消息的来源从而得知谁投了什么票,我的思路就是,想办法让服务器不能直接知道消息来源于哪个用户。于是,我引入了一个代理服务器:
仍然是使用Kerberos服务,不过,在投票时,用户(C)与代理服务器(R)进行身份认证而不直接将信息发送到服务器(S),而代理服务器(R)与服务器(S)进行身份认证,这样保证了信息交流过程的安全性。
首先,用户C将自己的投票信息先用服务器(S)的公钥加密,再用代理服务器(R)的公钥加密:
\(K_R[K_S[Msg]]\)
将加密后的信息发送给代理服务器(R),由于代理服务器(R)没有服务器(S)的私钥,因此无法查看真正的用户的投票信息。代理服务器(R)将这个加密投票信息用自己的私钥解密后,再发送给服务器(S)。服务器(S)收到信息后用自己的私钥解密后就得到了用户的投票信息,然而投票信息中只写了投给谁,而没有是谁投的这个信息。并且由于所有的投票信息都是代理服务器(R)发来的,因此服务器(R)也不知道这个投票究竟来源于哪个用户,在Kerberos协议的保护下,它只知道投票信息是可信的。

浙公网安备 33010602011771号