Ki鉴权
Ki鉴权是怎么实现的?
在一张SIM卡中,有如下信息,IMSI/KI/A3(鉴权算法)/A(加密算法),这些内容是不可以改变的。
在HLR(AUC)中,有如下东东:用于产生随机数的RAND/鉴权健KI/各种安全算法,和SIM中的算法一致。AUC的基本功能是产生三参数组(RAND、SRES、Kc),其中:RAND由随机数发生器产生,SRES由RAND和Ki用A3算法得出,Kc由RAND和Ki用A8算出。
三元组产生后存于HLR中。当需要鉴权时,由MS所在服务区的MSC/VLR从HLR中装载至少一套三元组为此MS服务。
鉴权过程如下:
1、 MS在第一条层三消息COMPLETE LAYER3 INFO(呼叫建立/位置更新/补充业务(短消息))中向网络指示它存储的CKSN(密钥序列号)。
2、MSC收到COMPLETE LAYER3 INFO消息后,根据数据配置是否需要鉴权,不需鉴权则越过鉴权过程。如果需要鉴权,还需检查CKSN的值(MS在上一次业务处理使用的)是否与在本次接入中MS所存储的CKSN值一致,若不一致, MSC向VLR发出“PROCESS ACCESS REQUEST"的请求,要求进行鉴权过程。如果CKSN值一致则越过鉴权过程。
3、 VLR查看是否还有该MS的鉴权三元组(或者允许重复使用三元组),如果VLR中已经没有该MS 的三参数组,则需首先向HLR取三参数组。HLR收到取鉴权集请求,向鉴权中心Auc(通常于HLR合为一体)请求生成新的5组鉴权集,然后HLR通过鉴权响应将上述5组鉴权集返回给VLR。如果VLR中还有该MS的鉴权三参数组,则HLR不参与鉴权过程,VLR直接向MS下发鉴权请求消息。
4、 VLR向MS送“AUTHENTICATION REQUEST”鉴权请求消息来触发鉴权过程,该消息中包含一个随机数(RAND)和CKSN号码。
⑤5、MS收到鉴权请求消息后,通过SIM卡上的用户密钥Ki与该随机数通过A3鉴权算法,产生一个SRES;同时,通过Ki与该随机数通过A8加密算法,产生一个Kc。MS通过“AUTHENTICATION RESPONSE”鉴权响应消息将SRES和Kc送回VLR。
6、 网络侧在生成鉴权集时,也采用同样的算法:Ki与该随机数通过A3鉴权算法,产生一个SRES。此时VLR比较这两个SRES值是否相同,若相同,则鉴权成功并允许MS接入网络。若不同则鉴权失败,拒绝MS的继续接入。