0 引言
在當(dāng)今互聯(lián)網(wǎng)時(shí)代的大背景之下,互聯(lián)網(wǎng)技術(shù)迅猛發(fā)展,手機(jī)上網(wǎng)的網(wǎng)民也日趨增長(zhǎng)。同樣,用戶在境外出行時(shí)的移動(dòng)上網(wǎng)需求也日益強(qiáng)烈,移動(dòng)用戶出國(guó)活動(dòng)頻繁,國(guó)際漫游業(yè)務(wù)量明顯增加[1],傳統(tǒng)的實(shí)體SIM卡用戶需要在出國(guó)之前辦理國(guó)際漫游業(yè)務(wù)后,能夠使用漫游地網(wǎng)絡(luò)服務(wù)。然而,國(guó)際漫游資費(fèi)高是困擾消費(fèi)者的一大難題。為了解決上述所提出問(wèn)題,基于智能終端的虛擬SIM卡技術(shù)得到重視和發(fā)展。通過(guò)支持虛擬SIM技術(shù)的終端消費(fèi)者可以在全球覆蓋范圍內(nèi),以接近目的地價(jià)格水平使用數(shù)據(jù)上網(wǎng)服務(wù)。本文根據(jù)虛擬卡平臺(tái)架構(gòu),結(jié)合Android Telephony框架結(jié)構(gòu),研究虛擬卡在Android終端中的應(yīng)用以及相關(guān)的技術(shù)。針對(duì)虛擬卡參數(shù)在下載以及保存階段可能出現(xiàn)的用戶信息被攻擊,設(shè)計(jì)基于ARM TrustZone技術(shù)實(shí)現(xiàn)虛擬卡的安全運(yùn)行及數(shù)據(jù)安全。最后通過(guò)測(cè)試表明可以通過(guò)虛擬卡APP完成上網(wǎng)操作。
1 平臺(tái)架構(gòu)
虛擬SIM卡平臺(tái)架構(gòu)如圖1所示,平臺(tái)由三部分組成:支持虛擬SIM卡技術(shù)的終端、用戶管理中心和SIM云端服務(wù)提供商。

(1)虛擬SIM卡終端:支持虛擬SIM技術(shù),能從云端下載虛擬SIM卡參數(shù),可用虛擬SIM卡參數(shù)接入相應(yīng)的網(wǎng)絡(luò)。
(2)用戶管理中心:目的是與終端虛擬SIM APP進(jìn)行交互,提供用戶管理,開啟或終止用戶使用虛擬SIM卡參數(shù)。
(3)虛擬SIM卡云端服務(wù)供應(yīng)商:提供運(yùn)營(yíng)商參數(shù)IMSI、Ki等網(wǎng)絡(luò)鑒權(quán)所必須的虛擬卡參數(shù)。本方案與二六三移動(dòng)通信有限公司合作,開發(fā)支持虛擬卡技術(shù)的終端。
本方案的目的是設(shè)計(jì)實(shí)現(xiàn)支持虛擬SIM卡的終端,支持虛擬SIM卡技術(shù)的終端可以通過(guò)WiFi或者移動(dòng)運(yùn)營(yíng)商網(wǎng)絡(luò)請(qǐng)求從動(dòng)態(tài)IMSI分配服務(wù)器下載虛擬SIM卡參數(shù)。參數(shù)包括國(guó)際移動(dòng)用戶識(shí)別碼(International Mobile Subscriber Identification Number,IMSI)、鑒權(quán)密鑰(Key identifier,Ki)等登錄網(wǎng)絡(luò)時(shí)用于用戶身份認(rèn)證的關(guān)鍵參數(shù)。
2 終端軟件架構(gòu)與設(shè)計(jì)
2.1 Android Telephony框架結(jié)構(gòu)
Android Telephony[2]采用了分層結(jié)構(gòu)的設(shè)計(jì),共跨越了三層:Java Application(應(yīng)用層)、Java Frameworks(框架層)和RIL(Radio Interface Layer,無(wú)線接口層)。Telephony結(jié)構(gòu)與Android框架結(jié)構(gòu)一致。Android Telephony的業(yè)務(wù)應(yīng)用跨越了AP和BP。AP與BP相互通信是目前智能手機(jī)的基本硬件架構(gòu)。Android系統(tǒng)在AP上運(yùn)行,而Telephony運(yùn)行在Linux Kernel之上的User Space空間。BP側(cè)負(fù)責(zé)射頻控制,包括信號(hào)調(diào)制、編碼、射頻移位等高度時(shí)間相關(guān)的操作。對(duì)于不同的安卓廠商,他們的AP側(cè)允許相同,但是Modem側(cè)可能會(huì)有差異。因此,Android在AP與Modem之間設(shè)計(jì)了RILC框架,不同的芯片廠商就可以將其協(xié)議連接到AP側(cè)。本虛擬卡方案基于高通平臺(tái)。對(duì)于高通平臺(tái)來(lái)說(shuō),它的RILC就是QCRIL。
2.2 終端軟件架構(gòu)
虛擬SIM卡終端架構(gòu)如圖2所示,其軟件架構(gòu)與Android Telephony整體分層結(jié)構(gòu)保持一致,包括應(yīng)用層、框架層、無(wú)線通信接口層。

