作业6 访问控制(10)

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

软件需求:

1、采用网络服务器server + 用户手机app模式,

2、主要功能包括:注册、登陆、报名参加选举人、app投票、统计公布选举结果。

3、投票,单选,内容为各选举人加弃权。

4、确认每个人都投了票,而且投了有效票。

5、任何人(包括服务器管理员)也不能知道投票人投了什么票。

6、网络传输要防止窃听。

设计要求,

1、写清楚你的系统为了完成上述功能要求,设计了那些功能模块,每个模块有什么功能;

2、写清楚你的认证协议,要核实身份,是不是有效注册用户;

3、写清楚你是如何保证隐私不被别人得到的;

4、写清楚如何保证无法伪造投票。

 

作答如下:

 

 

功能模块简述:

 

模块 功能
登录/注册模块 用户用来登录和注册
报名参加选举人 用户可以报名进而参与选举
app投票 用户对自己想要投票的人进行匿名投票
统计公布选举结果 投票截止后,公示结果
   

 

 

认证协议:

      借助Kerberos;

      用户先去和AS认证获得访问TGS的票据;再向TGS证实自己已被AS认证;再用返回的ticket来与服务器身份验证交换,进而获得服务。

      借此可以很轻松地实现 登录/注册模块的认证问题。

 

 

 

保证隐私:

 

      在访问控制模型上采用RBAC的方式。

      这样的话引入了role的概念,使得有以下几种角色:

      1.参选人

      2.投票人

      3.投票发布者

      不同的角色有不同的访问许可权,其中只有投票发布者才有查看结果的权利。

      

      同时网站要配置SSL,即采用https而非http

      这样对于服务器的信任可以通过CA证书来解决;

      而非对称加密也使得安全性进一步得到提高,防止其他人窃取信息。

      

防止伪造投票:

 

 

    防止他人伪造:

        

1、系统生成一对密钥(公钥和私钥)并将公钥向用户公开。
2、得到该公钥的用户使用该密钥对机密信息进行加密后再发送给系统。
3、系统再用自己保存的另一把专用密钥(私钥)对加密后的信息进行解密。系统只能用其专用密钥(私钥)解密由对应的公钥加密后的信息。
在传输过程中,即使攻击者截获了传输的密文,并得到了系统的公钥,也无法破解密文,因为只有系统的私钥才能解密密文。
同样,如果系统要回复加密信息给用户,那么需要用户先公布用户的公钥给系统用于加密,用户自己保存用户的私钥用于解密。
 
 
 
      防止一个用户多次投票:
 
投完票后把他的role变了即可。
 

 

 

posted @ 2022-05-21 10:24  随心所欲qaq  阅读(58)  评论(0)    收藏  举报