《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于Android平臺虛擬SIM卡的設計與實現
基于Android平臺虛擬SIM卡的設計與實現
2018年電子技術應用第7期
張 剛,徐 鑫
重慶郵電大學 通信與信息工程學院,重慶400065
摘要: 為了滿足移動用戶境外出行時的上網需求,設計實現了一種基于Android智能終端的虛擬SIM卡軟件,支持用戶通過終端下載漫游地SIM卡信息,并且可以通過使用下載的卡參數鑒權入網,以接近漫游地當地水平的價格為用戶提供數據上網服務。首先介紹了Android Telephony架構,分析了各層的通信交互方式。針對虛擬卡可能出現的安全問題,基于ARM TrustZone技術實現虛擬卡參數的安全管理。測試結果表明,可以通過終端應用實現產品訂購、訂單激活,通過虛擬SIM卡可以使用上網業(yè)務,上網資費低于運營商資費。
中圖分類號: TP311
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.174303
中文引用格式: 張剛,徐鑫. 基于Android平臺虛擬SIM卡的設計與實現[J].電子技術應用,2018,44(7):122-126.
英文引用格式: Zhang Gang,Xu Xin. Design and implementation of virtual SIM card based on Android platform[J]. Application of Electronic Technique,2018,44(7):122-126.
Design and implementation of virtual SIM card based on Android platform
Zhang Gang,Xu Xin
School of Communication and Information Engineering,Chongqing University of Posts and Telecommunications, Chongqing 400065,China
Abstract: In order to meet the demand of surfing Internet of users when traveling abroad, a virtual SIM card is designed and implemented based on Android smart phone. It allows the user download information of the virtual SIM through the terminal in the destination area. After an authentication with the download card parameters, it can also provide data network service with the price similar to the destination area by accessing to the Internet. Firstly, the Android Telephony architecture is introduced, and then the method of communication interaction of each layer is analyzed. For security issues that may arise from the virtual card, this article achieves the security management of virtual card parameters based on ARM TrustZone technology. Experimental results show that users could achieve the order to products and the activation to orders by the application. By using the virtual SIM card, users can enjoy the Internet service in which the cost is lower than operators.
Key words : international roaming;Android;intelligent terminal;virtual SIM card

0 引言

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

1 平臺架構

    虛擬SIM卡平臺架構如圖1所示,平臺由三部分組成:支持虛擬SIM卡技術的終端、用戶管理中心和SIM云端服務提供商。

jsj1-t1.gif

    (1)虛擬SIM卡終端:支持虛擬SIM技術,能從云端下載虛擬SIM卡參數,可用虛擬SIM卡參數接入相應的網絡。

    (2)用戶管理中心:目的是與終端虛擬SIM APP進行交互,提供用戶管理,開啟或終止用戶使用虛擬SIM卡參數。

    (3)虛擬SIM卡云端服務供應商:提供運營商參數IMSI、Ki等網絡鑒權所必須的虛擬卡參數。本方案與二六三移動通信有限公司合作,開發(fā)支持虛擬卡技術的終端。

    本方案的目的是設計實現支持虛擬SIM卡的終端,支持虛擬SIM卡技術的終端可以通過WiFi或者移動運營商網絡請求從動態(tài)IMSI分配服務器下載虛擬SIM卡參數。參數包括國際移動用戶識別碼(International Mobile Subscriber Identification Number,IMSI)、鑒權密鑰(Key identifier,Ki)等登錄網絡時用于用戶身份認證的關鍵參數。

2 終端軟件架構與設計

