详细的安全规范参考TS GSM 02.09 [4] and TS GSM 03.20 [11].
鉴权与加密的重要性
客户的鉴权和加密是通过系统提供的客户三参数组来完成的。客户三参数组的产生在GSM系统的AUC(鉴权中心)中完成,每个客户在签约(注册登记)时,分配一个客户号码和客户识别码(IMSI)。IMSI通过SIM写卡机写入客户SIM卡中,同时在写卡机中产生一个于此IMSI唯一的客户鉴权Ki,他被分别存储在SIM卡和AUC中。AUC中还有一个随机数发生器,用于产生一个随机数(RAND)。RAND和Ki经过AUC中的A8算法(加密算法)产生一个Kc(密钥),经过A3算法产生一个响应数(SRES)。由产生KC和SRES的RAND与Kc、SRES一起组成该客户的一个三参数组,传送给HLR,存储在客户资料库中。一般情况下,AUC一次产生5组三参数,传送给HLR,HLR自动存储。MSC/VLR向HLR请求传送三参数时,HLR又一次向MSC/VLR传送5组三参数。MSC/VLR一组一组的用,用到剩2组时,再向HLR请求传送三参数组。
安全认证和密钥生成
鉴权的作用是保护网络。当移动用户开机请求接入网络时,MSC/VLR通过控制信道将三参数组的一个参数RAND传送给客户,SIM卡收到RAND后,用次RAND与SIM卡存储的客户鉴权键Ki,经过同样的SRES,传送给MSC/VLR。MSC/VLR将收到的SRES与三参数组中的SRES进行比较。由于是统一RAND,同样的KI和A3算法,所以SRES应相同。
SIM卡在接入网络过程通常要经历这么几个过程。
- 网络发送随机数(RAND)给MS,然后ME将这个随机数传递给SIM卡,并发送RUN GSM ALGORITHM请求。
- SIM卡将生成的SRES和Kc发送给ME,ME将SRES和Kc发送给网络端。
- 网络端会将接收到的SRES和自己生成的进行对比。若匹配,那么认证成功。Kc用于之后的网络通信过程的加密。
在SIM卡中存储的128位的ki用于这个算法加密的过程。
SIM卡中有两种算法A3(用于网络认证),A8(产生密钥)。这两种算法可以单独也可以组合存在于SIM卡中。算法的输入是经Ki处理过的RAND数据(128bit)。输出是SRES(32bits)和Kc(64bits)。
鉴权后分配临时识别码(TMSI)
临时识别码的设置是为了防止非法个人或团体通过无线路径上的信令交换窃取客户识别码IMSI或跟踪移动客户的位置。
客户临时识别码(TMSI)是由MSC/VLR分配,并不断更换。每当MS用IMSI向系统请求位置更新、呼叫尝试或业务激活时,MSC/VLR对它进行鉴权。允许接入网后,MSC/VLR产生一个新的TMIS,通过给IMSI分配位置更新TMIS的命令将其传送给移动台,写入客户SIM卡。此后,MSC/VLR和MS之间的命令交互就使用TMIS。
文件访问条件
在访问SIM卡中某一文件是,需要满足该文件的访问条件才可以进行相应操作。
在SELECT和STATUS请求文件访问条件是必须的。
在READ和SEEK请求文件访问权限是一样的。
文件访问等级有如下几条
0:无条件访问。
CH1:只有当以下情况满足时可以访问
- 当前访问权限为CH1。
- 文件的CH1访问标识失效。
- 当前会话CH1访问为非阻塞
CH2:只有以下情况可以访问
- 当前访问条件为CH2
- 当前会话CH2访问为非阻塞。
ADM:这对应相关管理机制操作的权限。
NEVer:该操作不能通过SIM/ME接口来进行,不过可以在SIM卡内部进行。
访问条件与层次无关。比如当前访问条件为CH2的会话无法执行访问条件为CH1的操作。只要访问成功,那么会一直持续到会话结束。当ME尝试3次访问失败,那么则不再进行尝试。
CHV访问条件同时作用于DF_GSM和DF_TELECOM