网站首页 | 博客首页 | 论坛帮助
 » 您尚未 登录   注册 | 社区服务 | 我的博客 | 车标申请专区

哈飞车友会论坛(www.myhafei.net) -> 数码电脑学堂 -> 纯技术贴,sim卡加密应答原理 [转贴]
 XML   RSS 2.0   WAP 

--> 本页主题: 纯技术贴,sim卡加密应答原理 [转贴] 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题
浅水游


头衔:赛豹3天窗版赛豹3天窗版
该用户目前不在线
级别: 管理员
会号: 鲁0099
车型: 路宝7100(465)
精华: 73
发帖: 43761
威望: 1003 点
注册时间:2005-08-05
最后登录:2018-08-17
纯技术贴,sim卡加密应答原理 [转贴]

无意中看见的,不知道有什么用,转过来保存一下
-----------------------------------------



简单说说sim卡的加密认证破解[转贴]2009-01-05 10:26 睡醒等待饭好之余,决定写篇blog,关于sim卡的,技术普及型文章——虽然我不是研究这个的(以前搞数学,现在搞经济),但是我还是试着把这个说明白。
  sim卡是什么那?我们通常的感觉是,我们买了一个手机号,然后就有了一张sim卡,那么一个手机号对应唯一的sim卡吗? 实际上不是的,例如我们把卡注销了(比如丢失或者不可用)然后运营商会给我们一个新的sim卡,号码不变,所以一个号码是可能对应多个sim卡的,在进一步,实际上是sim卡里的数据。
  sim卡是Subscriber Identity Module地缩写,也可以叫做UIM卡(UserIdentity Module),大致就是身份识别的智能模块,既然是智能的,那么sim卡就类似一台微型电脑——有CPU(一般为8位bit的,有程序存储器(PROM,用来存储所需要的运行的程序,这一般由sim卡厂商在生产时候就灌入的,通常为高级商业机密,1K字节左右),有cpu运行程序所需要的RAM(2K字节左右),还有类似电脑系统的硬盘的长期数据存储装置E2rom 或者From(存储数据等),另外就是通信单元。
  sim卡中的数据为几部分,首先就是制作sim卡的时候就已经写到里面的程序,它们是机密,用来完成身份认证功能;其次就是网络运营商在分发手机号码的时候,向sim卡写入的身份识别数据以及网络参数等;另外还有通信过程中产生的临时数据以及用户存储的短信息、通话记录等。
  现代sim卡有友好的用户界面,称为stk卡(sim application tool kit),实际上是一种基于java语言的互动环境,所以手机装上之后有一个stk菜单,或者我们使用动感地带的时候,每次开机都跳出一个动感地带的菜单,就是这个。短信息,通信录以及通话记录的存储空间有32K还有64k等,这个在sim卡上有标注,但是注意,这个和前面那些加密认证等是没有关系的。
  SIM卡既然是身份识别卡,就必须采用认证技术,加密技术,广义上,它使用的是128Bit的DES加密。很明显,它的8位CPU就是完成此运算的,这也是他并不需要多高级的CPU的原因。我们对照sim卡的认证过程来说明它的各种关键算法。
  首先,每张sim卡生产出来都有一个唯一的全球标示码(例如手机的imei),这个码叫做IMSI;运营商有一个数据库,这个数据库存储了它所有拥有的sim卡的IMSI码。具体到,哪一个sim卡对应哪一个手机号码那?那么运营商其实就是在这个数据库中作了一个对应,某某号码对应某一个IMSI码,这样,拥有这个imsi码的sim卡就有了一个手机号码了。当我们保号换卡的时候(比如手机被盗),运营商其实只需要把新的sim卡的IMSI码对应到原来的手机号就可以了。
  为了认证和加密,当然必须有一个密码,就像为了识别张三是张三,我可能事先和张三约定一句唐诗,那么当我们遇到的时候,如果张三能回答这句唐诗,就说明他是张三了,这个就是认证的密钥。每个sim卡也有一个密钥,这个密钥当然要和imsi一一对应,否则张三和李四都能回答这句唐诗,我就不知道面前这个人到底是张三还是李四了。imsi可以用sim卡读卡器读出。这个密钥称为KI,破解sim卡实际上就是要破解对应的KI,Ki虽然存在sim卡中,但是通常不能直接读取。这个KI运营商也是存储在数据库中的。既然是128bit加密,所以Ki就是16个字节的数,或者是32个16进制的数。
  手机在登陆网络的时候,验证过程是这样的:运营商系统会随机产生一个16byte的数,称为rand,你在使用破解sim卡程序的时候看到这个标志,呵呵。然后手机接收到这个数,然后发给sim卡,sim卡的cpu用sim卡存储的imsi以及ki算出一个数,作为应答回应,类似我说的“唐诗”,这个一个4byte的数,SRES,然后通过手机发给移动网络,在运营商的验证系统中,也同时进行了相同的运算,如果两者相等,那就说明你就是这个手机号码,允许登陆(windows的登陆密码验证也是这样的)。这个算法叫做A3加密算法。
  根据这个算法,我们知道首先这个算法应该具有“不可逆性”也就是反过来不好算。因为,虽然我们KI不方便读取,但是rand以及SRES的数据都要通过手机传输,理论上是都可以截取的,如果逆向可以算的话,一下子就可以把Ki解出来了。什么运算不可逆哪,实际上有很多算法在实际中是几乎不可逆的(虽然理论上不能证明),最著名的就是公钥密码体制中的大整数分解。两个素数相乘得出一个数,这是单片机计算器都可以不费吹灰之力就可以算出来的,但是如果知道了相乘的结果来求两个数那?这就非常困难了。A3加密算法就要符合这样的性质。
  实际上A3加密算法本来是商业机密的,但是这个世界总有一些好事的人,比如一些计算机的教授等等,他们通过合作,把sim卡看作一个黑盒子,经过一些方法,把A3算法解密了,解密了A3算法,就意味着可以通过分析算法中的逻辑和漏洞来破解KI,sim卡的破解就是根据这个进行的。
  大家还知道,2G时代,号称通信是加密的,所以其实sim卡在回复SRES的时候,其实还算出来一个Kc,这个算法叫做A8。并且全世界的人都一样偷懒,因为A3,A8的输入相同,所以他们融合成了一个算法A3A8,你如果看到sim卡加密程序的C语言版本就知道,它其实是有两个输入和两个输出的。这个Kc就用来在通信时候对数据进行全程加密。
  用Kc进行全程数据加密,想想看,这个过程就复杂了,通信量如此之大,靠sim卡那个8位cpu是不行的,所以这个加密过程是由手机完成的,称为A5加密算法。
  简单的来说sim卡认证和加密就是这样,当然实际使用中,是要复杂一些的,专业的咱们就不说了:)。
  网上那些所谓的一卡多号,其实就是破解出卡的ki,然后把多张sim卡的imsi,ki等写到一个空白sim卡上来实现一卡多号。





