作业6
题目
设计一个投票系统APP,投票信息关乎隐私,一般采用无记名投票,但在网络上投票具有可溯源性,明文传输别人窃听,就会知道投票人投谁的票。为了保护隐私、又要确认每个人都投了票,要求设计一款APP。
软件需求
1、采用网络服务器server + 用户手机app模式
2、主要功能包括:注册、登陆、报名参加选举人、app投票、统计公布选举结果
3、投票,单选,内容为各选举人加弃权
4、确认每个人都投了票,而且投了有效票
5、任何人(包括服务器管理员)也不能知道投票人投了什么票
6、网络传输要防止窃听
实现
功能模块
模块 | 功能 |
---|---|
注册 | 设置用户名与密码进行注册 |
登录 | 检查用户的用户名与密码,登录用户 |
报名参加选举人 | 处理用户报名参加选举人的操作 |
app投票 | 用户投票 |
统计公布选举结果 | 处理统计票数、公布选举结果 |
认证协议
采用 Kerryberos 认证协议
注册用户阶段:
- 身份验证服务交换:用户完成身份认证,获得访问TGS的票据
- 票据授予服务交换:获得访问服务器的票据
登录阶段:
用户使用经 AS 认证的票据向服务器进行身份验证,服务器验证用户是否具有权限
保证隐私
- 所有数据采用 SSL 传输,防止窃听
- 对传输数据采用非对称加密,由服务器生成密钥对,客户端使用公钥对投票加密,服务器使用私钥解密
确认投票
- 服务器收到投票信息后,首先验证投票的合法性,满足条件后将票数累加到投票池中,并标记该用户已投票
- 处理完成后,服务器不存储用户投票内容,仅记录已投票结果