信息安全概论作业六
l 题目:
设计一个投票系统APP,投票信息关乎隐私,一般采用无记名投票,但在网络上投票具有可溯源性,明文传输别人窃听,就会知道投票人投谁的票。为了保护隐私、又要确认每个人都投了票,要求设计一款APP。
软件需求:
- 采用网络服务器server + 用户手机app模式,
- 主要功能包括:注册、登陆、报名参加选举人、app投票、统计公布选举结果。
- 投票,单选,内容为各选举人加弃权。
- 确认每个人都投了票,而且投了有效票。
- 任何人(包括服务器管理员)也不能知道投票人投了什么票。
- 网络传输要防止窃听。
设计要求,
- 写清楚你的系统为了完成上述功能要求,设计了那些功能模块,每个模块有什么功能;
- 写清楚你的认证协议,要核实身份,是不是有效注册用户;
- 写清楚你是如何保证隐私不被别人得到的;
- 写清楚如何保证无法伪造投票。
大家加油吧。
l 模块及功能:
身份建立模块 |
通过注册和登录确定用户是人而不是机器,防止机器刷票 |
身份更新模块 |
更新自己的身份,是投票人还是被选人,分别给予不同权限 |
参与投票模块 |
参与服务器上的投票,不投票即为弃权 |
新建投票模块 |
新建投票项目 |
安全加密模块 |
对传输数据进行加密,保证不会被窃取 |
l 认证协议:
采用Needham-Schroeder公钥认证。服务器首先需要通过邮箱或者手机核实这是一个真人,然后允许其注册账号,并为该用户生成完全独立而保密的私钥和对应的公钥。用户在登录时,服务器给用户一个明文挑战消息,用户接收到挑战后,用自己的私钥对挑战明文消息加密,称为签名。然后用户将签名信息反馈给服务器,服务器用该用户的公钥尝试解密,即验证签名,来确定此用户的合法身份。
l 保护隐私:
我们在注册过程中给用户分配了用于验证身份的,完全保密的私钥。使用这个私钥加密,并在安全信道中通信,其它人就无法获取投票的信息了。但是仅仅如此还不够,因为系统管理员可以通过解密看到某个用户的投票信息。那么进行双重加密,用户自己设置自己的二重私钥,会通过安全信道储存到服务器中,但不对所有人公开查看权限,只有系统能对用户的信息解码并计算投票结果。
l 避免伪造:
已经提到,每个用户有独立的,保密的私钥,而系统有对应的公钥,只要保证收到的投票信息能被对应公钥+二重私钥解读即可。只要是能被正常解读的信息,必定是经过了正常登录注册流程的用户,不存在被伪造的可能性。