基于Android平臺虛擬SIM卡的設(shè)計與實現(xiàn)
0 引言
在當(dāng)今互聯(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)平臺由三部分組成:支持虛擬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ò)時用于用戶身份認(rèn)證的關(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è)負(fù)責(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)軟件架構(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。而虛擬卡相當(dāng)于在模塊側(cè)虛擬了兩個卡槽,虛擬卡槽和物理卡槽的連接是互斥的。當(dāng)虛擬卡激活時,表示當(dāng)前模塊連接的是Softslot,此時模塊無法上報物理卡槽slot信息。當(dāng)無虛擬卡或者虛擬卡去激活時,模塊連接到物理的slot上,此時可以通過接口獲取物理slot的信息。當(dāng)發(fā)生了物理卡和虛擬卡切換時,相當(dāng)于發(fā)生了一次熱插拔,模塊將會將原有的卡信清除,并上報新的卡信息。
2.3 流程設(shè)計
虛擬SIM APP提供與用戶交互的界面,可供用戶登錄、訂購虛擬卡套餐、激活以及去激活虛擬卡。合法用戶登錄用戶中心后就可以進行虛擬卡的相關(guān)操作。用戶訂購虛擬卡套餐后會在后臺執(zhí)行虛擬卡參數(shù)下載以及保存的流程,保存的虛擬卡參數(shù)會在用戶到達漫游地后由用戶選擇啟用虛擬SIM卡套餐。啟用的虛擬SIM卡經(jīng)鑒權(quán)認(rè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之間進行通信的接口。通過該標(biāo)準(zhǔn)接口實現(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)切換。
(4)Monitor
Monitor用于控制系統(tǒng)的安全狀態(tài),通過NS位修改來達到TEE與REE之間的相互切換,以及在換過程中保存和恢復(fù)TEE和REE的狀態(tài)。
(5)Trusted APP(TA)
系統(tǒng)設(shè)計將Virtual SIM運行于TEE環(huán)境中,這部分可信應(yīng)用為運行在REE環(huán)境中的CA提供相應(yīng)的安全服務(wù)。這些安全服務(wù)包括數(shù)據(jù)的訪問安全、數(shù)據(jù)存儲安全以及數(shù)據(jù)的傳輸安全。
(6)TEE Internal API
TEE Internal API也叫TEE內(nèi)部API,它提供程序開發(fā)者用于快速開發(fā)TA的一組API。安全芯片標(biāo)準(zhǔn)定義組織GlobalPlatform定義了TEE Internal API 為TA的開發(fā)提供的標(biāo)準(zhǔn)化的接口。
(7)安全文件系統(tǒng)(SFS)
SFS提供的安全文件系統(tǒng)基于ARM TrustZone技術(shù),運行在安全可執(zhí)行環(huán)境中。其主要功能是為普通區(qū)域存儲用于加密虛擬卡數(shù)據(jù)的RSA公鑰、為隔離區(qū)提供對加密后的虛擬卡數(shù)據(jù)的安全存儲。使用SFS可以保護敏感的系統(tǒng)硬件或校準(zhǔn)數(shù)據(jù)免受意外或惡意攻擊,以及保護用戶敏感數(shù)據(jù)被盜用。
3 虛擬SIM卡數(shù)據(jù)安全實現(xiàn)
3.1 卡參數(shù)安全下載實現(xiàn)
在移動通信系統(tǒng)中,實體SIM卡的主要功能是進行用戶身份認(rèn)證以及通信過程加密。文獻[4]指出用于身份認(rèn)證的鑒權(quán)密鑰不會通過空口進行傳輸。但是,虛擬SIM卡的根密鑰、IMSI等核心數(shù)據(jù)會在運營商網(wǎng)絡(luò)和終端之間傳輸,這些傳輸?shù)膮?shù)在傳輸?shù)穆窂街写嬖诒还舻目赡苄?。并且,下載的虛擬卡參數(shù)在終端處理時也會在應(yīng)用、RIL、Modem之間傳輸,也有可能從終端獲取卡參數(shù),從而造成虛擬卡數(shù)據(jù)泄露或者失效,損害消費者利益。因此,虛擬卡參數(shù)的安全下載是需要解決的一大問題。本方案采用RSA[5](Rivest,Shamir,Adleman)公鑰加密算法加密虛擬SIM卡參數(shù)。RSA2048公鑰加密算法是一種比較典型的非對稱加密算法,也是理論上相較于其他非對稱加密算法比較成熟、使用比較廣泛的一種算法[6]。TrustZone可以提供一個與普通環(huán)境(Android)隔離的安全執(zhí)行環(huán)境,在隔離環(huán)境中專門處理安全任務(wù)。在執(zhí)行安全操作時通過smc指令進入安全世界,執(zhí)行安全操作,保證信息的安全。TrustZone提供一個安全的框架,在該框架下,嵌入式設(shè)備能夠抵御它將遇到的許多的特定攻擊[7],避免了攻擊者獲取敏感信息。
TZ生成公私鑰對,提供給AP側(cè)RSA加密公鑰,應(yīng)用通過getRsaKey()方法獲取加密公鑰,應(yīng)用將獲取的加密公鑰發(fā)給服務(wù)器,服務(wù)器將卡數(shù)據(jù)中的Ki和OPc用公鑰加密返回給應(yīng)用,用于后續(xù)的激活。終端和服務(wù)器都有一套基于RSA非對稱加密算法機制,通過對用戶數(shù)據(jù)的加密下載,從而確保虛擬SIM卡數(shù)據(jù)的安全。最后,通過調(diào)用operateSotfSim()攜帶IMSI信息來激活相應(yīng)的虛擬卡。
3.2 卡參數(shù)安全保存實現(xiàn)
SIM卡中存儲著運營商網(wǎng)絡(luò)用于鑒權(quán)用戶身份的關(guān)鍵信息,如IMSI、Ki等。如果這些信息被盜用,就可以復(fù)制出相應(yīng)的卡,導(dǎo)致出現(xiàn)克隆卡,造成用戶財產(chǎn)損失。所以保證數(shù)據(jù)安全是SIM卡需要關(guān)注的核心問題。傳統(tǒng)SIM數(shù)據(jù)都保存在相應(yīng)的文件中,對于SIM卡的訪問都有嚴(yán)格的限制,保證了卡數(shù)據(jù)的完整,防止攻擊者的破壞和盜用。制造商在產(chǎn)線階段將運營商數(shù)據(jù)直接寫入卡中,在整個生產(chǎn)環(huán)節(jié)和SIM卡本身的硬件架構(gòu)方面使其安全性可以得到保障[8]。對于虛擬卡參數(shù)的安全存儲關(guān)系到用戶的通信安全和切身利益。
為了防止非法從終端獲取到虛擬卡參數(shù),本方案將虛擬卡參數(shù)加密存儲在安全文件系統(tǒng)(Secure File System,SFS)。通過RSA公鑰加密下載的虛擬卡數(shù)據(jù)在執(zhí)行存儲階段跳轉(zhuǎn)到安全執(zhí)行環(huán)境中進行,保證用戶信息存儲的安全。通過這種方式存儲用戶數(shù)據(jù),不用針對存儲數(shù)據(jù)專門設(shè)計安全存儲硬件,一方面減少了芯片面積和功耗,另一方面也降低了產(chǎn)品的開發(fā)成本[9]。
3.3 虛擬SIM鑒權(quán)實現(xiàn)
SIM卡是獨立的硬件,它是終端中重要的組成部分,用戶要獲取運營商服務(wù)必須通過SIM卡認(rèn)證,合法的SIM卡才能夠使用運營商網(wǎng)絡(luò)。身份認(rèn)證(也就是用戶鑒權(quán))則是通過在SIM卡內(nèi)部執(zhí)行相關(guān)的鑒權(quán)算法來完成[10]。下載的虛擬卡數(shù)據(jù)同樣需要經(jīng)過鑒權(quán)才能入網(wǎng)。虛擬卡要求支持?jǐn)?shù)據(jù)漫游,本方案采用基于Milenage算法的鑒權(quán)算法,高通提供了Milenage[11]算法的相關(guān)功能,可取代SIM卡的Milenage。所有的USIM鑒權(quán)都有統(tǒng)一的入口:mmgsdi_uicc_auth()。在函數(shù)中判斷是否啟用了虛擬卡,如果啟用了虛擬卡則調(diào)用相關(guān)處理函數(shù)mmgsdi_uicc_onchip_auth(),在該函數(shù)中完成AKA_milenage_f2345()軟件算法的調(diào)用,使用軟件鑒權(quán)算法替代實體SIM卡進行鑒權(quán)操作。Ki和OPc作為鑒權(quán)算法傳入?yún)?shù),為了安全在使用時從SFS文件系統(tǒng)讀取KEY到局部變量,使用完成后通過memset()對局部變量清零,預(yù)防從內(nèi)存中泄露。
4 測試結(jié)果
4.1 測試用例
測試分為無卡、單卡、雙卡測試。
啟用虛擬卡會占用一個物理卡槽。默認(rèn)情況下會占用空卡槽,如果沒插卡或者插入兩張物理卡,則需要用戶手動設(shè)置占用哪個卡槽激活虛擬卡。經(jīng)測試,測試結(jié)果滿足預(yù)期要求,終端能夠通過虛擬卡接入網(wǎng)絡(luò)。
測試選用大陸測試套餐,測試套餐只在測試階段使用內(nèi)部賬號登錄才會使用。投入市場不會有大陸套餐選項,成功購買的套餐會在“我的訂單”中列出來。到達漫游地后用戶可以選擇需要啟用虛擬卡,激活成功會提示用戶當(dāng)前處于國際漫游狀態(tài)。經(jīng)過激活后可以使用漫游地數(shù)據(jù)服務(wù)。激活成功后的虛擬卡會在狀態(tài)欄信號處顯示狀態(tài)為3G并且?guī)в蠷(Roaming,漫游)標(biāo)識,提醒用戶當(dāng)前終端處于數(shù)據(jù)漫游狀態(tài)。
4.2 資費對比
由于各服務(wù)商之間提供漫游服務(wù)的覆蓋區(qū)域不同,因此選取比較熱門出行的國家及地區(qū)進行漫游資費對比,對比結(jié)果如表2所示。套餐選擇是包天不限流量。
通過對比發(fā)現(xiàn)虛擬卡提供的漫游資費水平明顯低于中國移動、中國電信提供的國際漫游資費,給消費者帶來方便的數(shù)據(jù)漫游服務(wù)的同時也降低了漫游資費。
5 結(jié)論
本文設(shè)計實現(xiàn)了基于Android平臺的虛擬SIM卡功能,實現(xiàn)用戶通過支持虛擬卡技術(shù)的終端方便地訂購、激活、使用漫游地套餐;無需SIM卡即可連接當(dāng)?shù)剡\營商網(wǎng)絡(luò);使用戶擺脫了目的地購買當(dāng)?shù)豐IM卡,歷經(jīng)溝通、購買、換卡以及激活的繁瑣流程,以及運營商高昂的國際漫游資費,降低了國際漫游資費。虛擬SIM卡的發(fā)展反映了用戶需求下的市場發(fā)展。不過,虛擬SIM卡仍有很長的路要走。首先,虛擬SIM卡服務(wù)商必須獲得網(wǎng)絡(luò)運營商的合作授權(quán),能否得到運營商的廣泛支持,成為了虛擬SIM卡能否生存的關(guān)鍵所在[12]。此外,虛擬SIM卡的技術(shù)標(biāo)準(zhǔn)、產(chǎn)業(yè)推廣等其他方面,也仍有很大的發(fā)展空間。