sim卡原理(威風上看到的技術貼)

2021-06-19 18:00:41 字數 2835 閱讀 8973

我們一般用的手機sim卡裡面有三組數值是關鍵的:imsi、iccid和ki,有了這三組數值,你的sim卡就能被複製。市面上賣的一卡多號其實就是通過讀取sim卡這三組數值,將他們寫到一張特殊的卡上,從而達到複製的目的。imsi和iccid可以直接讀取,ki卻是加密的。下面簡單講講gsm加密:

gsm的加密系統裡面大致涉及三種演算法,a3、a5、a8,這些並不特定指代什麼演算法,只是給出演算法的輸入和輸出規範,以及對演算法的要求,gsm對於每種演算法各有乙個範例實現,理論上並沒有限制大家使用哪種演算法。但是世界上的裝置商和運營商都是懶得溝通的,看到既然有了範例已經實現,就都拿來用了,於是全世界的sim卡的破解方法都一樣。

說到這裡就不能不簡單介紹一下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,再和報文序號做個減法。

現在說說為啥手機卡可以被複製。從前面的介紹裡面我們知道,要完成一次登入過程,imsi和ki是必不可少的,a3演算法也需要知道,這其中imsi是直接可讀的,但是a3演算法和存在你的卡裡面的資料,都是不知道的,手機只是簡單的把rand給sim卡,sim卡把算好的資料返回。實際裝置中使用的a3演算法被作為高階商業機密保護起來。但是世界上沒有不透風的q1ang,在1998還是2023年的時候,有人從**偷到了幾頁紙的相關文件,然後把這文件輸入了電腦。後來這個文件落到了加州伯克力幾個教授手裡面。這個文件裡面缺少一些東西,而且還有寫錯的地方,這幾個教授們拿乙個sim卡比對了一陣子,把缺的補上了,錯的也給修正了,於是這個演算法就成為了世人皆知的秘密。這個演算法又被叫做comp128,他同時生成sres和kc。

光有了演算法還是不能夠得到在sim卡裡面儲存的ki,理論上面是可以把sim卡拆了,然後把晶元接到特殊裝置上面來讀出ki,但是這個聽起來就像用小da0在硬碟上面刻作業系統一樣不靠譜。於是很多有志之士就開始了對comp128 演算法的攻擊,在一開始大家想到的肯定是窮舉,不過這個gsm的設計者也想到了,sim 卡裡面有個邏輯是一共只能查詢2^16次左右,之後卡會自殺,讓破解者啥都得不到。因此研究者們試圖在可以接受的次數之內通過構造特定明文和分析輸出秘文來分析出ki的值,結果還真被大家發現出來了一些。ibm的乙個小組甚至用6次查詢就可以徹底解出ki,當然現在外面賣的那種機器肯定沒有這麼牛。

隨著時間的推移,針對comp128的破解演算法越來越成熟,sim複製裝置也越來越多,運營商們終於坐不住了。很多運營商都開始發行comp128 v2加密演算法的卡了。comp128 v2演算法是gsm協會在v1被攻破以後,迅速在v1上面修改得來的結果,據說比較好的解決了v1演算法中的弱點,當然,這個演算法像v1一樣,還是不公布於眾的,而且到現在也沒有人公布出來。這樣一來,基本就沒法解了。

中國的運營商同樣也遇到了sim卡被複製問題,這裡我主要講講中國移動。大約從2023年下半年發行的卡開始,已經不能直接用simscan等軟體讀出ki,但是,這並不是真正v2卡。有訊息指出,v2卡雖然解決了能被複製的漏洞,但是相容性和穩定性方面不盡人意。聰明的中國移動當然不會不管這個問題,它在成熟的v1卡基礎上,自己做了小小的修改,巧妙的躲避了simscan等軟體的掃瞄,達到不被複製的目的。這種卡我們暫時稱作v0卡。v0卡是中國移動自己設計出來,據說是改變了原來ki的配對規律,使常規的掃瞄無法讀出ki。本文的核心內容,就是講述如何讀出v0卡的ki。

下面提供乙個關鍵的規律表:

擁有第0對ki時,解剩下的ki順序為:4,2,6,1,5,3,7

擁有第1對ki時,解剩下的ki順序為:5,3,7,0,4,2,6

擁有第2對ki時,解剩下的ki順序為:6,0,4,1,5,3,7

擁有第3對ki時,解剩下的ki順序為:7,1,5,0,4,2,6

擁有第4對ki時,解剩下的ki順序為:0,2,6,1,5,3,7

擁有第5對ki時,解剩下的ki順序為:1,3,7,0,4,2,6

擁有第6對ki時,解剩下的ki順序為:2,0,4,1,5,3,7

擁有第7對ki時,解剩下的ki順序為:3,1,5,0,4,2,6    

如何獲取SIM卡上的聯絡人

sim 管理器 api 在 pocket pc phone 中,您可以使用一系列 windows ce api 呼叫 統稱為 sim 管理器 來訪問 sim 卡上的資訊。以下為 sim 管理器 api 按功能分組 表 1 sim 管理器 api 會話以呼叫 siminitialize 開始,這將返回...

多人共用一張SIM卡的技術

通過軟體算號,複製一張與原來號碼一樣的gprs的sim卡,雙方只要不同時上網,就可以達到共用一張sim卡多人上網。原理 簡單的說,比如你平時除了手機裡面有1張sim卡 也就是乙個號.身上有多張卡,那麼老關機換來換去很麻煩的,所以就用讀卡器把原來聯通或移動的卡的ki碼與imsi 識別碼讀取出來 然後手...

在eMule 上看到的有關硬碟工作原理的文章

先說一下現代硬碟的工作原理 現在的硬碟,無論是ide還是scsi,採用的都是 溫徹思特 技術,都有以下特點 1。磁頭,碟片及運動機構密封。2。固定並高速旋轉的鍍磁碟片表面平整光滑。3。磁頭沿碟片徑向移動。4。磁頭對碟片接觸式啟停,但工作時呈飛行狀態不與碟片直接接觸。碟片 硬碟碟片是將磁粉附著在鋁合金...