我在 simcard 设备中发现的一个安全问题

信息安全 电话 GSM 电话卡
2021-08-13 10:25:07

好吧,这一切都始于我想从我的平板电脑中取出 sim 卡,我正要关闭它,以便我可以取出 sim 卡。但是我的脑海里闪过一个念头,“如果我在关闭平板电脑之前取出SIM卡并去谷歌看看我是否还能搜索到什么?”

于是我迅速拿出simcard,在浏览器中输入了一个我以前从未搜索过的单词(我检查了我的历史来确认)然后......它加载并显示了一个网页!我很快点击了一个网站,它也开始加载它几乎是通过但在它完全打开之前平板电脑很快就自动关闭了。

这证明了我曾经拥有的一个理论:SIM 卡在其各自的运营商网络上使用 IMSI 进行识别。移动网络运营商使用特定格式的 IMSI 连接手机通话并与他们的市场 SIM 卡通信。(实际上这是事实部分,而不是我说的理论部分)

(现在是理论部分)手机访问存储在 SIM 卡中的 IMSI 格式,因为它使用无线电链路将数据传输到蜂窝网络。现在,当设备发送此数据时,它存储相同的数据以及加密simcard 在其 RAM 上的密钥。由于这里的设备是中间人,他可以在没有 SIM 卡或运营商的情况下存储正在传输的信息。这意味着当设备获得加密密钥时,它会将其存储在其 RAM 中,并将其传递给请求访问和身份验证的移动运营商,一旦移动设备被授予对运营商网络的访问权限,它就会存储加密密钥,因为加密密钥用于加密设备和网络之间的所有进一步通信,因此不再需要 SIM 卡。这就解释了为什么当我从设备中取出我的 SIM 卡时,我能够上网。但是作为一个安全程序(一个运行非常缓慢的程序,让我可以在短时间内上网),平板电脑会自行关闭,因为一旦关闭它就存储在 RAM 中,信息就会丢失。但这不是一个很大的安全问题吗?

如果有人制作了一个程序来覆盖设备设置,允许在没有 SIM 卡的情况下继续使用存储的信息,该怎么办?

基本上我要问的是,设备以这种方式运行不是一个很大的安全问题吗?

3个回答

正如您所发现的,SIM 卡仅在初始化与移动运营商的连接时才需要,并且在设备失去连接并需要重新连接之前不再需要(当您移动移动设备时,这种情况经常发生在移动设备上)。移除 SIM 卡后,您的设备可能会断电,但没有充分的理由必须这样做。

但克隆 SIM 卡并不像您想象的那么容易。每张 SIM 卡都存储一个唯一的身份验证密钥,只有网络运营商知道。此密钥无法通过正常方式读取。在连接过程中,运营商会向设备发送一个随机数。然后 SIM 卡使用一个加密函数,该函数将该随机数和验证密钥作为输入,并根据这些数据输出一个新数字。此功能发生在 SIM 卡内部,而不是设备上,因此设备从不处理身份验证密钥。然后将该号码发送给网络运营商。在运营商方面也会发生同样的情况,当数字不匹配时,连接尝试就会中止。

该计算是(相对)加密安全的,因此不可能(容易)通过观察哪个随机数从 SIM 卡获得哪个响应来对身份验证进行逆向工程。不过,它有一些漏洞

关于 SIM 卡要记住的一点是,它不仅仅是一个愚蠢的存储设备(如经典信用卡上的磁条或闪存设备)。它是一种“智能卡”,基本上就像一台小型计算机(外部供电,除了铜触点外没有 I/O)。每张 SIM 卡都是不同的,正如您指出的那样,它有您的 IMSI 和 Encrypyion 密钥,但这些并不是唯一的变化。

SIM 卡实际上实现了一组称为 A3、A5 和 A8算法A3 和 A8 用于用户身份验证,A5 用于加密实际流量。在验证 A3 和 A8 算法时,“查询”并执行计算,该计算被发送到网络,网络也有能力重现这些计算(连同身份验证中心中的此私有数据的副本)。如果双方产生相同的结果,则认为您已通过身份验证,并将结果输入 A5 以生成您的加密密钥。

运营商之间的算法可能应该)不同(例如 Vodafone vs Sprint vs Rogers)。该标准的早期版本中,预计运营商应该提供自己的算法,但最近“Milenage”算法是标准的(并且是开放的),但在每个 SIM 卡(每个运营商,每个订户)中都有隐藏参数,这些参数使它们个性化并且使它们“不可能”破解。

所以你在这里看到的是,你通过 A3 和 A8 的初始身份验证已经成功,并且 A8 已经被用来生成你的加密密钥,它存储在内存中。接下来发生的事情取决于网络策略,但通常身份验证是一个周期性活动(可能是 30 秒,每 3 分钟,可能是 30),一旦发生这种情况,如果您的设备无法访问An算法,它将无法验证生成所需的新加密密钥。

一旦您在另一台设备上使用 SIM 卡,您在第一台设备上的会话也可能会失效。

我想复制一张 SIM 卡是“可能的”,但它不会像克隆那么简单。您必须在不损坏它的情况下实际打开它(这本身就是一项壮举),然后以某种方式读取它的个性化参数,同样,如果没有专业设备,您也无法做到这一点。

哦,我还应该提到,从 3G 开始,AKA 方案还将“状态”带入等式,因此每次您进行身份验证时,您 SIM 卡(和身份验证中心)中的寄存器都会更新为新的(匹配) 伪随机数,因此即使您确实设法克隆了 SIM 卡,您也必须在下一次身份验证发生并且您的状态寄存器落后之前的时间内完成...

祝你好运!

正如在前面的答案中正确指出的那样,加密密钥不应该离开卡(除非 NSA 会再次闯入金雅拓 :)。为了完整起见,我想指出您不必认为这些答案是理所当然的 - 为自己购买 simtrace(它相对便宜),将其插入您的设备和 sim 卡之间并读取它们之间的整个通信实时使用wireshark。