每日最新頭條.有趣資訊

剖析 GSM 加密機制以及位置更新的過程

你有沒有想過打開手機時會發生什麽?它是如何以安全的方式與網絡進行通信?幾乎所有人都知道TCP / IP,並且可能許多人還是專家,但是談到電信方面,很少有人知道它的內部原理。gsm中的消息結構是什麽?它使用的加密類型是什麽?因此,今天我們將詳細介紹gsm的加密標準,以及手機如何更新移動網絡的位置。

當你打開手機發生了什麽?

當您打開手機時,它首先啟動其無線電資源和移動管理程序。

手機通過SIM或網絡接收附近地區支持的頻率列表。

它根據功率級別和移動提供商在一個單元上存儲。之後,它會對認證發生的網絡位置,進行更新過程。位置更新成功後,手機獲得TMSI,現在就可以進行其他的操作了。

現在,通過查看移動應用程序調試日誌來驗證上面的結論。下面的螢幕截圖是來自模擬在PC上工作的移動電話的一個osmocom移動應用程序。

SIM發送的移動網絡信息

camping on a cell

位置更新請求,包括它的LAI、TMSI

允許位置更新並使用可見的加密標準。

目標

我們將通過osmocom-bb用wirehark捕獲gsm數據,並分析整個gsm認證和加密的過程是如何發生的。我們也會看到位置更新過程是如何發生的。

我們已經在上一篇部落格中詳細介紹了osmocom-bb和建立呼叫的過程。這個部落格中會跳過那一部分。

GSM加密標準

A5 / 0 – 未使用加密。為了完整性。

A5 / 1-A5 / 1是用於在GSM蜂窩電話標準中提供空中通信隱私的流密碼。它是為了使用GSM而指定的七種算法之一。它最初是保密的,但由於泄漏和逆向工程已經為大眾熟知。密碼中的一些嚴重弱點已經被發現。

A5 / 2-A5 / 2是用於在GSM蜂窩電話協議中提供語音隱私的流密碼。它用於出口,卻並非強於(事實上仍然很弱)A5 / 1。它是為使用GSM所定義的七種A5加密算法之一。

A5 / 3(Kasumi) – KASUMI是用於UMTS,GSM和GPRS移動通信系統的塊密碼。在UMTS中,KASUMI用於名為UEA1和UIA1的機密性和完整性算法。在GSM中,KASUMI用於A5 / 3密鑰流生成器和GEA3密鑰流生成器中的GPRS中。

還有一些用的較少,所以沒有被提到。

GSM認證和加密是如何發生的?

每個GSM手機都有一個用戶識別模塊(SIM)。SIM通過使用國際移動用戶身份(IMSI)為移動電話提供獨特的身份。SIM卡就像一個鑰匙,失去的話手機就無法運作。它能夠存儲個人電話號碼和短信息。它還存儲諸如A3認證算法,A8加密密鑰生成算法,認證密鑰(KI)和IMSI之類的安全相關信息。移動台存儲了A5加密算法。

認證

認證過程檢查用戶SIM卡的有效性,然後判斷移動台是否允許在特定網絡上。網絡通過使用挑戰響應方法來完成用戶的認證。首先,通過空中接口向移動台發送128位隨機數(RAND)。RAND被傳遞給SIM卡,通過A3認證算法與Ki一起發送。A3算法的輸出,經簽名的響應(SRES)通過空中接口從移動台發送回網絡。在網絡上,AuC將SRES的值與從移動台接收的SRES的值進行比較。如果SRES的兩個值匹配,認證成功,並且用戶加入網絡。AuC實際上不存儲SRES的副本,但是根據需要查詢HLR或VLR。

生成SRES

匿名

當新的GSM用戶第一次打開手機時,其IMSI將被發送到網絡上的AuC。之後,臨時移動用戶身份(TMSI)被分配給用戶。除非絕對有必要的話,否則IMSI在此之後很少傳輸。這樣可以防止潛在的竊聽者通過其IMSI識別GSM用戶。用戶繼續使用相同的TMSI,具體取決於位置更新發生的頻率。每次發生位置更新時,網絡都會分配一個新的TMSI到手機。TMSI與IMSI一起存儲在網絡中。移動台使用TMSI向網絡報告或呼叫啟動期間。類似地,網絡使用TMSI來與移動台進行通信。訪客位置寄存器(VLR)執行TMSI的分配,管理和更新。當關閉時,移動台將TMSI存儲在SIM卡上,以確保在再次接通電源時可用.

數據的加密和解密

GSM使用加密密鑰來保護用戶數據和空中接口的信號。一旦用戶認證,通過A8加密密鑰生成算法發送RAND(從網絡傳送)和KI(來自SIM卡),以產生加密密鑰(KC)。A8算法存儲在SIM卡上。然後使用A8算法創建的KC與A5加密算法一起加密或解密數據。A5算法在移動電話的硬體中實現,因為它必須即時加密和解密數據。

加密密鑰(Kc)的生成

使用Kc進行數據加密/解密

GSM授權/加密過程

GSM授權/加密過程

1.當您第一次打開手機時,MS將IMSI發送到網絡。

2.當MS請求訪問網絡時,MSC / VLR通常要求MS進行認證。MSC將IMSI轉發到HLR,並請求認證Triplets。

