鉴权(authentication)是指验证用户是否拥有访问系统的权利。传统的鉴权是通过密码来验证的。这种方式的前提是,每个获得密码的用户都已经被授权。在建立用户时,就为此用户分配一个密码,用户的密码可以由管理员指定,也可以由用户自行申请。这种方式的弱点十分明显:一旦密码被偷或用户遗失密码,情况就会十分麻烦,需要管理员对用户密码进行重新修改,而修改密码之前还要人工验证用户的合法身份。
为了克服这种鉴权方式的缺点,需要一个更加可靠的鉴权方式。目前的主流鉴权方式是利用认证授权来验证数字签名的正确与否。
逻辑上,授权发生在鉴权之后,而实际上,这两者常常是一个过程。
简介要解释什么是鉴权之前,我们先看看如果没有鉴权会怎么样?
如果没有鉴权功能,移动用户可随意接入和使用任一无线网络,运营商的利益得不到保障,同时,用户的安全也会受到威胁。移动通讯网络发展之初,就考虑并解决了这个问题:采取用户鉴权的方式来识别出非法用户。用户鉴权,是对试图接入网络的用户进行鉴权,审核其是否有权访问网络。通过用户鉴权可以保护网络,防止非法盗用;同时通过拒绝假冒合法客户的“入侵”而保护该网络中的客户。
然而,道高一尺魔高一丈。相信大家听过或者亲身经历这样的事件吧。某人的手机上收到“恭喜你获得一等奖,请预付税费”、“公司出售各类发票”之类的非法诈骗、推销短信,因而上当受骗,损失了钱财。有的甚至显示是110发来的。这种情况,可能是用户接入了假冒的网络,所以,用户也需要对网络进行鉴权。
鉴权包括两个方面:
用户鉴权,网络对用户进行鉴权,防止非法用户占用网络资源。
网络鉴权,用户对网络进行鉴权,防止用户接入了非法的网络,被骗取关键信息。
这种双向的认证机制,就是AKA(Authentication and Key Agreement,鉴权和密钥协商)鉴权。
除了AKA鉴权,也可以使用其它鉴权方式。在IMS AKA鉴权广泛实施之前,或在特定的条件下(例如通过固定网络ADSL连接方式接入IMS),可以使用HTTP摘要鉴权等其他鉴权方式。
3G UMTS(Universal Mobile Telecommunication System,通用移动通讯系统)、EPS(Evolved Packet System,演进的分组系统)、IMS(IP Multimedia Subsystem,IP多媒体子系统)网络都采用了AKA双向鉴权机制,鉴权原理也大致相同。而2G网络,只有用户鉴权,无网络鉴权。1
鉴权过程我们以3G UMTS网络鉴权为例,看看网络和用户分别是怎么鉴权的。
当用户购机入网时,运营商将IMSI(International Mobile Subscriber Identity,国际移动用户标识)和用户鉴权键Ki一起分配给用户,同时将该用户的IMSI和Ki存入AUC(Authentication Center,鉴权中心),这样鉴权参数信息存储在手机的USIM(UMTS Subscriber Identity Module,UMTS用户身份模块)卡和AUC中。
VLR(Visitor Location Register,拜访位置寄存器)从AUC获得用户的鉴权数据,MSC(Mobile Switching Center,移动交换中心)/VLR从鉴权数据中选取一组未使用过的鉴权参数。MSC/VLR向手机发起鉴权请求。请求消息中携带所选取的鉴权参数中的RAND、AUTN和CKSN参数。
手机中的USIM根据收到的RAND和自己保存的IMSI、Ki一起计算出XMAC,与从网络侧收到的AUTN中的MAC值进行比较。
如果相同,继续验证接收到的AUTN中序列号SQN是否在有效的范围内。序列号SQN的设置是为了防止他人冒充网络,利用截获的、旧的鉴权参数AUTN欺骗用户。
如果SQN有效,则认为这是个合法网络,网络鉴权成功。手机计算出RES,并将RES发送给MSC/VLR/SGSN。否则若发现SQN值无效时,手机会向网络报错并且触发网络与手机间的SQN重新同步过程。
如果SQN同步失败或者MAC值不同,则网络鉴权失败。
MSC/VLR将自己用RAND、IMSI和Ki算出的XRES与手机返回的RES进行比较。如果相同,则认为用户合法,用户鉴权成功,网络允许手机接入;否则认为用户不合法,用户鉴权失败,拒绝为其服务。
鉴权时机移动网络对鉴权时机的要求为:
2G、3G网络中,鉴权发生在开机、呼叫、位置更新以及在补充业务的激活、去活、登记或删除操作之前。
2G网络中,运营商都是启用的“按比例鉴权”方案。
3G网络中,用户首次接入网络必须鉴权,此后启用“按比例鉴权”方案。
IMS网络中,网络可以通过注册或重注册过程,在任何时候对用户进行鉴权。2
鉴权方式我们常用的鉴权有四种:
1、HTTP Basic Authentication
2、session-cookie
3、Token 验证
4、OAuth(开放授权)
本词条内容贡献者为:
李嘉骞 - 博士 - 同济大学