微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 移动通信 > 通信基础 > sim卡复制是怎么回事啊?

sim卡复制是怎么回事啊?

时间:11-30 整理:3721RD 点击:
如题。
复制的原理以及复制后两个卡如何使用,谢谢~~~

http://www.guokr.com/article/3477/
第二步 读写成功后,会自动生成一个文件,里面有卡里面的ICCID、IMSI、KI、SMSP、文件名信息。记者打开写卡软件,将相应的信息填入写卡软件。
  第三步 记者将一个空白的新SIM卡插入读卡器,点击“写入当前信息”,2秒钟后,手机卡便复制好了。记者按照这样的方法共复制了五张SIM卡,成功了四个。其中2004年的卡只花了20分钟就复制成功,但2011年的卡则花了3个多小时。
  复制卡和原卡同时装到手机里两卡都能用,但不能同时用
  手机卡复制好后,记者将两张一样的SIM卡装到两部手机上,发现都能用。记者用自己的手机拨打该号码,每次只能有一部手机接到电话,发短信也只有其中一部手机可以收到,但具体是哪一部能接到,随机性很大。记者又用新复制的卡拨打记者的手机,显示的也是该机主的号码。同时,两部手机也都能上网。
  不过记者将自己的手机SIM卡挂失后,补办了一张新卡,然后记者再将老卡连入电脑读写,发现被挂失的老卡是读写不了的。此外,记者还发现,移动2012年以前的号码都比较容易复制,但2012年的那张SIM卡,记者就没有复制成功。而联通186

SIM卡是一种接触式IC卡,里面储存了SIM卡序列号、国际移动用户识别码(IMSI)、鉴权密钥(Ki)、PIN密码、PUK密码、运营商服务菜单、短信和通讯录(如果你选择把它们保存在SIM卡上的话)。SIM卡里面没有本机号码,那怎么实现通信呢?以使用最广泛的GSM标准为例,当你注册一个手机号的时候,运营商就将这个手机号与SIM卡序列号、卡里的IMSI和鉴权密钥Ki做了对应登记,储存在数据库里。在开机的时候,手机向SIM卡请求IMSI,然后把IMSI发送给运营商。运营商通过在数据库中检索这个IMSI来判断你是否是合法用户,并获得这个IMSI所对应的手机号码和鉴权密钥Ki。随后,运营商会任意生成一个随机数,并把这个随机数发送给手机。同时,运营商使用这个随机数和鉴权密钥Ki算出一个通讯密钥Kc和一个返回码Res。手机将接收到的随机数输入SIM卡。SIM卡也用自身储存的鉴权密钥Ki和这个随机数算出通讯密钥Kc和返回码Res,然后让手机只将Res发回给运营商。运营商收到Res后,并与自己之前算出来的Res对比,如果两者一致,那么恭喜你,你的手机就接入网络啦!这个过程就是“鉴权”。此后的通讯过程,运营商和手机双方都是使用刚刚算出的通讯密钥Kc进行加密的。如果SIM卡被复制了,我的电话会被窃听吗?答案是不会,因为这两张卡根本无法同时通话。即使有人成功复制了你的SIM卡,复制卡与原始卡无异,可以通过鉴权,并接入运营商网络。但当两张卡同时使用的时候,问题就出现了。之前提到,SIM卡在接入运营商网络以后,所有通信都采用Kc密钥加密,而Kc密钥是在鉴权过程中随机生成的。所以尽管两张卡是一样的,但是由于鉴权是分别进行的,获取的Kc一定不同。当一只手机利用其中一张卡进行通讯时,如果发现当前的Kc密钥无效,将强制重新进行一次鉴权,得到新的Kc,这样之前的Kc就失效了。另一张卡的通信则会因为密钥失效而被迫中断,要想再次获得和移动网络进行通信的权利,就必须通过重新开机、拨打电话或发送短信的方式强制进行重新鉴权。总之,同一时刻只可能有一部手机保持通信状态,而用户看到的表象是:两部手机可以分别但无法同时拨打电话和发送短信,当来电的时候,只有最近一次通过话或发过短信的那部手机才可响铃接听,另外一部手机不响铃也无法接听。在这种情况下,你收到的电话和短信中的一部分可能会被另一部手机拦截,但你通话时,却无法通过另一部手机来窃听——只是,各项费用肯定要由你埋单啦。

在GSM中,是网络鉴权,是单向的!

在GSM网络中,鉴权是三元组,方式非常简单。


VLR向HLR索要鉴权三元组参数(RAND,SRES和kc),然后保存在VLR中。


网络将随机参数rand下发给终端,终端根据保存在卡上的密钥ki,进行一定的算法,算出一个鉴权参数SRES,然后再反馈给网络,VLR比对从HLR获取到的SRES与终端计算的SRES是否相同,如果相同则鉴权通过。


