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

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

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

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



























評論