当前位置 - 股票行情交易網 - 股票交易 - 手機卡復制原理

手機卡復制原理

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 ,代碼在這個文件裏面。