信息安全概论作业六:访问控制

题目内容

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

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

设计要求,

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

题目作答

功能模块与对应功能

模块名 功能
统计模块 用于后台统计用户投票数据
登录/注册模块 用户登录/注册
投票模块 用户对自己欲投票的对象进行投票
公示模块 主办方公示最终结果

认证协议

使用修改了一点的Kerberos协议进行认证,修改将在下一节中说。

其中登录/注册过程可以看作是Kerberos中的第一和第二阶段,即Client既与AS之间进行身份验证服务交换,又用AS给的Ticket去访问TGS来拿得对应模块的Ticket。

保证隐私不被别人得到

首先可以给网站配置SSL,通过非对称的方式加密用户和主办方之间的通信,有效防止被窃听,一定程度上可以保证除了主办方和投票用户之外的人(但不包括服务器管理者)拿不到投票数据。

考虑到该系统的用户有主办方、服务器管理者、普通用户等,因而可以使用“基于角色的访问控制”,给不同的用户组分配不同的角色。上文中留了个坑,说要修改Kerberos,就是在这里改的:可以对AS增加一个功能:判定用户当前的角色是否可以访问对应的TGS(或者说模块),通过访问控制实现只给主办方访问统计模块的权限。

如何保证不被伪造 + 不被别人拿信息

这里可以使用非对称加密,主办方生成公钥私钥,并将公钥留给用户,私钥自己留着。用户生成公钥私钥,将公钥传给服务器,私钥自己留着。

凡是涉及到投票的信息,先用用户私钥加密一次,再用主办方公钥加密一次。用户的私钥不泄露,就可以保证不被伪造;主办方的私钥不泄露,就可以防止服务器管理员查看投票信息,只能主办方查看。

posted @ 2022-05-18 18:13  陌上花已开  阅读(232)  评论(0编辑  收藏  举报