3.當HLR收到IMSI和認證請求時,首先檢查其數據庫,確保IMSI有效並屬於網絡。一旦實現了這一點,它將把IMSI和認證請求轉發到認證中心(AuC)。AuC將使用IMSI查找與該IMSI相關聯的Ki。Ki是個人用戶認證密鑰。當創建SIM卡時,它是與IMSI配對的128位數字。Ki只存儲在SIM卡和AuC上。Auc還將生成一個稱為RAND的128位隨機數。

RAND和Ki被輸入到A3加密算法中。輸出是32位簽名響應(SRES)。當請求認證時,SRES本質上是發送給MS的“挑戰”。RAND,SRES和Kc統稱為三元組。

HLR將三元組發送給MSC / VLR。

4.然後,VLR / MSC將隻將RAND值轉發給MS。

5.MS使用存儲在其sim中的Ki和網絡發送的RAND值來計算SRES。MS將此SRES值發送回MSC / VLR。

6.MSC / VLR將SRES值與HLR向其發送的值進行匹配。如果它匹配,它成功授權MS。

7.一旦經過認證,移動和網絡都可以通過A8算法使用Ki和RAND值來生成Kc。

8.使用具有A5加密算法的唯一生成密鑰(Kc)對數據進行加密/解密。

位置更新步驟

位置更新過程

當你打開你的手機,它首先告訴網絡,我在這裡,我想注冊到網絡。之後它發送一個位置更新請求,包括它以前的LAI,它是TMSI。

收到TMSI後,如果TMSI不在數據庫中,則VLR請求IMSI,收到IMSI後,VLR根據其IMSI向HLR詢問用戶信息。如果VLR在它的數據柯瑞沒有找到TMSI,它將使用LAI找到MS連接到的舊VLR的地址。向舊VLR發送請求,請求用戶的IMSI。VLR提供與MS發送的TMSI相對應的IMSI。請注意,IMSI可能是從移動設備獲得的。這不是優先選擇,因為位置更新請求被清楚地發送,因此可以用於確定IMSI和TMSI之間的關聯。

HLR又要求AuC為這個IMSI的三元組。HLR將三元組(Rand,Kc,SRES)轉發到VLR / MSC。

MSC將從VLR獲取詳細信息,並隻將RAND值傳給MS。MS將再次計算SRES,並將其發送回MSC。

MSC將驗證存儲在VLR中的SRES,並將與MS發送的SRES進行比較。如果兩者匹配,則位置更新成功。

成功後,HLR更新發生,它將更新其當前位置,並將TMSI分配給該MS。由於在加密之後TMSI任務被發送,TMSI與用戶之間的關係不能由未經授權的用戶獲得。GSM手機回復表明新的TMSI分配已經完成。

現在,我們將分析wirehark中的gsm數據包,看看在空中的真實情況。

1.立即分配 – 由MS請求的無線信道和MS分配的無線信道MS提供商。我們還可以看到在這個頻道中正在使用什麽樣的控制信道(SDCCH / SACCH)。

2.位置更新請求 – MS發送位置更新請求,其中包括以前的LAI,它是TMSI。

3.驗證請求 – VLR / MSC將HLR中的RAND轉發給MS。我們可以清楚地看到網絡發送到移動電話中的隨機值。

4.MS中的SRES生成 – MS將使用存儲在sim.5中的Ki的幫助,使用A3認證算法生成SRES值。

5.認證響應 – MS將發送其計算的SRES值。我們可以清楚地看到SRES的值。

6.加密模式命令 – BSC向移動設備發送CIPHERING MODE命令。密碼已經被啟用,所以這個消息是通過加密傳輸的。手機用CIPHERED模式回復它。我們也可以看到下面的加密模式完成包。我們可以看到它正在使用A5 / 1密碼。

7.接受位置更新 – 成功認證後,位置更新發生在MS向網絡提供位置信息的地方。

8.TMSI重新分配完成 – MS提供商將向MS分配TMSI,並且該消息將被加密,使得沒有人可以嗅探用戶的身份(TMSI)。

9.無線電頻道發布 – 分配的無線電頻道由MS。

現在呢?

注意到有時運營商根本沒有使用任何加密,以便能夠處理更多的網絡負載。加密/解密過程增加了開銷。有時,身份驗證過程的配置存在問題,攻擊者可以使用它來繞過完整的身份驗證.

GSM安全是一個很大的的但還尚未開發的領域,還有很多工作需要探索和完成。現在,當您了解如何分析最低級別的gsm數據時,您可以閱讀,分析和修改osmocom的代碼,以便將任意幀發送到網絡或從網絡發送到手機。您可以開始模糊gsm級協議,以了解您是否可以實際破解任何網絡設備。還有很多事情要做,但這需要對gsm網絡有深刻理解,還有關於這方面的法律問題。我建議您創建自己的gsm網絡並運行您的測試,如果你想繼續這樣做的話。我們將在gsm上發布更多部落格文章。敬請期待!

參考資料:

https://www.sans.org/reading-room/whitepapers/telephone/gsm-standard-an-overview-security-317

獲得更多的PTT最新消息
按讚加入粉絲團