2.1 Android Telephony框架結構

    Android Telephony[2]采用了分層結構的設計,共跨越了三層:Java Application(應用層)、Java Frameworks(框架層)和RIL(Radio Interface Layer,無線接口層)。Telephony結構與Android框架結構一致。Android Telephony的業(yè)務應用跨越了AP和BP。AP與BP相互通信是目前智能手機的基本硬件架構。Android系統(tǒng)在AP上運行,而Telephony運行在Linux Kernel之上的User Space空間。BP側負責射頻控制,包括信號調制、編碼、射頻移位等高度時間相關的操作。對于不同的安卓廠商,他們的AP側允許相同,但是Modem側可能會有差異。因此,Android在AP與Modem之間設計了RILC框架,不同的芯片廠商就可以將其協議連接到AP側。本虛擬卡方案基于高通平臺。對于高通平臺來說,它的RILC就是QCRIL。

2.2 終端軟件架構

    虛擬SIM卡終端架構如圖2所示,其軟件架構與Android Telephony整體分層結構保持一致,包括應用層、框架層、無線通信接口層。

jsj1-t2.gif

    其中處于應用層的APP與框架層的service通信是基于Binder機制實現進程間通信,通過安卓接口描述語言(Android Interface Definition Language,AIDL)技術定義進程間通信接口。虛擬卡是在Frameworks中單獨添加的一個服務,為了使其他的應用程序也可以訪問本應用程序提供的服務,Android提供了AIDL來自動生成用于進程間通信的代碼。RILJ與RILC的交互是基于rild端口的Socket連接,RILJ接收到Telephony Frameworks發(fā)出的請求后,通過Socket連接向RILC發(fā)起RIL請求。最后,高通平臺通過高通消息接口(Qualcomm Messaging Interface,QMI)作為AP與Modem之間的通信接口。采用IDL_QCSI_QCCI的方式實現。QCCI(QMI Common Client Interface)封裝客戶端進行通信的C庫,主要是注冊client,用于發(fā)送和接收message。QCSI(QMI Common Service Interface)封裝服務端進行通信的C庫,提供服務注冊,發(fā)送和接收message,根據消息ID查找回調函數實現消息響應。至此,從應用軟件到Telephony Frameworks到RIL再到BP的Modem全線貫通,之后應用軟件就可以處理相關通信業(yè)務了。

    傳統(tǒng)SIM卡是插在Modem中的,終端與SIM卡的交互必須要經過Modem。而虛擬卡相當于在模塊側虛擬了兩個卡槽,虛擬卡槽和物理卡槽的連接是互斥的。當虛擬卡激活時,表示當前模塊連接的是Softslot,此時模塊無法上報物理卡槽slot信息。當無虛擬卡或者虛擬卡去激活時,模塊連接到物理的slot上,此時可以通過接口獲取物理slot的信息。當發(fā)生了物理卡和虛擬卡切換時,相當于發(fā)生了一次熱插拔,模塊將會將原有的卡信清除,并上報新的卡信息。

2.3 流程設計

    虛擬SIM卡流程設計如圖3所示。

jsj1-t3.gif

    虛擬SIM APP提供與用戶交互的界面,可供用戶登錄、訂購虛擬卡套餐、激活以及去激活虛擬卡。合法用戶登錄用戶中心后就可以進行虛擬卡的相關操作。用戶訂購虛擬卡套餐后會在后臺執(zhí)行虛擬卡參數下載以及保存的流程,保存的虛擬卡參數會在用戶到達漫游地后由用戶選擇啟用虛擬SIM卡套餐。啟用的虛擬SIM卡經鑒權認為合法就可以使用相應的套餐,連接相應的網絡,使用目的地數據服務了。

2.4 虛擬SIM卡安全框架設計

    本系統(tǒng)基于ARM TrustZone[3]技術實現虛擬卡用戶數據的安全傳輸與保存。目前主流的安全防范措施包括SoC設計外置硬件安全模塊、SoC設計內置硬件安全模塊、軟件虛擬化技術以及ARM TrustZone技術,TrustZone是保護系統(tǒng)安全的比較好的解決方案。把Virtual SIM運行在TEE環(huán)境里面,以確保SIM數據的安全存儲和運行安全。系統(tǒng)框架如圖4所示,其中主要包含REE、TEE、硬件平臺。

jsj1-t4.gif

    REE指的是普通執(zhí)行環(huán)境,也就是常說的Android或者iOS操作系統(tǒng),其中運行普通應用,本系統(tǒng)基于Android 4.4系統(tǒng)進行開發(fā)。TEE指的是可信執(zhí)行環(huán)境,其中運行可信程序,執(zhí)行安全操作,為REE提供安全服務。硬件平臺指的是支持ARM TrustZone技術的芯片。

    虛擬卡安全的實現主要涉及圖中灰色部分,下面描述各部分詳細的功能。

    (1)運行在REE中的Virtual SIM應用(CA)

    虛擬卡應用運行在普通執(zhí)行環(huán)境中,以下簡稱CA。CA是對安全要求較高的一類應用,通過CA,用戶可以與虛擬卡進行交互,實現業(yè)務購買、業(yè)務激活以及業(yè)務關閉等操作。

    (2)TEE Client API

    TEE Client API是運行于REE中的CA與運行于TEE中的TA之間進行通信的接口。通過該標準接口實現TEE環(huán)境的初始化。CA通過接口調用建立CA 與TA之間的聯系,實現安全服務的調用。

    (3)TrustZone驅動

    TrustZone驅動位于Linux內核,是一個虛擬的TrustZone硬件驅動程序。CA調用TEE Client API時,TEE Client API會調用TrustZone驅動,由TrustZone驅動生成smc指令,進入Monitor模式,完成系統(tǒng)切換。

    (4)Monitor

    Monitor用于控制系統(tǒng)的安全狀態(tài),通過NS位修改來達到TEE與REE之間的相互切換,以及在換過程中保存和恢復TEE和REE的狀態(tài)。

    (5)Trusted APP(TA)

    系統(tǒng)設計將Virtual SIM運行于TEE環(huán)境中,這部分可信應用為運行在REE環(huán)境中的CA提供相應的安全服務。這些安全服務包括數據的訪問安全、數據存儲安全以及數據的傳輸安全。

    (6)TEE Internal API

    TEE Internal API也叫TEE內部API,它提供程序開發(fā)者用于快速開發(fā)TA的一組API。安全芯片標準定義組織GlobalPlatform定義了TEE Internal API 為TA的開發(fā)提供的標準化的接口。

    (7)安全文件系統(tǒng)(SFS)

    SFS提供的安全文件系統(tǒng)基于ARM TrustZone技術,運行在安全可執(zhí)行環(huán)境中。其主要功能是為普通區(qū)域存儲用于加密虛擬卡數據的RSA公鑰、為隔離區(qū)提供對加密后的虛擬卡數據的安全存儲。使用SFS可以保護敏感的系統(tǒng)硬件或校準數據免受意外或惡意攻擊,以及保護用戶敏感數據被盜用。

3 虛擬SIM卡數據安全實現

3.1 卡參數安全下載實現

    在移動通信系統(tǒng)中,實體SIM卡的主要功能是進行用戶身份認證以及通信過程加密。文獻[4]指出用于身份認證的鑒權密鑰不會通過空口進行傳輸。但是,虛擬SIM卡的根密鑰、IMSI等核心數據會在運營商網絡和終端之間傳輸,這些傳輸的參數在傳輸的路徑中存在被攻擊的可能性。并且,下載的虛擬卡參數在終端處理時也會在應用、RIL、Modem之間傳輸,也有可能從終端獲取卡參數,從而造成虛擬卡數據泄露或者失效,損害消費者利益。因此,虛擬卡參數的安全下載是需要解決的一大問題。本方案采用RSA[5](Rivest,Shamir,Adleman)公鑰加密算法加密虛擬SIM卡參數。RSA2048公鑰加密算法是一種比較典型的非對稱加密算法,也是理論上相較于其他非對稱加密算法比較成熟、使用比較廣泛的一種算法[6]。TrustZone可以提供一個與普通環(huán)境(Android)隔離的安全執(zhí)行環(huán)境,在隔離環(huán)境中專門處理安全任務。在執(zhí)行安全操作時通過smc指令進入安全世界,執(zhí)行安全操作,保證信息的安全。TrustZone提供一個安全的框架,在該框架下,嵌入式設備能夠抵御它將遇到的許多的特定攻擊[7],避免了攻擊者獲取敏感信息。其加密流程如圖5所示。

jsj1-t5.gif

    TZ生成公私鑰對,提供給AP側RSA加密公鑰,應用通過getRsaKey()方法獲取加密公鑰,應用將獲取的加密公鑰發(fā)給服務器,服務器將卡數據中的Ki和OPc用公鑰加密返回給應用,用于后續(xù)的激活。終端和服務器都有一套基于RSA非對稱加密算法機制,通過對用戶數據的加密下載,從而確保虛擬SIM卡數據的安全。最后,通過調用operateSotfSim()攜帶IMSI信息來激活相應的虛擬卡。

3.2 卡參數安全保存實現

    SIM卡中存儲著運營商網絡用于鑒權用戶身份的關鍵信息,如IMSI、Ki等。如果這些信息被盜用,就可以復制出相應的卡,導致出現克隆卡,造成用戶財產損失。所以保證數據安全是SIM卡需要關注的核心問題。傳統(tǒng)SIM數據都保存在相應的文件中,對于SIM卡的訪問都有嚴格的限制,保證了卡數據的完整,防止攻擊者的破壞和盜用。制造商在產線階段將運營商數據直接寫入卡中,在整個生產環(huán)節(jié)和SIM卡本身的硬件架構方面使其安全性可以得到保障[8]。對于虛擬卡參數的安全存儲關系到用戶的通信安全和切身利益。

    為了防止非法從終端獲取到虛擬卡參數,本方案將虛擬卡參數加密存儲在安全文件系統(tǒng)(Secure File System,SFS)。通過RSA公鑰加密下載的虛擬卡數據在執(zhí)行存儲階段跳轉到安全執(zhí)行環(huán)境中進行,保證用戶信息存儲的安全。通過這種方式存儲用戶數據,不用針對存儲數據專門設計安全存儲硬件,一方面減少了芯片面積和功耗,另一方面也降低了產品的開發(fā)成本[9]。

3.3 虛擬SIM鑒權實現

    SIM卡是獨立的硬件,它是終端中重要的組成部分,用戶要獲取運營商服務必須通過SIM卡認證,合法的SIM卡才能夠使用運營商網絡。身份認證(也就是用戶鑒權)則是通過在SIM卡內部執(zhí)行相關的鑒權算法來完成[10]。下載的虛擬卡數據同樣需要經過鑒權才能入網。虛擬卡要求支持數據漫游,本方案采用基于Milenage算法的鑒權算法,高通提供了Milenage[11]算法的相關功能,可取代SIM卡的Milenage。所有的USIM鑒權都有統(tǒng)一的入口:mmgsdi_uicc_auth()。在函數中判斷是否啟用了虛擬卡,如果啟用了虛擬卡則調用相關處理函數mmgsdi_uicc_onchip_auth(),在該函數中完成AKA_milenage_f2345()軟件算法的調用,使用軟件鑒權算法替代實體SIM卡進行鑒權操作。Ki和OPc作為鑒權算法傳入參數,為了安全在使用時從SFS文件系統(tǒng)讀取KEY到局部變量,使用完成后通過memset()對局部變量清零,預防從內存中泄露。

4 測試結果

4.1 測試用例

    測試分為無卡、單卡、雙卡測試,相關的測試用例如表1所示。

jsj1-b1.gif

    啟用虛擬卡會占用一個物理卡槽。默認情況下會占用空卡槽,如果沒插卡或者插入兩張物理卡,則需要用戶手動設置占用哪個卡槽激活虛擬卡。經測試,測試結果滿足預期要求,終端能夠通過虛擬卡接入網絡。

    測試選用大陸測試套餐,測試套餐只在測試階段使用內部賬號登錄才會使用。投入市場不會有大陸套餐選項,成功購買的套餐會在“我的訂單”中列出來。到達漫游地后用戶可以選擇需要啟用虛擬卡,激活成功會提示用戶當前處于國際漫游狀態(tài)。經過激活后可以使用漫游地數據服務。激活成功后的虛擬卡會在狀態(tài)欄信號處顯示狀態(tài)為3G并且?guī)в蠷(Roaming,漫游)標識,提醒用戶當前終端處于數據漫游狀態(tài)。相關實現結果如圖6所示。

jsj1-t6.gif

4.2 資費對比

    由于各服務商之間提供漫游服務的覆蓋區(qū)域不同,因此選取比較熱門出行的國家及地區(qū)進行漫游資費對比,對比結果如表2所示。套餐選擇是包天不限流量。

jsj1-b2.gif

    通過對比發(fā)現虛擬卡提供的漫游資費水平明顯低于中國移動、中國電信提供的國際漫游資費,給消費者帶來方便的數據漫游服務的同時也降低了漫游資費。

5 結論

    本文設計實現了基于Android平臺的虛擬SIM卡功能,實現用戶通過支持虛擬卡技術的終端方便地訂購、激活、使用漫游地套餐;無需SIM卡即可連接當地運營商網絡;使用戶擺脫了目的地購買當地SIM卡,歷經溝通、購買、換卡以及激活的繁瑣流程,以及運營商高昂的國際漫游資費,降低了國際漫游資費。虛擬SIM卡的發(fā)展反映了用戶需求下的市場發(fā)展。不過,虛擬SIM卡仍有很長的路要走。首先,虛擬SIM卡服務商必須獲得網絡運營商的合作授權,能否得到運營商的廣泛支持,成為了虛擬SIM卡能否生存的關鍵所在[12]。此外,虛擬SIM卡的技術標準、產業(yè)推廣等其他方面,也仍有很大的發(fā)展空間。

參考文獻

[1] 傅劍峰,蔣靜,李方,等.降低國際漫游費的方法及可行性研究[J].移動通信,2015,39(24):71-76.

[2] 楊青平.深入理解Android Telephony原理剖析與最佳實踐[M].北京:機械工業(yè)出版社,2013.

[3] 鄭顯義,李文,孟丹.TrustZone技術的分析與研究[J].計算機學報,2016,39(9):1912-1928.

[4] 楊紅梅.eUICC的關鍵技術及相關標準[J].電信網技術,2015(6):58-62.

[5] 陳健.幾種常用數據加密算法的比較[J].福建商業(yè)高等??茖W校學報,2003(5):45-47.

[6] 石井,吳哲,譚璐,等.RSA數據加密算法的分析與改進[J].濟南大學學報(自然科學版),2013,27(3):283-286.

[7] 魏蘭.基于ARM TrustZone的安全存儲研究與實現[D].成都:電子科技大學,2015.

[8] 仇劍書,康建雄,嚴斌峰.eSIM安全性分析及實現方案研究[J].互聯網天地,2016(11):5-9.

[9] 陳書義,聞英友,趙宏.基于可信計算的移動平臺設計方案[J].東北大學學報(自然科學版),2008,29(8):1096-1099.

[10] 李從容.SIM卡及其最新應用[J].現代通信,2003,8(12):13-14.

[11] 3GPP TS 35.206 v14.0. 0 3G security;specification of the MILENAGE algorithm:an example algorithm set for the 3GPP authentication and key generation functionsfl,fl*,f2,f3,f4,f5andf5*;Document2:Algorithm Specification[S].2017.

[12] 王海天,宋帆.虛擬SIM卡發(fā)展影響及取證新挑戰(zhàn)[J].中國新通信,2016(21):66.



作者信息:

張  剛,徐  鑫

(重慶郵電大學 通信與信息工程學院,重慶400065)

此內容為AET網站原創(chuàng),未經授權禁止轉載。