作业5 身份认证
题目
今天校园里到处是快递小哥,同学们也经常帮别人取快递,快递小哥不会很细致的核实身份,就允许代领,存在很多不安全因素。
设计一款基于手机的app,用于快递小哥验证身份,顾客领取快递。具体认证方法不限,简单易行。
(1)给出:app包含哪些部分(可加图示),每部分的功能;
(2)模仿Kerberos的写法,描述交互过程,并加说明。
分析
根据个人取快递的经验,不仔细核实身份具体表现在收件人姓名有时会完整写在快递盒上,任何人只要看到姓名就能回答快递小哥的问题。有时快递小哥会问手机尾号,但这也会体现在快递盒上。这套询问主要是为了防止主观上错取,而非盗快递,对盗快递的防御力几乎为0.
APP设计
APP客户端分为用户端与快递员端,功能如下。
-
用户向可信第三方发送取快递请求,可信第三方在数据库中进行核对,在确认用户身份后,根据快递单号的哈希值,从口令表中取出一个并回复给用户)。
-
用户记录口令,或交给代取人。到达快递点后,快递小哥向可信第三方发送快递单号(可通过直接扫描快递单上的条形码获得),可信第三方在确认快递小哥的身份信息后,返回根据单号哈希值取出的口令。
-
用户说出口令,快递员核对口令。口令无误后允许取出快递。
注:
-
可信第三方的数据库中应存有用户及对应的快递信息,快递小哥及其管理的快件
-
每个APP使用者只能查询自己(管理)的快件
-
口令可以是有意义的汉语单词,便于记忆,但应保证词库大且抗冲突、
-
-
口令每单一换
交互过程
第一次通信
-
客户端用户向KDC以明文的方式发起请求。该次请求中携带了自己的用户名,主机IP,查询口令对应的快递单号,和当前时间戳;
-
KDC中的AS接收请求后去Kerberos认证
数据库中根据用户名查找是否存在该用户及其单号,此时只会查找是否有相同用户名的,并不会判断身份的可靠性;
-
如果没有,认证失败,服务结束;如果存在该用户名,则AS认证中心便认为用户存在,此时便会返回响应给客户端,其中包含:TGT,Session Key,TGT有效时间,TGS name
-
此步骤可验证客户端是真的客户端,因为客户端密匙其他人没有。
第二次通信
-
客户端使用Session Key加密将自己的客户端信息、明文的目标Server、使用TGS加密的TGT发送给KDC
-
TGS根据客户端传来的Server确认目标是否存在
-
TGS将TGT内容解密进行身份验证(时间戳),若通过则取用户信息进行比对,认证客户端
-
KDC将使用Session Key加密的Server Ticket返回给客户端
-
客户端对返回信息进行解密
第三次通信
-
客户端向服务器进行通讯请求
-
服务端使用Server密匙对时间戳进行解密,核实后取出Session Key对信息进行解密
-
服务端返回使用Session Key对单号加密过的口令
-
客户端使用Session Key进行解码,得到口令并妥善保存
注:客户端指取快递的和快递小哥;服务端指返回口令的可信第三方;KDC还是进行身份认证的可信第三方。