虽然做了挺长时间手机开发了,对手机的最基本的功能完全没有了解。今天听了公司里面的一个讲座,讲STK的,顺便把SIM卡的功能之类的也一起做了research, 一起贴出来做个总结吧。网上很多资料是有关破解啦之类的邪恶内容,就不记录了,主要以了解大体的功能和原理为主。
手机的基础结构是一个叫做Mobile Equipment(ME)的芯片组和一片SIM卡构成的。它们两个合起来叫做Mobile station(MS)。智能手机处理复杂应用的那个部分,大多数情况使用了另外一片叫做Terminal Equipment(TE)的芯片,计算能力应该比ME来的要强一些。给我的感觉TE的构造就更加近似于PC的CPU了,此外多数智能手机还会有一片显卡芯片。
SIM卡里面也有一个简单的芯片,但是计算功能非常弱,它的功能仅是用于做一些加密计算(稍后提到)和一些简单的逻辑判断。因此基本上来说SIM卡就是一个纯粹的存储装置,没有任何计算和通信功能。打电话发短信上网等等功能,基本上都是ME配合无线设施完成的。
但是为何没有SIM卡就不能打电话发短信呢?这是因为SIM卡里面有一些与手机基站交互的必要信息。手机开机时,会对SIM卡做合法检测。SIM卡内有ICCID和IMSI两个明文信息和ki作为信令加密的密钥。ICCID包含了SIM卡的一些基本信息比如使用的服务类型,国家地区等等,而IMSI是SIM卡的全球唯一标识符。在手机运营商那里,这个标识符跟一个手机号码唯一对应。手机开机时,要对ICCID和IMSI做合法检查,确定SIM卡的合法性。同时将IMSI发送到基站,基站接收到该IMSI后,临时生成一个随机数RAND,发回手机,手机将该RAND传送给SIM卡,SIM卡使用存储在卡中的ki和硬连线在SIM卡中的加密算法,生成一长一短两个密文。分别使用的加密算法称作A3和A8。A3生成的短密文称作SRES,发送回基站,与基站生成的密文进行匹配确定是合法的SIM卡。A8生成的长密文当作接下来通信使用的加密密钥。通信加密将使用A5算法。注意到ki, A3, A8都是硬连线在SIM卡上的,并且运营商对这些信息保密,以防止SIM卡被破解和盗用。而A5算法是在ME上运行的,由于整个通信过程都要持续计算,这个算法必须非常简单,并且为了保证手机可以跨国漫游,这个算法其实是全球统一的。而A3, A8两个算法仅是定义了输入和输出的位数,没有要求加密的规范。各个运营商理论上可以采用各种不同的算法来保证安全性。但是事实上这些算法也有些通用的标准,导致某些SIM卡可以被破解。
由于运营商的惰性,导致事实上采取的A3A5A8算法都有通用算法。虽然这些算法被保密,但A3算法的一部分仍然泄漏,并在研究人员使用SIM卡读卡器,对比已知的明文和密文进行测试,推算出了未泄漏的其余部分。使用已知的算法,使用巧妙设计的输入并分析输出,就有可能破解任何SIM卡上的ki密钥。因此有些SIM卡一卡多号,或者例如iphone手机可以破解后加入到移动网络,就是利用这个漏洞。由于v1版本的A3算法被破解,国外后来又开发了v2版本的加密算法,目前没有泄漏,这种SIM卡就是无法破解的了。但是由于这种算法刚刚研发出来,技术上不稳定,因此国内运营商采取的办法是在v1算法上稍作修改,称作v0算法。此算法避开了原先v1算法被破解的某些漏洞,因此更难破解。但由于原理基本相同,实际上地下仍然有某些破解的办法。对于SIM卡破解的方法,此处不做任何讨论和记录。仅对SIM卡曾被破解的事实作为历史注记在此说明记录。
除此之外,手机启动入网时系统也需要对本机进行检查,手机上有一个设备码IMEI用于发至基站以检测该手机的合法性。
手机与基站通讯,首先手机定时与基站通信,使得基站确定手机的位置,判断手机应该属于哪个服务小区。这里涉及到一个很有趣的算法问题即如何生成Voronoi diagram,即beach-line算法。不在本文议题范围之内。
手机第一次与基站通讯,应该会得到基站的一个RAND并用ki计算出今后加密信道使用的密钥。此外基站会临时生成一个TMSI发送给手机并存储在SIM卡中。此后就不再传输IMSI而仅传输TMSI,避免其他组织个人监听信道频道获取个人信息。TMSI会定时更换以保证安全性(当然这些加密措施仅能阻止第三方的监听,很显然运营商当然能获取所有的通信资料以及手机所在的服务小区,因此有些运营商也提供API允许其他第三方获得这些数据,当然了,这就是出卖你的隐私吧,用手机是没有隐私可言的)。
ME与SIM卡通信采用规定的编码格式,除可从SIM卡中获取相关数据之外,还可通过SIM Application Tool Kit(STK)做其他的应用。比如动感地带SIM卡上自带的动感地带的一些服务,就是通过STK完成的。GSM 2G中的STK协议在GSM 11.14中定义。3G中STK被USIM Application Toolkit(USAT)取代。
由于负责计算和消息传输的都是ME,SIM卡本身存储的都是出场时预先写好的一些目录项和每个目录项对应的功能:例如深入一个子目录,或者接受一个输入框,或者弹出一段文字等。这些功能中如果有对应与基站通讯的,ME就将相应的消息发送的基站,并接受响应。这些相应在智能手机上,可通过TE来显示,可通过各种UI来展示。
好吧,能做的记录就是这些了。接下来还需要研究的内容有单片机的工作原理,ME的结构,手机与基站通信的物理机制,手机GPRS上网的机制,以及GMS,TDMA,CDMA,WCDMA这些网络的异同等问题。以后再慢慢查找资料慢慢做笔记吧。
下面列出引用的网址:wiki的链接已经在文中给出于是不再重列
http://www.moon-soft.com/program/bbs/readelite125680.htm
http://www.52rd.com/Blog/Detail_RD.Blog_xuanny_10418.html
http://ido.thethirdmedia.com/article/frame.aspx?…
http://www.mscbsc.com/27829/viewspace-7105.html