鑒權和加密
在通信過程中需要保證信號的安全,所以有鑒權和加密
在GSM系統中SIM卡的IMSI號,真箇GSM系統中是唯一的,可以當做用戶名,Ki當做密碼,通過網路發給MSC/VLR,對比後是合法用戶,就可以使用網路資源,但是在傳播的過程中是用明碼發送,很容易被別人竊取,採用其他方法
MSC/VLR 資料庫下發一個隨機數給手機,兩邊同時用隨機數和密碼經過A3演算法得出一個響應數,如果算出來是一樣的,就可以判定鑒權成功。在GSM網路中RAND隨機數有128位,Ki 和A3演算法不能公開
可以下一下圖解
密鑰Ki是存儲在SIM卡中和網路側的AuC中,鑒權的時候在VLR對SRES進行對比,AuC把SRES傳給VLR,反正是一次性的可以傳遞
SRES是一次性的,RAND和Ki經過A3演算法得到SRES,RAND和Ki經過A8演算法得到加密用的密鑰kc
AuC通過A3和A8演算法就得到SRES和kc那麼RAND SRES和kc 就是三個參數組。MSC/VLR會使用參數組
鑒權信令流程圖
加密
加密在鑒權之後,所以學習加密原理和流程
一種通用加密方法 稱為對稱密鑰加密法(Symmetric Key Cryptography)發送端和接收方有相同的密鑰,有一種叫做流加密法,上面的Kc就是用來加密的,但是設計者覺得不安全,所以採用了TDMA幀號22bit和kc64bit 一起通過A5演算法得出加密序列114bit。因為TDMA幀號4.615ms就變化一次,就是說4.615ms 就有新的加密序列,難度變大了很多,也變的安全多了
看一下加密的信令流程
當鑒權過程結束後,MSC向BSC發一條加密模式命令(Cipehering Mode Command)這個命令通過BSSMAP發送,屬於RM內容
BSC接著在信令鏈路上向MS發送加密模式命令,MS接收到加密模式命令,啟動加墨模式,然後向網路發送加密模式完成消息作為響應。
網路接收到後加密模式完成消息後,網路就啟動在加密模式下的傳輸
TMSI再分配
因為IMSI是用戶隱私,希望用個替代的號碼,就是TMSI(Temporary Mobile Subscriber Identity 臨時移動用戶識別碼),TMSI是VLR分配給進入覆蓋區移動用戶的臨時識別碼,和加密一起使用,一般位置區改變和鑒權加密之後,應該重新分配TMSI
當移動台在位置區第一次註冊時候,就會將一個TMSI分配給移動台,當移動台離開位置區時候,就會釋放TMSI號碼,MS收到TMSI再分配的命令,收到的TMSI和LAI存儲在SIM卡中,並向網路發送TMSI再分配完成的消息
TMSI一般在加密完成之後,SETUP建立之前
TMSI分配的信令流程圖
位置區更新和IMSI附著
位置更新屬於MS空閑時內容,因為位置更新屬於MM連接內容,MM必須在RRC之後,有了隨機接入,才有位置更新
MSC的網路分為若干個位置區,一個位置區多個小區,位置區用位置區標識(Location Area Identity LAI)進行標註,LAI會在系統消息3和系統消息4廣播,手機主動向網路報告自己所在的位置區
位置區設置
位置區的劃分過大過小都不好,位置區過小,MS位置區必然增多,同樣會增加新湖信道的信令負荷。如果位置區過大,那麼一個尋呼消息需要下發的小區會增多,同樣會增加尋呼信道信令負荷,手機從一個位置區移動到另一個位置區,必須登記,當手機處於兩個位置區邊界的時候,就會比較麻煩,綜合這些情況設計了演算法
小區重選規定 C2引起兩個小區重選之間至少間隔15s,LA區域邊界的劃分最好不要在人口密集、話務量高的地方,而最好選在人煙稀少、話務量低的地方,減少位置更新的手機數量,引入CRH(Cell Reselection Hyseteresis 小區重選滯後)參數,作用要求鄰小區信號輕度必須比服務小區強度高很多(高於小區重選滯後值CRH),才能啟動小區重選。
位置更新信令流程
位置更新有3種情況
- MS 來到一個新的位置區,發現小區廣播的LAI與自身不一致,從而觸發位置更新。系統需要對MS進行尋呼,那就知道MS當前的位置區,所以說這個過程就是必須的,也稱為「正常位置更新」
- 由參數T3212 定義的周期性位置更新,MS進入盲區或者突然掉電,尋呼MS是浪費資源,所以需要MS周期性的上報自己的位置,凡是沒有進行周期性位置更新MS,認為已經detach ,不再進行尋呼。
- IMSI的Attach 和Detach,MS關機的時候,給系統發IMSIDetach 指令,告訴系統該MS已經脫離網路,不要進行尋呼。MS開機的時候,給系統發IMSI ATTACH 指令,告訴系統MS可以重新被尋呼,網路認為MSattach,開機的時候,如果發現當前所在位置區和MS的SIM卡存儲位置區標識不一致,會觸發位置更新,在系統里更新自己的位置區
詳細的更新流程
- 正常的位置更新
發現LAI發生變化時,MS主動申請進行位置更新,如果手機正在通話,又發現SACCH信道發送的系統消息5和系統消息6中的LAI與MS存儲的不一致,那麼等通話結束後進行位置更新
MS經過SDCCH信道向系統發送位置更新消息,根據這次位置變化是否還在同一個MSC/VLR 分為兩種。一種是新的LAI和原LAI同屬於一個MSC/VLR。此時只要MSC簡單的修改下MS的位置信息,另外一種是跨MSC的位置更新,新的MSC/VLR向HLR發起位置區更新請求,HLR接收並修改MS所在MSC信息(MSCID),並且通知原來的MSC/VLR刪除MS相關信息,原來的MSC/VLR刪除相關信息後,向HLR發回「刪除位置確認」消息,此時在新的MSC/VLR區域需要完成鑒權加密以及TMSI再分配的過程,完成後HLR將會向MS當前所在的MSC/VLR發送一條「插入用戶數據」信息,將向該VLR提供它所需要的用戶信息,當HLR收到VLR響應時候就向VLR發出位置更新確認消息
流程一 相同MSC/VLR位置更新流程
流程二 不同的VLR 位置更新
IMSI Attach 和 Detach
M開機接網路,便附著在網路上,就可以和網路進行信令交互,MS關機時,向網路發送最後一條消息 分離消息,當MSC/VLR收到消息,在MS對應的IMSI作分離標記
分離程序只在MSC/VLR進行,HLR並不知道,每次開關機都不通知HLR節省了HLR-VLR一段路由資源,不利的地方,每次對分離用戶尋呼,HLR需要區MSC/VLR查詢該用戶的當前狀態,浪費了HLR-VLR一段路由,但是畢竟開關機次數大於尋呼你的次數,所以還是不通知HLR
- IMSI ATTACH流程
IMSI DETACH 流程
當手機脫離網路後,撥打該手機會聽到您撥打的電話已關機
周期性更新
在MS由有信號區域進入無信號區域,突然拔掉MS電板,使得網路來不及對MS標註為Detach。還佔用資源。GSM採取要求MS在一定時間後,自動向網路報告當前位置,若在規定時間內沒有上報,系統認為MS已經關機或者不在服務區,在MSC/VLR將MS標註為分離。僅當網路再次接收到MS的位置更新信息,或者IMSI附著信息,才會將MS改為Attach狀態,這個周期性的時間間隔稱為T3212參數,該參數在系統消息3的控制信道描述中下發,MS收聽BCCH載頻上系統系統消息3上的廣播周期性位置更新的時間,MS自身有關位置信息的計數器,每當MS從專用模式但會空閑模式,計數器複位,開始估算自己多長時間後需要向網路彙報自己的位置信息
這裡有個問題T3212 系統要修改這個參數變成一個小時,該小區所有計數器都複位變成0,然後一個小時候,同時進行位置更新,所以需要進行修改,MS收聽到系統廣播中T3212值改變的時候,計數器重新技術,當前剩餘值 MOD 新的T3212值,得到就是最後值,如果以前是0.5h 後來變成0.8小時最後T3212的值是0.5h,但是需要變成0.2h,最後是T3212值變成0.1h
這樣就可以使得所有終端錯開更新位置區更新,減少網路的負荷
--------------------------------
在程序員的路上你不孤單,還有賤賤的楊
歡迎經常來逛博客,是我工作中遇到的零零散散記得筆記,不多,但會不定時更新和大家探討
初始篇:Android 源碼環境搭建(OSX) - engineer_james的博客 - CSDN博客
歡迎給我郵件 jamesyang1991cn@gmail.com
推薦閱讀: