一种客户端和服务器密钥协商方法及其系统的制作方法

文档序号:7627500阅读:118来源:国知局
专利名称:一种客户端和服务器密钥协商方法及其系统的制作方法
技术领域
本发明涉及通信安全技术,具体涉及一种客户端和服务器密钥协商方法及其系统。
背景技术
中国移动推出了随e行业务,该业务是指中国移动提供无线上网卡或手机,该卡或手机可以通过GPRS,或3G技术,或WLAN,或WiMAX技术连接到中国移动现在或将来提供的无线网络,用户将该卡直接插入PC机(便携或台式机),或通过串口、篮牙或红外线功能将具有上网功能的手机连接到PC机,就可以实现PC机通过无线上网卡或手机上网,以实现用户利用PC机通过无线网络方便地访问互联网的需求。该随e行业务通过宽带随e行系统来实现。
随e行系统包括随e行客户端、随e行服务器及相关业务平台组成。其中服务器主要提供客户端软件的升级服务、信息PUSH等功能。客户端通过数据卡/手机连接到无线网络。客户端通过WCDMA/GPRS网络可以接入现网的相关业务平台使用中国移动提供的移动业务,还可接入Internet使用互联网服务。参见图9,随e行系统的网络组成示意图宽带随e行系统将为中国移动用户提供宽带数据业务的门户,使用户可以通过3G数据卡/手机享用各种宽带业务,用户将随e行客户端软件安装在计算机上后,通过该软件,用户可以方便的使用“随e行”有关的各种功能,例如,短信、彩信、邮件、宽带上网等,从而实现随时随地接入互联网以及企业内网、随时随地方便办公以及使用移动数据业务,包括地址本、短信、邮件和彩信等,从而形成“随e行”用户在计算机上使用移动中国移动数据业务的“门户”,随着客户端软件上提供的业务的逐渐增多,客户也将享受到中国移动提供的更多的增值信息服务。
随着3G网络的逐步部署和各种增值业务的部署,宽带随e行系统将为中国移动逐渐占领用户PC桌面、整合移动数据业务客户端、甚至定制个性化客户端(例如行业应用客户端)打下了基础,由面向连接的上网工具发展为面向业务的数据业务门户,同时通过该门户还可实现新业务的宣传和推广以及成为用户与中国移动之间信息沟通的纽带。
用户将随e行客户端软件安装在计算机上后,通过该软件并配合3G数据卡或手机,用户可以随时随地接入宽带互联网和企业内网,从而实现随时随地娱乐、办公。同时,随e行客户端软件也提供了短信、彩信、邮件等移动数据服务,从而形成“随e行”用户在计算机上使用中国移动数据业务的“门户”。
随e行业务为集团用户和商务人士提供了完整的移动信息化解决方案。随e行客户端软件为中国移动逐渐占领用户PC桌面、整合移动数据业务客户端、甚至定制个性化客户端(例如行业应用客户端)打下了基础。
现有随e行系统存在严重的安全问题客户端和服务器不能够安全地协商通信密钥。现有的协商通信密钥的方式是,客户端到服务器注册时,提供一个用户卡国际移动用户标识IMSI,就可以轻易到服务器上进行注册,注册后,服务器返回给客户端一个登陆密码,而后,客户端就可以通过该登陆密码来登陆到该服务器,并在取得服务器返回的会话ID和通信密码后,客户端就可以通过取得的会话ID和通信密码和服务器进行信息交互。这个过程中,登陆密码很容易被截获,通信密码也容易被截获,从而使得整个系统的通信变得不安全。
另外,如果客户端到服务器进行注册时,提供了一个非法的用户卡卡IMSI,例如,用户张三盗用用户李四的用户卡IMSI,这种情况下,服务器也无法判断出该IMSI是否合法。
与移动通信系统中终端和网络协商密钥的安全性相比,目前的随e行服务器和客户端协商密钥的过程太不安全了。
第二代移动通信系统中,网络对终端的鉴权流程比较简单,可以参见GSM相关协议规范。第三代移动通信系统中,鉴权流程中增加了客户端对网络的鉴权,安全性有一定的增强。现有的第三代移动通信系统中,在移动终端中保存国际移动用户标识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来协助服务器与客户端协商密钥,是一个非常有意义的课题。

发明内容
有鉴于此,本发明要解决技术问题是提供一种密钥协商方法,使得服务器与客户端之间进行密钥协商,提高密钥协商的安全性。
本发明提供的解决上述问题的技术方案为一种密钥协商方法,包括如下步骤a.将用户卡的国际移动用户标识IMSI发送给服务器;b.服务器将IMSI发送给HLR/AUC;c.HLR/AUC产生随机数RAND,并根据自身保存的KI、所述随机数RAND生成临时密钥tempK,HLR/AUC将产生的RAND和tempK发送给服务器;d.服务器得到RAND和tempK后,将RAND发送给用户卡;e.用户卡根据自身保存的KI和接收的RAND产生tempK;f.客户端从用户卡得到tempK,并根据tempK得到自己需要协商的密钥。
所述方法进一步包括服务器根据所述tempK得到自己需要协商的密钥的操作。
所述步骤b是指服务器向HLR/AUC发送请求鉴权元组的消息,消息中携带所述IMSI,所述鉴权元组包含随机数RAND、密码密钥Kc、符号响应SRES;所述临时密钥tempK为密码密钥Kc;相应的步骤c是指HLR/AUC根据IMSI执行产生随机数RAND,根据RAND和保存的KI产生鉴权元组,并将产生的鉴权元组发送给所述服务器。
所述步骤b是指服务器向HLR/AUC发送请求鉴权元组的消息,消息中携带所述IMSI,所述鉴权元组包含随机数RAND、加密密钥CK、完整性密钥IK、鉴权标记AUTN和期望响应XRES;所述临时密钥tempK为加密密钥CK和/或完整性密钥IK;相应的步骤c是指HLR/AUC根据IMSI执行产生随机数RAND,根据RAND和保存的KI产生鉴权元组,并将产生的鉴权元组发送给所述服务器。
所述步骤d中还包括将鉴权元组中的鉴权标记AUTN发送给用户卡,所述步骤e是指用户卡根据保存的KI、接收的AUTN和RAND产生CK、IK和鉴权响应RES。
步骤e所述根据保存的KI、接收的AUTN和RAND产生CK、IK和鉴权响应RES时,先对RAND和AUTN进行一致性验证。
在验证失败时,用户卡向服务器返回鉴权失败的信息,然后结束本次密钥协商流程。
所述AUTN中包含HLR/AUC鉴权序列号SQNHE;所述用户卡在验证通过时,进一步判断所述SQNHE是否在可接受范围内,如果是,则执行根据保存的KI和接收到的随机数RAND产生加密密钥CK、完整性密钥IK和鉴权响应RES,并向服务器发送所述RES的操作。
服务器接收到用户卡的鉴权响应RES后判断用户卡产生的RES是否与对应鉴权元组中的期望响应XRES一致,则根据鉴权元组中的CK和/或IK得到自己需要协商的密钥,否则服务器判断出对用户卡鉴权失败。
所述用户卡判断出所述SQNHE不在可接受范围内时根据保存的SQNMS产生再同步标记AUTS,并根据产生的AUTS对服务器发起再同步SQNHE的流程。
步骤a是指通过有线通信网络和/或无线通信网络将用户卡的IMSI发送给服务器。
步骤a是指,用户卡将自己的IMSI发送给服务器;或者客户端将用户卡的IMSI发送给服务器;或者所述方法进一步包括网络连接模块,由该网络连接模块将用户卡的IMSI发送给服务器。
所述网络连接模块为有线上网卡或无线上网卡或无线终端或固定终端。
所述客户端可以是运行在PC机上的客户端,也可以是运行在PANDA上的客户端,也可以是运行在移动终端或者固定终端上的客户端。
所述客户端是随e行系统的客户端,所述服务器是随e行系统的服务器。
一种客户端与服务器协商密钥的系统,包括用户卡、用户卡接口模块、客户端应用模块、服务器、无线通信网络系统,该无线通信网络系统中设置有HLR/AUC;所述服务器连接无线通信网络系统并与该系统中的HLR/AUC建立连接;所述客户端通过用户卡接口模块连接无线通信网络系统,并通过该无线通信网络系统连接所述服务器;所述客户端通过用户卡接口模块连接所述用户卡。
所述客户端通过用户卡接口模块读取用户卡的IMSI,并通过用户卡接口模块、所述无线通信网络将该IMSI发送给服务器;服务器得到客户端侧发送的IMSI后,将IMSI发送给HLR/AUC;HLR/AUC产生随机数RAND,并根据保存的KI、产生的RAND产生临时密钥tempK。HLR/AUC将产生的RAND和tempK发送给服务器;服务器得到RAND和tempK后,将RAND发送给用户卡;用户卡得到用户卡接口模块发送的RAND后,根据保存的KI和接收的RAND产生tempK;客户端从用户卡得到tempK,并根据tempK得到自己需要协商的密钥;服务器根据接收自HLR/AUC的tempK得到自己需要协商的密钥。
一种客户端与服务器协商密钥的系统,包括用户卡、用户卡接口模块、客户端应用模块、服务器、有线通信网络系统、无线通信网络系统,该无线通信网络系统中设置有HLR/AUC;所述服务器连接无线通信网络系统并与该系统中的HLR/AUC建立连接;所述客户端通过用户卡接口模块接入有线通信网络系统,并通过该有线通信网络系统连接所述服务器;所述客户端通过用户卡接口模块连接所述用户卡。
所述客户端通过用户卡接口模块读取用户卡的IMSI,并通过用户卡接口模块、所述有线通信网络将该IMSI发送给服务器;服务器得到客户端侧发送的IMSI后,将IMSI发送给HLR/AUC;HLR/AUC产生随机数RAND,并根据保存的KI、产生的RAND产生临时密钥tempK,HLR/AUC将产生的RAND和tempK发送给服务器;服务器得到RAND和tempK后,将RAND发送给用户卡;用户卡得到用户卡接口模块发送的RAND后,根据保存的KI和接收的RAND产生tempK;客户端从用户卡得到tempK,并根据tempK得到自己需要协商的密钥;服务器根据接收自HLR/AUC的tempK得到自己需要协商的密钥。
一种客户端与服务器协商密钥的系统,包括用户卡、用户卡接口模块、客户端应用模块、服务器、有线通信网络系统、无线通信网络系统,该无线通信网络系统中设置有HLR/AUC;所述服务器连接无线通信网络系统并与该系统中的HLR/AUC建立连接;所述客户端接入有线通信网络系统,并通过该有线通信网络系统连接所述服务器;所述客户端通过用户卡接口模块连接所述用户卡。
所述客户端通过用户卡接口模块读取用户卡的IMSI,并将该IMSI发送给服务器;服务器得到客户端侧发送的IMSI后,将IMSI发送给HLR/AUC;HLR/AUC产生随机数RAND,并根据保存的KI、产生的RAND产生临时密钥tempK,HLR/AUC将产生的RAND和tempK发送给服务器;服务器得到RAND和tempK后,将RAND发送给用户卡;用户卡得到用户卡接口模块发送的RAND后,根据保存的KI和接收的RAND产生tempK。客户端从用户卡得到tempK,并根据tempK得到自己需要协商的密钥;服务器根据接收自HLR/AUC的tempK得到自己需要协商的密钥。
一般来说,一个应用服务器和连接到这个应用服务器之间的各个终端在进行密钥协商时,通常都是由服务器为相应的客户端产生相应的密钥,然后将该密钥发送给对应的客户端,这个过程,无法保证密钥的安全性。还有一些方法,就是,服务器和客户端分别提前保存对应的种子密钥,这样,服务器和客户端可以根据该种子密钥协商通信密钥,但这个过程涉及到种子密钥的分发的问题,将提高业务的运作和管理成本。当然,在应用密码学领域,还有其它的密钥协商方法,例如,Merkle的难题,是由Ralph Merkle发明的第一个公开密钥密码的设计方法,其提供的密钥协商方法,可以达到一定的安全性,也基本不会将提高业务的运作和管理成本,但是,协商出来的密钥安全性不高,因此,该方法也没有得到相应的应用。一般的公钥机制也可以解决服务器与客户端之间密钥协商问题,但是,这种机制要求客户端提供的公钥对于服务器来说,是可信的,不然,服务器和客户端通过客户端提供的公钥虽然可以协商出通信密钥,但是,却无法验证客户端的真实性。而要让客户端可信,又涉及到相应的证书管理问题,显然,这样做也会增加系统的成本和复杂度。而利用本发明密钥协商方法,完全利用现有的移动通信网设备HLR/AUC,和客户端使用者拥有的由移动通信网络运营商发售的用户卡来协助服务器与客户端进行密钥协商,在提高密钥协商的安全性同时,却不会显著增加密钥协商的成本,因此,本发明将具有广泛的应用前景。


