信安作业6
设计一个投票系统APP,投票信息关乎隐私,一般采用无记名投票,但在网络上投票具有可溯源性,明文传输别人窃听,就会知道投票人投谁的票。为了保护隐私、又要确认每个人都投了票,要求设计一款APP。
软件需求:
1、采用网络服务器server + 用户手机app模式,
2、主要功能包括:注册、登陆、报名参加选举人、app投票、统计公布选举结果。
3、投票,单选,内容为各选举人加弃权。
4、确认每个人都投了票,而且投了有效票。
5、任何人(包括服务器管理员)也不能知道投票人投了什么票。
6、网络传输要防止窃听。
设计要求,
1、写清楚你的系
功能要求,设计了那些功能模块,每个模块有什么功能;
2、写清楚你的认证协议,要核实身份,是不是有效注册用户;
3、写清楚你是如何保证隐私不被别人得到的;
4、写清楚如何保证无法伪造投票。
解答:
1.功能模块设计
模块 | 模块功能 |
身份提供 | 用户进行注册、登录操作 |
选举报名 | 用户报名参加选举,进入候选名单 |
投票 | 用户匿名投票 |
统计排序 | 对结果进行统计排序 |
结果公示 | 结果公示 |
2.身份认证
在身份认证过程中,用户向服务器AS请求TGS票据,再向TGS验证票据;
服务器利用返回的ticket进行验证。
3.用户隐私保护
采用基于用户的访问控制模型RBAC,让用户只拥有作为投票者的访问权限,将访问投票结果的权限首先只交给投票主办方,其他用户无法获得;
在提高信息安全性方面,可以使用公开密钥密码通信,攻击者在未获得接收方私钥的情况下是不能仅使用密文和公钥进行破译的,可以从一定程度上保护用户信息的安全。
4.防止投票伪造
防止他人伪造用户的方法:
系统可以生成公钥和私钥,并将公钥向用户公开;用户在得到公钥后,投票的具体信息就可以经过公钥加密后再发送给系统;用户只能用私钥解密。
攻击者不能获得私钥故无法破解密文;而系统要回复加密信息给用户需要用户提供的公钥给系统用于加密,用户用自己的私钥来解密;
防止用户个人进行多次投票的方法:
系统在用户进行投票之后对用户的role进行修改,使用户不无法继续投票,确保每人只投一票。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话