信息安全概论作业六

题目:

设计一个投票系统APP,投票信息关乎隐私,一般采用无记名投票,但在网络上投票具有可溯源性,明文传输别人窃听,就会知道投票人投谁的票。为了保护隐私、又要确认每个人都投了票,要求设计一款APP。
软件需求:

  1. 采用网络服务器server + 用户手机app模式,
  2. 主要功能包括:注册、登陆、报名参加选举人、app投票、统计公布选举结果。
  3. 投票,单选,内容为各选举人加弃权。
  4. 确认每个人都投了票,而且投了有效票。
  5. 任何人(包括服务器管理员)也不能知道投票人投了什么票。
  6. 网络传输要防止窃听。

设计要求,

  1. 写清楚你的系统为了完成上述功能要求,设计了那些功能模块,每个模块有什么功能;
  2. 写清楚你的认证协议,要核实身份,是不是有效注册用户;
  3. 写清楚你是如何保证隐私不被别人得到的;
  4. 写清楚如何保证无法伪造投票。
    大家加油吧。

模块及功能:

身份建立模块

通过注册和登录确定用户是人而不是机器,防止机器刷票

身份更新模块

更新自己的身份,是投票人还是被选人,分别给予不同权限

参与投票模块

参与服务器上的投票,不投票即为弃权

新建投票模块

新建投票项目

安全加密模块

对传输数据进行加密,保证不会被窃取

 

认证协议:

采用Needham-Schroeder公钥认证。服务器首先需要通过邮箱或者手机核实这是一个真人,然后允许其注册账号,并为该用户生成完全独立而保密的私钥和对应的公钥。用户在登录时,服务器给用户一个明文挑战消息,用户接收到挑战后,用自己的私钥对挑战明文消息加密,称为签名。然后用户将签名信息反馈给服务器,服务器用该用户的公钥尝试解密,即验证签名,来确定此用户的合法身份。

保护隐私:

我们在注册过程中给用户分配了用于验证身份的,完全保密的私钥。使用这个私钥加密,并在安全信道中通信,其它人就无法获取投票的信息了。但是仅仅如此还不够,因为系统管理员可以通过解密看到某个用户的投票信息。那么进行双重加密,用户自己设置自己的二重私钥,会通过安全信道储存到服务器中,但不对所有人公开查看权限,只有系统能对用户的信息解码并计算投票结果。

避免伪造:

已经提到,每个用户有独立的,保密的私钥,而系统有对应的公钥,只要保证收到的投票信息能被对应公钥+二重私钥解读即可。只要是能被正常解读的信息,必定是经过了正常登录注册流程的用户,不存在被伪造的可能性。

posted @ 2022-05-20 19:35  WildMice  阅读(67)  评论(0编辑  收藏  举报