手机只有插入SIM卡(客户识别模块)才能正常通讯几乎是人所共知的事情。我们可以很容易地从手机中插入/拔出SIM卡,因此更换起来相当方便,但要知道SIM卡的历史可要远短于手机出现的历史。历史上的第一代手机仅支持’嵌入式’通讯标准:入网参数被硬编码到手机终端内存中。
类似于NMT-450这样最古老的模拟标准并未采用任何安全保护措施:订阅数据可任意被复制到另一部手机,如此便能以机主的身份免费拨打和接通电话了。
之后不久便推出了第一代被称为’用户识别安全(SIS)代码’的安全保护措施 —总共有18位数字,每一部手机都拥有唯一的SIS代码并被硬编码到应用处理器内。SIS代码被均匀分配给了各家手机供应商,因此任意两部手机的SIS代码都不会重复。此外,手机处理器还保存了7位RID代码,一旦用户在蜂窝网络内注册即会被发送到基站。
Weak Link: How to lose everything having lost your #SIM-card https://t.co/wha5ECQP6A #security pic.twitter.com/ykU4j1mbvI
— Kaspersky (@kaspersky) November 18, 2014
基站收到后则会随机创建一组数字,与唯一SIS代码捆绑后被回复到手机内,SIS处理器就用这两组数字来生成授权密钥。
尽管密钥和数字相对较短,但对于1994年来说已足够安全—但不出意料,系统随后即被破解,在这之后三年GSM(全球移动通信系统)标准出现了。GSM标准设计本身就较为安全,采用了类似于SIS但更加隐秘的回复授权系统。该标准的安全性在当时可以说是无可匹敌。
4G is just beginning to become the norm, so why do we need 5G? – http://t.co/vP3wDv1X8s pic.twitter.com/t9ZR5neEcN
— Kaspersky (@kaspersky) July 3, 2015
这意味着整个授权过程完全在集成入智能卡的外部处理内进行。现在人所共知的SIM最终成为了解决方案。随着SIM卡的推出,入网不再需要单纯依靠手机,手机用户因此能频繁更换手机,只需保留拥有移动识别功能的SIM卡即可。
SIM卡基本上来说就是一种 ISO 7816标准的智能卡,与其它接触式基于IC的卡并无太大差异,例如:信用卡或电话卡。第一代SIM卡甚至在外形尺寸上也与信用卡相似,但外形缩小的整体趋势使得更新且结构更紧凑的SIM卡应运而生。
由于传统的大尺寸1FF(第一代形状因子)SIM卡已不再适合插入手机,因此通讯行业发明出了一种简单且紧凑的解决方案:尺寸更小的SIM卡(mini-SIM,又称为2FF或第二代形状因子),也就是我们目前广泛使用的SIM卡。一般在新的SIM卡周围均连接了一个1FF大小尺寸的塑料框,更新的形状因子将芯片和触点排列限制在一个很小的卡片内,因此也方便于从手机中拔出。
尽管在这之后还陆续推出了micro-SIM(3FF)和nano-SIM(4FF),但无论是形状、触点排列以及嵌入芯片的特性仍然和25年无太大差别。直到如今,仍有厂家生产大尺寸的塑料’仿制品’,以满足那些喜欢怀旧用户的需要。
即便如此,如今许多过时的手机均无法支持现在的SIM卡,就算大小合适也无法使用。归根结底的原因是早期SIM卡的运行电压是5V,而如今SIM卡的工作电压则为3V。许多SIM生产厂家为了降低成本而不惜牺牲兼容性,使得如今大多数SIM卡均无法同时支持两种工作电压。因此只能兼容5V工作电压的手机无法使用3V的SIM卡,原因是受到手机处理器电压保护的限制。
How do you make a completely anonymous phone call? It's harder than you think – http://t.co/KZbvNxx7wz pic.twitter.com/oocb9LHjlp
— Kaspersky (@kaspersky) April 7, 2015
尽管在SIM卡生产过程中,一些信息已被写入到SIM卡内存中:IMSI(国际移动用户识别码)根据批量订购SIM卡的移动运营商要求及被称为Ki(密钥识别码)的128位密钥决定。简而言之,IMSI和Ki分别相当于用户的登录名和密码,被硬编码到SIM卡芯片内。
用户IMSI和手机号码之间的通信则被保存在被称为HLR(归属位置寄存器)的专门数据库内。如用户在另一基站以临时’访问者’身份注册,该数据就会被复制到另一个数据库-即各段网络内的VLR(访问者位置寄存器)。
Allegations emerged the #NSA hacked @Gemlto, stealing crypto keys for millions of SIM cards https://t.co/MFHK0jBrbF pic.twitter.com/a55WJyQEpg
— Kaspersky (@kaspersky) February 27, 2015
整个授权过程相当简单。一旦用户被注册到临时数据库内,VLR即会向手机号码发送随机的128位数字(RAND)。SIM卡处理器则根据RAND数字和Ki将用A3算法生成的32位数字回复(SRE)到VLR。一旦VLR获得匹配响应,即代表用户网络注册成功。
SIM还会生成另一个称为’Kc’的临时密钥。使用A8算法并根据上述提到的RAND和Ki计算出’Kc’值。然后再用这一数值并通过A5算法对传输的数据进行加密。
由于有太多的首字母缩写,因此听上去似乎有些复杂。但基本的道理非常简单:首先,将你的登录名和密码硬编码到SIM;其次,借助几种算术技巧创建验证和加密密钥,就这么简单—入网成功。
加密通常都默认启用,但某些情况下(例如:返厂保修)也会关闭,这时情报机构就有了可乘之机:拦截通话内容。加密一旦被关闭,老式手机屏幕则会显示一个’打开的锁’图标,但现代手机(除了黑莓手机)则不会有任何提示。
How easy is it to hack a cellular network? https://t.co/FEH3kcVjp9 #mobile pic.twitter.com/T52mFaeXgg
— Kaspersky (@kaspersky) November 24, 2015
目前有一种专门用来拦截手机通话内容的网络攻击;为了实施此类攻击,不法分子需要一部被称为IMSI Catcher的设备。它能模拟基站并寄存正在通话中的电话,随后再将所有信号转送至真的基站。
这种情况下,整个授权过程以正常模式(无需破解加密密钥)进行,但伪基站会要求手机以纯文本模式传输数据,如此不法分子就能神不知鬼不觉的情况下拦截信号。
有趣的是,这一’漏洞’并非真正的漏洞;事实上,这一特性从一开始设计就已存在,因此一旦遇到上述情况,情报部门完全可以实施’中间人‘攻击。