[楼 主] | 发表于: 2011-11-04 21:39:55 顶端
pychubing


该用户目前不在线
级别: 客车司机
会号: 豫8878
车型: 路宝7100(465)
精华: 4
发帖: 10298
威望: 108 点
注册时间:2011-07-06
最后登录:2018-08-09




@民意用户@ 集中展示区 —— (附成交价格、配置)新车主上图报到……

[1 楼] | 发表于: 2011-11-05 09:11:54 顶端
都市节奏




该用户目前不在线
级别: 新手上路
精华: 0
发帖: 555
威望: 1 点
注册时间:2009-07-31
最后登录:2014-10-05




无奈,我把中意车6371电喷系统改成了化油器供油

[2 楼] | 发表于: 2011-11-05 14:42:15 顶端
深蓝马驹




该用户目前不在线
级别: 小轿车手
精华: 3
发帖: 249
威望: 37 点
注册时间:2009-04-11
最后登录:2015-09-06

一卡多号是真的喽



[3 楼] | 发表于: 2011-11-25 21:15:11 顶端



哈飞车友会论坛(www.myhafei.net) -> 数码电脑学堂





Powered by Playhosts v10.0 Code © 2003-06 哈飞汽车车友会 版权所有
本站原创文章保留版权,转发须注明作者及哈飞汽车车友会(www.myhafei.net)字样和本站原文链接
Total 0.011906(s) query 4, Time now is:08-19 12:40, Gzip enabled

与本站管理员联系