背景技术
在通信系统中,鉴权过程是确保网络安全的一个重要措施。
下面给出在3GPP中的鉴权与密钥协商(AKA)过程中的鉴权过程,如图1所示,包括以下步骤:
步骤101:当用户终端登录网络时,拜访位置寄存器(VLR)/GPRS业务支持节点(SGSN)向归属位置寄存器(HLR)/鉴权中心(AUC)请求鉴权元组。
步骤102:HLR/AUC根据VLR/SGSN的鉴权元组请求,将对应该用户终端的鉴权元组中至少一个鉴权元组发送给VLR/SGSN,然后删除所发送出去的这些鉴权元组。
通常,用户终端和HLR/AUC中都保存有用户标识、鉴权密钥和序列号,以用于用户终端和网络相互鉴权。本步骤中,HLR/AUC计算鉴权元组的方法为:HLR/AUC产生随机数(RAND),并利用所产生的RAND和当前用户终端对应的鉴权密钥、序列号,生成用于该用户终端鉴权的鉴权元组。所得到的鉴权元组包括RAND、期望响应(XRES)、加密密钥(CK)、完整性密钥(IK)以及鉴权标记(AUTN),组成鉴权五元组。参见3GPP相关协议规范,这里不再赘述详细的产生过程。
实际当中,HLR/AUC根据VLR/SGSN的请求,为一个用户终端可以产生一个或多个鉴权元组,并将其中至少一个鉴权元组发送给VLR/SGSN。例如,HLR/AUC产生5组鉴权元组,并将全部或部分鉴权元组发送给VLR/SGSN。
HLR/AUC产生鉴权元组可以是在所述请求之前产生,也可以是在所述请求之后产生。
步骤103:VLR/SGSN根据所接收到的鉴权元组对用户终端鉴权,并判断对用户终端的鉴权是否通过,如果通过,则执行步骤104;否则,执行步骤105。
在此,VLR/SGSN对用户终端进行鉴权过程可以为:VLR/SGSN将从HLR/AUC接收到的鉴权元组中第一个鉴权元组里的AUTN和RAND发送给用户终端,等待用户终端返回鉴权结果,并根据用户终端所返回的鉴权结果判断鉴权是否通过。如果用户终端返回一个响应RES,VLR/SGSN就比较所接收到的相应RES和鉴权元组中的XRES是否一致,如果一致,则对终端鉴权通过,否则,对终端鉴权不通过。
当终端对VLR/SGSN鉴权不通过时,也可以向VLR/SGSN返回鉴权失败信息。
在此,当VLR/SGSN判断出对用户终端的鉴权未通过时,会删除从HLR/AUC所接收到的该用户终端对应的全部鉴权元组;当VLR/SGSN判断出对用户终端的鉴权通过时,只删除本次鉴权对应的鉴权元组,而保留其它的鉴权元组,用于下次对该用户终端的鉴权。
一般情况下,在用于一个用户终端的多组鉴权元组中,用于该用户终端鉴权的第一个鉴权元组称为首鉴权元组。通常,HLR/AUC可以指定一个鉴权元组作为首鉴权元组,或者,HLR/AUC和VLR/SGSN可以设置相同的默认规则,例如,默认将第一个用于该用户终端鉴权的鉴权元组作为首鉴权元组。
步骤104:VLR/SGSN不向HLR/AUC返回任何信息。即VLR/SGSN不向HLR/AUC返回鉴权成功的信息。同时,VLR/SGSN删除本次鉴权对应的鉴权元组,保存剩下的鉴权元组。
步骤105:VLR/SGSN产生鉴权失败报告,并向HLR/AUC返回所述鉴权失败报告。同时,VLR/SGSN删除和首鉴权元组一起从HLR/AUC获取的鉴权元组。
所述的鉴权失败报告中包括:本次鉴权对应的用户终端的标识、本次鉴权失败的原因以及本次鉴权对应的鉴权元组中的RAND。
其中,本次鉴权对应的用户终端的标识可以是用户终端的国际移动用户标识(IMSI)。本次鉴权失败的原因包括“终端对网络鉴权不通过”、“网络对终端鉴权不通过”等不同原因,这些原因通过预先设置的原因值表示。
所述鉴权失败报告中还可以包括VLR或/和SGSN的号码,还可以包括用户终端接入类型以及是否为重新尝试等参数。
步骤106:HLR/AUC接收到VLR/SGSN发送的鉴权失败报告后,处理相应的失败报告。
在上述现有的鉴权过程中,VLR/SGSN在对用户终端鉴权成功后,不向HLR/AUC返回任何信息。因此,HLR/AUC无法知道VLR/SGSN利用自身产生的鉴权元组所进行的对用户终端的鉴权是否成功。当HLR/AUC希望了解对终端鉴权是否成功的结果时,现有技术中的鉴权过程无法满足所述需求。
另外,在现有的鉴权过程中,HLR/AUC将针对一用户终端的鉴权元组发送给VLR/SGSN后,就删除掉所述鉴权元组,并不管该用户终端是否鉴权通过。因此,VLR/SGSN再次请求针对所述用户终端的鉴权元组时,HLR/AUC仍然需要重新产生鉴权元组。这对网络攻击者提供一个安全漏洞。
例如,有些非法用户终端在登录失败后,不断重复登录网络,这时,由于VLR/SGSN在鉴权失败后删除相应用户终端的鉴权元组,因此当该用户终端不断重复登录网络时,VLR/SGSN也不断向HLR/AUC请求鉴权元组,而HLR/AUC已删除针对该用户终端的鉴权元组,从而HLR/AUC也需要频繁计算新的鉴权元组,增加HLR/AUC的负荷,同时,会给所述的非法用户终端提供大量的鉴权元组数据,从而增加了非法用户解密鉴权密钥的机会。
发明内容
有鉴于此,本发明的第一个主要目的在于提供一种鉴权方法,鉴权中心能够判断出鉴权代理对用户终端的鉴权是否成功。
本发明的第二个主要目的在于提供一种发送鉴权成功信息的方法,能够实现鉴权成功信息的发送。
为了达到上述第一个目的,本发明提供一种鉴权方法,该方法包括:
鉴权代理向鉴权中心请求用户终端对应的鉴权元组;
鉴权中心根据鉴权代理的鉴权元组请求,将对应该用户终端的鉴权元组中至少一个鉴权元组发送给鉴权代理;
鉴权代理根据所接收到的鉴权元组对用户终端鉴权,并判断对用户终端的鉴权是否通过,如果通过,则向鉴权中心发送鉴权成功的信息;否则,向鉴权中心发送鉴权失败报告。
所述鉴权代理向鉴权中心发送鉴权成功的信息后,该方法进一步包括:鉴权中心接收到所述鉴权成功的信息后,删除本次鉴权对应的鉴权元组。
所述鉴权代理向鉴权中心发送鉴权成功的信息为:鉴权代理向鉴权中心发送携带鉴权成功的信息的消息。
所述消息为:鉴权失败报告。
鉴权代理向鉴权中心发送鉴权失败报告后,该方法进一步包括:鉴权中心根据所接收到的鉴权失败报告,判断本次鉴权是否成功。
所述鉴权失败报告中的鉴权失败原因值中增加用于表示鉴权成功的原因值;
所述鉴权失败报告携带鉴权成功的信息为:所述鉴权失败报告中的鉴权失败原因值设置为所述用于表示鉴权成功的原因值。
鉴权代理向鉴权中心发送鉴权失败报告后,该方法进一步包括:鉴权中心根据所接收到的鉴权失败报告中的鉴权失败原因值,判断本次鉴权是否成功。
所述鉴权中心根据所接收到的鉴权失败报告中的鉴权失败原因判断本次鉴权是否成功为:鉴权中心判断所接收到的鉴权失败报告中的鉴权失败原因值是否为所述用于表示鉴权成功的原因值。
所述鉴权中心确定本次鉴权成功后,进一步包括:鉴权中心删除本次鉴权对应的鉴权元组。
所述鉴权中心删除本次鉴权对应的鉴权元组为:鉴权中心从鉴权失败报告中获取本次鉴权对应的随机数,并删除该随机数对应的鉴权元组。
所述鉴权代理确定对用户终端的鉴权通过后,在发送鉴权成功信息之前进一步包括:鉴权代理判断用于本次鉴权的鉴权元组是否为首鉴权元组,如果是,则向鉴权中心发送鉴权成功的信息,否则,不向鉴权中心发送任何信息。
所述鉴权代理向鉴权中心发送鉴权成功的信息后,该方法进一步包括:所述鉴权中心接收到所述鉴权成功的信息后,将本次鉴权对应的用户终端对应的鉴权元组中已经发送给该鉴权代理的鉴权元组删除。
所述鉴权中心将鉴权元组发送给鉴权代理后,进一步包括:鉴权中心将发送给该鉴权代理的鉴权元组删除。
鉴权中心在接收到所述鉴权代理的鉴权元组请求之前,进一步包括:鉴权中心计算得到该用户终端的鉴权元组;
或者,鉴权中心在接收到所述鉴权代理的鉴权元组请求之后,进一步包括:鉴权中心计算得到该用户终端的鉴权元组。
所述鉴权中心为HLR/AUC,所述鉴权代理为VLR/SGSN。
为了达到上述第二个目的,本发明提供一种发送鉴权成功信息的方法,该方法包括:通过鉴权失败报告携带鉴权成功信息,并发送所述携带鉴权成功信息的鉴权失败报告。
所述鉴权失败报告中的鉴权失败原因值范围中增加用于表示鉴权成功的原因值;
所述通过鉴权失败报告携带鉴权成功信息为:将所述鉴权失败报告中的鉴权失败原因值设置为所述用于表示鉴权成功的原因值。
根据本发明提供的鉴权方法,当鉴权代理根据从鉴权中心获取的鉴权元组进行的对用户终端的鉴权成功后,向鉴权中心发送鉴权成功的信息,从而鉴权中心能够了解鉴权代理对用户终端的鉴权是否成功的状况。鉴权中心可以只在确定鉴权成功后,才删除对应的鉴权元组。这样,当攻击者鉴权失败并不断重复登录网络时,鉴权中心也不用重新产生鉴权元组,从而提高应对攻击的处理能力,提高了网络安全性。
而且,根据本发明提供的发送鉴权成功信息的方法,通过现有的鉴权失败报告发送鉴权成功信息,从而对现有协议的改动最少。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面举具体实施例,对本发明作进一步详细的说明。
本发明提供的鉴权方法适用于鉴权中心通过鉴权代理实现对用户终端的鉴权的情况。其中,鉴权中心可以是HLR/AUC,鉴权代理可以是VLR/SGSN。
本发明提供的鉴权方法中,当鉴权代理确定对用户终端的鉴权通过后,向鉴权中心发送鉴权成功的信息。
图2所示为当鉴权通过时,鉴权代理向鉴权中心返回鉴权成功信息的鉴权流程,该流程包括以下步骤:
步骤201:当用户终端登录网络时,鉴权代理向鉴权中心请求鉴权元组。
步骤202:鉴权中心根据鉴权代理的鉴权元组请求,将对应该用户终端的鉴权元组中至少一个鉴权元组发送给鉴权代理。
鉴权中心可以是在接收到鉴权代理的鉴权元组请求之前,计算得到该用户终端的鉴权元组,也可以是在接收到鉴权代理的鉴权元组请求之后,计算得到该用户终端的鉴权元组,其中,所得到的鉴权元组个数为至少一个。
步骤203:鉴权代理根据所接收到的鉴权元组对用户终端鉴权,并判断对用户终端的鉴权是否通过,如果通过,则执行步骤204;否则,执行步骤205。
步骤204:鉴权代理向鉴权中心返回鉴权成功的信息,结束本流程。
步骤205:鉴权代理产生鉴权失败报告,并向鉴权中心返回所述鉴权失败报告。
通过以上流程,鉴权中心根据从鉴权代理返回的信息,知道鉴权代理利用自己产生的鉴权元组进行的对用户终端的鉴权是否成功。即,如果鉴权中心接收到鉴权代理发送的鉴权失败报告,则确认本次鉴权失败,并处理相应的失败报告;否则,如果鉴权中心接收到鉴权代理发送的鉴权成功信息,则确认本次鉴权成功。
在上述的鉴权流程中,鉴权中心将鉴权元组发送给鉴权代理后,可以不用立即删除所发送的鉴权元组,而是先保留所述的鉴权元组。当鉴权中心得到鉴权成功的信息时,鉴权中心删除本次鉴权对应的鉴权元组,而当鉴权中心得到鉴权失败的信息时,鉴权中心不删除本次鉴权对应的鉴权元组,保留鉴权元组。即,当鉴权中心确认鉴权成功时,删除鉴权元组,否则,保留鉴权元组。这样,当鉴权代理对终端的鉴权失败后,如果后续再次向鉴权中心请求同一用户终端的鉴权元组时,鉴权中心可以不用重新计算鉴权元组,直接将所保留的鉴权元组发送给鉴权代理,从而减少鉴权中心的负荷。
以上鉴权流程中,鉴权代理可以通过多种形式将鉴权成功的信息发送给鉴权中心。例如,鉴权代理可以通过发送携带有鉴权成功信息的消息,向鉴权中心发送鉴权成功的信息,或者,鉴权代理可以产生一个鉴权成功报告并发送给鉴权中心,该报告中携带鉴权成功的信息。
本发明给出发送鉴权成功信息的较佳实施例,使得在发送鉴权成功信息时,对现有技术的改动最少,其主要思想是:鉴权代理仍然通过现有技术中的鉴权失败报告,将鉴权成功的信息发送给鉴权中心。
这需要扩展鉴权失败报告原因的范围,即,在现有的鉴权失败报告中的失败原因的基础上,增加一个特殊失败原因,并用所述特殊失败原因表示鉴权成功。
例如,现有的鉴权失败报告中的失败原因值包括“终端对网络鉴权失败”的原因值,“网络对终端鉴权失败”的原因值,本发明可以在现有的鉴权失败报告中的失败原因值的基础上,增加用于表示“鉴权成功”的原因值。
下面结合具体鉴权过程,详细描述如何发送鉴权成功的信息。
图3所示为本发明一实施例中的鉴权过程,包括以下步骤:
步骤301:当用户终端登录网络时,鉴权代理向鉴权中心请求鉴权元组。
步骤302:鉴权中心根据鉴权代理的鉴权元组请求,将对应该用户终端的鉴权元组中至少一个鉴权元组发送给鉴权代理。
步骤303:鉴权代理根据所接收到的鉴权元组对用户终端鉴权,并判断对用户终端的鉴权是否通过,如果通过,则执行步骤304;否则,执行步骤305。
步骤304:鉴权代理产生一个鉴权失败报告,其中,将失败报告原因值设置为所述用于表示“鉴权成功”的原因值,并利用发送鉴权失败报告的方式,将所述含有用于表示“鉴权成功”的原因值的鉴权失败报告发送给鉴权中心。
本步骤还可以包括鉴权代理删除本次鉴权对应的鉴权元组的操作。如果本次鉴权对应的鉴权元组是首鉴权元组,则丢弃本次鉴权对应的首鉴权元组,而保存从鉴权中心所获取的该用户终端对应的其它鉴权元组。
步骤305:鉴权代理根据失败原因产生一个鉴权失败报告,并发送给鉴权中心。
根据步骤303的判断,如果鉴权代理确定对用户终端的鉴权没有通过,则还可以进一步包括以下步骤:鉴权代理判断本次鉴权对应的鉴权元组是否是首鉴权元组,如果是,则将对应该用户终端的所有鉴权元组删去。
步骤306:鉴权中心根据从鉴权代理所接收到的鉴权失败报告中的失败原因值,确定本次鉴权是否成功,如果是,则执行步骤307;否则,执行步骤308。
在此,鉴权中心可通过判断所接收到的鉴权失败报告中的失败原因值是否为所述用于表示“鉴权成功”的原因值来确定本次鉴权是否成功,如果失败原因值为所述用于表示“鉴权成功”的原因值,则确定本次鉴权成功;否则,确定本次鉴权失败。
步骤307:鉴权中心删除本次鉴权对应的鉴权元组,结束本流程。
在此,由于鉴权成功信息由鉴权失败报告携带,鉴权中心可从鉴权失败报告中获取本次鉴权对应的鉴权元组中的RAND,并删除所获取的RAND对应的鉴权元组。
步骤308:鉴权中心处理所接收到的鉴权失败报告,结束本流程。
在步骤308中,鉴权中心按照现有的处理鉴权失败报告的处理流程处理该失败报告。
以上图3所示流程中,鉴权代理对用户终端的鉴权成功后,就将鉴权成功的信息发送给鉴权中心,而鉴权中心接收到鉴权成功的信息后,就删除本次鉴权对应的鉴权元组。
在实际的鉴权过程中,对一个用户终端需要进行多次鉴权。而在通常情况下,鉴权中心根据鉴权代理的鉴权元组的请求,对一个用户终端产生多组鉴权元组并发送给鉴权代理。同时,鉴权代理对用户终端的鉴权通过后,删除本次用于鉴权的鉴权元组,保留从鉴权中心接收到的该用户终端的其它鉴权元组。所以,当根据第一个鉴权元组即首鉴权元组对用户终端的鉴权通过时,鉴权代理向鉴权中心返回鉴权成功信息,使得鉴权中心删除发送给鉴权代理的、对应该用户终端的鉴权元组。这种情况下的鉴权流程图4所示,包括以下步骤:
步骤401:当用户终端登录网络时,鉴权代理向鉴权中心请求鉴权元组。
步骤402:鉴权中心根据鉴权代理的鉴权元组请求,将对应该用户终端的鉴权元组中至少一个鉴权元组发送给鉴权代理。
步骤403:鉴权代理根据所接收到的鉴权元组,判断对用户终端的鉴权是否通过,如果通过,则执行步骤404;否则,执行步骤407。
步骤404:鉴权代理判断用于本次鉴权的鉴权元组是否为首鉴权元组,如果是,则执行步骤405;否则,执行步骤406。
在此,当鉴权中心指定一个鉴权元组为首鉴权元组时,在发送鉴权元组时携带一个是否是首鉴权元组的标识,鉴权代理根据该标识就可判断出用于本次鉴权的鉴权元组是否为首鉴权元组;或者,当鉴权中心和鉴权代理设置有默认规则时,鉴权代理根据默认规则判断用于本次鉴权的鉴权元组是否为首鉴权元组。
步骤405:鉴权代理产生一个鉴权失败报告,其中,将失败报告原因值设置为所述用于表示“鉴权成功”的原因值,并利用发送鉴权失败报告的方式,将所述含有用于表示“鉴权成功”的原因值的鉴权失败报告发送给鉴权中心,转到步骤408。
步骤405中还可以进一步包括:鉴权代理丢弃本次鉴权对应的首鉴权元组,并从鉴权中心所获取的该用户终端对应的鉴权元组中,保存除所述首鉴权元组以外的其它鉴权元组。
步骤406:鉴权代理不向鉴权中心返回任何信息,结束本流程。
在此,鉴权代理不向鉴权中心返回鉴权成功的信息。
步骤406还可以进一步包括:鉴权代理从所保存的鉴权元组中,删除本次鉴权对应的鉴权元组。
步骤407:鉴权代理产生一个鉴权失败报告,并发送给鉴权中心,转到步骤408。
步骤408:鉴权中心根据从鉴权代理所接收到的鉴权失败报告中的失败原因值,确定本次鉴权是否成功,如果是,则执行步骤409;否则,执行步骤410。
步骤409:鉴权中心删除本次鉴权对应的用户终端对应的所有的鉴权元组中已经发送给鉴权代理的鉴权元组,结束本流程。
在此,鉴权中心从携带鉴权成功信息的鉴权失败报告中,获取本次鉴权对应的用户终端的IMSI,并将所述IMSI对应的所有的鉴权元组中已经发送给鉴权代理的鉴权元组全部删除。
步骤410:鉴权中心处理所接收到的鉴权失败报告,结束本流程。
以上流程中,由于当鉴权代理利用首鉴权元组进行的鉴权通过时,鉴权代理向鉴权中心返回鉴权成功的信息,鉴权中心将与所述首鉴权元组一起发送给鉴权代理的鉴权元组全部删除,因此,当鉴权代理再次利用与所述首鉴权元组一起发送给鉴权代理的其它鉴权元组进行鉴权并鉴权通过时,鉴权代理就不用向鉴权中心返回鉴权成功的信息。因为鉴权中心在利用首鉴权元组鉴权成功时,已删除与所述首鉴权元组一起发送给鉴权代理的其它鉴权元组,从而可减少鉴权过程中的消息流量。
需要说明的是,本发明主要阐述通过扩展鉴权失败报告原因值范围来实现表示鉴权成功原因值的方法。实际当中,还可以通过扩展现有技术的失败报告中其它参数来实现表示所述鉴权成功原因值的目的。例如,可以通过扩展接入类型(Access Type)表示鉴权成功,即增加新的接入类型码用于表示“鉴权成功”信息,这时,鉴权中心可以通过判断失败报告中的接入类型码来确定本次鉴权是否成功;或者还可以通过扩展用户错误(User error)表示鉴权成功,即增加新的用户错误码用于表示“鉴权成功”信息,这时,鉴权中心可以通过判断失败报告中的用户错误码来确定本次鉴权是否成功。当然,在鉴权失败报告中携带鉴权成功信息的方式并不局限于扩展上述参数的具体值,还可以扩展现有鉴权失败报告中的其它参数的值表示鉴权成功。现有技术中关于鉴权失败报告的描述如下表1所示。
Table 8.5/3:MAP_AUTHENTICATION_FAILURE_REPORT parameters
Parameter name |
Request |
Indication |
Response |
Confirm |
Invoke id |
M |
M(=) |
M(=) |
M(=) |
IMSI |
M |
M(=) | | |
Failure cause |
M |
M(=) | | |
Re-attempt |
M |
M(=) | | |
Access Type |
M |
M(=) | | |
Rand |
M |
M(=) | | |
VLR number |
C |
C(=) | | |
SGSN number |
C |
C(=) | | |
User error | | |
C |
C(=) |
Provider error | | | |
O |
表1
表1所示的鉴权失败报告中的具体参数可以参见3GPP相关协议规范,本发明不再对其进行解释。
另外,还可以扩展现有失败报告中的参数,即增加用于表示鉴权成功的参数项。所述的用于表示鉴权成功的参数项可以设置为可选项。这样,当鉴权代理需要向鉴权中心发送鉴权成功信息时,在鉴权失败报告中携带所述用于表示鉴权成功的参数项。
实际应用当中,作为传送鉴权成功信息的鉴权失败报告,其中的有些信息项是可以省去的,例如可以仅包括IMSI、失败原因(Failure cause)、RAND、VLR number或SGSN number等信息项即可,其它的信息项可以省去,这样可以减少传送的信息流量。
需要特别申明的是,鉴权代理向鉴权中心返回鉴权成功信息的方法并不仅仅是用于鉴权中心决定如何删除鉴权元组。本发明的鉴权方法也并不是一定要包括鉴权中心如何删除鉴权元组,而是着重保护在鉴权成功时,向鉴权中心返回鉴权成功信息的鉴权方法,以及鉴权代理在鉴权成功时如何向鉴权中心传送所述鉴权成功信息的方法。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。