其中處于應(yīng)用層的APP與框架層的service通信是基于Binder機(jī)制實(shí)現(xiàn)進(jìn)程間通信,通過(guò)安卓接口描述語(yǔ)言(Android Interface Definition Language,AIDL)技術(shù)定義進(jìn)程間通信接口。虛擬卡是在Frameworks中單獨(dú)添加的一個(gè)服務(wù),為了使其他的應(yīng)用程序也可以訪問(wèn)本應(yīng)用程序提供的服務(wù),Android提供了AIDL來(lái)自動(dòng)生成用于進(jìn)程間通信的代碼。RILJ與RILC的交互是基于rild端口的Socket連接,RILJ接收到Telephony Frameworks發(fā)出的請(qǐng)求后,通過(guò)Socket連接向RILC發(fā)起RIL請(qǐng)求。最后,高通平臺(tái)通過(guò)高通消息接口(Qualcomm Messaging Interface,QMI)作為AP與Modem之間的通信接口。采用IDL_QCSI_QCCI的方式實(shí)現(xiàn)。QCCI(QMI Common Client Interface)封裝客戶端進(jìn)行通信的C庫(kù),主要是注冊(cè)client,用于發(fā)送和接收message。QCSI(QMI Common Service Interface)封裝服務(wù)端進(jìn)行通信的C庫(kù),提供服務(wù)注冊(cè),發(fā)送和接收message,根據(jù)消息ID查找回調(diào)函數(shù)實(shí)現(xiàn)消息響應(yīng)。至此,從應(yīng)用軟件到Telephony Frameworks到RIL再到BP的Modem全線貫通,之后應(yīng)用軟件就可以處理相關(guān)通信業(yè)務(wù)了。
傳統(tǒng)SIM卡是插在Modem中的,終端與SIM卡的交互必須要經(jīng)過(guò)Modem。而虛擬卡相當(dāng)于在模塊側(cè)虛擬了兩個(gè)卡槽,虛擬卡槽和物理卡槽的連接是互斥的。當(dāng)虛擬卡激活時(shí),表示當(dāng)前模塊連接的是Softslot,此時(shí)模塊無(wú)法上報(bào)物理卡槽slot信息。當(dāng)無(wú)虛擬卡或者虛擬卡去激活時(shí),模塊連接到物理的slot上,此時(shí)可以通過(guò)接口獲取物理slot的信息。當(dāng)發(fā)生了物理卡和虛擬卡切換時(shí),相當(dāng)于發(fā)生了一次熱插拔,模塊將會(huì)將原有的卡信清除,并上報(bào)新的卡信息。
2.3 流程設(shè)計(jì)
虛擬SIM卡流程設(shè)計(jì)如圖3所示。
虛擬SIM APP提供與用戶交互的界面,可供用戶登錄、訂購(gòu)虛擬卡套餐、激活以及去激活虛擬卡。合法用戶登錄用戶中心后就可以進(jìn)行虛擬卡的相關(guān)操作。用戶訂購(gòu)虛擬卡套餐后會(huì)在后臺(tái)執(zhí)行虛擬卡參數(shù)下載以及保存的流程,保存的虛擬卡參數(shù)會(huì)在用戶到達(dá)漫游地后由用戶選擇啟用虛擬SIM卡套餐。啟用的虛擬SIM卡經(jīng)鑒權(quán)認(rèn)為合法就可以使用相應(yīng)的套餐,連接相應(yīng)的網(wǎng)絡(luò),使用目的地?cái)?shù)據(jù)服務(wù)了。
2.4 虛擬SIM卡安全框架設(shè)計(jì)
本系統(tǒng)基于ARM TrustZone[3]技術(shù)實(shí)現(xiàn)虛擬卡用戶數(shù)據(jù)的安全傳輸與保存。目前主流的安全防范措施包括SoC設(shè)計(jì)外置硬件安全模塊、SoC設(shè)計(jì)內(nèi)置硬件安全模塊、軟件虛擬化技術(shù)以及ARM TrustZone技術(shù),TrustZone是保護(hù)系統(tǒng)安全的比較好的解決方案。把Virtual SIM運(yùn)行在TEE環(huán)境里面,以確保SIM數(shù)據(jù)的安全存儲(chǔ)和運(yùn)行安全。系統(tǒng)框架如圖4所示,其中主要包含REE、TEE、硬件平臺(tái)。

