虚拟SIM卡平台架构如图1所示,平台由三部分组成:支持虚拟SIM卡技术的终端、用户管理中心和SIM云端服务提供商。
(1)虚拟SIM卡终端:支持虚拟SIM技术,能从云端下载虚拟SIM卡参数,可用虚拟SIM卡参数接入相应的网络。
(2)用户管理中心:目的是与终端虚拟SIMAPP进行交互,提供用户管理,开启或终止用户使用虚拟SIM卡参数。
(3)虚拟SIM卡云端服务供应商:提供运营商参数IMSI、Ki等网络鉴权所必须的虚拟卡参数。本方案与二六三移动通信有限公司合作,开发支持虚拟卡技术的终端。
2终端软件架构与设计
2.1AndroidTelephony框架结构
2.2终端软件架构
虚拟SIM卡终端架构如图2所示,其软件架构与AndroidTelephony整体分层结构保持一致,包括应用层、框架层、无线通信接口层。
传统SIM卡是插在Modem中的,终端与SIM卡的交互必须要经过Modem。而虚拟卡相当于在模块侧虚拟了两个卡槽,虚拟卡槽和物理卡槽的连接是互斥的。当虚拟卡激活时,表示当前模块连接的是Softslot,此时模块无法上报物理卡槽slot信息。当无虚拟卡或者虚拟卡去激活时,模块连接到物理的slot上,此时可以通过接口获取物理slot的信息。当发生了物理卡和虚拟卡切换时,相当于发生了一次热插拔,模块将会将原有的卡信清除,并上报新的卡信息。
2.3流程设计
虚拟SIM卡流程设计如图3所示。
2.4虚拟SIM卡安全框架设计
本系统基于ARMTrustZone[3]技术实现虚拟卡用户数据的安全传输与保存。目前主流的安全防范措施包括SoC设计外置硬件安全模块、SoC设计内置硬件安全模块、软件虚拟化技术以及ARMTrustZone技术,TrustZone是保护系统安全的比较好的解决方案。把VirtualSIM运行在TEE环境里面,以确保SIM数据的安全存储和运行安全。系统框架如图4所示,其中主要包含REE、TEE、硬件平台。
REE指的是普通执行环境,也就是常说的Android或者iOS操作系统,其中运行普通应用,本系统基于Android4.4系统进行开发。TEE指的是可信执行环境,其中运行可信程序,执行安全操作,为REE提供安全服务。硬件平台指的是支持ARMTrustZone技术的芯片。
虚拟卡安全的实现主要涉及图中灰色部分,下面描述各部分详细的功能。
(1)运行在REE中的VirtualSIM应用(CA)
虚拟卡应用运行在普通执行环境中,以下简称CA。CA是对安全要求较高的一类应用,通过CA,用户可以与虚拟卡进行交互,实现业务购买、业务激活以及业务关闭等操作。
(2)TEEClientAPI
TEEClientAPI是运行于REE中的CA与运行于TEE中的TA之间进行通信的接口。通过该标准接口实现TEE环境的初始化。CA通过接口调用建立CA与TA之间的联系,实现安全服务的调用。
(3)TrustZone驱动
TrustZone驱动位于Linux内核,是一个虚拟的TrustZone硬件驱动程序。CA调用TEEClientAPI时,TEEClientAPI会调用TrustZone驱动,由TrustZone驱动生成smc指令,进入Monitor模式,完成系统切换。
(4)Monitor
Monitor用于控制系统的安全状态,通过NS位修改来达到TEE与REE之间的相互切换,以及在换过程中保存和恢复TEE和REE的状态。
(5)TrustedAPP(TA)
系统设计将VirtualSIM运行于TEE环境中,这部分可信应用为运行在REE环境中的CA提供相应的安全服务。这些安全服务包括数据的访问安全、数据存储安全以及数据的传输安全。
(6)TEEInternalAPI
TEEInternalAPI也叫TEE内部API,它提供程序开发者用于快速开发TA的一组API。安全芯片标准定义组织GlobalPlatform定义了TEEInternalAPI为TA的开发提供的标准化的接口。
(7)安全文件系统(SFS)
SFS提供的安全文件系统基于ARMTrustZone技术,运行在安全可执行环境中。其主要功能是为普通区域存储用于加密虚拟卡数据的RSA公钥、为隔离区提供对加密后的虚拟卡数据的安全存储。使用SFS可以保护敏感的系统硬件或校准数据免受意外或恶意攻击,以及保护用户敏感数据被盗用。
3虚拟SIM卡数据安全实现
3.1卡参数安全下载实现
在移动通信系统中,实体SIM卡的主要功能是进行用户身份认证以及通信过程加密。文献[4]指出用于身份认证的鉴权密钥不会通过空口进行传输。但是,虚拟SIM卡的根密钥、IMSI等核心数据会在运营商网络和终端之间传输,这些传输的参数在传输的路径中存在被攻击的可能性。并且,下载的虚拟卡参数在终端处理时也会在应用、RIL、Modem之间传输,也有可能从终端获取卡参数,从而造成虚拟卡数据泄露或者失效,损害消费者利益。因此,虚拟卡参数的安全下载是需要解决的一大问题。本方案采用RSA[5](Rivest,Shamir,Adleman)公钥加密算法加密虚拟SIM卡参数。RSA2048公钥加密算法是一种比较典型的非对称加密算法,也是理论上相较于其他非对称加密算法比较成熟、使用比较广泛的一种算法[6]。TrustZone可以提供一个与普通环境(Android)隔离的安全执行环境,在隔离环境中专门处理安全任务。在执行安全操作时通过smc指令进入安全世界,执行安全操作,保证信息的安全。TrustZone提供一个安全的框架,在该框架下,嵌入式设备能够抵御它将遇到的许多的特定攻击[7],避免了攻击者获取敏感信息。其加密流程如图5所示。
TZ生成公私钥对,提供给AP侧RSA加密公钥,应用通过getRsaKey()方法获取加密公钥,应用将获取的加密公钥发给服务器,服务器将卡数据中的Ki和OPc用公钥加密返回给应用,用于后续的激活。终端和服务器都有一套基于RSA非对称加密算法机制,通过对用户数据的加密下载,从而确保虚拟SIM卡数据的安全。最后,通过调用operateSotfSim()携带IMSI信息来激活相应的虚拟卡。
3.2卡参数安全保存实现
为了防止非法从终端获取到虚拟卡参数,本方案将虚拟卡参数加密存储在安全文件系统(SecureFileSystem,SFS)。通过RSA公钥加密下载的虚拟卡数据在执行存储阶段跳转到安全执行环境中进行,保证用户信息存储的安全。通过这种方式存储用户数据,不用针对存储数据专门设计安全存储硬件,一方面减少了芯片面积和功耗,另一方面也降低了产品的开发成本[9]。
3.3虚拟SIM鉴权实现
4测试结果
4.1测试用例
启用虚拟卡会占用一个物理卡槽。默认情况下会占用空卡槽,如果没插卡或者插入两张物理卡,则需要用户手动设置占用哪个卡槽激活虚拟卡。经测试,测试结果满足预期要求,终端能够通过虚拟卡接入网络。
4.2资费对比
通过对比发现虚拟卡提供的漫游资费水平明显低于中国移动、中国电信提供的国际漫游资费,给消费者带来方便的数据漫游服务的同时也降低了漫游资费。
5结论
参考文献
[1]傅剑峰,蒋静,李方,等.降低国际漫游费的方法及可行性研究[J].移动通信,2015,39(24):71-76.
[2]杨青平.深入理解AndroidTelephony原理剖析与最佳实践[M].北京:机械工业出版社,2013.
[3]郑显义,李文,孟丹.TrustZone技术的分析与研究[J].计算机学报,2016,39(9):1912-1928.
[5]陈健.几种常用数据加密算法的比较[J].福建商业高等专科学校学报,2003(5):45-47.
[6]石井,吴哲,谭璐,等.RSA数据加密算法的分析与改进[J].济南大学学报(自然科学版),2013,27(3):283-286.
[7]魏兰.基于ARMTrustZone的安全存储研究与实现[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]3GPPTS35.206v14.0.03Gsecurity;specificationoftheMILENAGEalgorithm:anexamplealgorithmsetforthe3GPPauthenticationandkeygenerationfunctionsfl,fl*,f2,f3,f4,f5andf5*;Document2:AlgorithmSpecification[S].2017.
[12]王海天,宋帆.虚拟SIM卡发展影响及取证新挑战[J].中国新通信,2016(21):66.