一种同步攻击防护方法及相应的鉴权方法

文档序号:7614676阅读:117来源:国知局
专利名称:一种同步攻击防护方法及相应的鉴权方法
技术领域
本发明涉及通信安全技术,具体涉及一种防止终端利用同步请求命令对网络进行攻击的方法。
背景技术
现有的第三代移动通信系统中,在移动终端中保存国际移动用户标识IMSI、鉴权密钥KI和序列号SQNMS,网络侧的HLR/AUC中针对该移动终端对应保存IMSI、KI和序列号SQNHE,以用于移动终端和网络相互鉴权。
3G通信系统的现有鉴权流程主要为HLR/AUC产生随机数RAND,根据随机数RAND和KI产生期望响应XRES、加密密钥CK、完整性密钥IK;根据随机数RAND、序列号SQNHE、鉴权密钥KI和鉴权管理域AMF产生出MAC-A,根据MAC-A,SQNHE、AK和AMF得到鉴权标记AUTN(Authentication Token)。由RAND和XRES、CK、IK和AUTN组成鉴权五元组,将该五元组发送给MSC/VLR保存。当然,实际当中,HLR/AUC是应MSC/VLR的请求才将产生的相应的一个或多个五元组发送给MSC/VLR的。鉴权时,MSC/VLR将对应五元组中RAND和AUTN发送给终端,终端根据自己保存的KI验证AUTN的一致性,如果一致性验证不通过,则向MSC/VLR返回鉴权失败信息;若一致性验证通过,则判断SQNHE是否属于可接受的范围若属于,则终端判断出对网络鉴权通过,终端向MSC/VLR返回终端自己产生的鉴权响应,并根据AUTN中的SQNHE更新SQNMS,MSC/VLR比较终端返回的鉴权响应和对应五元组中的XRES是否一致来判断终端的合法性;若判断出SQNHE不属于可接受范围,则根据SQNMS产生再同步标记AUTS(Resynchronisation Token),对网络侧MSC/VLR返回再同步请求或同步失败(Synchronisation failure)消息,同时附上产生的再同步标记AUTS,也即消息中包含AUTS。网络侧MSC/VLR接收到再同步标记AUTS时,将AUTS和对应五元组中的RAND发送给HLR/AUC,HLR/AUC根据对应保存的KI和接收到的RAND,判断AUTS的合法性,如果不合法,则HLR/AUC向MSC/VLR返回AUTS不合法信息;如果判断出AUTS合法,则HLR/AUC根据AUTS中的SQNMS更新SQNHE,并产生一个新的鉴权五元组发送给MSC/VLR,MSC/VLR接收到新的五元组后,删除对应的旧的五元组。关于鉴权流程,可以参照3GPP规范。
由上可见,第三代移动通信系统中,鉴权流程可以充分保障终端和网络不会受到恶意欺骗,从而保障终端和网络的安全性。
上述鉴权流程可以通过网络对终端的鉴权防止假冒的用户终端欺骗网络,也可以通过终端对网络的鉴权防止假冒网络欺骗用户终端,却无法防止非法用户终端利用同步流程攻击HLR/AUC,例如,1.非法用户利用一个假的IMSI向网络发起位置更新;2.MSC/VLR将鉴权元组中RAND和AUTN发送给非法用户;3.非法用户产生一个随机数代替AUTS,向网络MSC/VLR发起同步SQNMS的请求;4.MSC/VLR将对应五元组中随机数RAND和接收自终端的AUTS发送给HLR/AUC;5.HLR/AUC执行同步流程。
上述攻击流程中,虽然,在第5步中HLR/AUC可以识别出同步是不合法的,但是识别过程本身就消耗了HLR/AUC的资源,况且还包括MSC/VLR和HLR/AUC之间的协议交互所消耗的资源。如果攻击者不断变换用户身份来制造假同步,那么,就有可能导致HLR/AUC忙于处理同步流程,而无暇顾及其它的业务请求,从而会导致HLR/AUC假吊死现象发生。
综上所述,如何防止非法用户通过同步请求对网络进行攻击是一个值得解决的问题。

发明内容
有鉴于此,本发明要解决技术问题是防止非法用户利用同步请求攻击网络。
为了解决上述问题本发明提供的技术方案为一种同步攻击防护方法,应用于3G网络中终端与网络间的鉴权,,所述方法至少包括以下步骤a.HLR/AUC产生随机数RAND,根据随机数、第二鉴权密钥产生期望响应XRES,加密密钥CK、完整性密钥IK,并根据随机数、鉴权密钥、鉴权管理域AMF和第二序列号SQNHE生成消息鉴权编码MAC-A,根据第二序列号、鉴权管理域和消息鉴权编码产生鉴权标记AUTN,将所述随机数、期望响应,加密密钥、完整性密钥和鉴权标记作为鉴权五元组发送给MSC/VLR;b.MSC/VLR将所述随机数、鉴权标记发送给终端;c.终端根据第一鉴权密钥和接收到的随机数、接收到的AUTN中的第二序列号以及鉴权管理域对接收到的AUTN中的消息鉴权编码进行一致性验证,并在验证通过后,根据第一鉴权密钥和所述随机数生成鉴权响应ARES;d.终端根据第一序列号SQNMS判断第二序列号是否可以接受,并在第二序列号不可接收时,根据第一鉴权密钥、第一序列号,接收的AUTN中的AMF和所述随机数生成同步鉴权编码MAC-S,根据MAC-S和SQNMS产生同步标记AUTS,对MSC/VLR发送同步请求消息且附上所述同步标记以及所述鉴权响应的校验码;e.MSC/VLR在接收到所述同步请求消息时,根据期望响应判断所述鉴权响应的校验码的合法性,如果不合法则判断出所述再同请求消息非法并结束相关处理;否则,MSC/VLR向HLR/AUC发送同步请求消息,并附上所述同步标记和对应鉴权五元组中的随机数;f.HLR/AUC根据第二鉴权密钥判断所述同步请求消息的完整性,并根据所述同步请求消息的完整性作相关处理。
本发明提供的同步攻击防护方法,在发送同步请求时附上了鉴权响应的校验码,网络侧在判断同步请求的合法性时,先通过MSC/VLR根据鉴权响应的校验码来判断同步请求合法性,如果鉴权响应不合法则可判断出同步请求信息来源不合,则不再进行后续处理,即网络侧的HLR/AUC不再对同步请求进行完整性验证,使得网络侧在接收到非法用户发送的同步请求时,MSC/VLR即可识别出,而不必再耗费HLR/AUC的资源对来自非法用户的再同步请求命令进行完整性验证,进而达到防止非法用户通过大量的再同步请求消息来攻击网络的目的。
优选地,步骤c中还包括当终端对消息鉴权编码的一致性验证未通过时,判断对网络侧MSC/VLR鉴权失败,向MSC/VLR发送鉴权失败信息,并结束相关处理。
优选地,步骤d中还包括终端判断出第二序列号可以接受时,根据所述第二序列号更新第一序列号,且对MSC/VLR发送所述鉴权响应;MSC/VLR判断所述鉴权响应和期望响应是否一致,如果一致,判断对终端的鉴权通过,并结束相应处理,否则,判断对终端的鉴权不通过,并结束相应处理。
优选地,其中根据所述第二序列号更新第一序列号是指将第一序列号设置为与第二序列号相等。
优选地,所述HLR/AUC根据第二鉴权密钥判断所述同步请求消息的完整性是指是指,HLR/AUC根据第二鉴权密钥、所述鉴权管理域、所述随机数以及所述同步标记中第一序列号采用和终端计算所述同步鉴权编码一致的算法进行计算,得到一个计算结果,比较所述计算结果和所述同步标记中同步鉴权编码是否相同,如果相同,则判断出所述同步请求消息完整,否则,判断出所述同步请求消息不完整。
优选地,在步骤f中,HLR/AUC判断出所述同步请求消息不完整时,结束相关处理,否则,根据第一序列号更新第二序列号,产生新的鉴权五元组并发送至少一个新鉴权五元组给MSC/VLR用于鉴权。
优选地,所述根据所述第一序列号更新第二序列号是指将第二序列号设置为与第一序列号相等,或者是将第二序列号设置为与第一序列号相等后,再将第二序列号增加一个固定不变的或固定变化的或随机变化的增量数值。
优选地,所述步骤c中,终端对所述消息鉴权编码进行一致性验证进一步是终端根据第一鉴权密钥、鉴权管理域、所述随机数和第二序列号采用和HLR/AUC产生消息鉴权编码一致的方法产生一个运算结果,比较所述运算结果和所述消息鉴权编码是否一致,如果一致,则对所述消息鉴权编码的一致性验证通过,否则,对所述消息鉴权编码的一致性验证不通过。
优选地,所述步骤d中,所述终端根据第一序列号判断第二序列号是否可以接受进一步是判断第二序列号和第一序列号的差值是否在一定的范围内,如果是,则判断出第二序列号可接受,否则,判断出第二序列号不可以接受。
优选地,所述鉴权响应的校验码是鉴权响应本身,或者是鉴权响应中相应的某些位,对应地步骤e中根据期望响应判断所述鉴权响应的校验码的合法性是指判断鉴权响应的校验码是否和期望响应相同,或者判断鉴权响应的校验码是否和期望响应中相应的某些位相同,如果是,则判断所述鉴权响应的校验码合法,否则,判断所述鉴权响应的校验码非法。
优选地,所述步骤a中进一步包括更新第二序列号的步骤。
优选地,所述更新第二序列号是指将第二序列号增加一个固定不变的或固定变化的或随机变化的增量数值。
为了解决上述问题,本发明提供的另一解决方案为一种鉴权方法,用于可相互通信的模块之间的鉴权,所述模块至少包括可鉴权及产生鉴权响应的第一模块,所述第一模块中保存了第一鉴权密钥、第一同步密钥和第一序列号,可用于产生鉴权参数、执行同步处理的第二模块,所述第二模块中对应保存了第二鉴权密钥、第二同步密钥和第二序列号,以及可执行鉴权验证的第三模块,所述方法至少包括以下步骤a.第二模块产生随机数,根据随机数、第二鉴权密钥产生期望响应,并根据随机数、第二鉴权密钥和第二序列号生成消息鉴权编码,将所述随机数、第二序列号、期望响应和生成的消息鉴权编码发送给第三模块;b.第三模块将所述随机数、第二序列号和消息鉴权编码发送给第一模块;c.第一模块根据第一鉴权密钥和所述随机数以及第二序列号对所述消息鉴权编码进行一致性验证,并在验证通过后,根据第一鉴权密钥和所述随机数生成鉴权响应;d.第一模块根据第一序列号判断第二序列号是否可以接受,并在第二序列号不可接收时,根据第一同步密钥、第一序列号和所述随机数生成同步鉴权编码,对第三模块发送同步请求消息且附上所述同步鉴权编码、第一序列号以及所述鉴权响应的校验码;e.第三模块在接收到所述同步请求消息时,根据期望响应判断所述鉴权响应的校验码的合法性,如果不合法则判断出所述再同请求消息非法并结束相关处理;否则,第三模块向第二模块发送同步请求消息;f.第二模块根据第二同步密钥判断所述同步请求消息的完整性,并根据所述同步请求消息的完整性作相关处理。
上述鉴权方法,第一模块在发送同步请求消息时附上了鉴权响应的校验码,第二模块在判断同步请求消息的完整性之前,先由第三模块先根据鉴权响应的校验码来判断同步请求消息的合法性,如果鉴权响应的校验码不合法则可判断出同步请求信息来源不合法,则不再进行后续处理,即第二模块不再对同步请求消息进行完整性验证,因此,非法用户发送的同步请求消息在到达第三模块时即可拦截,而不必再耗费第二模块的资源对来自非法用户的同步请求消息进行完整性验证,进而达到防止非法用户通过大量的同步请求消息来攻击鉴权模块的目的。
优选地,所述步骤c中还包括当第一模块对消息鉴权编码的一致性验证未通过时,判断对第三模块鉴权失败,并结束相关处理。
优选地,步骤c中第一模块在所述结束相关处理前,进一步包括第一模块对第三模块发送鉴权失败信息。
优选地,步骤d中还包括第一模块判断出第二序列号可以接受时,根据所述第二序列号更新第一序列号,且对第三模块发送所述鉴权响应;第三模块判断所述鉴权响应和期望响应是否一致,如果一致,判断对第一模块的鉴权通过,并结束相应处理,否则,判断对第一模块鉴权不通过,并结束相应处理。
优选地,所述根据所述第二序列号更新第一序列号是指将第一序列号设置为与第二序列号相等。
优选地,步骤e中,第三模块向第二模块发送同步请求消息时,附上所述随机数,同步鉴权编码和第一序列号。
优选地,步骤a中,第二模块在将所述随机数、第二序列号和生成的消息鉴权编码发送给第三模块时,保存了所述随机数;步骤e中,第三模块向第二模块发送同步请求消息时,附上所述同步鉴权编码和第一序列号。
优选地,所述第二模块根据第二同步密钥判断所述同步请求消息的完整性是指是指,第二模块根据第二同步密钥、所述随机数以及第一序列号采用和第一模块计算所述同步鉴权编码一致的算法进行计算,得到一个计算结果,比较所述计算结果和同步鉴权编码是否相同,如果相同,则判断出所述同步请求消息完整,否则,判断出所述同步请求消息不完整。
优选地,在步骤f中,第二模块判断出所述同步请求消息不完整时,结束相关处理,否则,根据第一序列号更新第二序列号。
优选地,所述根据所述第一序列号更新第二序列号是指将第二序列号设置为与第一序列号相等,或者是将第二序列号设置为与第一序列号相等后,再将第二序列号增加一个固定不变的或固定变化的或随机变化的增量数值。
优选地,所述步骤c中,第一模块对所述消息鉴权编码进行一致性验证进一步是第一模块根据第一鉴权密钥、所述随机数和第二序列号采用和第二模块根据所述随机数、第二鉴权密钥和第二序列号产生消息鉴权编码一致的方法产生一个运算结果,比较所述运算结果和所述消息鉴权编码是否一致,如果一致,则对所述消息鉴权编码的一致性验证通过,否则,对所述消息鉴权编码的一致性验证不通过。
优选地,所述步骤d中,第一模块根据第一序列号判断第二序列号是否可以接受进一步是判断第二序列号和第一序列号的差值是否在一定的范围内,如果是,则判断出第二序列号可接受,否则,判断出第二序列号不可以接受。
优选地,所述鉴权响应的校验码是鉴权响应本身,或者是鉴权响应中相应的某些位,对应地步骤e中根据期望响应判断所述鉴权响应的校验码的合法性是指判断鉴权响应的校验码是否和期望响应相同,或者判断鉴权响应的校验码是否和期望响应中相应的某些位相同,如果是,则判断所述鉴权响应的校验码合法,否则,判断所述鉴权响应的校验码非法。
优选地,所述步骤a中进一步包括更新第二序列号的步骤。
优选地,所述更新第二序列号是指将第二序列号增加一个固定不变的或固定变化的或随机变化的增量数值。
优选地,第一序列号初始值为0或一个随机数,相应的第二序列号初始值是大于第一序列号的任意数。
优选地,在第一模块中,第一鉴权密钥和第一同步密钥可以是同一个密钥;相应地,在第二模块中,第二鉴权密钥和第二同步密钥也可以是同一个密钥。
为了解决上述问题,本发明还提供一解决方案为一种鉴权方法,用于可相互通信的模块之间的鉴权,所述模块至少包括可鉴权及产生鉴权响应的第一模块,所述第一模块中保存了第一鉴权密钥、第一同步密钥和第一序列号,可用于产生鉴权参数、执行鉴权验证和执行同步处理的第二模块,所述第二模块中对应保存了第二鉴权密钥、第二同步密钥和第二序列号,所述方法至少包括以下步骤a.第二模块产生随机数,根据随机数、第二鉴权密钥产生期望响应,并根据随机数、第二鉴权密钥和第二序列号生成消息鉴权编码;将所述随机数、第二序列号和消息鉴权编码发送给第一模块;b.第一模块根据第一鉴权密钥和所述随机数以及第二序列号对所述消息鉴权编码进行一致性验证,并在验证通过后,根据第一鉴权密钥和所述随机数生成鉴权响应;c.第一模块根据第一序列号判断第二序列号是否可以接受,并在第二序列号不可接收时,根据第一同步密钥、第一序列号和所述随机数生成同步鉴权编码,对第二模块发送同步请求消息且附上所述同步鉴权编码、第一序列号以及所述鉴权响应的校验码;d.第二模块在接收到所述同步请求消息时,根据期望响应判断所述鉴权响应的校验码的合法性,如果不合法则判断出所述再同请求消息非法并结束相关处理;否则,根据第二同步密钥判断所述同步请求消息的完整性,并根据所述同步请求消息的完整性作相关处理。
上述鉴权方法,第一模块在发送同步请求消息时附上了鉴权响应的校验码,第二模块在判断同步请求消息的完整性之前,先根据鉴权响应的校验码来判断同步请求消息的合法性,如果鉴权响应的校验码不合法则可判断出同步请求信息来源不合法,则不再进行后续处理,即第二模块不再对同步请求消息进行完整性验证,因此,第二模块在接收到来自非法用户同步请求信息时,不必再耗费资源对来自非法用户的同步请求消息进行完整性验证,进而达到防止非法用户通过大量的同步请求消息消耗第二模块资源以攻击第二模块的目的。
优选地,所述步骤b中还包括当第一模块对消息鉴权编码的一致性验证未通过时,判断对第二模块鉴权失败,并结束相关处理。
优选地,步骤b中第一模块在所述结束相关处理前,进一步包括第一模块对第二模块发送鉴权失败信息。
优选地,步骤c中还包括第一模块判断出第二序列号可以接受时,根据所述第二序列号更新第一序列号,且对第二模块发送所述鉴权响应;第二模块判断所述鉴权响应和期望响应是否一致,如果一致,判断对第一模块的鉴权通过,并结束相应处理,否则,判断对第一模块鉴权不通过,并结束相应处理。
优选地,所述根据所述第二序列号更新第一序列号是指将第一序列号设置为与第二序列号相等。
优选地,在步骤d中,所述第二模块根据第二同步密钥判断所述同步请求消息的完整性是指是指,第二模块根据第二同步密钥、所述随机数以及第一序列号采用和第一模块计算所述同步鉴权编码一致的算法进行计算,得到一个计算结果,比较所述计算结果和所述同步鉴权编码是否相同,如果相同,则判断出所述同步请求消息完整,否则,判断出所述同步请求消息不完整。
优选地,在步骤d中,第二模块判断出所述同步请求消息不完整时,结束相关处理,否则,根据第一序列号更新第二序列号。
优选地,所述根据所述第一序列号更新第二序列号是指将第二序列号设置为与第一序列号相等,或者是将第二序列号设置为与第一序列号相等后,再将第二序列号增加一个固定不变的或固定变化的或随机变化的增量数值。
优选地,所述步骤b中,第一模块对所述消息鉴权编码进行一致性验证进一步是第一模块根据第一鉴权密钥、所述随机数和第二序列号采用和第二模块根据所述随机数、第二鉴权密钥和第二序列号产生消息鉴权编码一致的方法产生一个运算结果,比较所述运算结果和所述消息鉴权编码是否一致,如果一致,则对所述消息鉴权编码的一致性验证通过,否则,对所述消息鉴权编码的一致性验证不通过。
优选地,所述步骤c中,第一模块根据第一序列号判断第二序列号是否可以接受进一步是判断第二序列号和第一序列号的差值是否在一定的范围内,如果是,则判断出第二序列号可接受,否则,判断出第二序列号不可以接受。
优选地,所述鉴权响应的校验码是鉴权响应本身,或者是鉴权响应中相应的某些位,对应地步骤d中根据期望响应判断所述鉴权响应的校验码的合法性是指判断鉴权响应的校验码是否和期望响应相同,或者判断鉴权响应的校验码是否和期望响应中相应的某些位相同,如果是,则判断所述鉴权响应的校验码合法,否则,判断所述鉴权响应的校验码非法。
优选地,所述步骤a中进一步包括更新第二序列号的步骤。
优选地,所述更新第二序列号是指将第二序列号增加一个固定不变的或固定变化的或随机变化的增量数值。
优选地,第一序列号初始值为0或一个随机数,相应的第二序列号初始值是大于第一序列号的任意数。
优选地,在第一模块中,第一鉴权密钥和第一同步密钥可以是同一个密钥;相应地,在第二模块中,第二鉴权密钥和第二同步密钥也可以是同一个密钥。


