专利名称:检测智能卡是否正在与手机对话的方法
技术领域:
本发明涉及一种用于防止智能卡被克隆软件克隆的方法,以及能够运行这样的方法的智能卡。该智能卡优选为SIM(“用户识别模块”)卡。
背景技术:
SIM卡(“用户识别模块”)是用于在GSM(移动通信全球系统)网络中进行认证的智能卡,所述GSM网络是广泛使用的移动通信数字网络。
为了接入GSM网络中的服务,例如发出呼叫或接收呼叫,终端用户首先需要订购移动网络运营商所提供的服务。然后向他提供其中存储有关于其身份的数据的SIM智能卡。只要将该SIM卡插入到移动手机中,该终端用户就可以接入该服务。
为了授权手机使用其资源,移动网络首先检查该手机无线提供的身份是否正确。该处理被称为“终端用户认证”。终端用户认证对于保护移动网络不被非法使用其资源并保护用户不被第三人使用其帐户是必要的。可以出于各种目的检查这样的认证,特别是当在该移动电话加电时。
图1描述了当对手机10加电并试图登录到移动提供商的网络20上时可以运行的认证处理。
用户的身份IMSI、或“国际移动用户身份”是用户S的国际身份。该身份被存储在插入到手机10中的SIM卡30的存储器24中。
为了开始该认证处理,手机10首先从插入的SIM卡30中读取用户身份IMSI,并将其发送到网络20,更准确地说是发送到该网络的认证中心(AUC)。在应答中,网络20的模块31生成随机数RAND,并将其与认证请求一起发送到手机10。手机10将RAND发送到SIM卡30。
将对用户S来说是特定的且与IMSI相关联的相同的认证密钥Ki存储在GSM网络20的认证中心中的存储器32以及SIM卡30的存储器34中。Ki保持机密,并且在认证处理期间永远不被发送。
根据所接收的IMSI值,认证中心的模块36检索存储在存储器32中的Ki相应值。然后将该Ki值、生成的RAND值和接收的IMSI值输入到认证算法40中。
在SIM卡30中可获得相同的认证算法40′。独立于认证中心,该SIM卡将存储在存储器34中的Ki值、存储在存储器24中的IMSI值和从网络接收的RAND值输入到认证算法40′中。认证算法因而计算认证结果、或“签名响应SRES”。由手机10将该认证结果SRES发送到网络20。
然后,认证中心的比较器50将SIM卡30计算的结果SRES与认证算法40计算的结果进行比较。如果这两个结果相同,则将该用户认证为有效用户,并允许其接入运营商提供的服务。否则拒绝该用户并停止其接入网络20。
每个用户具有唯一的IMSI和Ki对用于接入网络服务。SIM克隆是第三方成功地从真实用户中检索IMSI和Ki对并在另一SIM卡中复制它的过程。然后,该使用相同IMSI和Ki的克隆SIM卡可以接入网络20,而无须花费相关费用。
检索用户身份IMSI不具有主要困难。只要涉及Ki,SIM智能卡就是防篡改设备,从而防止任何设备或第三方检索Ki。然而,通过使用“冲突方法(collision method)”来分析认证算法40′的输入和输出之间的相关性就可以发现Ki。冲突方法的基本思路是根据输入到认证算法40′的不同认证来检测被称为“冲突”的某些相同的身份认证结果。每个冲突可以用于获得Ki的某部分的某些信息。通常,在50,000到150,000次的试验之后,可以获得足够的冲突数据来确定全部Ki。
市场上存在一些使用简单读卡器和个人计算机的通常可获得的工具,这些工具自动向SIM卡发送大量的认证请求,然后使用冲突方法基于这些认证结果预测Ki。通常,在一至两天内可以完成这一过程。
需要找到能够对抗该类攻击的方法。
本发明的目的是提供这样的方法。
发明内容
本发明的目的是获得检测智能卡是否正在与手机对话的方法,所述方法包括检测步骤,其中该步骤测试所述的智能卡所接收的命令或命令组是否与一组手机/卡对话模式识别规则匹配。
将所述规则确定为对于所述智能卡和手机之间的对话来说是特定的,从而使得智能卡与另一实体的对话的模式与它们不匹配。当该智能卡正与这样的第三方实体对话时,其可以推断该实体不是手机。
本发明的方法优选地用于防止SIM克隆。一旦其检测到该SIM卡不是正在与手机对话,而是在与另一实体对话时,该方法可以有利地欺骗该实体,即将其答复调整为与所接收的命令适应,从而使得该实体不可能确定Ki,或优选地使该第三方实体只可能确定错误的Ki值。
因此,有效地并以最低代价防止SIM克隆。
优选地,将本发明的方法实现为加载在智能卡中的部分软件程序。因而很容易检测该卡是否正在用于手机或是否正在与运行克隆软件的计算机对话。此外,有利的是,在手机或认证中心(AUC)中不需要改变,并且运行该程序对网络和手机的正常行为没有明显影响。
根据本发明的方法优选提供下列特征-所述对话模式识别规则组测试所述命令组是否包括至少第一确定数目的命令,所述命令对于向已授权用户进行认证是不必要的。
-所述对话模式识别规则组测试所述命令组是否包括第二确定数目的所选GSM命令,所述所选GSM命令对于向已授权用户进行认证是必要的,因为在所述命令组中发生的所述GSM命令的数目是可预测的,所以选择它们。例如,所选命令可以是状态(STATUS)、二进制读(READBINARY)、二进制更新(UPDATE BINARY)。
-每次所述智能卡接收到第三确定数目的命令时,本发明的方法开始所述检查步骤。
-所述命令组包括在开始所述检查步骤以前连续接收的第四确定数目的命令。
-当所述命令或命令组与所述对话模式识别规则组不匹配时,根据本发明的方法提供假认证密钥Ki*。
-无论所述命令或命令组是否与所述的对话模式识别规则组匹配,根据本发明的方法都等待,从而使处理时间相同。
-所述智能卡是SIM卡,并且所述的命令是GSM命令。
本发明也涉及一种智能卡,包括适于运行根据本发明的方法的软件。
现在将更详细地描述本发明。
图1是在手机和GSM网络之间的典型认证处理的示意图。
图2描述了根据本发明的可以被加载到智能卡中的程序的示例。
图3描述了在图2描述的程序中使用的根据本发明的模式识别方法。
具体实施例方式
在使用根据本发明的模式识别方法之前,首先有必要确定模式识别的相关的规则组。
“手机/智能卡对话模式”是被确定使能其特性描述的该对话的特征组。这些特征可以包括发生或未发生特定命令的频率;在两个确定命令之间发生的延迟,该延迟是通过流逝的时间或所接收的命令的数目来测量的;命令序列的发生,仅考虑所接收的命令、所发送命令、或这两类命令;发送或接收值等。
对于“命令”,其意味着由该智能卡接收的任何请求或信息数据。
不限制模式的可能特征的数目。因而在可能特征中,依据模式对话要区别的目标对话来选择最大区别特征(the most discriminating features)是有必要的。
例如,当使用根据本发明的方法来对抗SIM克隆软件时,所述目标对话可以是SIM卡和普通SIM克隆软件之间的对话。
于是,最大区别特征可以是目标对话不满足的或以较低概率满足的模式对话的特征。
可以将模式识别规则定义为对验证目标对话是否呈现模式对话的特征进行的测试。模式识别规则可以是与更大区别特征相关的所有更相关(的特征)。优选地,模式识别规则组应基于最大区别特征,并且包括足够的规则来确保识别成功的较高概率。
为了准备用于将运行克隆软件的计算机与手机进行区分的模式识别规则组,可以如下进行。
首先,应当记录根据GSM标准在认证处理期间由SIM卡接收的命令(称为命令APDU)以及在与运行克隆软件的计算机对话期间接收的命令。应当分析和比较这些记录,以确定适当的模式识别规则组,即,较高的区别并包括最少的规则。
根据GSM标准(R13GPP TS 11.11“用户身份模块-移动装备(SIM-ME)接口规范”(Specification of the Subscriber Identify Module-MobileEquipment(SIM-ME)interface)),例如,手机发送下列APDU命令-为了请求Loci信息,手机将向SIM卡发送下列命令SELECT EF LOCI A0 A4 00 00 02 6F7EREAD BINARY(11字节)A0 B0 00 00 0B-对于FPLMN请求,手机将用最近的禁止FPLMN列表来更新FPLMN文件。手机将发送下列命令SELECT EF FPLMNA0 A4 00 00 02 6F7BUPDATE BINARY(12字节) A0 D6 00 00 0C12342122414928392183991(样本数据)-每30秒,手机将获得该卡的状态(状态请求)。然后,手机将向SIM卡发送下列命令STATUS A0 F2 00 00 0CGET RESPONSE A0 C0 00 00 0C-对于认证请求,手机将发送下列命令RUN GSM ALGOA0 88 00 00 1012798147170389729047823748293024(样本数据)GET RESPONSEA0 C0 00 00 08由SIM卡接收的命令样本应包括可预测的这些命令的数目(如果在正常操作中这些命令已被手机发送);以及这些命令的不同数目(如果这些命令已被克隆软件发送)。因此,可以选择这些命令来创建模式识别规则。
例如,市场上的普通克隆软件基本是向SIM卡重复发送多个“RUNGSM ALGO”命令并获得认证结果,直到其可以计算出真实的Ki。但是在与手机的正常对话中,因为通常只在手机需要登录到网络或发出呼叫时才使用“RUN GSM ALGO”,所以SIM卡不应接收到多于30%的“RUNGSM ALGO”命令。
因而,另一模式识别规则可以是“对于最后的100条命令,RUNGSM ALGO的命令数目小于或等于30”。
而且,普通克隆软件通常将不发送对于为了获得认证结果而计算真实的Ki来说无用的任何命令。例如,它将永远不会发送诸如“STATUS”或“READ BINARY”或“UPDATE BINARY”等的命令。否则,实现软件的费用以及获得认证算法的足够的迭代以确定Ki的时间将增加。因而,接收这样的命令也可以是模式识别规则的目的。
通常,手机每30秒向SIM卡发送“STATUS”命令,并且通常在卡中执行100条命令要花费多于2.5分钟。因此,对于从手机发送的最后100条命令,“STATUS”命令的数目应不少于5。
因此,另一模式识别规则可以是“对于最后的100条命令,STATUS命令的数目多于5”。
出于相同的原因,另一模式识别规则可以是“对于最后的100条命令,READ BINARY命令的数目多于5”。
可以建立各种类型的许多明显的(patent)识别规则,并在不同的检查点进行检查,以确定SIM卡是否正在用于手机和真实的移动网络中。
可以将克隆软件和SIM卡之间的对话模式与手机和SIM卡之间的对话相区分,因为只有后者与模式识别规则匹配。检查点和所测试的模式识别规则的数目依赖于检查的严格程度。如果使用最大区别规则且如果增加所测试的规则的数目,从而可以比较和关联它们的结果,则正确识别的概率将增加。
这之前描述了图1。现在我们参考图2。
当激活SIM卡时,首先将其复位,即,该卡和电话建立用于将来临的通信的通信协议(图2中的框1)。然后它开始接收命令(框2)。
因为克隆软件在与SIM卡长时间的对话之前可能不能确定Ki,所以在接收任何新命令之后不必运行识别算法来检查识别规则组。此外,持久的检查将降低SIM卡的速度。最后,识别规则可能需要要被测试的命令的样本,并且优选的是,在每次测试时使用完全不同的样本。因此优选的是,只是偶尔运行该识别算法,例如每次在上一次测试之后接收到数目“n”的命令(例如100条命令)或经过所确定的延迟时。
如果SIM卡已检测到它正与克隆软件对话,则也不必运行识别算法来检查识别规则组。基于SIM卡已正在使用Ki的假值的事实,所以可以检测到这种状况,此后将Ki的假值称为Ki*。优选地,将只有在SIM还没检测到任何不正常(例如如果所使用的Ki是真实的)时,才运行识别算法。
当SIM卡接收到命令时,它检查其当前是否正使用真实的Ki(即其仍然认为其正与正常手机对话)以及在“命令计数器”的上一次复位之后该计数器是否已计数了“n”条命令(框3)。
如果不满足这些条件的至少一个,则优选的是,SIM卡等待预定的时间,从而无论是否运行模式识别算法,处理时间都相同(框4)。然后,SIM卡重新开始正常处理(框5),并根据所接收的命令发送响应(框6)。
如果这两个条件都匹配,则开始根据本发明的模式识别算法(框7)。
在图3中更详细地描述了该模式识别算法。
SIM卡检查以前的“n”条命令,是否已违反了模式识别规则组的任何规则。
模式识别规则组可以包括一条或多条识别规则。在图3的示例中,它包括连续检查的“x”条规则(图3的框71、72、73)。
如果违反了任何模式识别规则,则SIM卡推断其正被用于克隆软件。然后,它中断该规则的检查,并且将真实的Ki替换为假值Ki*(框80)。事实上,真实的Ki将保持存储在存储器32中,然而在需要Ki的任何时间,例如用于认证算法40′时,将提供Ki*。因此,在克隆会话期间使用认证算法的任何时间,Ki*将替换真实的Ki。
因而,该克隆软件将获得由认证算法40′使用伪值Ki*而不是真实Ki提供的认证结果。最后,该克隆软件将仍然能够发现假值Ki*,但是在克隆会话期间将永远不能检索到真实的Ki。因此,有利的是,该软件将不能检测所确定的值是Ki还是Ki*。
在用假值Ki*替换真实Ki之前,SIM卡也可以等待几条规则的违反,以提高识别的安全性。
如果没有违反模式识别规则,则优选的是,SIM卡进入等待状态维持预定时间,从而使得无论是否用假值Ki*来替换真实的Ki,处理时间都相同(框90)。因此,不可能根据处理时间来推断克隆的Ki是否是假值。
然后,将“命令计数器”重置为0(框100),从而可以开始另一轮样本。
该程序重新开始正常的命令处理(图2的框5)。
在另一实施例中,该程序在用Ki*替换真实Ki后立即重新开始正常的命令处理(图2的框5),而不将命令计数器复位为0。
使用下面的规则1作为加载到正常使用的真实手机中的SIM卡所使用的对话模式识别算法。没有观测到异常行为。
规则1对于最后100条命令,RUN GSM ALGO命令的数目小于20。
然后,使用普通SIM克隆软件试图克隆SIM卡。在克隆软件完成克隆处理之后,发现该软件报告假的Ki*。真实的Ki未被检索到。
权利要求
1.一种检测智能卡(30)是否正与手机(10)对话的方法,所述方法包括检查步骤,以测试所述智能卡(30)接收的命令或命令组是否与手机/卡对话模式识别规则组匹配。
2.根据权利要求1所述的方法,其中,所述对话模式识别规则组测试所述命令组是否包括至少第一确定数目的命令,所述命令对于向已授权用户进行认证是不必要的。
3.根据权利要求1所述的方法,其中,所述对话模式识别规则组测试所述命令组是否包括第二确定数目的所选GSM命令,所述所选GSM命令对于向已授权用户进行认证是必要的,因为在所述命令组中发生的所述GSM命令的数目是可预测的,所以选择它们。
4.根据权利要求1所述的方法,其在每次所述智能卡(30)接收到第三确定数目的命令时开始所述检查步骤。
5.根据权利要求4所述的方法,其中,所述命令组包括在所述开始所述检查步骤以前连续接收的第四确定数目的命令。
6.根据权利要求1所述的方法,当所述命令或命令组与所述的对话模式识别规则组不匹配时,其提供假认证密钥(Ki*)。
7.根据权利要求1所述的方法,无论所述对话模式识别规则组是否与所述命令或命令组匹配,其都等待,从而使处理时间相同。
8.根据权利要求1所述的方法,其中,所述智能卡是SIM卡,所述命令是GSM命令。
9.一种智能卡,包括适合于操作根据前述权利要求中的任何一个权利要求的方法的软件。
全文摘要
一种检测智能卡是否正与手机对话的方法,所述方法包括检查步骤,以测试所述智能卡接收的命令或命令组是否与手机/卡对话模式识别规则组匹配。
文档编号H04W88/02GK101044777SQ200580029999
公开日2007年9月26日 申请日期2005年7月6日 优先权日2004年7月9日
发明者坚·爱庞, 克雷蒙特·林, 威尔逊·张, 艾伦·湛 申请人:雅斯拓股份有限公司