第六次作业-访问控制

题目内容:

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

软件需求:

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

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

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

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

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

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

设计要求,

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

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

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

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

解题:

功能模块:

模块名 功能
统计选举模块 管理员统计选举票数
注册,登录认证 服务器认证登录用户
投票模块 参加选举人投票
公布选举结果 主办方公布结果

(前面有老哥用SSL,自己也学的不太好,就有点穷途末路了,还好老哥留了一点对称加密的内容,我就用TSLS协议采用非对称方法生成对称加密密钥,用对称密钥通信<为不和老哥完全相同自己这么认为的,可能有描述不当的地方>)

模块一:注册登录(认证协议

使Kerberos协议进行认证。

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

模块二:投票模块

服务器有自己的公钥和私钥;投票用户通过注册登录APP

1.用户通过APP将自己支持的TLS版本,加密套件,参加投票用户信息(记为编号1)发送给服务器

2.服务器收到用户通过APP发送的信息,确认支持的TSL版本,加密组件,将证书,公钥还有被选举人信息(记为编号2)发送给用户APP

3.用户APP收到后告诉服务器接收完毕;之后APP生成一个用户密钥(记为编号3);并通过公钥加密发送给服务器

4.服务器收到用户密钥信息,用自己的私钥解密,得到用户密钥

5.APP和服务器用编号为3的用户密钥和编号为1,2的信息生成会话密钥(编号为4)

6.APP和服务器都用会话密钥对投票信息等通话内容加密解密

分析:前1234是非对称加密,目的是得到会话密钥,第6步二者通信时对称加密;之所以这样也考虑到不对称加密过程繁琐,如果通信内容多的话也会浪费大量资源;

模块三:统计投票结果

模块四:公布投票结果

模块3,4步骤和模块2类似

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

这里要考虑到任何人(包括服务器管理员)也不能知道投票人投了什么票,这里投票信息只在AAP和服务器之间用对称加密进行通信,服务器根据每个模块第1部发送的用户信息限制通信内容,如:如果是投票用户,服务器只接受他的是否投票;如果是管理员,服务器只发送给他投票信息(被选举人是谁,参加投票的人是否投赞成或弃票但没有投票人信息,因为用户信息只在非对称加密<步骤一>时传输,在选票信息<步骤六>中没有用户信息),接受统计结果;如果是举办方,服务器只发送他统计结果。

如何保证隐私不被别人得到的

只有APP用户和服务器知道用户密钥(编号为3),因为没有通过直接传输,没人知道用户密钥,除非服务器私钥泄露;不知道用户密钥就更不会知道会话密钥(编号为4)

如何保证无法伪造投票

首先注册使用Kerberos认证,并且在APP与服务器访问阶段服务器还会确定用户信息和用户角色,保证非用户或非投票用户无法进行伪造投票

posted @ 2022-05-19 21:11  LL-Wang  阅读(58)  评论(0编辑  收藏  举报