說日常使用電腦查資料看新聞,那肯定是離不開瀏覽器的,白天光線充足的時(shí)候看著慘白的屏幕還算好,晚上猛然打開的話,那真心是閃瞎我們的泰坦氪金狗眼的。
So,現(xiàn)在許多瀏覽器都自帶了皮膚、調(diào)色、護(hù)眼等模式,即便功能最為“簡(jiǎn)陋‘的Chrome也為我們提供了可供下載更換的主題模式。
不過Windows 10自帶的Edge就沒那么人性化嘍,翻遍了所有設(shè)置都沒有顏色調(diào)整這個(gè)選項(xiàng),這就不對(duì)了,連年邁的IE都能改顏色,你這個(gè)新人搞什么特殊化?
來吧,大家要是常用Edge的話,就打開注冊(cè)表編輯器(Win+R組合鍵后輸入regedit),定位到
HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppModel\SystemAppData\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\SplashScreen\Microsoft.MicrosoftEdge_8wekyb3d8bbwe!BCHost
找到右側(cè)名為“BackgroundColor”的值,雙擊修改數(shù)值數(shù)據(jù)就可以換顏色了。
不過這里需要填寫的是顏色的16進(jìn)制值,不知道自己喜歡的顏色代碼是多少的話,可以百度下“RGB顏色對(duì)照表”,用網(wǎng)站提供的工具查詢下。
想要恢復(fù)成默認(rèn)就記住BackgroundColor的默認(rèn)數(shù)值數(shù)據(jù)“##D0D0D0”,隨時(shí)改回來就行。對(duì)了,小編測(cè)試了下,如果將數(shù)值數(shù)據(jù)修改成“transparent”,Edge的背景顏色會(huì)隨著Windows 10的主題進(jìn)行變化,保持視覺的統(tǒng)一性哦。
夜醒來,黑灰產(chǎn)通過wei基站進(jìn)行短信嗅探讓用戶電子賬戶的錢不翼而飛。在2G、3G、4G時(shí)代,都出現(xiàn)過wei基站等通信安全威脅,5G技術(shù)高速發(fā)展,雖然在設(shè)計(jì)協(xié)議之初已經(jīng)盡量避免這種威脅,但無孔不入的攻擊者難免通過其他途徑威脅通信安全。
近日,阿里安全發(fā)布了一項(xiàng)新一代安全架構(gòu)前沿技術(shù)成果,研究人員首次對(duì)高通4/5G移動(dòng)基帶進(jìn)行了深度解析,基于研究原理打造了低成本的5G安全威脅檢測(cè)工具,保護(hù)大眾的通信安全,助力新基建安全建設(shè)。
目前市場(chǎng)上只有個(gè)別廠商的少量機(jī)型使用自研基帶,打造拒絕wei基站信號(hào)請(qǐng)求的手機(jī),大部分機(jī)型依然使用該基帶。安全專家認(rèn)為,對(duì)手機(jī)基帶深入剖析,體系化地對(duì)抗5G時(shí)代攻擊者開辟新路徑進(jìn)行的通信攻擊十分重要。
阿里安全資深安全專家侯客對(duì)高通基帶底層硬件芯片、軟件操作系統(tǒng)到上層業(yè)務(wù)邏輯進(jìn)行了系統(tǒng)研究,不僅能進(jìn)一步研發(fā)具備強(qiáng)有力的移動(dòng)通信基礎(chǔ)設(shè)備的安全測(cè)試工具,也能將其改造成具備威脅檢測(cè)能力的防護(hù)工具,對(duì)通信安全研究具有重要意義,基于硬件打造的低成本通信威脅檢測(cè)工具就是對(duì)基帶進(jìn)行深度研究的成果之一。
以下為阿里安全對(duì)高通4/5G移動(dòng)基帶消息系統(tǒng)和狀態(tài)機(jī)內(nèi)部機(jī)制深度解析。
作者:阿里安全資深安全專家 侯客
*************************正文分界線***************************************************
本技術(shù)分析文章通過對(duì)高通的4/5G移動(dòng)基帶系統(tǒng)進(jìn)行深入逆向工程提示其內(nèi)部消息通信機(jī)制以及核心架構(gòu)設(shè)計(jì)邏輯,本文的研究基于高通的4G基帶MDM9707以及5G基帶模塊sdx55的固件之上分析完成,高通基帶系統(tǒng)現(xiàn)在都是基于高通主流的hexagon DSP指令架構(gòu)來實(shí)現(xiàn),該架構(gòu)非常適合應(yīng)用于音視頻編解碼,計(jì)算機(jī)視覺等,軟件無線電等應(yīng)用中的浮點(diǎn)和向量計(jì)算,在高通驍龍?zhí)幚砥鞯淖酉到y(tǒng)中大量使用,大多應(yīng)用于手機(jī),汽車,可穿戴設(shè)備以及移動(dòng)通信設(shè)備中,Hexagon DSP相關(guān)信息可以從這里獲取,運(yùn)行在Hexagon DSP芯片上的操作系統(tǒng)QuRT是由高通設(shè)計(jì)的實(shí)時(shí)操作系統(tǒng),高通基帶系統(tǒng)所有的上層業(yè)務(wù)將會(huì)運(yùn)行在該操作系統(tǒng)之上,閱讀該技術(shù)分析文章之前,假定你已經(jīng)對(duì)操作系統(tǒng)的原理有所了解,例如CPU調(diào)度,IPC(進(jìn)程間通信),以及基本的數(shù)據(jù)隊(duì)列enqueue/dequeue的操作。
一個(gè)系統(tǒng)里面運(yùn)行著不同的任務(wù),不同任務(wù)在不同的運(yùn)行狀態(tài)在處理相應(yīng)的業(yè)務(wù)邏輯時(shí)可能需要與其它任務(wù)交換數(shù)據(jù)或者同步信息,這里面就需要操作系統(tǒng)的底層IPC機(jī)制來完成了,3GPP組織定義了不同移動(dòng)通信技術(shù)從物理層/鏈路層/邏輯處理層等各種標(biāo)準(zhǔn),例如(5GNR/4GLTE/3G WCDMA/TD-SCDMA/CDMA2000/2G /GSM等通信技術(shù)),這些技術(shù)標(biāo)準(zhǔn)在基帶系統(tǒng)里面實(shí)現(xiàn)會(huì)被劃分成不同的任務(wù)來維護(hù)不同的狀態(tài),處理不同的消息信令,以及維護(hù)不同通信技術(shù)的切換等操作,比如現(xiàn)在的大部分智能手機(jī)基帶系統(tǒng)基本上都支持2/3/4G通信相關(guān)的技術(shù),這些基帶系統(tǒng)根據(jù)移動(dòng)運(yùn)營(yíng)商支持的移動(dòng)通信技術(shù)和國(guó)家區(qū)域支持的標(biāo)準(zhǔn)的不同會(huì)使用相應(yīng)的移動(dòng)通信技術(shù),比如中國(guó)在3G時(shí)代中國(guó)移動(dòng)使用的TD-SCDMA,而中國(guó)聯(lián)通使用的是WCDMA技術(shù),為了保證移動(dòng)設(shè)備的一些基本功能的可用性(語音通信和sms短信息),比如某些地方部署了4G基站,你可以在那里使用4G LTE的(Voice-over-IP/SMS-over-IP)通信技術(shù),在一些偏遠(yuǎn)的地區(qū)可能只部署了2G基站,這時(shí)基帶系統(tǒng)根據(jù)環(huán)境切換到GSM的協(xié)議棧,這些功能的維護(hù)與切換從基帶系統(tǒng)層面來講都需要系統(tǒng)消息機(jī)制來配合完成。
高通基帶系統(tǒng)的消息機(jī)制建立在運(yùn)行的實(shí)時(shí)操作系統(tǒng)QuRT之上,之前我有一篇文章有簡(jiǎn)單介紹過底層IPC機(jī)制,今天我將詳細(xì)介紹上層業(yè)務(wù)邏輯相關(guān)的消息傳遞機(jī)制與數(shù)據(jù)結(jié)構(gòu)。我們把運(yùn)行在基帶系統(tǒng)上的業(yè)務(wù)邏輯實(shí)體的最小單位定義為線程(thread),根據(jù)線程生命周期的不同分為以下兩大類:
短生命周期線程
驅(qū)動(dòng)/任務(wù)初始化線程(Driver initiator/Services Launcher)
中斷服務(wù)例程(IST)
長(zhǎng)生命周期線程
阻塞型消息接受線程
消息通信底層API封裝簡(jiǎn)介:
//信號(hào)發(fā)送
int rex_send_sigs(utcb *dst_task_obj,unsigned int signal_id);
//第一個(gè)參數(shù)為向目標(biāo)任務(wù)發(fā)送消息的結(jié)構(gòu)定義,第二個(gè)參數(shù)為要發(fā)送的信號(hào)id
int rex_wait_sigs(unsigned int recv_sigs_masks);
//第一個(gè)參數(shù)為可以允許接受信號(hào)id的掩碼,每個(gè)任務(wù)最多可以設(shè)置可接受信號(hào)id個(gè)數(shù)為32個(gè),每個(gè)任務(wù)可以接受多個(gè)信號(hào)id時(shí),通過信號(hào)id的或操作來得到該任務(wù)可以接受信號(hào)的掩碼,返回值為接受到的信號(hào)id
//如果是帶數(shù)據(jù)的信號(hào)發(fā)送,封裝底層API,類似如下
int send_sigs_with_dat(utcb *dst_task_obj,unsigned int signal_id,data_queue *send_data_queue);
int recv_sigs_with_dat(unsigned int recv_sigs_masks,data_queue *recv_data_queue);
而根據(jù)任務(wù)線程的業(yè)務(wù)功能的不同劃分成以下幾大類:
1. 系統(tǒng)功能任務(wù)
2. 通信技術(shù)協(xié)議棧分層任務(wù)
GSM/WCDMA/TDSCDMA/LTE L1/L2/L3相關(guān)的協(xié)議棧的任務(wù)等
3. 上層應(yīng)用任務(wù)
IMS volte/ecall/數(shù)據(jù)服務(wù)/包服務(wù)等
4. 外設(shè)相關(guān)的任務(wù)
UIM/SIO/A2等
我在https://github.com/vessial/baseband/blob/master/dump_task.svg記錄了高通MDM9607基帶系統(tǒng)一次實(shí)時(shí)運(yùn)行的任務(wù)快照列表。
兼容性
在新的基帶芯片上面開發(fā)新的移動(dòng)通信技術(shù)單元的同時(shí),保證老的功能模塊能夠正常使用,例如在開發(fā)5G功能的同時(shí),以往的4G/3G/2G功能都能夠正常使用和切換。
可擴(kuò)展性
在已有的功能模塊上增加新的功能,具備靈活的擴(kuò)展性,而不需要作太大的軟件和硬件改動(dòng)。
低耦合性
新增的功能模塊與已有系統(tǒng)上功能模塊的耦合度低,接口少,減少引入問題的接口點(diǎn)和測(cè)試成本。
基于以上的設(shè)計(jì)理念,高通設(shè)計(jì)一套靈活的消息通信系統(tǒng),一直到現(xiàn)在5GNR的基帶系統(tǒng)也在用,接下來我將詳細(xì)介紹該消息系統(tǒng)的架構(gòu),相關(guān)的算法和數(shù)據(jù)結(jié)構(gòu)。
為了區(qū)分不同任務(wù)所接受到的消息以及任務(wù)所能處理相應(yīng)消息的原語操作權(quán)限,通過接受到的消息來區(qū)分消息來源以及接受到相應(yīng)消息后的相應(yīng)的處理動(dòng)作,高通的消息系統(tǒng)引入了任務(wù)消息接受體(msgr_client)和UMID(Unique Message ID)的機(jī)制,任務(wù)消息接受體由相應(yīng)的任務(wù)創(chuàng)建生成,并通過初始注冊(cè)可接受消息UMID來設(shè)置任務(wù)相應(yīng)原語操作的權(quán)限,每個(gè)任務(wù)可以創(chuàng)建一個(gè)或者多個(gè)msgr_client,每一個(gè)UMID消息也可以注冊(cè)給多個(gè)msgr_client,每一個(gè)UMID消息標(biāo)示著一次相應(yīng)的原語操作,在MDM9607里面定義的UMID數(shù)量多達(dá)1萬多個(gè),而在最新高通的5G基帶里面可使用的UMID高達(dá)2萬多,每個(gè)UMID背后都對(duì)應(yīng)著相應(yīng)的原語操作,UMID的值與相應(yīng)的命名規(guī)則如下。
Name | offset and length | Comment |
tech_id | 24~31 8bits | eg, LTE->0x04, IMS->0x15, MDM9607 0x1b, SDX55 0x20 |
mod_id | 16~23 8bits | eg, 0xd -> RRC 0xf -> MAC 0x11-> RLC DL |
type_id | 8~15 8bits | type <=0x09) || (type >=0x11 && type <=0x17,totally 0x11 type_ids |
op_type_id | 4~8 4bits | Op entity ,eg IRAT_FROM_LTE_TO_G |
op_id | 0~3 4bits | Opcode seq, eg abort/search/startup/deinit/init/cfg etc |
注:if type_id>9 ,type_id=type_id-6 offset bit 8~15 8bits type_id list
Type_name | value | Comment |
CMD | 1 | Command primitive |
REQ | 2 | request |
RSP | 3 | response |
IND | 4 | indication |
DLM | 7 | downlink message |
CNF | 8 | confirm |
TMR | 9 | timer |
REQI | 0x12 | request Internal |
RSPI | 0x13 | Response internal |
INDI | 0x14 | indication internal |
CNFI | 0x15 | confirm internal |
TMRI | 0x16 | timer internal |
舉個(gè)例子UMID 0x40D120E 對(duì)應(yīng)的描述原語是LTE_RRC_IRAT_FROM_LTE_TO_G_RESEL_REQI,拆分結(jié)果如下:
name | value |
LTE | 0x04 |
RRC | 0x0d |
REQI | 0x12 |
RESEL | 0x0 |
IRAT_FROM_LTE_TO_G | 0x0e |
注:這種UMID值的解析方法在某些定義里面并不適用,比如LTE_ML1_DLM_TST_SKIP_RACH_REQ的值為6,就沒法用上面的方法解析,有些值并不嚴(yán)格遵循這種解析算法,可能是由于歷史原因,定義UMID值的規(guī)則不一樣。
基帶系統(tǒng)把任務(wù)標(biāo)示為多個(gè)不同的技術(shù)大類,來標(biāo)示和模塊化相應(yīng)的子功能,以MDM9607為例:
tech_id | Tech_name |
0 | MCS(Modem Common Service) |
2 | MM_CM(0x201) UI(0x20a) (Unnumbered Information) MM_DOM(0x202),MM_MMOC(0x251) |
4 | LTE |
5 | FTM |
6 | rfa_tech (0x600 rf_fwrsp,0x603 rfgsm, 0x604 rf_1x ,0x601 0x605 rf_hdr ,0x606 rfgsm_ftm,0x607 rf_lte,0x608 rf_lte_ftm,0x60b rf_qmi, 0x60c rf_meas,0x40f/0x1a04 rf_lte ,0x120f rf_tdscdma) |
7 | cdma |
8 | hdr |
9 | gsm |
0x0a | location(gps/gnss) |
0x0b | wcdma |
0x0c | ds(data service) |
0x0d | 1x(csfb) |
0x0f | nas(0xf19 mm, 0xf1c esm) |
0x10 | gstk(Generic SIM Application Toolkit) |
0x12 | tdscdma |
0x13 | wms |
0x15 | ims |
0x16 | qmi |
0x17 | ecall 0x1701 ecall_app ,0x1702 ecall_ivs |
0x18 | policyman |
0x1a | rflm |
模塊ID
下圖是MDM9607 LTE的部分子模塊ID的對(duì)應(yīng)關(guān)系
tech_id+mod_id | name |
0x401 | ML1 MGR |
0x407 | LL1_SRCH |
0x408 | LL1_DL |
0x409 | LL1_UL |
0x40a | LL1_SYS |
0x40b | LL1_Async |
0x40d | RRC |
0x40f | MAC |
0x411 | RLC DL |
0x412 | RLC UL |
0x413 | PDCP DL |
0x414 | PDCP UL |
0x41b | ML1_GM |
0x41e | SW.app |
0x420 | ML1_GM_SCHDLR |
0x427 | TLB(Test Loop ) |
0x42b | ML1_GM_Sleep |
0x434 | ML1_AFC |
0x43b | PDCP offload |
0x43e | ML1 offload |
0x43f | ML1 Co-existence |
0x441 | ML1 GM MSMGR |
0x442 | PDCPCOMP |
0x445 | ML1 SM FSCAN |
關(guān)鍵消息發(fā)送API:
msgr_send(umsg *buf,uint32 buf_size);
struct umsg{
struct msgr_hdr_struct_type{
uint32 dest_umid; //offset 0 ,要發(fā)送的UMID號(hào)
uint16 src_tech_mod_id; //offset 4,發(fā)送源tech_mod_id的標(biāo)識(shí)
uint8 num_attach;// offset 7
uint8 tail_flag ;// offset 8 ,頭部結(jié)尾標(biāo)志0x7f
uint8 inst_id;// offset 9,
}
uint8 send_dsm_flag;//offset 0x10 ,置1表示發(fā)送數(shù)據(jù)通過dsm結(jié)構(gòu)承載的標(biāo)志
dsm *dsm_obj;//offset 0x14 , 發(fā)送數(shù)據(jù)dsm結(jié)構(gòu)指針
}
msgrq_wait(void *msgr_client_ptr,void *msg_recv_buf,uint32 msg_recv_buf_size,uint32 *msg_recvd_size_ptr);//接受消息的函數(shù)
msgr_register(uint16 mod_id,void *msgr_client_ptr,void *mailbox_obj,uint32 umid);//msgr_client注冊(cè)u(píng)mid的消息路由
消息路由
map_name | map_size | key | value | value_size | Memory Attribution |
techs_map | techs * 8 | tech_id | module_counts, modules_map | 8 bytes | Read Only |
modules_map | module_counts * 0x11 * 2 | (mod_id * 0x11+type_id) * 2 | types_map_id | 2 bytes | Read Only |
types_map | types_map_ids * 0x20 | types_map_id * 0x20 +(op_type_id&0x1e) | tech_mod_type_seq | 2 bytes | Read/Write |
umids_map | umid_seq_id * 0x8 | 8 * (tech_mod_type_seq+op_id) | umid, next_umid_seq_id,msgr_client_id | 8 bytes | Read/Write |
msgr_clients_map | 0x34*total_msgr_client_counts | msgr_client_seq_id | msgr_client_desc | 0x34 | Read/Write |
struct msgr_client_desc{ //全局msgr_client結(jié)構(gòu)描述 uint32 umids_registered; uint16 msgr_client_reg_type;//1 ->msgrq_sig type,2-> rexq_sig uint16 tech_mod_id;// union *msg_sig_p{ //offset 0x10 struct msgrq_sig *msgq_p;//msgr reg type 1,4G及以后使用的mailbox消息傳遞系統(tǒng) struct rexq_sig *rexq_p;//msgr reg type 2,兼容2G/3G時(shí)代使用的Rex IPC消息傳遞系統(tǒng) } struct msgrq *msgrq_p;//offset 0x14 ,if reg type 1 struct msgr_client_obj *msgr_client_obj_ptr;//offset 0x30 } struct msgr_client_obj{//msgr_client結(jié)構(gòu)體 unsigned int msgr_client_reg_type;//1-> msgrq aka mailbox,2->rex_q,接受消息的方式 unsigned int register_umid_counts;//offset 8 ,消息接受器注冊(cè)的umid的總數(shù) unsigned int total_reged_recv_signal_counts;//offset 0x0c,注冊(cè)的接受消息的signal的個(gè)數(shù) union sig_recv_obj{ msgrq_sig *msgrq_signal_obj;// offset 0x10 msgrq_sig type,4/5G未來的主流類型 rexq_sig *rex_signal_obj;//offset 0x10 rexq_sig type ,這個(gè)主要是為了兼容之前2/3G的系統(tǒng)的數(shù)據(jù)結(jié)構(gòu) } unsigned int task_recv_signal_set_mask;//offset 0x14 ,注冊(cè)的接受消息的signal號(hào)的掩碼 uint32 err_counts;//offset 0x18 unsigned int recvd_signal_id;//offset 0x1c,當(dāng)前接受到的signal id,msgr_client_reg_type為1 struct msgrq *recvd_msgrq_ptr;//offset 0x20,當(dāng)前接受消息承載的msgrq對(duì)象,msgr_client_reg_type為1 struct msgrq *msgrq_first_entry;// offset 0x24,接受msgrq消息鏈表結(jié)構(gòu)指針,msgr_client_reg_type為1 unsigned int total_msgrq_counts;//offset 0x28, 可以接受msgrq消息的總數(shù),通過可以task_recv_signal_set_mask來確定,msgr_client_reg_type為1 } struct msgrq_sig{ uint32 sig_ready_flag;//must be 1 struct sig_def{ uint32 signal_id_for_recv;//offset 8 uint32 signal_reged_wait_mask;//offset 0xc void * kernel_msg_queue; unsigned int attribute; }; } struct rexq_sig{ //size 0x1c, 兼容2/3G系統(tǒng)的數(shù)據(jù)結(jié)構(gòu) utcb *msgr_client_utcb_ptr;//offset 0 任務(wù)接受消息使用的utcb標(biāo)識(shí) uint32 msgr_client_signal_id;//offset 4 接受消息使用的signal id msg_queue *msgr_out_msg_q;//offset 0x8 msg_queue *rex_msg_in_q;//offset 0xc uint16 msg_data_q_used_size;//offset 0x10 uint16 rexq_id;//offset 0x12 uint16 msg_data_q_size;//offset 0x14 } struct msg_data_q{ struct msg_data_q *prev_q; struct msg_data_q *next_q; char data[msg_data_q_size-8]; } struct msg_queue{ struct msg_data_q *headp; struct msg_data_q *tailp; uint32 total_q_counts; } struct msgrq{ void *msg_recv_buf_header;//offset 0 void *msg_recv_end_buf;//offset 4 char msgrq_name[16];//offset 0x10 int msgrq_recvd_seq;//ofset 0x18 unsigned int reged_recv_signal_id_mask;//offset 0x1c,可供接受消息signal的掩碼 void *msgr_buf_remain_ptr;//offset 0x20,可供接受消息的剩余空間起始地址 void *msgr_recv_buf;//offset 0x24,當(dāng)前接受到消息的buf地址 uint32 msgr_buf_remain_size;//offset 0x28 unsigned int total_msg_recv_buf_size;//offset 0x30 int8 is_buf_in_use;//offset 0x70 ,0-> in use, 1-> not in use uint32 recvd_msg_blocks;//offset 0x58 ,收到的消息次數(shù)總和 struct msgrq *next_msgrq;//offset 0x74 }
為了更方便的理解上述的數(shù)據(jù)結(jié)構(gòu)的關(guān)系與操作算法,畫了一張簡(jiǎn)單的圖來加深該消息系統(tǒng)的理解。 通過以上算法和數(shù)據(jù)結(jié)構(gòu),可以很方便的完成UMID與tech_mod_id的消息路由的注冊(cè),消息發(fā)送等操作。
需要說明的一點(diǎn)就是一個(gè)tech_mod_id可能會(huì)關(guān)聯(lián)多個(gè)msgr_client,所以msgr_client_id就成了消息傳遞的唯一標(biāo)識(shí),通過msgr_client_id得到全局的msgr_client_desc的結(jié)構(gòu)定義,該結(jié)構(gòu)體里面包含接受消息的任務(wù)utcb和接受消息的signal id,這里通過tech_mod_id 0xf19對(duì)應(yīng)的MM(Mobility Management)任務(wù)進(jìn)行舉例。
我在一個(gè)實(shí)時(shí)運(yùn)行的MDM9607系統(tǒng)上面,描繪出所有UMID和tech_mod_id之間的消息路由情況,由于實(shí)在太大, 可以在https://github.com/vessial/baseband/blob/master/umid_pro.svg進(jìn)行查看。
高通基帶系統(tǒng)里面的消息狀態(tài)機(jī),是實(shí)現(xiàn)3GPP定義功能最重要的組成部分,消息狀態(tài)機(jī)在移動(dòng)通信系統(tǒng)里面扮演著非常重要的角色,也是多模移動(dòng)通信系統(tǒng)的核心,3GPP在定義的多個(gè)移動(dòng)通信技術(shù)的分層協(xié)議棧時(shí),不同的通信技術(shù)模式之間切換,會(huì)通過狀態(tài)機(jī)來維護(hù)相應(yīng)的分層邏輯的狀態(tài)和可操作功能,接下來將重要介紹高通基帶系統(tǒng)使用的狀態(tài)機(jī)數(shù)據(jù)結(jié)構(gòu)以及相關(guān)算法,本文將研究主要流4G LTE和5G NR系統(tǒng)上使用的第二代狀態(tài)機(jī)消息系統(tǒng),老的第一代狀態(tài)機(jī)系統(tǒng)不在這里介紹了。
struct sm_state_instance{ //eg ,size 0x1c struct sm_obj *sm;//狀態(tài)機(jī)對(duì)象定義 unsigned int current_state_id;//狀態(tài)機(jī)當(dāng)前所處的狀態(tài)id unsigned int recvd_umid_in_sm_entity_seq;//offset 8, 狀態(tài)機(jī)當(dāng)前收到的umid所在狀態(tài)機(jī)umid列表中的序列號(hào) unsigned int instance_id;// 狀態(tài)機(jī)實(shí)例編號(hào) uint8 sm_state_lock;//offset 0x11 0->state unlock,1-> state lock 狀態(tài)機(jī)鎖的狀態(tài) void *stm_idle_buf;//offset 0x14 狀態(tài)機(jī)操作可能需要的buf空間 unsigned int debug_code;//offset 0x18 狀態(tài)機(jī)調(diào)試碼 } struct sm_obj{ //狀態(tài)機(jī)的定義結(jié)構(gòu) struct msgr_stm_obj *stm; unsigned char *stm_obj_name; //狀態(tài)機(jī)的名稱,例如LTE_RRC_SIB_SM unsigned int stm_obj_name_hash; //狀態(tài)機(jī)名稱的hash值 unsigned int stm_inst_id;//stm instance id ,狀態(tài)機(jī)的實(shí)例編號(hào),狀態(tài)機(jī)可能存在多個(gè)實(shí)例,通過這個(gè)編號(hào)來區(qū)別不同的狀態(tài)機(jī)實(shí)體 } struct msgr_stm_obj { int instance_counts; //該狀態(tài)機(jī)支持的實(shí)例個(gè)數(shù) int state_cnts; //該狀態(tài)機(jī)的狀態(tài)數(shù)量 struct state_status_def *state_def;//狀態(tài)機(jī)每個(gè)不同狀態(tài)的定義的數(shù)據(jù)結(jié)構(gòu),size state_cnts*0x10 int umid_cnts;//狀態(tài)機(jī)注冊(cè)的可接受umid總數(shù) struct umid_msg_list *umid_msg_def;//存儲(chǔ)umid和umid描述信息的指針,size umid_cnts*8 struct umid_msg_states_func_cb_list *umid_in_state_cb;//存儲(chǔ)著所有umid對(duì)應(yīng)每個(gè)狀態(tài)的回調(diào)操作函數(shù) void *cb_func1;// stm enter //offset 0x18 ,進(jìn)入該狀態(tài)機(jī)的回調(diào)函數(shù) void *cb_func2;// stm exit //offset 0x1c ,退出該狀態(tài)機(jī)的回調(diào)函數(shù) void *cb_func3;// stm error //offset 0x20 ,狀態(tài)機(jī)出錯(cuò)的回調(diào)函數(shù) void *cb_func4; //stm debug //offset 0x24 ,狀態(tài)機(jī)調(diào)試的回調(diào)函數(shù) unsigned int init_state_id; // default 0 ,狀態(tài)機(jī)初始默認(rèn)狀態(tài)id } struct umid_msg_states_func_cb_list {//狀態(tài)機(jī)在接受到相應(yīng)的umid后的原語操作回調(diào)函數(shù) void *umid_msg_in_states_1_cb_list[umid_cnts]; void *umid_msg_in_states_2_cb_list[umid_cnts]; void *umid_msg_in_states_3_cb_list[umid_cnts]; ... void *umid_msg_in_states_state_cnts_cb_list[umid_cnts]; } struct state_status_def{//每個(gè)狀態(tài)的定義 unsigned char *state_name; //狀態(tài)名稱,eg,active/inactive etc void *cb_func1; //state enter //狀態(tài)機(jī)進(jìn)入該狀態(tài)的回調(diào)函數(shù) void *cb_func2; //state exit //狀態(tài)機(jī)退出該狀態(tài)的回調(diào)函數(shù) void *cb_func3; //state debug ?//可能是調(diào)試函數(shù) } struct umid_msg_list{//狀態(tài)機(jī)可接受的umid消息定義 unsigned char *umid_msg_name; //umid對(duì)應(yīng)的描述名稱 unsigned int umid; //umid } 關(guān)鍵API描述 stm_instance_activate(struct sm_state_instance *sm_st_inst,uint32 inst_id,uint32 initial_state_id);//初始化狀態(tài)機(jī)實(shí)例 stm_instance_process_input(uint32 state_id,struct sm_state_instance *sm_st_inst,uint32 sm_inst_id,uint32 umid_input,void *stm_payload_ptr);//對(duì)狀態(tài)機(jī)接受到的umid和數(shù)據(jù)進(jìn)行原語操作
我從MDM9607固件里面提取的詳細(xì)的狀態(tài)機(jī)信息可以在https://github.com/vessial/baseband/blob/master/lte_sm.log進(jìn)行查看。
3GPP定義的L3層的RRC(Radio Resource Control)的狀態(tài)機(jī)是最為復(fù)雜的,高通在實(shí)現(xiàn)4G LTE的RRC時(shí)使用了大量的狀態(tài)機(jī)進(jìn)行功能管理。 MDM9607 4G LTE RRC狀態(tài)機(jī)類型如下:
state name: LTE_RRC_CSG_ASF_SM
state name: LTE_RRC_DT_SM //
state name: LTE_RRC_IRAT_TO_G_MGR_SM
state name: LTE_RRC_LLC_SM
state name: LTE_RRC_CAPABILITIES_SM
state name: LTE_RRC_IRAT_FROM_1X_MGR_SM
state name: LTE_RRC_SEC_SM //sim認(rèn)證和密鑰協(xié)商管理相關(guān)的狀態(tài)機(jī)
state name: LTE_RRC_CRP_SM
state name: LTE_RRC_IRAT_FROM_DO_MGR_SM //負(fù)責(zé)從CDMA-EVDO切換到LTE的管理狀態(tài)機(jī)
state name: LTE_RRC_IRAT_FROM_TDS_MGR_SM //負(fù)責(zé)從TDSCDMA切換到LTE的狀態(tài)機(jī)
state name: LTE_RRC_PAGING_SM //尋呼管理的狀態(tài)機(jī)
state name: LTE_RRC_CONFIG_SM
state name: LTE_RRC_MISC_SM
state name: LTE_RRC_MEAS_SM
state name: LTE_RRC_CEP_SM
state name: LTE_RRC_IRAT_TO_1X_MGR_SM
state name: LTE_RRC_IRAT_FROM_W_MGR_SM
state name: LTE_RRC_MDT_SM
state name: LTE_RRC_IRAT_TO_DO_MGR_SM
state name: LTE_RRC_CONTROLLER_SM //關(guān)鍵的LTE的控制狀態(tài)機(jī),控制服務(wù)的停止和開啟
state name: LTE_RRC_IRAT_TO_TDS_MGR_SM
state name: LTE_RRC_IRAT_TO_W_MGR_SM //從LTE切換到WCDMA的管理狀態(tài)機(jī)
state name: LTE_RRC_EMP_SM
state name: LTE_RRC_MH_SM
state name: LTE_RRC_UEINFO_SM //UE信息管理的狀態(tài)機(jī)
state name: LTE_RRC_SIB_SM //系統(tǒng)信息塊的管理狀態(tài)機(jī)
state name: LTE_RRC_PLMN_SEARCH_SM //搜索網(wǎng)絡(luò)使用的狀態(tài)機(jī)
state name: LTE_RRC_IRAT_FROM_G_MGR_SM //從GSM切換到LTE的狀態(tài)機(jī)
state name: LTE_RRC_CSP_SM //cell search plmn狀態(tài)機(jī)
state name: LTE_RRC_ESMGR_SM // EMBMS管理狀態(tài)機(jī)
state name: LTE_RRC_CRE_SM
我們拿LTE_RRC_PAGING_SM狀態(tài)機(jī)定義作例子與之對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)作解析
LTE_RRC_PAGING_SM addr 0xd10b35e0 state machine name: LTE_RRC_PAGING_SM inst_cnts 1 total states 3 total umid 10 state name: INITIAL state enter 0xd0b923a8 state exit 0xd0b923c8 state debug 0x0 state name: IDLE_CAMPED state enter 0xd0b923e0 state exit 0xd0b92400 state debug 0x0 state name: CONNECTED state enter 0xd0b92418 state exit 0xd0b92450 state debug 0x0 0x040d140c LTE_RRC_CAMPED_INDI 0x040d0207 LTE_RRC_DRX_INFO_REQ 0x040d0206 LTE_RRC_SIM_UPDATE_REQ 0x040d0401 LTE_RRC_SERVICE_IND 0x040d0710 LTE_RRC_PAGING_DLM 0x040d1405 LTE_RRC_CONNECTED_INDI 0x040d022a LTE_RRC_MTC_CFG_REQ 0x040d1400 LTE_RRC_STOPPED_INDI 0x040d140b LTE_RRC_NOT_CAMPED_INDI 0x040d1402 LTE_RRC_SIB_UPDATED_INDI
下圖為MDM9607 4G LTE_RRC的狀態(tài)機(jī)圖譜
狀態(tài)機(jī)操作實(shí)例
為了更直觀的理解消息狀態(tài)機(jī)的操作過程,我這里提供了一個(gè)例子來展示消息傳遞過程以及狀態(tài)機(jī)的處理過程,這個(gè)過程是在基帶處于IDLE狀態(tài)下,沒有接入任何移動(dòng)通信網(wǎng)絡(luò),到基帶一次接入4G LTE網(wǎng)絡(luò)到SIM認(rèn)證的過程,這里只提供RRC的狀態(tài)機(jī)的處理過程。
發(fā)送端 | 接受端 | 接受UMID號(hào) | 處理狀態(tài)機(jī) | 描述信息 | |
0xF19 emm | LTE_RRC | 0x40d0204 | LTE_RRC_CSP_SM | LTE_RRC_SERVICE_REQ | |
0xF19 emm | LTE_RRC | 0x40d0204 | LTE_RRC_IRAT_FROM_W_MGR_SM | LTE_RRC_SERVICE_REQ | |
0xF19 emm | LTE_RRC | 0x40d0204 | LTE_RRC_IRAT_FROM_G_MGR_SM | LTE_RRC_SERVICE_REQ | |
0xF19 emm | LTE_RRC | 0x40d0204 | LTE_RRC_IRAT_FROM_TDS_MGR_SM | LTE_RRC_SERVICE_REQ | |
0x40d LTE_RRC | LTE_RRC | 0x40d1442 | LTE_RRC_MEAS_SM | LTE_RRC_CLEAR_DEPRI_FREQ_INDI | |
0x40d LTE_RRC | LTE_RRC | 0x40d120d | LTE_RRC_CONTROLLER_SM | LTE_RRC_MODE_CHANGE_REQI | |
0x40f LTE_MAC | LTE_RRC | 0x40f0803 | LTE_RRC_CONTROLLER_SM | LTE_MAC_START_CNF | |
0x412 LTE_RLCUL | LTE_RRC | 0x4120801 | LTE_RRC_CONTROLLER_SM | LTE_RLCUL_START_CNF | |
0x411 LTE_RLCDL | LTE_RRC | 0x4110801 | LTE_RRC_CONTROLLER_SM | LTE_RLCDL_START_CNF | |
0x413 LTE_PDCPDL | LTE_RRC | 0x4130806 | LTE_RRC_CONTROLLER_SM | LTE_PDCPDL_START_CNF | |
0x414 LTE_PDCPUL | LTE_RRC | 0x4140807 | LTE_RRC_CONTROLLER_SM | LTE_PDCPUL_START_CNF | |
0x40c LTE_ML1_MGR | LTE_RRC | 0x40c0801 | LTE_RRC_CONTROLLER_SM | LTE_CPHY_START_CNF | |
0x40d LTE_RRC | LTE_RRC | 0x40d1513 | LTE_RRC_CSP_SM | LTE_RRC_MODE_CHANGE_CNFI | |
0x40d LTE_RRC | LTE_RRC | 0x40d1206 | LTE_RRC_LLC_SM | LTE_RRC_CFG_REQI | |
0x40c LTE_ML1_MGR | LTE_RRC | 0x40c0809 | LTE_RRC_CSP_SM | LTE_CPHY_SYSTEM_SCAN_CNF | |
0x40d LTE_RRC | LTE_RRC | 0x40d1206 | LTE_RRC_LLC_SM | LTE_RRC_CFG_REQI | |
0x40c LTE_ML1_MGR | LTE_RRC | 0x40c0800 | LTE_RRC_CSP_SM | LTE_CPHY_ACQ_CNF | |
0x40d LTE_RRC | LTE_RRC | 0x40d1202 | LTE_RRC_SIB_SM | LTE_RRC_GET_SIBS_REQI | |
0x403 LTE_ML1_DLM | LTE_RRC | 0x40c0402 | LTE_RRC_SIB_SM | LTE_CPHY_MIB_IND | |
0x40F LTE_MAC | LTE_RRC | 0x40f0406 | LTE_RRC_SIB_SM | LTE_MAC_RRC_BCCH_DL_DATA_IND | BCCH DL SCH SIB1 |
0x40c LTE_ML1_MGR | LTE_RRC | 0x40c0823 | LTE_RRC_SIB_SM | LTE_CPHY_TDD_CFG_CNF | |
0x40F LTE_MAC | LTE_RRC | 0x40f0406 | LTE_RRC_SIB_SM | LTE_MAC_RRC_BCCH_DL_DATA_IND | BCCH DL SCH SI |
0x40d LTE_RRC | LTE_RRC | 0x40d1514 | LTE_RRC_CSP_SM | LTE_RRC_GET_SIBS_CNFI | |
0x40F LTE_MAC | LTE_RRC | 0x40f0406 | LTE_RRC_SIB_SM | LTE_MAC_RRC_BCCH_DL_DATA_IND | BCCH DL SCH SIB1 |
0x40c LTE_ML1_MGR | LTE_RRC | 0x40c080a | LTE_RRC_CSP_SM | LTE_CPHY_CELL_SELECT_CNF | |
0x40d LTE_RRC | LTE_RRC | 0x40d1206 | LTE_RRC_LLC_SM | LTE_RRC_CFG_REQI | |
0x40c LTE_ML1_MGR | LTE_RRC | 0x40c0804 | LTE_RRC_LLC_SM | LTE_CPHY_COMMON_CFG_CNF | |
0x40c LTE_ML1_MGR | LTE_RRC | 0x40c0805 | LTE_RRC_LLC_SM | LTE_CPHY_DEDICATED_CFG_CNF | |
0x40f LTE_MAC | LTE_RRC | 0x40f0801 | LTE_RRC_LLC_SM | LTE_MAC_CFG_CNF | |
0x40d LTE_RRC | LTE_RRC | 0x40d1516 | LTE_RRC_CSP_SM | LTE_RRC_CFG_CNFI | |
0x40d LTE_RRC | LTE_RRC | 0x40d140c | LTE_RRC_SIB_SM | LTE_RRC_CAMPED_INDI | inactive |
0x40d LTE_RRC | LTE_RRC | 0x40d140c | LTE_RRC_SIB_SM | LTE_RRC_CAMPED_INDI | active |
0x40d LTE_RRC | LTE_RRC | 0x40d140c | LTE_RRC_MEAS_SM | LTE_RRC_CAMPED_INDI | |
0x40d LTE_RRC | LTE_RRC | 0x40d140c | LTE_RRC_CAPABILITIES_SM | LTE_RRC_CAMPED_INDI | |
0x40d LTE_RRC | LTE_RRC | 0x40d140c | LTE_RRC_CEP_SM | LTE_RRC_CAMPED_INDI | |
0x40d LTE_RRC | LTE_RRC | 0x40d140c | LTE_RRC_MISC_SM | LTE_RRC_CAMPED_INDI | |
0x40d LTE_RRC | LTE_RRC | 0x40d1516 | LTE_RRC_CONTROLLER_SM | LTE_RRC_CFG_CNFI | |
0x40d LTE_RRC | LTE_RRC | 0x40d1402 | LTE_RRC_CSP_SM | LTE_RRC_SIB_UPDATED_INDI | |
0x40d LTE_RRC | LTE_RRC | 0x40d1402 | LTE_RRC_CEP_SM | LTE_RRC_SIB_UPDATED_INDI | |
0x40d LTE_RRC | LTE_RRC | 0x40d1402 | LTE_RRC_PAGING_SM | LTE_RRC_SIB_UPDATED_INDI | |
0x40d LTE_RRC | LTE_RRC | 0x40d1402 | LTE_RRC_MEAS_SM | LTE_RRC_SIB_UPDATED_INDI | |
0x40d LTE_RRC | LTE_RRC | 0x40d1402 | LTE_RRC_CSG_ASF_SM | LTE_RRC_SIB_UPDATED_INDI | |
0x40d LTE_RRC | LTE_RRC | 0x40d1402 | LTE_RRC_IRAT_TO_G_MGR_SM | LTE_RRC_SIB_UPDATED_INDI | |
0x40d LTE_RRC | LTE_RRC | 0x40d1402 | LTE_RRC_IRAT_TO_TDS_MGR_SM | LTE_RRC_SIB_UPDATED_INDI | |
0x40d LTE_RRC | LTE_RRC | 0x40D0401 | LTE_RRC_CSG_ASF_SM | LTE_RRC_SERVICE_IND | |
0x40d LTE_RRC | LTE_RRC | 0x40D0401 | LTE_RRC_PAGING_SM | LTE_RRC_SERVICE_IND | |
0x40c LTE_ML1_MGR | LTE_RRC | 0x40c0815 | LTE_RRC_MEAS_SM | LTE_CPHY_IDLE_MEAS_CFG_CNF | |
0x40d LTE_RRC | LTE_RRC | 0x40d0225 | LTE_RRC_CSP_SM | LTE_RRC_AVOIDANCE_REQ | |
0x40F LTE_MAC | LTE_RRC | 0x40f0406 | LTE_RRC_SIB_SM | LTE_MAC_RRC_BCCH_DL_DATA_IND | SI |
0x40d LTE_RRC | LTE_RRC | 0x40d1437 | LTE_RRC_CSP_SM | LTE_RRC_INTERFREQ_LIST_UPDATE_INDI | |
0xf19 EMM | LTE_RRC | 0x40d0200 | LTE_RRC_CEP_SM | LTE_RRC_CONN_EST_REQ | Attach Request NAS msg |
0x40d LTE_RRC | LTE_RRC | 0x40D1404 | LTE_RRC_CONTROLLER_SM | LTE_RRC_CONN_ESTABLISHMENT_STARTED_INDI | RRC Connection Request |
0x40d LTE_RRC | LTE_RRC | 0x40D143d | LTE_RRC_CONTROLLER_SM | LTE_RRC_TRM_PRIORITY_CHANGE_INDI | |
0xF19 EMM | LTE_RRC | 0x40d0206 | LTE_RRC_CONTROLLER_SM | LTE_RRC_SIM_UPDATE_REQ | |
0xF19 EMM | LTE_RRC | 0x40d0206 | LTE_RRC_PAGING_SM | LTE_RRC_SIM_UPDATE_REQ | |
0xF19 EMM | LTE_RRC | 0x40d0206 | LTE_RRC_SEC_SM | LTE_RRC_SIM_UPDATE_REQ | SIM Update Req received from NAS |
0xF19 EMM | LTE_RRC | 0x40d0206 | LTE_RRC_CAPABILITIES_SM | LTE_RRC_SIM_UPDATE_REQ | |
0x404 LTE_ML1_ULM | LTE_RRC | 0x40c0421 | LTE_RRC_CEP_SM | LTE_CPHY_RACH_MSG1_SCHED_IND | LTE MAC RACH Attempt |
0x40f LTE_MAC | LTE_RRC | 0x40f0800 | LTE_RRC_CEP_SM | LTE_MAC_ACCESS_CNF | |
0x40f LTE_MAC | LTE_RRC | 0x40f0405 | LTE_RRC_MH_SM | LTE_MAC_RRC_CCCH_DL_DATA_IND | CCCH RRC Connection Setup |
0x40d LTE_RRC | LTE_RRC | 0x40d0703 | LTE_RRC_CEP_SM | LTE_RRC_RRC_CONNECTION_SETUP_DLM | CCCH RRC Connection Setup |
0x40d LTE_RRC | LTE_RRC | 0x40d1206 | LTE_RRC_LLC_SM | LTE_RRC_CFG_REQI | |
0x40d LTE_RRC | LTE_RRC | 0x40D1408 | LTE_RRC_CSP_SM | LTE_RRC_PROCEED_WITH_RESEL_INDI | |
0x411 LTE_RLCDL | LTE_RRC | 0x4110800 | LTE_RRC_LLC_SM | LTE_RLCDL_CFG_CNF | |
0x412 LTE_RLCUL | LTE_RRC | 0x4120800 | LTE_RRC_LLC_SM | LTE_RLCUL_CFG_CNF | |
0x413 LTE_PDCPDL | LTE_RRC | 0x4130800 | LTE_RRC_LLC_SM | LTE_PDCPDL_CFG_CNF | |
0x414 LTE_PDCPUL | LTE_RRC | 0x4140800 | LTE_RRC_LLC_SM | LTE_PDCPUL_CFG_CNF | |
0x40d LTE_RRC | LTE_RRC | 0x40d1516 | LTE_RRC_CEP_SM | LTE_RRC_CFG_CNFI | |
0x40d LTE_RRC | LTE_RRC | 0x40d1200 | LTE_RRC_MH_SM | LTE_RRC_SEND_UL_MSG_REQI | |
0x40d LTE_RRC | LTE_RRC | 0x40d1405 | LTE_RRC_SIB_SM | LTE_RRC_CONNECTED_INDI | |
0x414 LTE_PDCPUL | LTE_RRC | 0x4140802 | LTE_RRC_MH_SM | LTE_PDCPUL_SDU_CNF | |
0x40d LTE_RRC | LTE_RRC | 0x40d1504 | LTE_RRC_CEP_SM | LTE_RRC_RRC_CONNECTION_SETUP_COMPLETE_CNFI | UL_DCCH RRC connection Setup Complete |
0x413 LTE_PDCPDL | LTE_RRC | 0x4130400 | LTE_RRC_MH_SM | LTE_PDCPDL_SDU_IND | DL_DCCH info Transfer |
0x40d LTE_RRC | LTE_RRC | 0x40d0705 | LTE_RRC_DT_SM | LTE_RRC_DL_INFORMATION_TRANSFER_DLM | DL_DCCH Auth Request Msg recvd |
0x40d LTE_RRC | LTE_RRC | 0x40d141f | LTE_RRC_MH_SM | LTE_RRC_DLM_PROCESSED_INDI | |
0xF19 EMM | LTE_RRC | 0x40d0201 | LTE_RRC_DT_SM | LTE_RRC_UL_DATA_REQ | send Auth Resp data |
0x40d LTE_RRC | LTE_RRC | 0x40d1200 | LTE_RRC_MH_SM | LTE_RRC_SEND_UL_MSG_REQI | UL_DCCH ULinfo Transfer send NAS Auth resp |
0x414 LTE_PDCPUL | LTE_RRC | 0x4140802 | LTE_RRC_MH_SM | LTE_PDCPUL_SDU_CNF | |
0x40d LTE_RRC | LTE_RRC | 0x40d1509 | LTE_RRC_DT_SM | LTE_RRC_UL_INFORMATION_TRANSFER_CNFI |
DL_DCCH的Information Transfer字段里面包含了來自MME發(fā)送過來的認(rèn)證請(qǐng)求數(shù)據(jù)(LTE NAS EMM信令消息id 0x52),包含有nas key set id, 16個(gè)字節(jié)的認(rèn)證隨機(jī)數(shù)據(jù)auth_param rand,以及16個(gè)字節(jié)的auth param AUTN數(shù)據(jù),SIM卡通過收到的這兩個(gè)關(guān)鍵信息進(jìn)行認(rèn)證, 并計(jì)算生成Auth_resp發(fā)送給MME進(jìn)行比較完成本地端和服務(wù)器端的認(rèn)證,本地端計(jì)算如下。
本地端收到的rand(16bytes)+AUTN(16bytes)
K為sim卡和MME都持有的sim卡的唯一隱私數(shù)據(jù),sim卡端只有sim卡芯片可以讀取。
SIM卡端密鑰派生認(rèn)證過程,f1/2/3/4/5為sim卡的計(jì)算功能函數(shù)
AK=f5(K,rand)
IK=f4(K,rand)
CK=f3(K,rand)
RES=f2(K,rand) //計(jì)算給MME進(jìn)行認(rèn)證SIM卡的數(shù)據(jù)
SQN=AUTN^AK (6bytes)
AMF=AUTN[6:8]
MAC=f1(K,SQN,rand,AMF)
SIM卡端認(rèn)證MME端過程
sim_autn=SQN^AK(6bytes)+AMF(2bytes)+MAC(8bytes)
比較MME發(fā)過來的AUTN和sim_autn ,相等則認(rèn)為MME合法。
基帶把sim卡計(jì)算得到的RES通過LTE NAS EMM 信令消息號(hào)0x53包裹到UL_DCCH的InformationTransfer字段里面發(fā)給基站進(jìn)而到MME進(jìn)行認(rèn)證。
MME認(rèn)證SIM卡的過程就比較簡(jiǎn)單了, MME端計(jì)算XRES=f2(K,rand),然后比較收到的RES,相等表示MME認(rèn)證SIM卡成功,至此認(rèn)證完成。 由于上述操作涉及EMM和RRC之間的交互過程比較復(fù)雜,這里只是簡(jiǎn)單提一下,EMM的狀態(tài)機(jī)會(huì)在下一篇文章里面單獨(dú)詳細(xì)介紹。
由于從全球公開的信息渠道中并不能獲取高通基帶系統(tǒng)的深入信息,所以花費(fèi)1年多的時(shí)間通過對(duì)底層操作系統(tǒng)和上層3GPP實(shí)現(xiàn)的業(yè)務(wù)系統(tǒng)進(jìn)行深度逆向工程,這篇文章只是系統(tǒng)性的介紹了高通4/5G基帶系統(tǒng)的消息機(jī)制和消息狀態(tài)機(jī),我認(rèn)為這是一個(gè)關(guān)鍵的架構(gòu)設(shè)計(jì),梳理清楚其消息架構(gòu)對(duì)于理解3GPP實(shí)現(xiàn)的消息原語操作以及對(duì)移動(dòng)通信技術(shù)的多模分層設(shè)計(jì)有非常大的幫助,該消息系統(tǒng)架構(gòu)設(shè)計(jì)具有非常好的擴(kuò)展性,可以很靈活的增加新的功能到該消息框架中去,可以很好的減少系統(tǒng)測(cè)試成本,有很多設(shè)計(jì)理念值得學(xué)習(xí)和借鑒,由于現(xiàn)今高通5G基帶所支持的UMID操作數(shù)高達(dá)2萬多個(gè),所以這里的展示的例子只是揭示了狀態(tài)機(jī)功能操作的冰山一角,后續(xù)會(huì)持續(xù)研究對(duì)于狀態(tài)機(jī)安全漏洞的挖掘研究,實(shí)現(xiàn)高效的5G安全測(cè)試體系,通過對(duì)基帶系統(tǒng)的深刻認(rèn)知,可以更好的對(duì)基站系統(tǒng)和核心網(wǎng)系統(tǒng)進(jìn)行安全評(píng)估。
最后,附上5G安全威脅硬件檢測(cè)工具原型圖。只要搭載通信運(yùn)營(yíng)商提供給普通用戶的5G sim卡,插入電腦,就可完成對(duì)附近通信安全威脅的檢測(cè),該工具也可改造成通過電池供電的獨(dú)立檢測(cè)、便攜式設(shè)備。
本文作者:阿里安全
著生活水平的不斷提高,人們對(duì)電子設(shè)備的品質(zhì)也提出了更高的要求。顯示器作為桌面顯示的終端產(chǎn)品,可以直接影響人們對(duì)于電腦的使用體驗(yàn),它的品質(zhì)顯得格外重要。顯示器市場(chǎng)中的新興品牌——京東方拾光紀(jì)深蘊(yùn)此道,從第一款產(chǎn)品開始便以高質(zhì)量、嚴(yán)品控的標(biāo)準(zhǔn)來設(shè)計(jì)制造產(chǎn)品。再加上親民的售價(jià),產(chǎn)品的持續(xù)熱銷是必然的事情。
近期該品牌更是在京東年貨節(jié)期間進(jìn)行促銷活動(dòng),旗下的兩款明星產(chǎn)品——SA27D0、CA27D0均有大額優(yōu)惠,消費(fèi)者曬單后還有機(jī)會(huì)得50元的京東E卡,現(xiàn)在正是入手好時(shí)機(jī)!感興趣的可點(diǎn)擊下方鏈接查看詳情信息呦。
為什么京東方拾光紀(jì)的顯示器產(chǎn)品都有那么高的產(chǎn)品質(zhì)量?究其原因,還是因?yàn)樗敲姘寰揞^京東方(BOE)旗下子公司京東方藝云的自有品牌,在面板和研發(fā)方面擁有得天獨(dú)厚的優(yōu)勢(shì)。對(duì)數(shù)碼產(chǎn)品稍有研究的人應(yīng)該都聽說過京東方的大名,作為一家全球半導(dǎo)體顯示產(chǎn)業(yè)龍頭企業(yè),它憑借自身強(qiáng)大的研發(fā)能力,在全球顯示屏市場(chǎng)中占據(jù)了極高的市場(chǎng)份額。超高清、柔性屏、微顯示等解決方案在國(guó)內(nèi)外知名品牌的產(chǎn)品上都得到了廣泛的應(yīng)用。背靠這樣一座“大山”,拾光紀(jì)有理由、有底氣提供高質(zhì)量的顯示器產(chǎn)品,同時(shí)還有親民的售價(jià)。
物美價(jià)廉往往是人們對(duì)產(chǎn)品最好的評(píng)價(jià),因?yàn)榫〇|方拾光紀(jì)在供應(yīng)鏈方面的優(yōu)勢(shì),旗下的顯示器產(chǎn)品在價(jià)格方面,有能力為用戶帶來更多的優(yōu)惠。比如CA27D0這款產(chǎn)品,使用了27英寸2K分辨率,由京東方自主研發(fā)的ADS硬屏。在寬視角的前提下,提供更高的透光效率,帶來更加精準(zhǔn)的色彩展現(xiàn)。125%的sRGB色域容積,讓互聯(lián)網(wǎng)視頻、圖片上的色彩完整的呈現(xiàn)到你眼前。京東年貨節(jié)期間,該產(chǎn)品的到手價(jià)為1299元。
除了屏幕規(guī)格高之外,它還提供了45W的Type-C反充接口,讓筆記本、手機(jī)等移動(dòng)設(shè)備快速、高效的與顯示器相連,在傳輸視頻信號(hào)的同時(shí),還能為設(shè)備充電。在加上三面窄邊框的高顏值外觀,一千出頭的到手價(jià)格就問你香不香?
除了產(chǎn)品性能優(yōu)異、售價(jià)親民之外,京東方拾光紀(jì)品牌自身研發(fā)創(chuàng)新的能力也不容小覷。當(dāng)下年輕人受大城市集聚效應(yīng)的影響較大,紛紛從自己的家鄉(xiāng)來到一線城市謀求更多發(fā)展。在獲得更多機(jī)會(huì)和舞臺(tái)的同時(shí),也面臨著房間小、消費(fèi)力弱等痛點(diǎn)問題。而京東方拾光紀(jì)便敏銳的察覺到了這一市場(chǎng)需求,顛覆性的推出了自帶系統(tǒng)的桌面智慧屏-京東方拾光紀(jì)SA27D0。讓當(dāng)下的年青一代可以花費(fèi)較少的金錢,享受到更高的娛樂質(zhì)量。京東年貨節(jié)期間,SA27D0的到手價(jià)僅1699元。
京東方拾光紀(jì)SA27D0這款桌面智慧屏在顯示器內(nèi)容裝載了桌面智能OS系統(tǒng),可實(shí)現(xiàn)譬如獨(dú)立安裝APP、無線投屏/同屏手機(jī)內(nèi)容等傳統(tǒng)顯示器無法實(shí)現(xiàn)的操作和功能。再加上27英寸2K分辨率的ADS硬屏所帶來的寬廣準(zhǔn)確的色彩顯示,讓使用者享受到細(xì)膩、震撼、真實(shí)的畫面視覺效果。
當(dāng)下年輕人在閑暇時(shí)光有多種多樣的休閑放松方式,可能你喜歡看球賽而同事喜歡追劇。而京東方拾光紀(jì)桌面智慧屏在應(yīng)用市場(chǎng)中提供了種類眾多的APP,來滿足多元化的娛樂需求。像銀河奇異果、酷喵影視、芒果TV、云視聽極光等熱門影視APP均可在市場(chǎng)中進(jìn)行安裝。
不可否認(rèn),智能手機(jī)的出現(xiàn)很大程度上改變了人們的生活習(xí)慣。但考慮便攜性能的同時(shí),免不了犧牲了很多使用體驗(yàn),在一塊不足7英寸的屏幕上看視頻難免會(huì)覺得不夠暢爽。而這款內(nèi)置OS操作系統(tǒng)的桌面智慧屏,可以把手機(jī)的內(nèi)容無線同屏到屏幕上顯示。無論你的手機(jī)是Android和IOS系統(tǒng),都可享受這一功能所帶來的震撼視覺體驗(yàn)。
在當(dāng)下,手機(jī)上出現(xiàn)了很多專為手機(jī)量身打造的內(nèi)容,就比如抖音內(nèi)的視頻大都是豎屏顯示。而這款桌面智慧屏的支架具有橫豎屏切換功能,讓27英寸的大屏幕更好的適配手機(jī)上豎長(zhǎng)顯示的內(nèi)容。
另外,京東方拾光紀(jì)深知當(dāng)下使用電腦時(shí)間過長(zhǎng),導(dǎo)致了越來越多的眼部健康問題,所以旗下所有的顯示器產(chǎn)品都格外重視在使用時(shí)對(duì)于眼部的保護(hù)。通過德國(guó)萊茵TUV認(rèn)證的低藍(lán)光護(hù)眼功能還有DC調(diào)光不閃屏功能成為了每臺(tái)京東方拾光紀(jì)顯示器的標(biāo)配,同時(shí)還通過霧化技術(shù)優(yōu)化HAZE參數(shù),讓傳統(tǒng)鏡面反射的顯示屏變?yōu)轭愃萍垙埪瓷涞钠聊环姥9饧夹g(shù)。無論是深夜的加班奮斗還是周末的追劇狂歡,都能全方位呵護(hù)你的用眼健康。
”性能強(qiáng)、功能全、有新意、售價(jià)低“這是京東方拾光紀(jì)作為一個(gè)新入顯示器市場(chǎng)品牌的四大殺手锏。而這四大殺手锏中,既有京東方拾光紀(jì)在產(chǎn)業(yè)方面的優(yōu)勢(shì),又有對(duì)市場(chǎng)的洞察力,更有造好產(chǎn)品、普惠于民的初心和抱負(fù)。這無疑讓這個(gè)品牌在當(dāng)下顯示器市場(chǎng)獲得了諸多關(guān)注,讓眾多消費(fèi)者將它家的產(chǎn)品加于購(gòu)物車之中!