图1是本发明的具体实施方式
一的流程图。
图2是本发明具体实施方式
一的具体实施例的流程图。
图3是本发明的具体实施方式
二的流程图。
图4是本发明具体实施方式
二的具体实施例的流程图。
图5是本发明的具体实施方式
三的流程图。
图6是本发明具体实施方式
三的具体实施例的流程图。
具体实施例方式
移动通信网络中,在移动终端中保存国际移动用户标识IMSI、鉴权密钥KI和序列号SQNMS,网络侧的HLR/AUC中针对该移动终端对应保存IMSI、KI和序列号SQNHE,以用于移动终端和网络相互鉴权。
在本发明提供的同步攻击防护方法中,终端对网络发起同步请求命令时不仅附上再同步标记,还附上鉴权响应的校验码,网络侧先根据鉴权响的校验码判断再同步请求的合法性,如果不合法则可立即判断出再同步请求命令非法,如果所述鉴权响应的校验码合法则进一步根据再同步标记来验证再同步请求命令的完整性。
本发明还提供相应的鉴权方法,并不仅应用于第三代移动通信系统,还可用于任何可相互通信的两模块之间的鉴权,例如Wimax,……等无线通信网络间的模块,或者是有线通信网络间的模块。
本发明的方法应用于终端与网络之间的鉴权时MSC/VLR将对应五元组中RAND和AUTN发送给终端,终端根据自己保存的KI验证AUTN的一致性,如果一致性验证不通过,则向MSC/VLR返回鉴权失败信息;若一致性验证通过,终端根据KI和RAND产生鉴权响应ARES,并判断SQNHE是否属于可接受的范围若SQNHE属于可接受的范围,则终端判断出对网络鉴权通过,终端向MSC/VLR返回终端自己产生的鉴权响应ARES,并根据AUTN中的SQNHE更新SQNMS;MSC/VLR比较终端返回的鉴权响应和对应五元组中的XRES是否一致来判断终端的合法性;若一致则判断出对终端的鉴权通过,否则判断出对终端鉴权失败。
若判断出SQNHE不属于可接受范围,则根据SQNMS产生再同步标记AUTS(Resynchronisation Token),对网络侧MSC/VLR返回再同步请求或同步失败(Synchronisation failure)消息,同时附上产生的再同步标记AUTS,并且附上所述鉴权响应ARES。网络侧MSC/VLR接收到所述再同步请求时,先判断所述鉴权响应ARES与自身保存的XRES是否一致,如果一致,则向HLR/AUC请求新鉴权元组,并附上对应本次鉴权的五元组中的RAND和接收自终端的AUTS,HLR/AUC接收到MSC/VLR的请求后,判断AUTS的合法性,如果不合法,则HLR/AUC向MSC/VLR返回AUTS不合法信息;如果判断出AUTS合法,则HLR/AUC根据AUTS中的SQNMS更新SQNHE,并产生一个新的鉴权五元组发送给MSC/VLR,MSC/VLR接收到新的五元组后,删除对应的旧的五元组。如果所述鉴权响应ARES与自身保存的XRES不一致,则MSC/VLR判断出再同步请求本身不合法。MSC/VLR判断再同步请求不合法时,可以直接终止同步流程,从而可以将非法同步屏蔽在HLR/AUC之外,使HLR/AUC免受假同步的攻击。由于MSC/VLR从HLR/AUC中得到的鉴权五元组中已经包括了期望鉴权响应值XRES,因此,MSC/VLR不需要计算XRES,而是直接通过对终端返回的ARES和XRES进行比较来判断同步请求的合法性,因此,假同步对MSC/VLR资源的消耗要远小于HLR/AUC判断AUTS合法性的资源消耗。
下面结合附图对本发明的具体实施方式
进行详细的说明请参阅图1,图1为本发明具体实施方式
一的流程图。
首先,在步骤102,鉴权时,网络侧MSC/VLR将产生的鉴权元组中的相应鉴权参数发送给终端。
所述鉴权元组可以包括随机数RAND、期望响应XRES和鉴权标记AUTN(Authentication Token),也可以进一步包括、加密密钥CK和完整性密钥IK。
所述相应鉴权参数包括RAND和AUTN。
产生鉴权元组时,HLR/AUC用随机数发生器产生的RAND和自身保存的鉴权密钥KI分别计算出XRES,根据RAND、KI、序列号SQNHE、鉴权管理域AMF产生AUTN,也可以进一步根据RAND和自身保存的鉴权密钥KI分别计算出CK和IK。
所述鉴权标记AUTN长16字节,包括以下内容1)SQNHE^AK,也即用AK加密了的SQNHE,其中序列号SQNHE与匿名密钥AK分别长6字节,SQNHE指保存在网络侧的SQN,以区别于保存在终端的SQNMS;当需要对SQNHE进行加密时,HLR/AUC根据RAND和KI产生AK,使用AK对SQNHE作异或运算,从而加密SQNHE;当不需要对SQNHE进行加密时,AK=0;2)鉴权管理域AMF长2字节。3)消息鉴权编码MAC-A长8字节;MAC-A用于验证RAND、SQNHE、AMF的数据完整性,用于终端对HLR/AUC进行鉴权。HLR/AUC根据RAND、SQNHE、KI和AMF计算出AUTN中的消息鉴权编码MAC-A。这样,由RAND、AUTN、XRES、CK、IK等组成了鉴权五元组。
HLR/AUC可以是在接收到MSC/VLR请求鉴权元组的请求时,将产生的鉴权五元组和对应的国际移动用户识别码IMSI发送给MSC/VLR。MSC/VLR为电路域设备,对于分组域的网络,对应的设备可以为SGSN。鉴权时,网络侧的MSC/VLR将接收自HLR/AUC的鉴权元组中的随机数RAND和鉴权标记AUTN传送给终端MS。
步骤103,终端MS接收到网络侧发送的相应鉴权参数即随机数RAND和鉴权标记AUTN并判断出对RAND和AUTN的一致性验证通过后,产生鉴权响应ARES。
具体地说,终端根据接收到的RAND与自身保存的鉴权密钥KI和接收到的AUTN中的SQNHE以及AMF采用与HLR/AUC计算AUTN中MAC-A一致的算法计算出MAC-A,然后进行一致性验证,即,比较自己计算得到的MAC-A与接收到的AUTN中的MAC-A是否一致,例如是否相同,若不一致,则向MSC/VLR返回鉴权失败信息;若一致则根据KI和RAND产生鉴权响应ARES。
步骤104,终端产生再同步标记AUTS,向网络发起再同步请求消息,并附上产生的AUTS和ARES的校验码,所述ARES的校验码可以是ARES本身,也可以是ARES的一部分,例如是ARES中的某些位,简单地,可以是ARES的前几位或后几位。
所述再同步标记AUTS包括以下内容1)SQNMS^AK,也即用AK加密了的SQNMS,其中序列号SQNMS与匿名密钥AK分别长6字节,SQNMS指保存在终端侧的SQN,以区别于保存在网络侧的SQNHE;当需要对SQNMS进行加密时,终端根据RAND和KI产生AK,使用AK对SQNMS作异或运算,从而加密SQNMS;当不需要对SQNMS进行加密时,AK=0;2)消息鉴权编码MAC-S长8字节;MAC-S用于验证RAND、SQNMS的数据完整性,用于HLR/AUC对终端进行鉴权,也即,用于HLR/AUC通过验证AUTS的一致性来验证再同步请求命令的完整性。
终端根据自己的SQNMS、KI和接收到的RAND以及AMF等计算得到MAC-S,再根据SQNMS、AK和MAC-S产生再同步标记AUTS。
终端产生再同步标记AUTS后,对网络侧MSC/VLR返回再同步请求命令或同步失败(Synchronisation failure)消息,同时附上产生的AUTS和ARES的校验码。
步骤105,网络侧MSC/VLR接收到终端发送的再同步请求命令后,根据鉴权响应的校验码判断同步请求命令的合法性。如果判断出再同步请求命令合法,则执行步骤106,如果判断出再同步请求命令不合法,则执行步骤107。
具体地说,网络侧MSC/VLR接收到再同步请求命令时,MSC/VLR先判断所接收到的ARES的校验码与保存的对应鉴权元组中的XRES是否一致,如果不一致则认为再同步请求命令本身不合法,也即,该再同步请求命令可能是一个非法攻击者所发送的假同步请求;如果一致,则认为再同步请求合法,也即该再同步请求命令源自一个合法终端。
所述ARES的校验码和相应的XRES一致可以是ARES的校验码和该XRES相同,例如ARES的校验码是ARES本身;也可以是ARES的校验码和该XRES中相应的某些位相同,例如ARES的校验码是ARES相应的某些位,或简单地是ARES的前几位或后几位。
步骤106,MSC/VLR和HLR/AUC按照现有同步处理流程处理。即MSC/VLR向HLR/AUC发送再同步请求消息,或请求新鉴权元组的请求,并附上对应鉴权元组中的RAND和接收自终端的AUTS,HLR/AUC执行后续的同步处理操作。
具体地说,MSC/VLR向HLR/AUC发送再同步请求,通过该请求,MSC/VLR将接收自终端的AUTS和对应鉴权元组中的RAND一并发送给HLR/AUC;HLR/AUC判断再同步请求消息的完整性,即,判断接收的AUTS的完整性,也即,对AUTS进行一致性验证,也即HLR/AUC先根据RAND、KI、SQMMS和AMF等采用与终端计算AUTS中MAC-S一致的算法计算得出一个计算结果,再将自己计算得到的计算结果与接收到的AUTS中的MAC-S比较,若一致,判断出AUTS合法,即,通过对AUTS的完整性验证,也即通过对同步请求消息的完整性验证,否则,判断出AUTS非法,即,对AUTS的完整性验证通不过,也即对同步请求消息的完整性验证通不过。HLR/AUC对同步请求消息的完整性验证通不过时,向MSC/VLR返回AUTS不完整的消息或者同步请求消息被篡改。HLR/AUC通过对同步请求消息的完整性验证时按正常同步流程处理,例如,根据SQNMS更新SQNHE,并作后续处理。这里如果SQNMS是经过AK加密的,HLR/AUC还要根据KI和RAND计算出AK,用AK来解密出SQNMS。关于正常同步流程处理可以参照3GPP规范。
步骤107,MSC/VLR结束同步处理流程。
在步骤104中,产生MAC-S时,可也根据RAND、KI、SQNMS计算产生,即,不再根据AMF,对应地在步骤106中,网络侧验证MAC-S合法性时,也根据RAND、KI、SQNMS来验证,而不再根据AMF来进行。
具体实施方式
中,步骤103中还可包括如果对RAND和AUTN的一致性验证未能通过,则判断出对网络鉴权不通过,终端向网络返回鉴权失败信息。
通常情况下,在上述步骤104之前,还可以包括终端判断AUTN中的SQNHE是否属于可接受范围的步骤,如果终端判断出AUTN中的SQNHE不属于可接受范围时,则执行步骤104及其以后步骤,否则,即终端判断出AUTN中的SQNHE属于可接受范围时,终端判断出对网络侧的鉴权通过,根据SQNHE更新SQNMS,例如将SQNMS的值设置为与SQNHE相等,然后将产生的鉴权响应ARES发送给网络侧的MSC/VLR,MSC/VLR通过比较ARES和对应鉴权元组中的XRES是否一致,例如是否相同来判断对终端鉴权是否通过。详细的信息可以参照3GPP规范。
但是,在某些情况下,在终端通过手工设置了SQNMS的值,并认为设置的SQNMS极有可能和AUTN中的SQNHE不同步时,那么,在上述步骤104之前,终端就不需要执行所谓的判断AUTN中的SQNHE是否属于可接受范围的步骤,而是直接就执行步骤104。
上述计算CK、IK、AK、ARES、XRES、MAC-A和MAC-S值的计算可以是已知的摘要计算、加密计算或解密计算,参见《应用密码学》一书,也可以采用3GPP规范建议的算法,当然,也可以是使用业界公知的一些算法来进行。
请参阅图2,图2所示为本发明具体实施方式
一的具体实施例。在该实施例中,终端在判断出AUTN中的SQNHE不属于可接受范围时产生同步标记并向网络侧发送同步请求。
在步骤202,鉴权时,网络侧通过对终端发送鉴权请求,将产生的对应该终端的鉴权元组中的相应的鉴权参数发送给终端。
具体地说,HLR/AUC根据随机数发生器产生随机数RAND,根据RAND和鉴权密钥KI分别计算出期望响应XRES、加密密钥CK、完整性密钥IK。根据随机数RAND、序列号SQNHE、鉴权密钥KI和AMF计算产生出消息鉴权编码MAC-A,再根据MAC-A、SQNHE、匿名密钥AK及鉴权管理域AMF产生AUTN。这里,当需要对SQNHE进行加密时,HLR/AUC根据RAND和KI产生AK,使用AK对SQNHE作异或运算,从而加密SQNHE;当不需要对SQNHE进行加密时,AK=0;HLR/AUC用MAC-A、SQNHE和AMF连接组合成AUTN。这样,由RAND、AUTN、XRES、CK和IK等组成了鉴权五元组。
HLR/AUC可以是在接收到MSC/VLR请求鉴权元组的请求时,将产生的鉴权五元组和对应的IMSI一起发送给MSC/VLR。鉴权时,MSC/VLR向终端发起鉴权请求,通过该鉴权请求消息将对应鉴权五元组中相应的鉴权参数RAND和AUTN发送给终端。
步骤203,终端接收到鉴权请求时,先对RAND和AUTN进行一致性验证。
具体地说,终端接收到来自网络侧MSC/VLR发送的随机数RAND和鉴权标记AUTN时,根据接收到的RAND、自身保存的KI和接收到的AUTN中的SQNHE以及AMF采用与HLR/AUC计算AUTN中MAC-A一致的算法进行计算得到一个计算结果,然后终端将自己计算得到的计算结果与AUTN中的MAC-A进行比较,看二者是否一致,例如是否相同,若不一致,则认为对网络的鉴权未通过,执行步骤204;若一致,则执行步骤205。
步骤204,终端向网络返回“鉴权失败”的信息,然后结束本次流程。实际当中,终端将“鉴权失败”的信息发送给MSC/VLR后,MSC/VLR还可以根据该“鉴权失败”信息向HLR/AUC返回相应的失败报告。
步骤205,终端根据KI和接收到的随机数RAND产生鉴权响应ARES,并判断AUTN中的SQNHE是否在可接受范围内,如果是,则判断出对网络鉴权通过,并执行步骤206,否则,判断出同步失败,并执行步骤210。
具体地说,终端通过比较自己保存的SQNMS和AUTN中的SQNHE是否满足预定的条件来判断AUTN中的SQNHE是否可以接受,该预定条件可以是SQNHE和SQNMS的差值在一个预定范围内,例如,是否(SQNHE-SQNMS)大于0,或者是否(SQNHE-SQNMS)大于0且小于256。如果SQNHE和SQNMS的差值在所述预定范围内,则判断出SQNHE是可接受的;否则判断出SQNHE是不可接受的。
步骤206,终端向网络侧的MSC/VLR发送鉴权响应ARES;然后执行步骤207。
步骤207,网络侧MSC/VLR接收到终端的鉴权响应ARES后判断接收自终端的ARES是否与保存的对应鉴权元组中的期望响应XRES一致,例如是否相同,如果一致,则执行步骤208;否则,执行步骤209。
步骤208,网络侧MSC/VLR判断出对终端鉴权通过,结束本次流程。在结束本次流程,还可以向终端返回鉴权成功信息。
步骤209,判断出对终端鉴权失败,结束本次流程。在结束本次流程,还可以向终端返回鉴权失败信息。
步骤210,终端根据SQNMS产生再同步标记AUTS,对网络发起再同步请求命令,并附上AUTS和ARES的校验码。本实施例中,ARES的校验码为ARES的后半部分。
具体地说,终端根据自己的KI、SQNMS和接收到的RAND以及AMF等计算得到MAC-S,再根据SQNMS、AK和MAC-S产生再同步标记AUTS,然后对网络侧发起再同步请求命令,并附上该AUTS和在步骤205产生的ARES。也即,向MSC/VLR发送同步失败消息,该同步失败消息中包含了AUTS和ARES。然后执行步骤211。
步骤211,网络侧MSC/VLR接收到再同步请求命令时,判断接收到的ARES校验码是否与保存的对应鉴权元组中的XRES一致,也即ARES的校验码与所述XRES的后半部分是否相同。如果不相同,也即不一致,则执行步骤212;如果一致则执行步骤213。
步骤212,网络侧的MSC/VLR判断出同步请求命令非法,即再同步请求本身不合法,即该再同步请求可能来自非法攻击者,然后,结束本次流程。
步骤213,网络侧MSC/VLR向HLR/AUC发送请求新鉴权元组的请求,或者发送同步请求,请求中附上对应鉴权元组中的RAND和接收自终端的AUTS。
步骤214,HLR/AUC通过验证AUTS的合法性来验证再同步请求命令的完整性,如果合法,则执行步骤215;否则,执行步骤216;具体地说,网络侧的HLR/AUC根据接收自MSC/VLR的RAND、保存的KI、接收到的AUTS中的SQNMS和AMF等采用与终端计算AUTS中的MAC-S一致的算法计算得到一个计算结果,然后通过比较自己计算得到的计算结果与接收到的AUTS中的MAC-S是否一致,例如是否相同,来判断AUTS合法性,若所述计算结果与AUTS中的MAC-S值比较一致,则认为AUTS合法,否则认为AUTS不合法性。
步骤215,网络侧的HLR/AUC根据SQNMS更新SQNHE,并重新产生鉴权元组,将新产生的鉴权元组发送给MSC/VLR,然后,结束本次流程。
步骤216,网络侧的HLR/AUC认为再同步标记AUTS信息被篡改,AUTS中的SQNMS不再可信,向MSC/VLR发送再同步请求命令不合法信息,然后,结束本次流程。
显然,在步骤210中,终端对网络发起再同步请求命令,附上的信息可以是AUTS和ARES。相应地,在步骤211中,网络侧MSC/VLR接收到再同步请求命令时,判断接收到的ARES的校验码是否与保存的对应鉴权元组中的XRES一致,是指判断接收到的所述ARES与保存的对应鉴权元组中的XRES是否相等。
上述MSC/VLR为电路域设备,对于分组域的网络,对应的MSC/VLR设备为SGSN,因此本发明可以等同应用于分组域。
上述各个具体实施方式
或实施例中,终端对于AUTN一致性验证,对于SQNHE是否属于可接受范围的判断,HLR/AUC对于AUTS合法性的验证,以及HLR/AUC产生鉴权元组时,对于SQNHE的更新;产生鉴权元组的算法,以及产生AUTS的算法,等等,可以参见3GPP相关协议,由于是公知技术,这里不再赘述。
下面对本发明的具体实施方式
二进行介绍,通过具体实施方式
二对本发明在三个通信模块间的实施及应用予以说明,所述模块包括第一模块、第二模块和第三模块,第二模块与第三模块在物理上可合并也可分立。在第一模块中保存第一鉴权密钥AK1和第一同步密钥SK1,在第二模块对应地保存第二鉴权密钥AK2和第二同步密钥SK2;在第一模块中保存第一序列号SQN1,在第二模块中保存第二序列号SQN2。
请参阅图3,图3为本发明具体实施方式
二的流程图。
步骤300,第二模块将产生的鉴权参数发送给第三模块。
实际当中,第二模块产生鉴权参数信息时,首先产生一个随机数RAND,比如,第二模块设置一个随机数发生器,通过随机数发生器产生该随机数RAND,然后根据RAND、SQN2和AK2进行计算,得到消息鉴权编码MAC-A,并根据RAND和AK2产生期望响应XRES;所述第二模块将鉴权参数XRES、RAND、SQN2和MAC-A发给第三模块。
步骤301,第三模块将鉴权参数中相应的鉴权参数信息发送给第一模块。
实际当中所述第三模块将鉴权参数中的RAND,SQN2和MAC-A等鉴权参数信息发给第一模块;步骤302,第一模块判断出对MAC-A的一致性验证通过时,根据AK1和随机数RAND产生鉴权响应ARES。
具体地说,第一模块对接收自第三模块的鉴权参数信息进行一致性验证,也即,对MAC-A进行一致性验证,这里是根据AK1和接收自第三模块的RAND以及SQN2,按照和第二模块计算MAC-A一致的方法进行计算,得到一个计算结果,并比较自己计算得到的结果和接收自第三模块的MAC-A是否一致,如果不一致,则对MAC-A的一致性验证不通过,判断出对第三模块鉴权不通过;如果一致,则对MAC-A的一致性验证通过。第一模块在判断出对MAC-A的一致性验证通过时,根据第一鉴权密钥AK1和接受到的随机数RAND产生鉴权响应ARES。
步骤303,第一模块产生同步鉴权编码MAC-S,对第三模块发送同步请求消息,并附上SQN1和MAC-S以及ARES的校验码,所述ARES的校验码可以是ARES本身,也可以是ARES的一部分,例如是ARES中的某些位,简单地,可以是ARES的前几位或后几位。
具体的说,第一模块根据RAND、SQN1和SK1进行计算得到一个同步鉴权编码MAC-S,向第三模块发送同步请求消息,消息中包括SQN1和MAC-S以及ARES的校验码。
步骤304,第三模块验证第一模块的同步请求消息的合法性,如果判断出该同步请求消息不合法,则执行步骤305;否则,执行步骤306。
具体地说第三模块验证ARES的校验码与接收自第二模块的鉴权元组中的期望响应XRES是否一致,例如是否相同,如果不一致,则认为再同步请求消息非法;如果一致,则认为同步请求消息合法。
所述ARES的校验码和相应的XRES一致可以是ARES的校验码和XRES相同,例如ARES的校验码是ARES本身;也可以是ARES的校验码和XRES中相应的某些位相同,例如ARES的校验码是ARES中相应的某些位,或简单地是ARES的前几位或后几位。
步骤305,第三模块认为同步处理请求源自一个非法模块,结束同步处理流程。
步骤306,第三模块认为同步处理请求源自一个合法模块,第三模块向第二模块发送同步请求消息,并附上接收自第二模块的鉴权参数中的RAND以及接收自第一模块的SQN1和MAC-S,第二模块执行后续的同步处理流程。
具体地说,第二模块接收到第三模块发送的同步请求消息后,对该同步请求消息进行完整性验证,也即验证同步鉴权编码MAC-S的一致性,如果对MAC-S的一致性验证通过,则根据SQN1更新SQN2;如果对MAC-S一致性验证通不过,则认为同步请求消息被篡改,SQN1不再可信,然后结束处理流程。
第二模块对MAC-S进行一致性验证是根据自己保存的SK2、第三模块发送的RAND和SQN1,按照和第一模块计算MAC-S一致的方法进行计算,得到一个计算结果,并比较自己计算得到的计算结果和第三模块发送的的MAC-S是否一致,例如是否相同,如果一致,则判断出MAC-S合法,即,通过对MAC-S的一致性验证;如果不一致,则判断出MAC-S非法,对MAC-S的一致性验证通不过。
这里,第二模块验证MAC-S一致性时,需要用到的RAND是由第三模块回送得到,实际当中,第二模块也可以事先在将鉴权参数发送给第三模块时保存了对应的RAND,此时,在步骤306中第三模块向第二模块发送的同步请求消息中不需要附上所述RAND。
通常情况下,在上述步骤303之前,还可以包括第一模块根据自己保存的SQN1验证SQN2是否可以接受的步骤,如果第一模块判断出SQN2不属于可接受范围时,则执行步骤303及其以后步骤,否则,即第一模块判断出SQN2属于可接受范围时,第一模块判断出对第三模块的鉴权通过,第一模块根据SQN2更新SQN1,例如,将SQN1设置为与SQN2相等;然后将产生的鉴权响应ARES发送给第三模块,第三模块通过比较ARES和接收自第二模块的鉴权参数中的XRES是否一致,例如是否相同来判断对第一模块鉴权是否通过。
但是,在某些情况下,在第一模块通过手工设置了SQN1的值,并认为设置的SQN1极有可能和SQN2不同步时,那么,在上述步骤303之前,第一模块就不需要执行所谓的判断SQN2是否可以接受的步骤,而是直接就执行步骤303。
SQN1的初始值为可以为0或一个随机数,相应的SQN2初始值是大于SQN1的任意数。
上述计算ARES、XRES、MAC-A和MAC-S值的计算可以是已知的摘要计算、加密计算或解密计算,参见《应用密码学》一书,也可以是使用业界公知的一些算法来进行。
下面对本发明具体实施方式
二的具体实施例予以说明。在该实施例中,第一模块在判断出SQN2不属于可接受范围时产生同步鉴权编码并向第三模块发送同步请求消息。
请参阅图4,图4为本发明具体实施方式
二的实施例流程图。
在步骤400,第二模块将产生的鉴权参数发送给第三模块。
实际当中,第二模块产生鉴权参数信息时,首先产生一个随机数RAND,比如,第二模块设置一个随机数发生器,通过随机数发生器产生该随机数RAND,然后根据RAND、SQN2和AK2进行计算,得到消息鉴权编码MAC-A,并根据RAND和AK2产生期望响应XRES;所述第二模块将鉴权参数XRES、RAND、SQN2和MAC-A发给第三模块。
在步骤401,第三模块将鉴权参数中相应的鉴权参数信息发送给第一模块。实际当中所述第三模块将鉴权参数中的RAND,SQN2和MAC-A等鉴权参数信息发给第一模块;在步骤402,第一模块对接收自第三模块的消息进行一致性验证,如果一致性验证通不过,则执行步骤403;如果一致性验证通过,则执行步骤404。
第一模块根据AK1和接收自第三模块的RAND以及SQN2,按照和第二模块计算MAC-A一致的方法进行计算,得到一个计算结果,并比较自己计算得到的结果和接收的MAC-A是否一致,例如是否相同,如果一致,则所述一致性验证通过,否则,所述一致性验证通不过。
在步骤403,判断出对第三模块鉴权未通过,返回鉴权失败信息。
在步骤404,第一模块根据AK1和RAND产生鉴权响应ARES,并根据自己保存的SQN1验证SQN2是否可以接受,如果可以接受,则执行步骤405;如果判断出SQN2不可以接受,则执行步骤409。
第一模块根据自己保存的SQN1验证SQN2是否可以接受,可以是判断SQN1和SQN2的差值是否在一定的范围内,例如,是否(SQN1-SQN2)大于0,或者是否(SQN1-SQN2)大于0且小于256,等等。如果差值在所述范围内,则判断出SQN2可以接受,否则,判断SQN2不可以接受。
步骤405,第一模块判断出对第三模块鉴权通过,并根据SQN2更新SQN1,并返回所述鉴权响应ARES;然后执行步骤406;所述根据SQN2更新SQN1,可以是将SQN1的值设置为等于SQN2。
步骤406,第三模块判断鉴权响应ARES是否与接收自第二模块的鉴权参数中的期望响应XRES一致,如果一致,则执行步骤407,否则执行步骤408。
步骤407,第三模块对第一模块鉴权通过,结束本次流程。在接收本次流程之前,第三模块还可以对第一模块返回鉴权成功信息。
步骤408,第三模块对第一模块鉴权不通过,结束本次流程。在接收本次流程之前,第三模块还可以对第一模块返回鉴权失败信息。
步骤409,第一模块根据SQN1并根据SK1和接收到的RAND等进行计算得到一个同步鉴权编码MAC-S,向第三模块发送同步请求消息,消息中包括SQN1和MAC-S,以及ARES的校验码,然后执行步骤410。所述ARES的校验码可以是ARES本身,也可以是ARES的一部分,例如是ARES中的某些位,简单地,可以是ARES的前几位或后几位。
步骤410,第三模块判断ARES的校验码与接收自第二模块的鉴权参数中XRES是否一致,如果不一致则执行步骤411,如果一致则执行步骤412。
所述ARES的校验码和相应的所述XRES一致可以是ARES的校验码和XRES相同,例如ARES的校验码是ARES本身;也可以是ARES的校验码和XRES中相应的某些位相同,例如ARES的校验码是ARES相应的某些位,或简单地是ARES的前几位或后几位。
步骤411,第三模块判断出同步请求消息非法,即该同步请求消息可能来自于非法模块,然后,结束本次流程。
步骤412,第三模块向第二模块发送同步请求消息,并附上接收自第一模块的SQN1和MAC-S以及接收自第二模块的RAND,然后执行步骤413。
步骤413,第二模块对同步请求消息进行完整性验证,也即对MAC-S进行一致性验证,如果一致性验证通过,则执行步骤414,否则,执行步骤415。
第二模块根据自己保存的SK2、接收自第三模块的RAND和SQN1,按照和第一模块计算MAC-S一致的方法进行计算,得到一个计算结果,并比较自己计算得到的结果和接收自第三模块的MAC-S是否一致,例如是否相同,如果一致,则通过对MAC-S的一致性验证,否则,对MAC-S的一致性验证不通过。
步骤414,第二模块根据SQN1更新SQN2,结束本次流程。在结束本次流程之前,第二模块还可以向第三模块返回“同步请求消息合法”信息。可以理解,实际当中,还可以通过该消息携带其它信息。
所述根据SQN1更新SQN2,可以是将SQN2的值设置为等于SQN1,或者根据SQN1产生一个新值来代替SQN2本身的值;或在将SQN2的值设置为等于SQN1之后,重新根据SQN2产生一个新值来代替SQN2本身的值。根据SQN1或SQN2产生一个新值可以是对SQN1或SQN2增加一个随机增量,比如增加一个1到256之间的随机数来得到所述新值。实际当中,可以通过随机数发生器来产生1到256之间的随机数。
步骤415,第二模块判断出同步请求消息非法,也即MAC-S与SQN1不一致,意味着SQN1不可信,SQN1信息可能被篡改,然后结束本次流程。在结束本次流程之前,第二模块还可以向第三模块返回“同步请求消息非法”信息。
在上述步骤413中,第二模块对MAC-S进行一致性验证时用到的RAND是由第三模块回送得到,实际当中,第二模块也可以事先在将鉴权参数发送给第三模块时保存了对应的RAND,此时,在步骤412中第三模块发送给第二模块的同步请求消息中不需要附上所述RAND。
SQN1的初始值为可以为0或一个随机数,相应的SQN2初始值是大于SQN1的任意数。
在上述具体实施方式
或实施例中,第一模块再计算同步鉴权编码MAC-S时,可以不使用随机数参与运算,相应的,第二模块验证该MAC-S的一致性时,也不使用随机数参与运算。不过,这样会降低第一同步密钥SK1的安全性,是针对本发明的一种改劣实现,因此,这里不再详细罗列这种改劣实现方法的具体实施步骤。
上述第二模块和第三模块可以合并为一个模块来实现,这种情况下,上述实施方式或实施例中,第二模块和第三模块之间的消息传送操作将不再需要,或者将变为模块内部的消息传送。如下将通过第三实施方式和对应的实施例来进行说明下面对本发明的具体实施方式
三进行介绍,通过具体实施方式
三对本发明在二个通信模块间的实施及应用予以说明,所述模块包括第一模块、第二模块。在第一模块中保存第一鉴权密钥AK1和第一同步密钥SK1,在第二模块对应地保存第二鉴权密钥AK2和第二同步密钥SK2;在第一模块中保存第一序列号SQN1,在第二模块中保存第二序列号SQN2。
请参阅图5,图5为本发明具体实施方式
三的流程图。
步骤501,第二模块产生鉴权参数,将鉴权参数中相应的鉴权参数信息发送给第一模块。
所述鉴权参数包括XRES、RAND、SQN2和MAC-A。第二模块产生鉴权参数信息时,首先产生一个随机数RAND,比如,第二模块设置一个随机数发生器,通过随机数发生器产生该随机数RAND,然后根据RAND、SQN2和AK2进行计算,得到消息鉴权编码MAC-A,并根据RAND和AK2产生期望响应XRES。第二模块将鉴权参数中相应的鉴权参数信息发送给第一模块是指第二模块将鉴权参数中的RAND,SQN2和MAC-A等鉴权参数信息发给第一模块。
步骤502,第一模块判断出对MAC-A的一致性验证通过时,根据AK1和随机数RAND产生鉴权响应ARES。
具体地说,第一模块对接收自第二模块的鉴权参数信息进行一致性验证,也即,对MAC-A进行一致性验证,这里是根据AK1和接收自第二模块的RAND以及SQN2,按照和第二模块计算MAC-A一致的方法进行计算,得到一个计算结果,并比较自己计算得到的结果和接收自第二模块的MAC-A是否一致,如果不一致,则对MAC-A的一致性验证不通过,判断出对第二模块鉴权不通过;如果一致,则对MAC-A的一致性验证通过。第一模块在判断出对MAC-A的一致性验证通过时,根据第一鉴权密钥AK1和接受到的随机数RAND产生鉴权响应ARES。
步骤503,第一模块产生同步鉴权编码MAC-S,对第二模块发送同步请求消息,并附上SQN1和MAC-S以及ARES的校验码,所述ARES的校验码可以是ARES本身,也可以是ARES的一部分,例如是ARES中的某些位,简单地,可以是ARES的前几位或后几位。
具体的说,第一模块根据RAND、SQN1和SK1进行计算得到一个同步鉴权编码MAC-S,向第二模块发送同步请求消息,消息中包括SQN1和MAC-S以及ARES的校验码。
步骤504,第二模块验证第一模块的同步请求消息的合法性,如果判断出该同步请求消息不合法,则执行步骤505;否则,执行步骤506。
具体地说第二模块验证ARES的校验码与接收自第二模块的鉴权元组中的期望响应XRES是否一致,例如是否相同,如果不一致,则认为再同步请求消息非法;如果一致,则认为同步请求消息合法。
所述ARES的校验码和相应的XRES一致可以是ARES的校验码和XRES相同,例如ARES的校验码是ARES本身;也可以是ARES的校验码和XRES中相应的某些位相同,例如ARES的校验码是ARES中相应的某些位,或简单地是ARES的前几位或后几位。
步骤505,第二模块认为同步处理请求源自一个非法模块,结束同步处理流程。
步骤506,第二模块认为同步处理请求源自一个合法模块,并作后续处理。
具体地说,第二模块认为同步处理请求源自一个合法模块时,验证所述同步请求消息的完整性,也即验证同步鉴权编码MAC-S的一致性,并根据验证结果作相应的处理。如果第二模块对同步鉴权编码MAC-S一致性验证通过,则根据SQN1更新SQN2;如果对同步鉴权编码MAC-S一致性验证通不过,则认为同步请求消息被篡改,SQN1不再可信,也即,攻击者保留了第一模块传送的ARES的校验码不变,而至少更改了MACS和SQN1中的某一个的值,这种情况下,第二模块结束处理流程。
第二模块对MAC-S进行一致性验证是根据自己保存的SK2、RAND和第一模块发送的SQN1,按照和第一模块计算MAC-S一致的方法进行计算,得到一个计算结果,并比较自己计算得到的计算结果和第一模块发送的MAC-S是否一致,例如是否相同,如果一致,则判断出MAC-S合法,即,通过对MAC-S的一致性验证;如果不一致,则判断出MAC-S非法,即对MAC-S的一致性验证通不过。
通常情况下,在上述步骤503之前,还可以包括第一模块根据自己保存的SQN1验证SQN2是否可以接受的步骤,如果第一模块判断出SQN2不属于可接受范围时,则执行步骤503及其以后步骤,否则,即第一模块判断出SQN2属于可接受范围时,第一模块判断出对第二模块的鉴权通过,第一模块根据SQN2更新SQN1,例如,将SQN1设置为与SQN2相等;然后将产生的鉴权响应ARES发送给第二模块,第二模块通过比较ARES和鉴权参数中的XRES是否一致,例如是否相同来判断对第一模块鉴权是否通过。
但是,在某些情况下,在第一模块通过手工设置了SQN1的值,并认为设置的SQN1极有可能和SQN2不同步时,那么,在上述步骤503之前,第一模块就不需要执行所谓的判断SQN2是否可以接受的步骤,而是直接就执行步骤503。
SQN1的初始值为可以为0或一个随机数,相应的SQN2初始值是大于SQN1的任意数。
上述计算ARES、XRES、MAC-A和MAC-S值的计算可以是已知的摘要计算、加密计算或解密计算,参见《应用密码学》一书,也可以是使用业界公知的一些算法来进行。
下面对本发明具体实施方式
三的具体实施例予以说明。在该实施例中,第一模块在判断出SQN2不属于可接受范围时产生同步鉴权编码并向第二模块发送同步请求消息。
请参阅图6,图6为本发明具体实施方式
三的实施例流程图。
在步骤601,第二模块将产生的鉴权参数,将鉴权参数中相应的鉴权参数信息发送给第一模块。
所述鉴权参数包括XRES、RAND、SQN2和MAC-A。实际当中,第二模块产生鉴权参数信息时,首先产生一个随机数RAND,比如,第二模块设置一个随机数发生器,通过随机数发生器产生该随机数RAND,然后根据RAND、SQN2和AK2进行计算,得到消息鉴权编码MAC-A,并根据RAND和AK2产生期望响应XRES。
所述将鉴权参数中相应的鉴权参数信息发送给第一模块是指第二模块将鉴权参数中的RAND,SQN2和MAC-A等鉴权参数信息发给第一模块;在步骤602,第一模块对接收自第二模块的消息进行一致性验证,如果一致性验证通不过,则执行步骤603;如果一致性验证通过,则执行步骤604。
第一模块根据AK1和接收自第二模块的RAND以及SQN2,按照和第二模块计算MAC-A一致的方法进行计算,得到一个计算结果,并比较自己计算得到的结果和接收的MAC-A是否一致,例如是否相同,如果一致,则所述一致性验证通过,否则,所述一致性验证通不过。
在步骤603,判断出对第二模块鉴权未通过,返回鉴权失败信息。
在步骤604,第一模块根据AK1和RAND产生鉴权响应ARES,并根据自己保存的SQN1验证SQN2是否可以接受,如果可以接受,则执行步骤605;如果判断出SQN2不可以接受,则执行步骤609。
第一模块根据自己保存的SQN1验证SQN2是否可以接受,可以是判断SQN1和SQN2的差值是否在一定的范围内,例如,是否(SQN1-SQN2)大于0,或者是否(SQN1-SQN2)大于0且小于256,等等。如果差值在所述范围内,则判断出SQN2可以接受,否则,判断SQN2不可以接受。
步骤605,第一模块判断出对第二模块鉴权通过,并根据SQN2更新SQN1,并返回所述鉴权响应ARES;然后执行步骤406;所述根据SQN2更新SQN1,可以是将SQN1的值设置为等于SQN2。
步骤606,第二模块判断鉴权响应ARES是否与鉴权参数中的XRES一致,如果一致,则执行步骤607,否则执行步骤608。
步骤607,第二模块对第一模块鉴权通过,结束本次流程。在接收本次流程之前,第二模块还可以对第一模块返回鉴权成功信息。
步骤408,第二模块对第一模块鉴权不通过,结束本次流程。在接收本次流程之前,第二模块还可以对第一模块返回鉴权失败信息。
步骤609,第一模块根据SQN1并根据SK1和接收到的RAND等进行计算得到一个同步鉴权编码MAC-S,向第二模块发送同步请求消息,消息中包括SQN1和MAC-S,以及ARES的校验码,然后执行步骤610。所述ARES的校验码可以是ARES本身,也可以是ARES的一部分,例如是ARES中的某些位,简单地,可以是ARES的前几位或后几位。
步骤610,第二模块判断ARES的校验码与鉴权参数中XRES是否一致,如果不一致则执行步骤611,如果一致则执行步骤612。
所述ARES的校验码和相应的所述XRES一致可以是ARES的校验码和XRES相同,例如ARES的校验码是ARES本身;也可以是ARES的校验码和XRES中相应的某些位相同,例如ARES的校验码是ARES相应的某些位,或简单地是ARES的前几位或后几位。
步骤611,第二模块判断出同步请求消息非法,即该同步请求消息可能来自于非法模块,然后,结束本次流程。
步骤613,第二模块判断出同步请求消息合法,并对同步请求消息进行完整性验证,也即对MAC-S进行一致性验证,如果一致性验证通过,则执行步骤614,否则,执行步骤615。
第二模块根据自己保存的SK2、RAND和接收的SQN1,按照和第一模块计算MAC-S一致的方法进行计算,得到一个计算结果,并比较自己计算得到的结果和接收自第一模块的MAC-S是否一致,例如是否相同,如果一致,则通过对MAC-S的一致性验证,否则,对MAC-S的一致性验证不通过。
步骤614,第二模块根据SQN1更新SQN2,结束本次流程。在结束本次流程之前,第二模块还可以向第一模块返回“同步请求消息合法”信息。可以理解,实际当中,还可以通过该消息携带其它信息。
所述根据SQN1更新SQN2,可以是将SQN2的值设置为等于SQN1,或者根据SQN1产生一个新值来代替SQN2本身的值;或在将SQN2的值设置为等于SQN1之后,重新根据SQN2产生一个新值来代替SQN2本身的值。根据SQN1或SQN2产生一个新值可以是对SQN1或SQN2增加一个随机增量,比如增加一个1到256之间的随机数来得到所述新值。实际当中,可以通过随机数发生器来产生1到256之间的随机数。
步骤615,第二模块判断出MAC-S与SQN1不一致,意味着SQN1不可信,SQN1和MAC-S中有一个被篡改,然后结束本次流程。在结束本次流程之前,第二模块还可以向第一模块返回“同步请求消息非法”信息。
SQN1的初始值为可以为0或一个随机数,相应的SQN2初始值是大于SQN1的任意数。
在上述具体实施方式
或实施例中,第一模块再计算同步鉴权编码MAC-S时,可以不使用随机数参与运算,相应的,第二模块验证该MAC-S的一致性时,也不使用随机数参与运算。不过,这样会降低第一同步密钥SK1的安全性,是针对本发明的一种改劣实现,因此,这里不再详细罗列这种改劣实现方法的具体实施步骤。
上述具体实施方式
或实施例中,在第一模块中,第一鉴权密钥AK1和第一同步密钥SK1可以相同,也即,第一鉴权密钥AK1和第一同步密钥SK1可以是同一个密钥;相应地,在第二模块中,第二鉴权密钥AK2和第二同步密钥SK2也可以相同,也即,第二鉴权密钥AK2和第二同步密钥SK2也可以是同一个密钥。
文中所有根据几个值产生或计算出某一个值的计算都可以是摘要计算或加密计算或解密计算。参见《应用密码学》一书,也可以是使用业界公知的一些算法来进行。至于采用何种算法,根据具体应用而定。
可以理解,以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种同步攻击防护方法,应用于3G网络中终端与网络间的鉴权,其特征在于,所述方法至少包括以下步骤a.HLR/AUC产生随机数RAND,根据随机数、第二鉴权密钥产生期望响应XRES,加密密钥CK、完整性密钥IK,并根据随机数、鉴权密钥、鉴权管理域AMF和第二序列号SQNHE生成消息鉴权编码MAC-A,根据第二序列号、鉴权管理域和消息鉴权编码产生鉴权标记AUTN,将所述随机数、期望响应,加密密钥、完整性密钥和鉴权标记作为鉴权五元组发送给MSC/VLR;b.MSC/VLR将所述随机数、鉴权标记发送给终端;c.终端根据第一鉴权密钥和接收到的随机数、接收到的AUTN中的第二序列号以及鉴权管理域对接收到的AUTN中的消息鉴权编码进行一致性验证,并在验证通过后,根据第一鉴权密钥和所述随机数生成鉴权响应ARES;d.终端根据第一序列号SQNMS判断第二序列号是否可以接受,并在第二序列号不可接收时,根据第一鉴权密钥、第一序列号,接收的AUTN中的AMF和所述随机数生成同步鉴权编码MAC-S,根据MAC-S和SQNMS产生同步标记AUTS,对MSC/VLR发送同步请求消息且附上所述同步标记以及所述鉴权响应的校验码;e.MSC/VLR在接收到所述同步请求消息时,根据期望响应判断所述鉴权响应的校验码的合法性,如果不合法则判断出所述再同请求消息非法并结束相关处理;否则,MSC/VLR向HLR/AUC发送同步请求消息,并附上所述同步标记和对应鉴权五元组中的随机数;f.HLR/AUC根据第二鉴权密钥判断所述同步请求消息的完整性,并根据所述同步请求消息的完整性作相关处理。
2.根据权利要求1所述的方法,其特征在于,所述步骤c中还包括当终端对消息鉴权编码的一致性验证未通过时,判断对网络侧MSC/VLR鉴权失败,向MSC/VLR发送鉴权失败信息,并结束相关处理。
3.根据权利要求1所述的方法,其特征在于,步骤d中还包括终端判断出第二序列号可以接受时,根据所述第二序列号更新第一序列号,且对MSC/VLR发送所述鉴权响应;MSC/VLR判断所述鉴权响应和期望响应是否一致,如果一致,判断对终端的鉴权通过,并结束相应处理,否则,判断对终端的鉴权不通过,并结束相应处理。
4.根据权利要求1所述的方法,其特征在于,所述HLR/AUC根据第二鉴权密钥判断所述同步请求消息的完整性是指,HLR/AUC根据第二鉴权密钥、所述鉴权管理域、所述随机数以及所述同步标记中第一序列号采用和终端计算所述同步鉴权编码一致的算法进行计算,得到一个计算结果,比较所述计算结果和所述同步标记中同步鉴权编码是否相同,如果相同,则判断出所述同步请求消息完整,否则,判断出所述同步请求消息不完整。
5.根据权利要求1所述的方法,其特征在于,在步骤f中,HLR/AUC判断出所述同步请求消息不完整时,结束相关处理,否则,根据第一序列号更新第二序列号,产生新的鉴权五元组并发送至少一个新鉴权五元组给MSC/VLR用于鉴权。
6.根据权利要求5所述的方法,其特征在于,所述根据所述第一序列号更新第二序列号是指将第二序列号设置为与第一序列号相等,或者是将第二序列号设置为与第一序列号相等后,再将第二序列号增加一个固定不变的或固定变化的或随机变化的增量数值。
7.根据权利要求1所述的方法,其特征在于,所述步骤c中,终端对所述消息鉴权编码进行一致性验证进一步是终端根据第一鉴权密钥、鉴权管理域、所述随机数和第二序列号采用和HLR/AUC产生消息鉴权编码一致的方法产生一个运算结果,比较所述运算结果和所述消息鉴权编码是否一致,如果一致,则对所述消息鉴权编码的一致性验证通过,否则,对所述消息鉴权编码的一致性验证不通过。
8.根据权利要求1所述的方法,其特征在于,所述步骤d中,所述终端根据第一序列号判断第二序列号是否可以接受进一步是判断第二序列号和第一序列号的差值是否在一定的范围内,如果是,则判断出第二序列号可接受,否则,判断出第二序列号不可以接受。
9.根据权利要求1所述的方法,所述鉴权响应的校验码是鉴权响应本身,或者是鉴权响应中相应的某些位,对应地步骤e中根据期望响应判断所述鉴权响应的校验码的合法性是指判断鉴权响应的校验码是否和期望响应相同,或者判断鉴权响应的校验码是否和期望响应中相应的某些位相同,如果是,则判断所述鉴权响应的校验码合法,否则,判断所述鉴权响应的校验码非法。
10.根据权利要求1所述的方法,其特征在于,所述步骤a中进一步包括更新第二序列号的步骤;所述更新第二序列号可以是将第二序列号增加一个固定不变的或固定变化的或随机变化的增量数值。
11.一种鉴权方法,用于可相互通信的模块之间的鉴权,所述模块至少包括可鉴权及产生鉴权响应的第一模块,所述第一模块中保存了第一鉴权密钥、第一同步密钥和第一序列号,可用于产生鉴权参数、执行同步处理的第二模块,所述第二模块中对应保存了第二鉴权密钥、第二同步密钥和第二序列号,以及可执行鉴权验证的第三模块,所述方法至少包括以下步骤a.第二模块产生随机数,根据随机数、第二鉴权密钥产生期望响应,并根据随机数、第二鉴权密钥和第二序列号生成消息鉴权编码,将所述随机数、第二序列号、期望响应和生成的消息鉴权编码发送给第三模块;b.第三模块将所述随机数、第二序列号和消息鉴权编码发送给第一模块;c.第一模块根据第一鉴权密钥和所述随机数以及第二序列号对所述消息鉴权编码进行一致性验证,并在验证通过后,根据第一鉴权密钥和所述随机数生成鉴权响应;d.第一模块根据第一序列号判断第二序列号是否可以接受,并在第二序列号不可接收时,根据第一同步密钥、第一序列号和所述随机数生成同步鉴权编码,对第三模块发送同步请求消息且附上所述同步鉴权编码、第一序列号以及所述鉴权响应的校验码;e.第三模块在接收到所述同步请求消息时,根据期望响应判断所述鉴权响应的校验码的合法性,如果不合法则判断出所述再同请求消息非法并结束相关处理;否则,第三模块向第二模块发送同步请求消息;f.第二模块根据第二同步密钥判断所述同步请求消息的完整性,并根据所述同步请求消息的完整性作相关处理。
12.根据权利要求11所述的方法,其特征在于,所述步骤c中还包括当第一模块对消息鉴权编码的一致性验证未通过时,判断对第三模块鉴权失败,并结束相关处理。
13.根据权利要求12所述的方法,其特征在于,步骤c中第一模块在所述结束相关处理前,进一步包括第一模块对第三模块发送鉴权失败信息。
14.根据权利要求11所述的方法,其特征在于,步骤d中还包括第一模块判断出第二序列号可以接受时,根据所述第二序列号更新第一序列号,且对第三模块发送所述鉴权响应;第三模块判断所述鉴权响应和期望响应是否一致,如果一致,判断对第一模块的鉴权通过,并结束相应处理,否则,判断对第一模块鉴权不通过,并结束相应处理。
15.根据权利要求11所述的方法,其特征在于,步骤e中,第三模块向第二模块发送同步请求消息时,附上所述随机数,同步鉴权编码和第一序列号。
16.根据权利要求11所述的方法,其特征在于,步骤a中,第二模块在将所述随机数、第二序列号和生成的消息鉴权编码发送给第三模块时,保存了所述随机数;步骤e中,第三模块向第二模块发送同步请求消息时,附上所述同步鉴权编码和第一序列号。
17.根据权利要求15或16所述的方法,其特征在于,所述第二模块根据第二同步密钥判断所述同步请求消息的完整性是指,第二模块根据第二同步密钥、所述随机数以及第一序列号采用和第一模块计算所述同步鉴权编码一致的算法进行计算,得到一个计算结果,比较所述计算结果和同步鉴权编码是否相同,如果相同,则判断出所述同步请求消息完整,否则,判断出所述同步请求消息不完整。
18.根据权利要求11所述的方法,其特征在于,在步骤f中,第二模块判断出所述同步请求消息不完整时,结束相关处理,否则,根据第一序列号更新第二序列号。
19.根据权利要求18所述的方法,其特征在于,所述根据所述第一序列号更新第二序列号是指将第二序列号设置为与第一序列号相等,或者是将第二序列号设置为与第一序列号相等后,再将第二序列号增加一个固定不变的或固定变化的或随机变化的增量数值。
20.根据权利要求11所述的方法,其特征在于,所述步骤c中,第一模块对所述消息鉴权编码进行一致性验证进一步是第一模块根据第一鉴权密钥、所述随机数和第二序列号采用和第二模块根据所述随机数、第二鉴权密钥和第二序列号产生消息鉴权编码一致的方法产生一个运算结果,比较所述运算结果和所述消息鉴权编码是否一致,如果一致,则对所述消息鉴权编码的一致性验证通过,否则,对所述消息鉴权编码的一致性验证不通过。
21.根据权利要求11所述的方法,其特征在于,所述步骤d中,第一模块根据第一序列号判断第二序列号是否可以接受进一步是判断第二序列号和第一序列号的差值是否在一定的范围内,如果是,则判断出第二序列号可接受,否则,判断出第二序列号不可以接受。
22.根据权利要求11所述的方法,所述鉴权响应的校验码是鉴权响应本身,或者是鉴权响应中相应的某些位,对应地步骤e中根据期望响应判断所述鉴权响应的校验码的合法性是指判断鉴权响应的校验码是否和期望响应相同,或者判断鉴权响应的校验码是否和期望响应中相应的某些位相同,如果是,则判断所述鉴权响应的校验码合法,否则,判断所述鉴权响应的校验码非法。
23.根据权利要求11所述的方法,其特征在于,所述步骤a中进一步包括更新第二序列号的步骤;所述更新第二序列号可以是将第二序列号增加一个固定不变的或固定变化的或随机变化的增量数值。
24.根据权利要求11所述的方法,其特征在于,在第一模块中,第一鉴权密钥和第一同步密钥可以是同一个密钥;相应地,在第二模块中,第二鉴权密钥和第二同步密钥也可以是同一个密钥。
25.一种鉴权方法,用于可相互通信的模块之间的鉴权,所述模块至少包括可鉴权及产生鉴权响应的第一模块,所述第一模块中保存了第一鉴权密钥、第一同步密钥和第一序列号,可用于产生鉴权参数、执行鉴权验证和执行同步处理的第二模块,所述第二模块中对应保存了第二鉴权密钥、第二同步密钥和第二序列号,所述方法至少包括以下步骤a.第二模块产生随机数,根据随机数、第二鉴权密钥产生期望响应,并根据随机数、第二鉴权密钥和第二序列号生成消息鉴权编码;将所述随机数、第二序列号和消息鉴权编码发送给第一模块;b.第一模块根据第一鉴权密钥和所述随机数以及第二序列号对所述消息鉴权编码进行一致性验证,并在验证通过后,根据第一鉴权密钥和所述随机数生成鉴权响应;c.第一模块根据第一序列号判断第二序列号是否可以接受,并在第二序列号不可接收时,根据第一同步密钥、第一序列号和所述随机数生成同步鉴权编码,对第二模块发送同步请求消息且附上所述同步鉴权编码、第一序列号以及所述鉴权响应的校验码;d.第二模块在接收到所述同步请求消息时,根据期望响应判断所述鉴权响应的校验码的合法性,如果不合法则判断出所述再同请求消息非法并结束相关处理;否则,根据第二同步密钥判断所述同步请求消息的完整性,并根据所述同步请求消息的完整性作相关处理。
26.根据权利要求25所述的方法,其特征在于,所述步骤b中还包括当第一模块对消息鉴权编码的一致性验证未通过时,判断对第二模块鉴权失败,并结束相关处理。
27.根据权利要求26所述的方法,其特征在于,步骤b中第一模块在所述结束相关处理前,进一步包括第一模块对第二模块发送鉴权失败信息。
28.根据权利要求25所述的方法,其特征在于,步骤c中还包括第一模块判断出第二序列号可以接受时,根据所述第二序列号更新第一序列号,且对第二模块发送所述鉴权响应;第二模块判断所述鉴权响应和期望响应是否一致,如果一致,判断对第一模块的鉴权通过,并结束相应处理,否则,判断对第一模块鉴权不通过,并结束相应处理。
29.根据权利要求25所述的方法,其特征在于,在步骤d中,所述第二模块根据第二同步密钥判断所述同步请求消息的完整性是指,第二模块根据第二同步密钥、所述随机数以及第一序列号采用和第一模块计算所述同步鉴权编码一致的算法进行计算,得到一个计算结果,比较所述计算结果和所述同步鉴权编码是否相同,如果相同,则判断出所述同步请求消息完整,否则,判断出所述同步请求消息不完整。
30.根据权利要求25所述的方法,其特征在于,在步骤d中,第二模块判断出所述同步请求消息不完整时,结束相关处理,否则,根据第一序列号更新第二序列号。
31.根据权利要求30所述的方法,其特征在于,所述根据所述第一序列号更新第二序列号是指将第二序列号设置为与第一序列号相等,或者是将第二序列号设置为与第一序列号相等后,再将第二序列号增加一个固定不变的或固定变化的或随机变化的增量数值。
32.根据权利要求25所述的方法,其特征在于,所述步骤b中,第一模块对所述消息鉴权编码进行一致性验证进一步是第一模块根据第一鉴权密钥、所述随机数和第二序列号采用和第二模块根据所述随机数、第二鉴权密钥和第二序列号产生消息鉴权编码一致的方法产生一个运算结果,比较所述运算结果和所述消息鉴权编码是否一致,如果一致,则对所述消息鉴权编码的一致性验证通过,否则,对所述消息鉴权编码的一致性验证不通过。
33.根据权利要求25所述的方法,其特征在于,所述步骤c中,第一模块根据第一序列号判断第二序列号是否可以接受进一步是判断第二序列号和第一序列号的差值是否在一定的范围内,如果是,则判断出第二序列号可接受,否则,判断出第二序列号不可以接受。
34.根据权利要求25所述的方法,所述鉴权响应的校验码是鉴权响应本身,或者是鉴权响应中相应的某些位,对应地步骤d中根据期望响应判断所述鉴权响应的校验码的合法性是指判断鉴权响应的校验码是否和期望响应相同,或者判断鉴权响应的校验码是否和期望响应中相应的某些位相同,如果是,则判断所述鉴权响应的校验码合法,否则,判断所述鉴权响应的校验码非法。
35.根据权利要求25所述的方法,其特征在于,所述步骤a中进一步包括更新第二序列号的步骤;所述更新第二序列号可以是将第二序列号增加一个固定不变的或固定变化的或随机变化的增量数值。
36.根据权利要求25所述的方法,其特征在于,在第一模块中,第一鉴权密钥和第一同步密钥可以是同一个密钥;相应地,在第二模块中,第二鉴权密钥和第二同步密钥也可以是同一个密钥。
全文摘要
本发明公开了一种同步攻击防护方法,应用于3G网络中终端与网络间的鉴权,该方法包括,终端向网络发送再同步请求命令时,附上再同步标记以及鉴权响应;网络侧在接收到所述再同步请求命令时,由MSC/VLR先根据所述鉴权响应判断所述再同步请求命令的合法性,如果不合法则直接判断出所述再同步请求命令来自非法用户,否则,MSC/VLR将再同步请求命令发送给网络侧HLR/AUC,HLR/AUC对所述再同步请求命令进行完整性验证。因此,网络侧接收到来自非法用户的再同步请求命令时,MSC/VLR根据所述鉴权响应即可判断出,而不必再耗费HLR/AUC的资源对来自非法用户的再同步请求命令进行完整性验证,进而达到避免非法用户利用再同步请求命令攻击网络的效果。
文档编号H04W12/06GK1859712SQ20051003635
公开日2006年11月8日 申请日期2005年8月2日 优先权日2005年8月2日
发明者王正伟 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1