图1是本发明密钥协商方法具体实施方式
的流程图。
图2是本发明密钥协商方法具体实施方式
的第一具体实施例流程图。
图3是本发明密钥协商方法具体实施方式
的第二具体实施例流程图。
图4是本发明密钥协商方法具体实施方式
的第三具体实施例流程图。
图5是本发明密钥协商方法具体实施方式
的第四具体实施例流程图。
图6是一种客户端与服务器协商密钥的系统的结构图。
图7是另一种客户端与服务器协商密钥的系统的结构图。
图8是第三种客户端与服务器协商密钥的系统的结构图。
图9是目前随e行系统的网络组成示意图。
具体实施例方式
根据本发明所述的密钥协商方法,客户端根据用户卡保存的鉴权密钥KI来产生自己需要协商的密钥,而服务器根据HLR/AUC对应保存的鉴权密钥KI来产生自己需要协商的密钥。服务器从HLR/AUC请求产生的鉴权元组,服务器可以模拟漫游MSC/VLR从HLR/AUC请求所述鉴权元组,服务器产生鉴权元组时。服务器产生鉴权元组时,先产生随机数RAND,根据该RAND和自身保存的KI产生所述鉴权元组。服务器根据鉴权元组中包含有服务器与客户端协商密钥时需要的临时密钥,例如该临时密钥对于2G的GSM系统来说可以是密码密钥Kc,对于在3G的WCDMA系统来说,可以是加密密钥CK和/或完整性密钥IK;服务器将包括随机数的相应鉴权参数(所述的相应鉴权参数在2G的GSM系统来说,可以只是随机数RAND,在3G的WCDMA系统来说,还可以包括鉴权标记AUTN)发送给用户卡,例如,服务器模拟MSCVLR对用户卡鉴权的方式,将所述鉴权参数发送给该用户卡,用户卡根据接收的所述鉴权参数和自己保存的鉴权密钥KI产生客户端与服务器协商密钥时需要的临时密钥。这样,就完成了客户端与服务器协商密钥。
在这个过程中,由于客户端和服务器协商密钥时并没有将要协商的密钥通过网络或其它方式直接传送给对方,即,服务器得到的密钥是根据HLR/AUC保存的KI和产生的随机数RAND衍生得到,而客户端得到的密钥是根据用户卡保存的KI和接收自服务发送的随机数RAND衍生得到,因此,就保证了协商的密钥的安全性。
请参阅图1,图1为本发明具体实施方式
的流程图。
首先,在步骤101中,将用户卡的IMSI发送给服务器。
实际当中,客户端通过用户卡接口模块对用户卡进行存取访问,例如,该用户卡接口模块可以是无线上网卡,例如是目前市场上销售的移动通信数据卡,或者是移动终端,当然,也可以是有线上网卡,例如是有线数据卡,或者是固定终端,用户卡接口模块可以进一步包括用户卡驱动程序,并通过调用用户卡驱动程序来访问对应的用户卡。客户端通过用户卡接口模块来访问用户卡,客户端可以及一步包括用户卡接口模块的驱动程序,并通过调用该用户卡接口模块的驱动程序来访问用户卡接口模块,进而对用户卡进行存取访问。在用户卡接口模块与客户端的接口标准化以后,客户端可以内嵌对应的用户卡接口模块驱动程序。用户卡接口模块可以作为无线网络或有线网络的通信终端而连接到所述无线网络或有线网络,这种情况下,可以由用户卡接口模块将用户卡的IMSI通过有线或无线网络发送给服务器;也可以由客户端通过用户卡接口模块读取用户卡的IMSI,并将其通过有线或无线网络发送给服务器,这种情况下,用户卡接口模块可以仅仅是一个用户卡读写设备,当然,此时的用户卡接口模块也可以仍然是一个有线网卡或无线网卡或移动终端或固定终端。客户端可以通过用户卡接口模块获得用户卡的IMSI,并将得到的IMSI通过有线网络或无线网络发送给服务器。在用户卡接口模块可以连接到所述无线网络或有线网络的情况下,客户端也可以通过向用户卡接口模块发送指令,通过该指令指示用户卡接口模块将读取的用户卡IMSI发送给服务器。
例如所述用户卡接口模块是读写卡设备,客户端通过无线上网卡或有线上网卡连接到服务器,并通过该无线上网卡或有线上网卡模块将通过所述读写卡设备读取的用户卡的IMSI发送至服务器。
步骤102、服务器将IMSI发送给HLR/AUC。
步骤103、HLR/AUC产生随机数RAND,并根据保存的KI、产生的RAND产生临时密钥tempK。
产生tempK的算法可以是HASH算法,例如是摘要算法,也可以是加密算法。参见《应用密码学》一书,或其它的密码论文。这里不进行详细描述。
步骤104、HLR/AUC将产生的RAND和tempK发送给服务器。
步骤105、服务器得到RAND和tempK后,将RAND发送给用户卡。
服务器可以通过无线网络将RAND发送给用户卡接口模块,例如该用户卡接口模块可以是插入了该用户卡的数据卡或移动终端,并由该用户卡接口模块最终将RAND发送给用户卡。这其中,还包括所述用户卡接口模块直接将得自服务器的RAND发送给用户卡,也可以是用户卡接口模块先将得自服务器的RAND发送客户端,并由客户端再通过用户卡接口模块间接地将所述RAND发送给用户卡。
服务器也可以通过有线网络将RAND发送给客户端,并由客户端通过用户卡接口模块间接地将所述RAND发送给用户卡。这里用户卡接口模块可以是无线上网卡,也可以是移动终端,也可以是其它设置在PC机上的读写用户卡的装置。
步骤106、用户卡根据保存的KI和接收的RAND产生tempK。
产生tempK的算法可以是HASH算法,例如是摘要算法,也可以是加密算法。参见《应用密码学》一书,或其它的密码论文。这里不进行详细描述。
步骤107、客户端从用户卡得到tempK,并根据tempK得到自己需要的密钥。例如,客户端可以直接使用tempK作为自己需要的密钥,也可以通过一定的算法和/或相应的参数例如IMSI等等,对tempK进行一定的函数运算后得到自己需要的密钥。参见《应用密码学》一书,或其它的密码论文。这里不进行详细描述。
服务器根据接收自HLR/AUC的tempK得到自己需要的密钥,例如,服务器可以直接使用tempK作为自己需要的密钥,也可以通过一定的算法和/或相应的参数例如IMSI等等,对tempK进行一定的函数运算后得到自己需要的密钥。
这里,服务器根据接收自HLR/AUC的tempK得到自己需要的密钥的操作可以直接在步骤105执行,也可以在步骤105之后的任何时候执行,例如,在步骤107之后执行。
客户端可以通过用户卡接口模块得到该tempK。
用户卡和HLR/AUC产生tempK的方法可以一致,例如,采用一致的算法和/或相应的输入参数。
客户端和服务器根据tempK得到自己需要的密钥的方法也可以一致。例如,可以都是直接使用tempK作为各自需要的密钥,或者都是通过一致的算法和/或相应的参数例如IMSI等等,对tempK进行一致的函数运算后得到自己需要的密钥。
上述客户端可以是运行在移动终端上的客户端,也可以是运行在PC机上的客户端。如果是运行在PC机上的客户端,且用户卡接口模块是移动终端,则,该移动终端可以通过串口或红外或其它通信方式例如篮牙等与PC机相连,并与客户端建立通信连接。
上述步骤103可以在步骤102之前执行。例如,HLR/AUC可以提前产生并保存RAND和tempK,并在服务器请求时发送给该服务器。
上述步骤102和103,HLR/AUC可以为该服务器协商密钥而专门设计一套算法和协议处理过程,但是,这样会增加HLR复杂度以及开发成本。实际当中,在步骤102中,服务器可以模拟漫游MSC/VLR从HLR/AUC请求鉴权元组,HLR/AUC在接收到仿MSC/VLR的服务器的请求鉴权元组的请求消息后将产生的鉴权元组中的一组或多组发送给该服务器,这样,服务器从对应的鉴权元组中得到所述RAND,并将鉴权元组中的密码密钥或者加密密钥和/或完整性密钥作为tempK。这样,HLR/AUC就不会因为执行步骤102和步骤103而作任何更改或升级。
请参阅图2,图2为所示本发明具体实施方式
一的第一具体实施例,在该实施例中,服务器模拟MSC/VLR从HLR/AUC请求鉴权元组的协议过程向HLR/AUC发送请求鉴权元组的请求消息。HLR/AUC在接收到该服务器的请求鉴权元组的请求消息后,将产生的鉴权元组发送给该服务器;服务器从对应的鉴权元组中得到所述RAND,并将鉴权元组中的密码密钥Kc作为tempK。本实施例中,服务器每次从HLR/AUC请求鉴权元组时,获取一个鉴权元组。当然,可以理解,服务器也完全可以象MSC/VLC一样,一次从HLR/AUC获取多个鉴权元组。
首先,在步骤201中,将用户卡的IMSI发送给服务器。
实际当中,客户端通过用户卡接口模块对用户卡进行存取访问,例如,该用户卡接口模块可以是无线上网卡,例如是目前市场上销售的移动通信数据卡,或者是移动终端,当然,也可以是有线上网卡,例如是有线数据卡,或者是固定终端,用户卡接口模块可以进一步包括用户卡驱动程序,并通过调用用户卡驱动程序来访问对应的用户卡。客户端通过用户卡接口模块来访问用户卡,客户端可以及一步包括用户卡接口模块的驱动程序,并通过调用该用户卡接口模块的驱动程序来访问用户卡接口模块,进而对用户卡进行存取访问。在用户卡接口模块与客户端的接口标准化以后,客户端可以内嵌对应的用户卡接口模块驱动程序。用户卡接口模块可以作为无线网络或有线网络的通信终端而连接到所述无线网络或有线网络,这种情况下,可以由用户卡接口模块将用户卡的IMSI通过有线或无线网络发送给服务器;也可以由客户端通过用户卡接口模块读取用户卡的IMSI,并将其通过有线或无线网络发送给服务器,这种情况下,用户卡接口模块可以仅仅是一个用户卡读写设备,当然,此时的用户卡接口模块也可以仍然是一个有线网卡或无线网卡或移动终端或固定终端。客户端可以通过用户卡接口模块获得用户卡的IMSI,并将得到的IMSI通过有线网络或无线网络发送给服务器。在用户卡接口模块可以连接到所述无线网络或有线网络的情况下,客户端也可以通过向用户卡接口模块发送指令,通过该指令指示用户卡接口模块将读取的用户卡IMSI发送给服务器。
步骤202、服务器向HLR/AUC发送请求鉴权元组的消息,消息中携带步骤201中所述的获取自用户卡的IMSI。服务器是模拟MSC/VLC向HLR/AUC发送请求鉴权元组的请求消息的。
步骤203、HLR/AUC根据IMSI,将对应产生的鉴权元组发送给所述服务器。HLR/AUC可以是针对每个IMSI提前产生相应的鉴权元组,这样,在MSC/VLC或模拟MSC/VLC的服务器请求鉴权元组时,HLR/AUC可以给予其快速的响应。当然,HLR/AUC也完全可以在接收到MSC/VLC或模拟MSC/VLC的服务器的请求鉴权元组的请求消息后,才根据其中对应的IMSI来实时产生鉴权元组并发送给该MSC/VLC或模拟MSC/VLC的服务器的。关于服务器如何产生鉴权元组的操作,可以参见3GPP相关协议规范,这里不再详述。
所述鉴权元组包括随机数RAND、密码密钥Kc、鉴权响应RES。
步骤204、服务器得到鉴权元组后,将鉴权元组中的RAND发送给用户卡。
步骤205、用户卡根据保存的KI和接收的RAND产生Kc。
步骤206、客户端从用户卡得到Kc,并根据Kc得到自己需要的密钥。客户端可以直接将Kc作为自己需要的密钥,也可以通过一定的算法和/或相应的参数例如IMSI等等,对Kc进行一定的函数运算后得到自己需要的密钥。
服务器根据鉴权元组中的Kc得到自己需要的密钥。服务器可以直接将Kc作为自己需要的密钥,也可以通过一定的算法和/或相应的参数例如IMSI等等,对Kc进行一定的函数运算后得到自己需要的密钥。
这里,服务器根据鉴权元组中的Kc得到自己需要的密钥的操作可以直接在步骤204执行,也可以在步骤204之后的任何时候执行,例如,在步骤206之后执行。
一般的,步骤202和203中,服务器一次从HLR/AUC获取一组鉴权元组即可,也即HLR/AUC向服务器传送一组鉴权元组即可。当然,服务器可以根据需要,一次从HLR/AUC获取多个鉴权元组。
在步骤205中,用户卡可以进一步产生鉴权的符号响应SRES,该SRES可以被发送到服务器,服务器通过对SRES和对应鉴权元组中的RES进行一致性验证可以判断客户端侧是否正确产生了需要协商的密钥。具体可以参照GSM或3GPP相关协议规范,这里不再详细叙述。实际当中,可以是用户卡接口模块通过无线网络将该SRES发送给服务器,也可以是客户端通过有线网络将该SRES发送到服务器。这种情况下,服务器根据鉴权元组中的Kc得到自己需要的密钥的步骤可以在接收到用户卡产生的鉴权符号响应SRES,并对SRES和相应鉴权元组中的RES进行一致性验证通过后执行。并且,服务器在对SRES和相应鉴权元组中的RES进行一致性验证不通过时,可以判断客户端提供的对应的用户卡是非法用户卡,服务器可以拒绝该客户端的注册或协商密钥请求。
第三代移动通信系统中,增加了终端对网络鉴权,HLR/AUC产生的鉴权元组增加了新的内容。
请参阅图3,图3为所示本发明具体实施方式
一的第二具体实施例,在该实施例中,服务器模拟MSC/VLR从HLR/AUC请求鉴权元组的协议过程向HLR/AUC发送请求鉴权元组的请求消息。HLR/AUC在接收到该服务器的请求鉴权元组的请求消息后,将产生的鉴权元组发送给该服务器;服务器从对应的鉴权元组中得到所述RAND,并将鉴权元组中的加密密钥CK和/或完整性密钥IK作为tempK。本实施例中,服务器每次从HLR/AUC请求鉴权元组时,获取一个鉴权元组。当然,可以理解,服务器也完全可以象MSC/VLC一样,一次从HLR/AUC获取多个鉴权元组。
首先,在步骤301中,将用户卡的IMSI发送给服务器。
实际当中,客户端通过用户卡接口模块对用户卡进行存取访问,例如,该用户卡接口模块可以是无线上网卡,例如是目前市场上销售的移动通信数据卡,或者是移动终端,当然,也可以是有线上网卡,例如是有线数据卡,或者是固定终端,用户卡接口模块可以进一步包括用户卡驱动程序,并通过调用用户卡驱动程序来访问对应的用户卡。客户端通过用户卡接口模块来访问用户卡,客户端可以及一步包括用户卡接口模块的驱动程序,并通过调用该用户卡接口模块的驱动程序来访问用户卡接口模块,进而对用户卡进行存取访问。在用户卡接口模块与客户端的接口标准化以后,客户端可以内嵌对应的用户卡接口模块驱动程序。用户卡接口模块可以作为无线网络或有线网络的通信终端而连接到所述无线网络或有线网络,这种情况下,可以由用户卡接口模块将用户卡的IMSI通过有线或无线网络发送给服务器;也可以由客户端通过用户卡接口模块读取用户卡的IMSI,并将其通过有线或无线网络发送给服务器,这种情况下,用户卡接口模块可以仅仅是一个用户卡读写设备,当然,此时的用户卡接口模块也可以仍然是一个有线网卡或无线网卡或移动终端或固定终端。客户端可以通过用户卡接口模块获得用户卡的IMSI,并将得到的IMSI通过有线网络或无线网络发送给服务器。在用户卡接口模块可以连接到所述无线网络或有线网络的情况下,客户端也可以通过向用户卡接口模块发送指令,通过该指令指示用户卡接口模块将读取的用户卡IMSI发送给服务器。
步骤302、服务器向HLR/AUC发送请求鉴权元组的消息,消息中携带步骤301中所述的获取自用户卡的IMSI。服务器是模拟MSC/VLC向HLR/AUC发送请求鉴权元组的请求消息的。
步骤303、HLR/AUC根据IMSI,将对应产生的鉴权元组发送给所述服务器。HLR/AUC可以是针对每个IMSI提前产生相应的鉴权元组,这样,在MSC/VLC或模拟MSC/VLC的服务器请求鉴权元组时,HLR/AUC可以给予其快速的响应。当然,HLR/AUC也完全可以在接收到MSC/VLC或模拟MSC/VLC的服务器的请求鉴权元组的请求消息后,才根据其中对应的IMSI来实时产生鉴权元组并发送给该MSC/VLC或模拟MSC/VLC的服务器的。
所述鉴权元组包括随机数RAND、加密密钥KC、完整性密钥IK,鉴权标记AUTN和期望响应XRES。
步骤304、服务器得到鉴权元组后,将鉴权元组中的RAND发送给用户卡。
步骤305、用户卡根据保存的KI和接收的RAND产生CK和/或IK。
步骤306、客户端从用户卡得到CK和/或IK,并根据CK和/或IK得到自己需要的密钥。客户端可以直接将CK或IK作为自己需要的密钥,也可以通过一定的算法和/或相应的参数例如IMSI等等,对CK和/或IK进行一定的函数运算后得到自己需要的密钥。
服务器根据鉴权元组中的CK和/或IK得到自己需要的密钥。服务器可以直接将CK或IK作为自己需要的密钥,也可以通过一定的算法和/或相应的参数例如IMSI等等,对CK和/或IK进行一定的函数运算后得到自己需要的密钥。
这里,服务器根据鉴权元组中的Kc得到自己需要的密钥的操作可以直接在步骤304执行,也可以在步骤203之后的任何时候执行,例如,在步骤306之后执行。
一般的,步骤302和303中,服务器一次从HLR/AUC获取一组鉴权元组即可,也即HLR/AUC向服务器传送一组鉴权元组即可。当然,服务器可以根据需要,一次从HLR/AUC获取多个鉴权元组。
上述步骤304和305,用户卡可以为该客户端协商密钥而专门设计一套算法和协议处理过程,但是,这样会增加用户卡复杂度以及开发成本。实际当中,在步骤304中,服务器在将鉴权元组中的RAND发送给用户卡时,还将鉴权元组中的AUTN也一同发送给用户卡。这样,用户卡完全利用现有的和网络侧进行相互鉴权的流程产生了CK、IK以及对应的鉴权相应RES。并通过向服务器返回该RES可以让服务器确认客户端侧正确产生了相应的密钥。并且,还可以通过对网络的鉴权,避免了客户端受到假服务器的攻击。当然,这样,用户卡也不会因为执行步骤304和步骤305而作任何更改或升级。
请参阅图4,图4为所示本发明具体实施方式
一的第三具体实施例,在该实施例中,服务器模拟MSC/VLR从HLR/AUC请求鉴权元组的协议过程向HLR/AUC发送请求鉴权元组的请求消息。HLR/AUC在接收到该服务器的请求鉴权元组的请求消息后,将产生的鉴权元组发送给该服务器。服务器得到HLR/AUC发送的鉴权元组后,将该鉴权元组中的AUTN和RAND一起发送个用户卡,用户卡根据现有AKA(用户卡与网络侧进行鉴权与密钥协商的流程)流程根据RAND产生密码密钥CK、完整性密钥IK和鉴权响应RES。
首先,在步骤401中,将用户卡的IMSI发送给服务器。
实际当中,客户端通过用户卡接口模块对用户卡进行存取访问,例如,该用户卡接口模块可以是无线上网卡,例如是目前市场上销售的移动通信数据卡,或者是移动终端,当然,也可以是有线上网卡,例如是有线数据卡,或者是固定终端,用户卡接口模块可以进一步包括用户卡驱动程序,并通过调用用户卡驱动程序来访问对应的用户卡。客户端通过用户卡接口模块来访问用户卡,客户端可以及一步包括用户卡接口模块的驱动程序,并通过调用该用户卡接口模块的驱动程序来访问用户卡接口模块,进而对用户卡进行存取访问。在用户卡接口模块与客户端的接口标准化以后,客户端可以内嵌对应的用户卡接口模块驱动程序。用户卡接口模块可以作为无线网络或有线网络的通信终端而连接到所述无线网络或有线网络,这种情况下,可以由用户卡接口模块将用户卡的IMSI通过有线或无线网络发送给服务器;也可以由客户端通过用户卡接口模块读取用户卡的IMSI,并将其通过有线或无线网络发送给服务器,这种情况下,用户卡接口模块可以仅仅是一个用户卡读写设备,当然,此时的用户卡接口模块也可以仍然是一个有线网卡或无线网卡或移动终端或固定终端。客户端可以通过用户卡接口模块获得用户卡的IMSI,并将得到的IMSI通过有线网络或无线网络发送给服务器。在用户卡接口模块可以连接到所述无线网络或有线网络的情况下,客户端也可以通过向用户卡接口模块发送指令,通过该指令指示用户卡接口模块将读取的用户卡IMSI发送给服务器。
步骤402、服务器向HLR/AUC发送请求鉴权元组的消息,消息中携带步骤401中所述的获取自用户卡的IMSI。服务器是模拟MSC/VLC向HLR/AUC发送请求鉴权元组的请求消息的。
步骤403、HLR/AUC根据IMSI,将对应产生的鉴权元组发送给所述服务器。HLR/AUC可以是针对每个IMSI提前产生相应的鉴权元组,这样,在MSC/VLC或模拟MSC/VLC的服务器请求鉴权元组时,HLR/AUC可以给予其快速的响应。当然,HLR/AUC也完全可以在接收到MSC/VLC或模拟MSC/VLC的服务器的请求鉴权元组的请求消息后,才根据其中对应的IMSI来实时产生鉴权元组并发送给该MSC/VLC或模拟MSC/VLC的服务器的。
步骤404、服务器得鉴权元组后,根据鉴权元组中的CK和/或IK得到自己需要的密钥,并将鉴权元组中的AUTN和RAND发送给用户卡。
和该实施方式的具体实施例二一样,服务器可以直接将CK或IK作为自己需要的密钥,也可以通过一定的算法和/或相应的参数例如IMSI等等,对CK和/或IK进行一定的函数运算后得到自己需要的密钥。
步骤405、用户卡根据现有的和网络侧相互鉴权的算法和协议流程,根据保存的KI、接收的AUTN和RAND产生CK、IK和鉴权响应RES。
步骤406、客户端从用户卡得到CK和/或IK,并根据CK和/或IK得到自己需要的密钥。客户端可以直接将CK或IK作为自己需要的密钥,也可以通过一定的算法和/或相应的参数例如IMSI等等,对CK和/或IK进行一定的函数运算后得到自己需要的密钥。
服务器根据鉴权元组中的CK和/或IK得到自己需要的密钥。和该实施方式的具体实施例二一样,服务器可以直接将CK或IK作为自己需要的密钥,也可以通过一定的算法和/或相应的参数例如IMSI等等,对CK和/或IK进行一定的函数运算后得到自己需要的密钥。
这里,服务器根据鉴权元组中的Kc得到自己需要的密钥的操作可以直接在步骤404执行,也可以在步骤403之后的任何时候执行,例如,在步骤406之后执行。
在步骤405中,用户卡产生CK、IK和RES时,可以不需要AUTN,但用户卡可以根据AUTN、RAND以及保存的KI来判断是否要执行产生CK、IK和RES的操作,也即,用户卡根据保存的KI、接收的AUTN和RAND产生CK、IK和鉴权响应RES时,还进一步包括根据保存的KI和接收的AUTN以及RAND对网络鉴权,并在对网络鉴权无法通过时,不执行所述根据保存的KI和接收的RAND产生CK、IK和鉴权响应RES的操作。
在第三代移动通信系统中,根据现有的用户卡和网络侧相互鉴权的协议规范,用户卡对于网鉴权不通过是指,用户卡根据接收到的RAND与自身保存的鉴权密钥KI和接收到的AUTN中的SQNHE以及AMF采用与HLR/AUC计算AUTN中MAC-A一致的算法计算出MAC-A,然后进行一致性验证,即,比较自己计算得到的MAC-A与接收到的AUTN中的MAC-A是否一致,例如是否相同,如果不一致,则,判断对网络鉴权不通过。
需要说明的是,步骤405中,用户卡在比较自己计算得到的MAC-A和接收到的AUTN中的MAC-A一致时,还进一步判断AUTN中的SQNHE是否在可接受范围内,如果是,则判断出对网络鉴权通过,并则执行所述根据保存的KI和接收的RAND产生CK、IK和鉴权响应RES的步骤;否则,判断出同步失败,并会发起同步SQN的流程,并通过该流程使得HLR/AUC中对应保存的SQNHE与用户卡中保存的SQNMS一致起来。
用户卡通过比较自己保存的SQNMS和AUTN中的SQNHE是否满足预定的条件来判断AUTN中的SQNHE是否可以接受,该预定条件可以是SQNHE和SQNMS的差值在预定范围内,例如,是否(SQNHE-SQNMS)大于0,或者是否(SQNHE-SQNMS)大于0且小于256。如果SQNHE和SQNMS的差值在所述预定范围内,则判断出SQNHE是可接受的;否则判断出SQNHE是不可接受的。
用户卡发起同步SQN流程时,根据SQNMS产生再同步标记AUTS,根据该AUTS构造同步请求消息,该消息被送到服务器。具体地说,用户卡根据自己的KI、SQNMS和接收到的RAND以及AMF等计算得到MAC-S,再根据SQNMS、AK和MAC-S产生再同步标记AUTS,构造同步请求消息,消息中附上该AUTS,并将该消息发送到服务器。实际当中,可以是用户卡接口模块通过无线网络将该消息发送给服务器,也可以是客户端通过有线网络将该消息发送到服务器。
服务器接收到同步请求消息时,向HLR/AUC发送请求新鉴权元组的请求,或者发送同步请求,请求中附上对应鉴权元组中的RAND和接收的由用户卡产生的AUTS。HLR/AUC接收到同步请求消息后,所执行的后续同步处理,可以参见3GPP相关协议规范,由于是公知技术,这里不再详述。
HLR/AUC在根据SQNMS同步了SQNHE,可以产生新的鉴权元组并发送给服务器,服务器在执行步骤404及其以后步骤。
步骤405之后还可以进一步包括将用户卡产生的RES发送给服务器的操作。实际当中,可以是用户卡接口模块通过无线网络将该RES发送给服务器,也可以是客户端通过有线网络将该RES发送到服务器。服务器通过对RES和相应鉴权元组中的XRES进行一致性验证判断客户端侧是否正确地产生了对应的需要协商的密钥。
需要说明的是,服务器根据鉴权元组中的CK和/或IK得到自己需要的密钥的步骤可以在接收到用户卡产生的鉴权响应RES,并对RES和相应鉴权元组中的XRES进行一致性验证通过后执行。并且,服务器在对RES和相应鉴权元组中的XRES进行一致性验证不通过时,可以判断客户端提供的对应的用户卡是非法用户卡,服务器可以拒绝该客户端的注册或协商密钥请求。
请参阅图5,图5为所示本发明具体实施方式
一的第四具体实施例,在该实施例中,服务器模拟MSC/VLR从HLR/AUC请求鉴权元组的协议过程向HLR/AUC发送请求鉴权元组的请求消息。HLR/AUC在接收到该服务器的请求鉴权元组的请求消息后,将产生的鉴权元组发送给该服务器。服务器得到HLR/AUC发送的鉴权元组后,将该鉴权元组中的AUTN和RAND一起发送个用户卡,用户卡根据AUTN和RAND对网络进行鉴权,并在对网络鉴权通过后,根据RAND产生密码密钥CK、完整性密钥IK和鉴权响应RES,用户卡对鉴权不通过时,向服务器返回鉴权失败;用户卡判断AUTN中SQNHE不可解手时,向服务器发起同步SQN流程。
首先,在步骤501中,将用户卡的IMSI发送给服务器。
实际当中,客户端通过用户卡接口模块对用户卡进行存取访问,例如,该用户卡接口模块可以是无线上网卡,例如是目前市场上销售的移动通信数据卡,或者是移动终端,当然,也可以是有线上网卡,例如是有线数据卡,或者是固定终端,用户卡接口模块可以进一步包括用户卡驱动程序,并通过调用用户卡驱动程序来访问对应的用户卡。客户端通过用户卡接口模块来访问用户卡,客户端可以及一步包括用户卡接口模块的驱动程序,并通过调用该用户卡接口模块的驱动程序来访问用户卡接口模块,进而对用户卡进行存取访问。在用户卡接口模块与客户端的接口标准化以后,客户端可以内嵌对应的用户卡接口模块驱动程序。用户卡接口模块可以作为无线网络或有线网络的通信终端而连接到所述无线网络或有线网络,这种情况下,可以由用户卡接口模块将用户卡的IMSI通过有线或无线网络发送给服务器;也可以由客户端通过用户卡接口模块读取用户卡的IMSI,并将其通过有线或无线网络发送给服务器,这种情况下,用户卡接口模块可以仅仅是一个用户卡读写设备,当然,此时的用户卡接口模块也可以仍然是一个有线网卡或无线网卡或移动终端或固定终端。客户端可以通过用户卡接口模块获得用户卡的IMSI,并将得到的IMSI通过有线网络或无线网络发送给服务器。在用户卡接口模块可以连接到所述无线网络或有线网络的情况下,客户端也可以通过向用户卡接口模块发送指令,通过该指令指示用户卡接口模块将读取的用户卡IMSI发送给服务器。
步骤502、服务器向HLR/AUC发送请求鉴权元组的消息,消息中携带步骤501中所述的获取自用户卡的IMSI。服务器是模拟MSC/VLC向HLR/AUC发送请求鉴权元组的请求消息的。当然,服务器也可以是模拟分组域设备SGSN来向HLR/AUC发送请求鉴权元组的请求消息的。
步骤503、HLR/AUC根据IMSI,将对应产生的鉴权元组发送给所述服务器。HLR/AUC可以是针对每个IMSI提前产生相应的鉴权元组,这样,在MSC/VLC或模拟MSC/VLC的服务器请求鉴权元组时,HLR/AUC可以给予其快速的响应。当然,HLR/AUC也完全可以在接收到MSC/VLC或模拟MSC/VLC的服务器的请求鉴权元组的请求消息后,才根据其中对应的IMSI来实时产生鉴权元组并发送给该MSC/VLC或模拟MSC/VLC的服务器的。
步骤504、服务器得鉴权元组后,将鉴权元组中的AUTN和RAND发送给用户卡。
步骤505、用户卡根据现有的和网络侧相互鉴权的算法和协议流程,先对RAND和AUTN进行一致性验证。
具体地说,用户卡接收到来自服务器发送的随机数RAND和鉴权标记AUTN时,根据接收到的RAND、自身保存的KI和接收到的AUTN中的SQNHE以及AMF采用与HLR/AUC计算AUTN中MAC-A一致的算法进行计算得到一个计算结果,然后用户卡将自己计算得到的计算结果与AUTN中的MAC-A进行比较,看二者是否一致,例如是否相同,若不一致,则认为对网络的鉴权未通过,执行步骤506;若一致,则执行步骤507。
步骤506,用户卡向服务器返回“鉴权失败”的信息,然后结束本次密钥协商流程。实际当中,用户卡将“鉴权失败”的信息发送给服务器后,服务器还可以模拟MSC/VLR根据该“鉴权失败”信息向HLR/AUC返回相应的失败报告。
步骤507,用户卡判断AUTN中的SQNHE是否在可接受范围内,如果是,则判断出对网络鉴权通过,并执行步骤508,否则,判断出同步失败,并执行步骤512。
具体地说,用户卡通过比较自己保存的SQNMS和AUTN中的SQNHE是否满足预定的条件来判断AUTN中的SQNHE是否可以接受。该预定条件可以是SQNHE和SQNMS的差值在预定范围内,例如,是否(SQNHE-SQNMS)大于0,或者是否(SQNHE-SQNMS)大于0且小于256。如果SQNHE和SQNMS的差值在所述预定范围内,则判断出SQNHE是可接受的;否则判断出SQNHE是不可接受的。
用户卡判断出对网络鉴权通过后,还可以进一步包括根据AUTN中的SQNHE更新自己保存的SQNMS的步骤,例如将SQNMS的值设置为与该SQNHE相等。
步骤508,用户卡根据保存的KI和接收到的随机数RAND产生加密密钥CK、完整性密钥IK和鉴权响应RES;向服务器发送鉴权响应RES;然后执行步骤509。
步骤509,服务器接收到用户卡的鉴权响应RES后判断用户卡产生的RES是否与对应鉴权元组中的期望响应XRES一致,例如是否相同,如果一致,则执行步骤510;否则,执行步骤511。
步骤510,服务器判断出对用户卡鉴权通过,根据鉴权元组中的CK和/或IK得到自己需要的密钥。
这里,服务器还可以进一步向用户卡返回鉴权成功信息,由于正常情况下,鉴权成功发生的情况远远多于鉴权失败发生的情况,因此3GPP协议规范考虑到节省网络带宽,在MSC/VLR对用户卡鉴权成功时,没有向用户卡返回鉴权成功消息。不过,对于该服务器来说,可以是在鉴权成功时向用户卡返回鉴权成功消息。
服务器可以直接将CK或IK作为自己需要的密钥,也可以通过一定的算法和相应的参数例如IMSI等等,对CK和/或IK进行一定的函数运算后得到自己需要的密钥。
步骤511,服务器判断出对用户卡鉴权失败,向用户卡返回鉴权失败信息。3GPP协议规范考虑到节省网络带宽,在MSC/VLR对用户卡鉴权失败时,向用户卡返回鉴权失败消息。不过,对于该服务器来说,可以是在鉴权失败时不再向用户卡返回鉴权失败消息。
步骤512,用户卡根据SQNMS产生再同步标记AUTS,对服务器发起再同步请求命令,并附上AUTS。
具体地说,用户卡根据自己的KI、SQNMS和接收到的RAND以及AMF等计算得到MAC-S,再根据SQNMS、AK和MAC-S产生再同步标记AUTS,然后对网络侧发起再同步请求命令,并附上该AUTS。也即,向服务器发送同步失败消息,该同步失败消息中包含了AUTS。然后执行步骤513。
步骤513,服务器接收到再同步请求命令时,向HLR/AUC发送请求新鉴权元组的请求,或者发送同步请求,请求中附上对应鉴权元组中的RAND和接收自用户卡的AUTS。
步骤514,HLR/AUC通过验证AUTS的合法性来验证再同步请求命令的完整性或合法性,如果合法,则执行步骤515;否则,执行步骤516;具体地说,网络侧的HLR/AUC根据接收自服务器的RAND、保存的KI、接收到的AUTS中的SQNMS和AMF等采用与用户卡计算AUTS中的MAC-S一致的算法计算得到一个计算结果,然后通过比较自己计算得到的计算结果与接收到的AUTS中的MAC-S是否一致,例如是否相同,来判断AUTS合法性,若所述计算结果与AUTS中的MAC-S值比较一致,则认为AUTS合法,否则认为AUTS不合法性。
步骤515,HLR/AUC根据SQNMS更新SQNHE,并重新产生鉴权元组,将新产生的鉴权元组发送给服务器,然后,结束本次流程。
步骤516,HLR/AUC认为再同步标记AUTS信息不合法,AUTS中的SQNMS不再可信,这种情况下,HLR/AUC还可以向服务器发送再同步请求命令不合法信息,然后,结束本次流程。
步骤517、客户端获取用户卡产生的CK和/或IK,并在成功获取对应的CK和/或IK后,根据CK和/或IK得到自己需要的密钥。客户端可以直接将CK或IK作为自己需要的密钥,也可以通过一定的算法和/或相应的参数例如IMSI等等,对CK和/或IK进行一定的函数运算后得到自己需要的密钥。
在用户卡对服务器鉴权通过后,用户卡产生CK、IK。需要说明的是,客户端在获取用户卡产生的CK和/或IK时,会出现如下情况,用户卡和网络还没有执行针对本次客户端与服务器协商密钥的鉴权操作过程,此时用户卡还没有为本次客户端与服务器协商密钥产生对应的CK和/或IK;用户卡与网络鉴权时没有通过,包括用户卡对网络鉴权不通过,用户卡不产生CK和/或IK,这种情况,客户端都将无法获得用户卡产生的CK和/或IK;还有一种情况,服务器对用户卡鉴权不通过。例如用户卡收到网络返回的鉴权失败消息,用户卡可以将产生的CK和/或IK废弃,用户卡将产生的CK和/或IK废弃后,客户端也无法获得用户卡产生的CK和/或IK。
当客户端无法从用户卡获取对应的CK和/或IK时,客户端可以判断用户卡和服务器鉴权不通过。这种情况下,客户端可以提示用户,用户卡不合法,或者用户卡不是对应服务器所接入的移动网络运营商的用户卡。
需要说明的是,服务器对用户卡鉴权通过后,步骤510中、还可以进一步包括向HLR/AUC返回鉴权失败报告的步骤。在该失败报告中还可以用特殊的原因值来区分这种情况的假失败,也即,设置一个失败原因值,用其表示相关服务器对用户卡鉴权通过,而不是某个MSC/VLR对用户卡鉴权失败。
上述各个实施例中,用户卡向服务器发送信息的操作,可以是通过用户卡接口模块来完成,例如,通过该接口模块将相应消息通过无线网络发送给服务器,或者通过该接口模块,将相应消息发送给客户端,在通过客户端通过有线网络发送给服务器,例如,通过有线宽带网络发送给服务器。
上述各个具体实施方式
或实施例中,用户卡对于AUTN一致性验证,对于SQNHE是否属于可接受范围的判断,HLR/AUC对于AUTS合法性的验证,以及HLR/AUC产生鉴权元组时,对于SQNHE的更新;产生鉴权元组的算法,以及产生AUTS的算法,等等,可以参见3GPP相关协议规范,由于是公知技术,这里不再赘述。
上述各个具体实施方式
或实施例中,用户卡和HLR/AUC产生密钥可以是使用成熟的摘要算法,相应摘要算法可以参见《应用密码学》一书或相关的算法论文或报告;当然,产生新密钥时,也可以使用3GPP协议中提到的由随机数RAND和鉴权密钥KI产生加密密钥CK或完整性密钥IK的算法来进行。
需要说明的是,上述MSC/VLR为电路域设备,对于分组域的网络,对应的MSC/VLR设备为SGSN。例如,上述服务器模拟MSC/VLR从HLR/AUC请求鉴权元组的协议过程向HLR/AUC发送请求鉴权元组的请求消息的操作是电路域的处理方式,对于分组域,可以是服务器模拟SGSN从HLR/AUC请求鉴权元组的协议过程向HLR/AUC发送请求鉴权元组的请求消息的操作。
通过上述方式,客户端和服务器协商的密钥,可以是作为鉴权密钥,也可以作为通信加密密钥和/或完整性密钥。当同时作为通信加密密钥和完整性密钥时,一种较佳的方式是从HLR同时得到CK、IK,这样,可以利用CK作为加密密钥,而利用IK作为完整性密钥。上述客户端可以是运行在PC机上的客户端,也可以是运行在PANDA上的客户端,也可以是运行在移动终端或者固定终端上的客户端。例如是移动终端上或者PC机上运行的特殊软件,通过该软件访问运营商的某个特殊网站或服务器,例如,该服务器可以是中国移动目前的随e行业务服务器。
上述实施方式或各个实施例中,客户端对用户卡的访问可以通过数据卡,或者PC机上的特殊读卡设备。
上述实施方式或各个实施例中,所述客户端可以是随e行系统的客户端,所述服务器可以是随e行系统的服务器。
显然,上述实施例中,对于移动固定融合的运营商,提供的通过有线网卡连接网络服务器的业务情况下,也可以采用这种密钥协商方式的。
一种客户端与服务器协商密钥的系统,包括用户卡、用户卡接口模块、客户端应用模块、服务器、无线通信网络系统,该无线通信网络系统中设置有HLR/AUC。参见图6。
所述服务器连接到无线通信网络系统并与该系统中的HLR/AUC建立连接;所述客户端通过用户卡接口模块连接到无线通信网络系统,并通过该无线通信网络系统连接所述服务器。所述客户端通过用户卡接口模块连接所述用户卡。这里的用户卡接口模块可以是无线上网卡或无线终端。
在该密钥协商系统中,客户端通过用户卡接口模块读取用户卡的IMSI,并通过用户卡接口模块将该IMSI发送给服务器。实际当中,可以由用户卡接口模块将用户卡的IMSI通过无线网络发送给服务器,也可以由客户端通过用户卡接口模块读取用户卡的IMSI,并将其通过无线网络发送给服务器。客户端可以获得用户卡的IMSI,并将得到的IMSI通过无线网络发送给服务器,这个过程中,用户卡接口模块可以透传服务器和客户端之间交互的消息,也可以透传客户端与用户卡之间交互的消息。客户端也可以通过向用户卡接口模块发送指令,通过该指令指示用户卡接口模块将读取的用户卡IMSI发送给服务器。例如,该用户卡接口模块可以是包括用户卡驱动程序的无线上网卡,例如是移动通信数据卡,或者是移动终端。
服务器得到客户端侧发送的IMSI后,将IMSI发送给HLR/AUC。HLR/AUC产生随机数RAND,并根据自己保存的KI、产生的RAND产生临时密钥tempK。HLR/AUC将产生的RAND和tempK发送给服务器。服务器得到RAND和tempK后,根据tempK得到自己需要的密钥,并将RAND发送给用户卡。
服务器通过无线网络将RAND发送给用户卡接口模块,例如该用户卡接口模块可以是插入了该用户卡的无线上网卡或移动终端,并由该用户卡接口模块最终将RAND发送给用户卡。这其中,还包括所述用户卡接口模块直接将得自服务器的RAND发送给用户卡,也可以是用户卡接口模块先将得自服务器的RAND发送客户端,并由客户端再通过用户卡接口模块间接地将所述RAND发送给用户卡,这个过程中,用户卡接口模块可以透传服务器和客户端之间交互的消息,也可以透传客户端与用户卡之间交互的消息。
用户卡得到用户卡接口模块发送的RAND后,根据保存的KI和接收的RAND产生tempK。客户端从用户卡得到tempK,并根据tempK得到自己需要的密钥。从而完成客户端与服务器协商密钥的过程。在这里,客户端可以通过用户卡接口模块得到该tempK。
这里,客户端可以是运行在移动终端上的客户端,也可以是运行在PC机上的客户端。如果是运行在PC机上的客户端,且用户卡接口模块是移动终端,则,该移动终端可以通过串口或红外或其它通信方式例如篮牙等与PC机相连,并与客户端建立通信连接。
实际当中,用户卡接口模块可以进一步包括用户卡驱动程序,并通过调用用户卡驱动程序来访问对应的用户卡。客户端通过用户卡接口模块来访问用户卡,客户端可以及一步包括用户卡接口模块的驱动程序,并通过调用该用户卡接口模块的驱动程序来访问用户卡接口模块,进而对用户卡进行存取访问。在用户卡接口模块与客户端的接口标准化以后,客户端可以内嵌对应的用户卡接口模块驱动程序。
所述客户端可以是随e行系统的客户端,所述服务器可以是随e行系统的服务器。
一种客户端与服务器协商密钥的系统,包括用户卡、用户卡接口模块、客户端应用模块、服务器、有线通信网络系统、无线通信网络系统,该无线通信网络系统中设置有HLR/AUC。参见图7。
所述服务器连接到无线通信网络系统并与该系统中的HLR/AUC建立连接;所述客户端通过用户卡接口模块接入到有线通信网络系统,并通过该有线通信网络系统连接所述服务器。所述客户端通过用户卡接口模块连接所述用户卡。这里的用户卡接口模块可以是有线上网卡或固定终端。
在该密钥协商系统中,客户端通过用户卡接口模块读取用户卡的IMSI,并通过用户卡接口模块将该IMSI发送给服务器。实际当中,可以由用户卡接口模块将用户卡的IMSI通过有线网络发送给服务器,也可以由客户端通过用户卡接口模块读取用户卡的IMSI,并将其通过有线网络发送给服务器。客户端可以获得用户卡的IMSI,并将得到的IMSI通过有线网络发送给服务器,这个过程中,用户卡接口模块可以透传服务器和客户端之间交互的消息,也可以透传客户端与用户卡之间交互的消息。客户端也可以通过向用户卡接口模块发送指令,通过该指令指示用户卡接口模块将读取的用户卡IMSI发送给服务器。例如,该用户卡接口模块可以是包括用户卡驱动程序的有线上网卡,例如是固定通信数据卡,或者是固定终端。
服务器得到客户端侧发送的IMSI后,将IMSI发送给HLR/AUC。HLR/AUC产生随机数RAND,并根据自身保存的KI、所述RAND产生临时密钥tempK。HLR/AUC将产生的RAND和tempK发送给服务器。服务器得到RAND和tempK后,根据tempK得到自己需要的密钥,并将RAND发送给用户卡。
服务器通过有线网络将RAND发送给用户卡接口模块,例如该用户卡接口模块可以是插入了该用户卡的有线上网卡或固定终端,并由该用户卡接口模块最终将RAND发送给用户卡。这其中,还包括所述用户卡接口模块直接将得自服务器的RAND发送给用户卡,也可以是用户卡接口模块先将得自服务器的RAND发送客户端,并由客户端再通过用户卡接口模块间接地将所述RAND发送给用户卡,这个过程中,用户卡接口模块可以透传服务器和客户端之间交互的消息,也可以透传客户端与用户卡之间交互的消息。
用户卡得到用户卡接口模块发送的RAND后,根据保存的KI和接收的RAND产生tempK。客户端从用户卡得到tempK,并根据tempK得到自己需要的密钥。从而完成客户端与服务器协商密钥的过程。在这里,客户端可以通过用户卡接口模块得到该tempK。
这里,客户端可以是运行在移动终端上的客户端,一般的,是运行在PC机上的客户端。对于运行在PC机上的客户端,该PC机可以通过提供相应的插槽,以便插入对应的用户卡接口模块设备,或者该PC机直接集成了该用户卡接口模块,当然,也可以通过串口来连接该用户卡接口模块设备。
实际当中,用户卡接口模块可以进一步包括用户卡驱动程序,并通过调用用户卡驱动程序来访问对应的用户卡。客户端通过用户卡接口模块来访问用户卡,客户端可以及一步包括用户卡接口模块的驱动程序,并通过调用该用户卡接口模块的驱动程序来访问用户卡接口模块,进而对用户卡进行存取访问。在用户卡接口模块与客户端的接口标准化以后,客户端可以内嵌对应的用户卡接口模块驱动程序。
所述客户端可以是随e行系统的客户端,所述服务器可以是随e行系统的服务器。
一种客户端与服务器协商密钥的系统,包括用户卡、用户卡接口模块、客户端应用模块、服务器、有线通信网络系统、无线通信网络系统,该无线通信网络系统中设置有HLR/AUC。参见图8。
所述服务器连接到无线通信网络系统并与该系统中的HLR/AUC建立连接;所述客户端接入到有线通信网络系统,并通过该有线通信网络系统连接所述服务器,客户端在接入有线通信网络时,可以是通过有线上网卡来连接该有线通信网络的。所述客户端通过用户卡接口模块连接所述用户卡。这里的用户卡接口模块可以是用户卡读写设备。
在该密钥协商系统中,客户端通过用户卡接口模块读取用户卡的IMSI,并将该IMSI发送给服务器。客户端将读取的IMSI通过有线通信网络系统发送给服务器。
服务器得到客户端侧发送的IMSI后,将IMSI发送给HLR/AUC。HLR/AUC产生随机数RAND,并根据保存的KI、产生的RAND产生临时密钥tempK。HLR/AUC将产生的RAND和tempK发送给服务器。服务器得到RAND和tempK后,根据tempK得到自己需要的密钥,并将RAND发送给用户卡。服务器通过有线网络将RAND发送给客户端,客户端将该RAND发送给用户卡接口模块,用户卡接口模块将该RAND发送给所述用户卡。例如该用户卡接口模块可以是插入了该用户卡的用户卡读卡设备,当然,也可以是移动终端或者无线上网卡,由该用户卡接口模块最终将RAND发送给用户卡。
用户卡得到用户卡接口模块发送的RAND后,根据保存的KI和接收的RAND产生tempK。客户端从用户卡得到tempK,并根据tempK得到自己需要的密钥。从而完成客户端与服务器协商密钥的过程。在这里,客户端可以通过用户卡接口模块得到该tempK。
这里,客户端可以是运行在移动终端上的客户端,一般的,是运行在PC机上的客户端。对于运行在PC机上的客户端,该PC机可以通过提供相应的插槽,以便插入对应的用户卡接口模块设备,或者该PC机直接集成了该用户卡接口模块,当然,也可以通过串口来连接该用户卡接口模块设备。
实际当中,用户卡接口模块可以进一步包括用户卡驱动程序,并通过调用用户卡驱动程序来访问对应的用户卡。客户端通过用户卡接口模块来访问用户卡,客户端可以及一步包括用户卡接口模块的驱动程序,并通过调用该用户卡接口模块的驱动程序来访问用户卡接口模块,进而对用户卡进行存取访问。在用户卡接口模块与客户端的接口标准化以后,客户端可以内嵌对应的用户卡接口模块驱动程序。
所述客户端可以是随e行系统的客户端,所述服务器可以是随e行系统的服务器。
本发明客户端与服务器协商出来的密钥,不限于作为通信密钥、完整性验证密钥、或后期客户端与服务器相互鉴权或单向鉴权的鉴权密钥、或者是用于产生其它密钥的种子密钥。
本领域及时人员应该知道,经过简单变换,这种方法同样可以应用于CDMA系统中。
显然,本发明不只应用于随e行系统的密钥协商,对于任何类型的客户端与服务器应用系统,都可以采用这种密钥协商方法来进行密钥协商。
可以理解,以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种客户端和服务器密钥协商方法,其特征在于,包括a.将用户卡的国际移动用户标识IMSI发送给服务器;b.服务器将IMSI发送给HLR/AUC;c.HLR/AUC产生随机数RAND,并根据自身保存的KI、所述随机数RAND生成临时密钥tempK,HLR/AUC将产生的RAND和tempK发送给服务器;d.服务器得到RAND和tempK后,将RAND发送给用户卡;e.用户卡根据自身保存的KI和接收的RAND产生tempK;f.客户端从用户卡得到tempK,并根据tempK得到自己需要协商的密钥。
2.根据权利要求1所述的方法,其特征在于,所述方法进一步包括服务器根据所述tempK得到自己需要协商的密钥的操作。
3.根据权利要求2所述的方法,其特征在于,所述步骤b是指服务器向HLR/AUC发送请求鉴权元组的消息,消息中携带所述IMSI,所述鉴权元组包含随机数RAND、密码密钥Kc、符号响应SRES;所述临时密钥tempK为密码密钥Kc;相应的步骤c是指HLR/AUC根据IMSI执行产生随机数RAND,根据RAND和保存的KI产生鉴权元组,并将产生的鉴权元组发送给所述服务器。
4.根据权利要求2所述的方法,其特征在于,所述步骤b是指服务器向HLR/AUC发送请求鉴权元组的消息,消息中携带所述IMSI,所述鉴权元组包含随机数RAND、加密密钥CK、完整性密钥IK、鉴权标记AUTN和期望响应XRES;所述临时密钥tempK为加密密钥CK和/或完整性密钥IK;相应的步骤c是指HLR/AUC根据IMSI执行产生随机数RAND,根据RAND和保存的KI产生鉴权元组,并将产生的鉴权元组发送给所述服务器。
5.根据权利要求4所述的方法,其特征在于,所述步骤d中还包括将鉴权元组中的鉴权标记AUTN发送给用户卡,所述步骤e是指用户卡根据保存的KI、接收的AUTN和RAND产生CK、IK和鉴权响应RES。
6.根据权利要求5所述的方法,其特征在于,步骤e所述根据保存的KI、接收的AUTN和RAND产生CK、IK和鉴权响应RES时,先对RAND和AUTN进行一致性验证。
7.根据权利要求6所述的方法,其特征在于,在验证失败时,用户卡向服务器返回鉴权失败的信息,然后结束本次密钥协商流程。
8.根据权利要求6所述的方法,其特征在于,所述AUTN中包含HLR/AUC鉴权序列号SQNHE;所述用户卡在验证通过时,进一步判断所述SQNHE是否在可接受范围内,如果是,则执行根据保存的KI和接收到的随机数RAND产生加密密钥CK、完整性密钥IK和鉴权响应RES,并向服务器发送所述RES的操作。
9.根据权利要求8所述的方法,其特征在于,服务器接收到用户卡的鉴权响应RES后判断用户卡产生的RES是否与对应鉴权元组中的期望响应XRES一致,则根据鉴权元组中的CK和/或IK得到自己需要协商的密钥,否则服务器判断出对用户卡鉴权失败。
10.根据权利要求8所述的方法,其特征在于,所述用户卡判断出所述SQNHE不在可接受范围内时根据保存的SQNMS产生再同步标记AUTS,并根据产生的AUTS对服务器发起再同步SQNHE的流程。
11.根据权利要求2所述的方法,其特征在于,步骤a是指通过有线通信网络和/或无线通信网络将用户卡的IMSI发送给服务器。
12.根据权利要求2所述的方法,其特征在于,步骤a是指,用户卡将自己的IMSI发送给服务器;或者客户端将用户卡的IMSI发送给服务器;或者所述方法进一步包括网络连接模块,由该网络连接模块将用户卡的IMSI发送给服务器。
13.根据权利要求12所述的方法,其特征在于,所述网络连接模块为有线上网卡或无线上网卡或无线终端或固定终端。
14.根据权利要求2所述的方法,其特征在于,所述客户端可以是运行在PC机上的客户端,也可以是运行在PANDA上的客户端,也可以是运行在移动终端或者固定终端上的客户端。
15.根据权利要求2所述的方法,其特征在于,所述客户端是随e行系统的客户端,所述服务器是随e行系统的服务器。
16.一种客户端与服务器协商密钥的系统,包括用户卡、用户卡接口模块、客户端应用模块、服务器、无线通信网络系统,该无线通信网络系统中设置有HLR/AUC;所述服务器连接无线通信网络系统并与该系统中的HLR/AUC建立连接;所述客户端通过用户卡接口模块连接无线通信网络系统,并通过该无线通信网络系统连接所述服务器;所述客户端通过用户卡接口模块连接所述用户卡。
17.根据权利要求16所述的系统,其特征在于,所述客户端通过用户卡接口模块读取用户卡的IMSI,并通过用户卡接口模块、所述无线通信网络将该IMSI发送给服务器;服务器得到客户端侧发送的IMSI后,将IMSI发送给HLR/AUC;HLR/AUC产生随机数RAND,并根据保存的KI、产生的RAND产生临时密钥tempK。HLR/AUC将产生的RAND和tempK发送给服务器;服务器得到RAND和tempK后,将RAND发送给用户卡;用户卡得到用户卡接口模块发送的RAND后,根据保存的KI和接收的RAND产生tempK;客户端从用户卡得到tempK,并根据tempK得到自己需要协商的密钥;服务器根据接收自HLR/AUC的tempK得到自己需要协商的密钥。
18.一种客户端与服务器协商密钥的系统,包括用户卡、用户卡接口模块、客户端应用模块、服务器、有线通信网络系统、无线通信网络系统,该无线通信网络系统中设置有HLR/AUC;所述服务器连接无线通信网络系统并与该系统中的HLR/AUC建立连接;所述客户端通过用户卡接口模块接入有线通信网络系统,并通过该有线通信网络系统连接所述服务器;所述客户端通过用户卡接口模块连接所述用户卡。
19.根据权利要求18所述的系统,其特征在于,所述客户端通过用户卡接口模块读取用户卡的IMSI,并通过用户卡接口模块、所述有线通信网络将该IMSI发送给服务器;服务器得到客户端侧发送的IMSI后,将IMSI发送给HLR/AUC;HLR/AUC产生随机数RAND,并根据保存的KI、产生的RAND产生临时密钥tempK,HLR/AUC将产生的RAND和tempK发送给服务器;服务器得到RAND和tempK后,将RAND发送给用户卡;用户卡得到用户卡接口模块发送的RAND后,根据保存的KI和接收的RAND产生tempK;客户端从用户卡得到tempK,并根据tempK得到自己需要协商的密钥;服务器根据接收自HLR/AUC的tempK得到自己需要协商的密钥。
20.一种客户端与服务器协商密钥的系统,包括用户卡、用户卡接口模块、客户端应用模块、服务器、有线通信网络系统、无线通信网络系统,该无线通信网络系统中设置有HLR/AUC;所述服务器连接无线通信网络系统并与该系统中的HLR/AUC建立连接;所述客户端接入有线通信网络系统,并通过该有线通信网络系统连接所述服务器;所述客户端通过用户卡接口模块连接所述用户卡。
21.根据权利要求20所述的系统,其特征在于,所述客户端通过用户卡接口模块读取用户卡的IMSI,并将该IMSI发送给服务器;服务器得到客户端侧发送的IMSI后,将IMSI发送给HLR/AUC;HLR/AUC产生随机数RAND,并根据保存的KI、产生的RAND产生临时密钥tempK,HLR/AUC将产生的RAND和tempK发送给服务器;服务器得到RAND和tempK后,将RAND发送给用户卡;用户卡得到用户卡接口模块发送的RAND后,根据保存的KI和接收的RAND产生tempK。客户端从用户卡得到tempK,并根据tempK得到自己需要协商的密钥;服务器根据接收自HLR/AUC的tempK得到自己需要协商的密钥。
全文摘要
本发明公开了一种客户端和服务器密钥协商方法及其系统,该方法包括以下步骤a.将用户卡的国际移动用户标识IMSI发送给服务器;b.服务器将IMSI发送给HLR/AUC;c.HLR/AUC产生随机数RAND,并根据自身保存的KI、所述随机数RAND生成临时密钥tempK,HLR/AUC将产生的RAND和tempK发送给服务器;d.服务器得到RAND和tempK后,将RAND发送给用户卡;e.用户卡根据自身保存的KI和接收的RAND产生tempK;f.客户端从用户卡得到tempK,并根据tempK得到自己需要协商的密钥。利用本发明服务器与客户端进行密钥协商,极大地提高了密钥协商的安全性。
文档编号H04L9/08GK1859087SQ20051012146
公开日2006年11月8日 申请日期2005年12月30日 优先权日2005年12月30日
发明者王正伟 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1