所以SIM卡复制的关键是要知道卡中的KI值!

GSM 的加密系统里面大致涉及三种算法,A3,A5,A8,这些并不特定指代什么算法,只是给出算法的输入和输出规范,以及对算法的要求,GSM 对于每种算法各有一个范例实现,理论上并没有限制大家使用哪种算法。但是世界上的设备商和运营商都是很懒得沟通的,看到既然有了范例实现,就都拿来用了,于是全世界的 SIM 卡被XX了都一样拷法。

说到这里就不能不简单介绍一下 SIM 卡, SIM 卡是一种智能卡片,里面有个非常简单的 CPU 和一点 NVRAM,可以存储和读出数据,还可以进行一些运算。卡里面有很多内容,不过我只介绍和加密相关的。每张 SIM 卡里面一般都存着一个全球唯一的标志号,叫做 IMSI,这个是用来唯一标识你 SIM 卡的,手机在开机时候会从卡里面读出这个号发给移动网络,移动那里有一个很大的数据库,描述了 IMSI 和手机号的对应关系,于是网络就知道你的手机号是多少了(如果你手机卡丢了去补,新补来的卡 IMSI 和原有的不同,而移动数据库那里将你原来的手机号指向新的 IMSI,旧的卡就再也不能用了)除了 IMSI ,还有 16 个字节的密钥数据,这个数据是无法通过 SIM 卡的接口读出的,通常称为 Ki, Ki 在移动网络那边也保存了一份。

在手机登录移动网络的时候,移动网络会产生一个 16 字节的随机数据(通常称为 RAND)发给手机,手机将这个数据发给 SIM 卡, SIM 卡用自己的密钥 Ki 和 RAND 做运算以后,生成一个 4 字节的应答(SRES)发回给手机,并转发给移动网络,与此同时,移动网络也进行了相同算法的运算,移动网络会比较一下这两个结果是否相同,相同就表明这个卡是我发出来的,允许其登录。这个验证算法在 GSM 规范里面叫做 A3,m = 128 bit, k = 128 bit, c=32 bit,很显然,这个算法要求已知 m 和 k 可以很简单的算出 c ,但是已知 m 和 c 却很难算出 k 。A3 算法是做在 SIM 卡里面的,因此如果运营商想更换加密算法,他只要发行自己的 SIM 卡,让自己的基站和 SIM 卡都使用相同的算法就可以了,手机完全不用换。

在移动网络发送 RAND 过来的时候,手机还会让 SIM 卡对 RAND 和 Ki 计算出另一个密钥以供全程通信加密使用,这个密钥的长度是 64 bits, 通常叫做 Kc, 生成 Kc 的算法是 A8 ,因为 A3 和 A8 接受的输入完全相同,所以实现者偷了个懒,用一个算法同时生成 SRES 和 Kc 。

在通信过程中的加密就是用 Kc 了,这个算法叫做 A5 ,因为 A5 的加密量很巨大,而且 SIM 卡的速度很慢,因此所有通信过程中的加密都是在手机上面完成的,这样一来,除非天下所有 GSM 手机都至少支持一种相同的 A5 算法,否则就没法漫游了,这时候运营商和设备商的懒惰又体现出来了,全世界目前只有一种通用的 A5 算法,没有其他的,这个算法就是和 Kc 的 8 字节序列进行简单的循环 XOR,再和报文序号做个减法。

上面只是简单的介绍 GSM 的加密通信过程,实际上 GSM 的操作比这个还要复杂一些,比如除了第一次登录时候用真正的 IMSI ,之后都是用商定的临时标识 TMSI ,不过这个不是今天讨论的重点。

下面就来说说为啥手机卡可以被复制。

从前面的介绍里面我们知道,要完成一次登录过程,IMSI 和 Ki 是必不可少的,A3 算法也需要知道,这其中, IMSI 是直接可读的,但是 A3 算法和存在你的卡里面的数据,都是不知道的,手机只是简单的把 RAND 给 SIM 卡, SIM 卡把算好的数据返回。实际设备中使用的 A3 算法被作为高级商业机密保护起来。但是世界上没有不透风的墙,在 1998 还是 1999 年的时候,有人从哪里偷到了几页纸的相关文档,然后把这文档输入了电脑。后来这个文档落到了加州伯克力几个教授手里面。这个文档里面缺少一些东西,而且还有写错的地方,这几个牛教授们拿一个 SIM 卡比对了一阵子,把缺的补上了,错的也给修正了,于是这个算法就成为了世人皆知的秘密。这个算法又被叫做 Comp128 ,他同时生成 SRES 和 Kc ,代码在这个文件里面。

如果在网络侧增加了终端的识别,则SIM卡复制将无效!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top