REE指的是普通執(zhí)行環(huán)境,也就是常說(shuō)的Android或者iOS操作系統(tǒng),其中運(yùn)行普通應(yīng)用,本系統(tǒng)基于Android 4.4系統(tǒng)進(jìn)行開發(fā)。TEE指的是可信執(zhí)行環(huán)境,其中運(yùn)行可信程序,執(zhí)行安全操作,為REE提供安全服務(wù)。硬件平臺(tái)指的是支持ARM TrustZone技術(shù)的芯片。
虛擬卡安全的實(shí)現(xiàn)主要涉及圖中灰色部分,下面描述各部分詳細(xì)的功能。
(1)運(yùn)行在REE中的Virtual SIM應(yīng)用(CA)
虛擬卡應(yīng)用運(yùn)行在普通執(zhí)行環(huán)境中,以下簡(jiǎn)稱CA。CA是對(duì)安全要求較高的一類應(yīng)用,通過(guò)CA,用戶可以與虛擬卡進(jìn)行交互,實(shí)現(xiàn)業(yè)務(wù)購(gòu)買、業(yè)務(wù)激活以及業(yè)務(wù)關(guān)閉等操作。
(2)TEE Client API
TEE Client API是運(yùn)行于REE中的CA與運(yùn)行于TEE中的TA之間進(jìn)行通信的接口。通過(guò)該標(biāo)準(zhǔn)接口實(shí)現(xiàn)TEE環(huán)境的初始化。CA通過(guò)接口調(diào)用建立CA 與TA之間的聯(lián)系,實(shí)現(xiàn)安全服務(wù)的調(diào)用。
(3)TrustZone驅(qū)動(dòng)
TrustZone驅(qū)動(dòng)位于Linux內(nèi)核,是一個(gè)虛擬的TrustZone硬件驅(qū)動(dòng)程序。CA調(diào)用TEE Client API時(shí),TEE Client API會(huì)調(diào)用TrustZone驅(qū)動(dòng),由TrustZone驅(qū)動(dòng)生成smc指令,進(jìn)入Monitor模式,完成系統(tǒng)切換。
電子發(fā)燒友App



























評(píng)論