作者归档:softsim

esim不是softsim

嵌入式SIM卡(eSim) 和远程配置( Remote Provisioning) SIM卡不是”软SIM卡(SoftSim)”

嵌入式SIM卡和远程配置的最新演变 不能认为是要成为”软SIM卡” .

术语”软SIM”不应用于描述任何eSim解决方案

在esim方案中,物理硬件元素始终存在并作为一个不可或缺的安全层。

“软SIM”将是一种没有SIM硬件且所有SIM功能都在由软件层执行的解决方案。

SIM卡扮演两个主要角色,这些好处今天仍然有效:

1.身份:
SIM卡包含标识SIM卡的唯一参考数值来辨识SIM和相关的移动服务订购.
移动网络可以识别参考编号并确保产生的相关费用分配正确

2.鉴权:

为了确保身份有效,移动网络使用允许访问网络的安全机制。 这是通过网络实现的发出挑战(类似于安全问题),只有那个特定的SIM卡可以
从它存储在其内存中的信息中回答。 一旦验证,访问网络被授权.

Soft SIM这个术语是什么意思?

“软SIM” 将是执行所有SIM卡的功能 的软件应用程序和数据的集合, 但不存在于任何类型的安全数据存储中。

相反,它将存储在通信设备本身的存储器和处理器中(即没有SIM硬件层)。

不管SIM本身是可拆卸,还是嵌入在设备中,它仍然是加密的硬件和软件的组合,来
支持蜂窝数据网的连接以及其他功能.

通过使用Soft SIM可能会降低安全性,如果不用TEE环境保护Ki的话。

MTK IMEI

IMEI: 35 67 20 08 89 26 75 6

  45 93 d4 51 89 ff 33 f0 74 79 49 4c
  45 93 f6 51 70 08 15 f6 74 79 34 5b

  e9 1a 0b 2e 17 95 bd 0f 8b 86 53 72
  e9 1a 0b 2e 17 95 bd 0f 8b 86 53 72  
  e9 1a 0b 2e 17 95 bd 0f 8b 86 53 72
  e9 1a 0b 2e 17 95 bd 0f 8b 86 53 72
  e9 1a 0b 2e 17 95 bd 0f 8b 86 53 72
  e9 1a 0b 2e 17 95 bd 0f 8b 86 53 72  
  e9 1a 0b 2e 17 95 bd 0f 8b 86 53 72
  e9 1a 0b 2e  17 95 bd 0f  8b 86 -- 53 72  

校验算法
 奇数字节 相加  (0xE9 + 0x0B + 0x17 + 0xBD + 0x8B) & 0xFF = 0x53 (奇数字节校验)
 偶数字节 相加  (0x1A + 0x2E + 0x95 + 0x0F + 0x86) & 0xFF = 0x72 (偶数字节校验)

16 E5 F4 D1 E8 6A 42 F0 74 79
E9 1A 0B 2E 17 95 BD 0F 8B 86
异或结果
FF FF FF FF FF FF FF FF FF FF

16 E5 F4 D1 E8 6A 42 F0 74 79
异或(53 76 02 80 98 62 57 06 00 00)
——————————————
45 93 F6 51 70 08 15 f6 -74 79- 49 4c

>>> ‘%x’ % (0x16 ^ 0x53)
’45’
>>> ‘%x’ % (0xE5 ^ 0x76)
’93’
….

LD0B_001

  4c 44 49 00 10 ef 0a 00  0a 00 00 00 0a 40 00 00  
  00 20 00 00 00 00 00 00  00 00 00 00 00 00 a2 44  
 7e 00 00 00 00 00 00 00  00 00 83 1a 01 00 00 00  
 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  


 27 10 40 e4 f5 1e f3 57  3a f9 2f cb 69 a6 8f 1a  49 4a 5d f6 53 4a f7 c0  ad 1c 45 f3 a5 4d bf f2  
 05 ed 3b a5 12 c4 97 9f  be c3 d4 9c e5 e8 8b 57  c6 ff 8c fa 70 cd 0e 52  c7 b6 27 d1 d9 f5 9b 7f 

 4a b9 6d 2f 1a 79 25 c7  00 db 7e 7f 21 77 56 79  3f 08 6b ad d5 6d 9f a3  8e bf 88 56 d4 ae a0 a7  
 4a b9 6d 2f 1a 79 25 c7  00 db 7e 7f 21 77 56 79  3f 08 6b ad d5 6d 9f a3  8e bf 88 56 d4 ae a0 a7  
 4a b9 6d 2f 1a 79 25 c7  00 db 7e 7f 21 77 56 79  3f 08 6b ad d5 6d 9f a3  8e bf 88 56 d4 ae a0 a7 
 4a b9 6d 2f 1a 79 25 c7  00 db 7e 7f 21 77 56 79  3f 08 6b ad d5 6d 9f a3  8e bf 88 56 d4 ae a0 a7
 4a b9 6d 2f 1a 79 25 c7  00 db 7e 7f 21 77 56 79  3f 08 6b ad d5 6d 9f a3  8e bf 88 56 d4 ae a0 a7 
 4a b9 6d 2f 1a 79 25 c7  00 db 7e 7f 21 77 56 79  3f 08 6b ad d5 6d 9f a3  8e bf 88 56 d4 ae a0 a7  
 4a b9 6d 2f 1a 79 25 c7  00 db 7e 7f 21 77 56 79  3f 08 6b ad d5 6d 9f a3  8e bf 88 56 d4 ae a0 a7 
 4a b9 6d 2f 1a 79 25 c7  00 db 7e 7f 21 77 56 79  3f 08 6b ad d5 6d 9f a3  8e bf 88 56 d4 ae a0 a7 

基于Android平台虚拟SIM卡的设计与实现

2018年电子技术应用第7期
张 刚,徐 鑫
(重庆邮电大学 通信与信息工程学院,重庆400065)

摘要: 为了满足移动用户境外出行时的上网需求,设计实现了一种基于Android智能终端的虚拟SIM卡软件,支持用户通过终端下载漫游地SIM卡信息,并且可以通过使用下载的卡参数鉴权入网,以接近漫游地当地水平的价格为用户提供数据上网服务。首先介绍了Android Telephony架构,分析了各层的通信交互方式。针对虚拟卡可能出现的安全问题,基于ARM TrustZone技术实现虚拟卡参数的安全管理。测试结果表明,可以通过终端应用实现产品订购、订单激活,通过虚拟SIM卡可以使用上网业务,上网资费低于运营商资费。

关键词: 国际漫游 Android 智能终端 虚拟SIM卡
中图分类号: TP311
文献标识码: ADOI: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 引言

在当今互联网时代的大背景之下,互联网技术迅猛发展,手机上网的网民也日趋增长。同样,用户在境外出行时的移动上网需求也日益强烈,移动用户出国活动频繁,国际漫游业务量明显增加[1],传统的实体SIM卡用户需要在出国之前办理国际漫游业务后,能够使用漫游地网络服务。然而,国际漫游资费高是困扰消费者的一大难题。为了解决上述所提出问题,基于智能终端的虚拟SIM卡技术得到重视和发展。通过支持虚拟SIM技术的终端消费者可以在全球覆盖范围内,以接近目的地价格水平使用数据上网服务。本文根据虚拟卡平台架构,结合Android Telephony框架结构,研究虚拟卡在Android终端中的应用以及相关的技术。针对虚拟卡参数在下载以及保存阶段可能出现的用户信息被攻击,设计基于ARM TrustZone技术实现虚拟卡的安全运行及数据安全。最后通过测试表明可以通过虚拟卡APP完成上网操作。

1 平台架构

虚拟SIM卡平台架构如图1所示,平台由三部分组成:支持虚拟SIM卡技术的终端、用户管理中心和SIM云端服务提供商。

(1)虚拟SIM卡终端:支持虚拟SIM技术,能从云端下载虚拟SIM卡参数,可用虚拟SIM卡参数接入相应的网络。

(2)用户管理中心:目的是与终端虚拟SIM APP进行交互,提供用户管理,开启或终止用户使用虚拟SIM卡参数。

(3)虚拟SIM卡云端服务供应商:提供运营商参数IMSI、Ki等网络鉴权所必须的虚拟卡参数。本方案与二六三移动通信有限公司合作,开发支持虚拟卡技术的终端。

本方案的目的是设计实现支持虚拟SIM卡的终端,支持虚拟SIM卡技术的终端可以通过WiFi或者移动运营商网络请求从动态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的业务应用跨越了AP和BP。AP与BP相互通信是目前智能手机的基本硬件架构。Android系统在AP上运行,而Telephony运行在Linux Kernel之上的User Space空间。BP侧负责射频控制,包括信号调制、编码、射频移位等高度时间相关的操作。对于不同的安卓厂商,他们的AP侧允许相同,但是Modem侧可能会有差异。因此,Android在AP与Modem之间设计了RILC框架,不同的芯片厂商就可以将其协议连接到AP侧。本虚拟卡方案基于高通平台。对于高通平台来说,它的RILC就是QCRIL。

2.2 终端软件架构

虚拟SIM卡终端架构如图2所示,其软件架构与Android Telephony整体分层结构保持一致,包括应用层、框架层、无线通信接口层。

其中处于应用层的APP与框架层的service通信是基于Binder机制实现进程间通信,通过安卓接口描述语言(Android Interface Definition Language,AIDL)技术定义进程间通信接口。虚拟卡是在Frameworks中单独添加的一个服务,为了使其他的应用程序也可以访问本应用程序提供的服务,Android提供了AIDL来自动生成用于进程间通信的代码。RILJ与RILC的交互是基于rild端口的Socket连接,RILJ接收到Telephony Frameworks发出的请求后,通过Socket连接向RILC发起RIL请求。最后,高通平台通过高通消息接口(Qualcomm Messaging Interface,QMI)作为AP与Modem之间的通信接口。采用IDL_QCSI_QCCI的方式实现。QCCI(QMI Common Client Interface)封装客户端进行通信的C库,主要是注册client,用于发送和接收message。QCSI(QMI Common Service Interface)封装服务端进行通信的C库,提供服务注册,发送和接收message,根据消息ID查找回调函数实现消息响应。至此,从应用软件到Telephony Frameworks到RIL再到BP的Modem全线贯通,之后应用软件就可以处理相关通信业务了。

传统SIM卡是插在Modem中的,终端与SIM卡的交互必须要经过Modem。而虚拟卡相当于在模块侧虚拟了两个卡槽,虚拟卡槽和物理卡槽的连接是互斥的。当虚拟卡激活时,表示当前模块连接的是Softslot,此时模块无法上报物理卡槽slot信息。当无虚拟卡或者虚拟卡去激活时,模块连接到物理的slot上,此时可以通过接口获取物理slot的信息。当发生了物理卡和虚拟卡切换时,相当于发生了一次热插拔,模块将会将原有的卡信清除,并上报新的卡信息。

2.3 流程设计

虚拟SIM卡流程设计如图3所示。

虚拟SIM APP提供与用户交互的界面,可供用户登录、订购虚拟卡套餐、激活以及去激活虚拟卡。合法用户登录用户中心后就可以进行虚拟卡的相关操作。用户订购虚拟卡套餐后会在后台执行虚拟卡参数下载以及保存的流程,保存的虚拟卡参数会在用户到达漫游地后由用户选择启用虚拟SIM卡套餐。启用的虚拟SIM卡经鉴权认为合法就可以使用相应的套餐,连接相应的网络,使用目的地数据服务了。

2.4 虚拟SIM卡安全框架设计

本系统基于ARM TrustZone[3]技术实现虚拟卡用户数据的安全传输与保存。目前主流的安全防范措施包括SoC设计外置硬件安全模块、SoC设计内置硬件安全模块、软件虚拟化技术以及ARM TrustZone技术,TrustZone是保护系统安全的比较好的解决方案。把Virtual SIM运行在TEE环境里面,以确保SIM数据的安全存储和运行安全。系统框架如图4所示,其中主要包含REE、TEE、硬件平台。

REE指的是普通执行环境,也就是常说的Android或者iOS操作系统,其中运行普通应用,本系统基于Android 4.4系统进行开发。TEE指的是可信执行环境,其中运行可信程序,执行安全操作,为REE提供安全服务。硬件平台指的是支持ARM TrustZone技术的芯片。

虚拟卡安全的实现主要涉及图中灰色部分,下面描述各部分详细的功能。

(1)运行在REE中的Virtual SIM应用(CA)

虚拟卡应用运行在普通执行环境中,以下简称CA。CA是对安全要求较高的一类应用,通过CA,用户可以与虚拟卡进行交互,实现业务购买、业务激活以及业务关闭等操作。

(2)TEE Client API

TEE Client API是运行于REE中的CA与运行于TEE中的TA之间进行通信的接口。通过该标准接口实现TEE环境的初始化。CA通过接口调用建立CA 与TA之间的联系,实现安全服务的调用。

(3)TrustZone驱动

TrustZone驱动位于Linux内核,是一个虚拟的TrustZone硬件驱动程序。CA调用TEE Client API时,TEE Client API会调用TrustZone驱动,由TrustZone驱动生成smc指令,进入Monitor模式,完成系统切换。

(4)Monitor

Monitor用于控制系统的安全状态,通过NS位修改来达到TEE与REE之间的相互切换,以及在换过程中保存和恢复TEE和REE的状态。

(5)Trusted APP(TA)

系统设计将Virtual SIM运行于TEE环境中,这部分可信应用为运行在REE环境中的CA提供相应的安全服务。这些安全服务包括数据的访问安全、数据存储安全以及数据的传输安全。

(6)TEE Internal API

TEE Internal API也叫TEE内部API,它提供程序开发者用于快速开发TA的一组API。安全芯片标准定义组织GlobalPlatform定义了TEE Internal API 为TA的开发提供的标准化的接口。

(7)安全文件系统(SFS)

SFS提供的安全文件系统基于ARM TrustZone技术,运行在安全可执行环境中。其主要功能是为普通区域存储用于加密虚拟卡数据的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 卡参数安全保存实现

SIM卡中存储着运营商网络用于鉴权用户身份的关键信息,如IMSI、Ki等。如果这些信息被盗用,就可以复制出相应的卡,导致出现克隆卡,造成用户财产损失。所以保证数据安全是SIM卡需要关注的核心问题。传统SIM数据都保存在相应的文件中,对于SIM卡的访问都有严格的限制,保证了卡数据的完整,防止攻击者的破坏和盗用。制造商在产线阶段将运营商数据直接写入卡中,在整个生产环节和SIM卡本身的硬件架构方面使其安全性可以得到保障[8]。对于虚拟卡参数的安全存储关系到用户的通信安全和切身利益。

为了防止非法从终端获取到虚拟卡参数,本方案将虚拟卡参数加密存储在安全文件系统(Secure File System,SFS)。通过RSA公钥加密下载的虚拟卡数据在执行存储阶段跳转到安全执行环境中进行,保证用户信息存储的安全。通过这种方式存储用户数据,不用针对存储数据专门设计安全存储硬件,一方面减少了芯片面积和功耗,另一方面也降低了产品的开发成本[9]。

3.3 虚拟SIM鉴权实现

SIM卡是独立的硬件,它是终端中重要的组成部分,用户要获取运营商服务必须通过SIM卡认证,合法的SIM卡才能够使用运营商网络。身份认证(也就是用户鉴权)则是通过在SIM卡内部执行相关的鉴权算法来完成[10]。下载的虚拟卡数据同样需要经过鉴权才能入网。虚拟卡要求支持数据漫游,本方案采用基于Milenage算法的鉴权算法,高通提供了Milenage[11]算法的相关功能,可取代SIM卡的Milenage。所有的USIM鉴权都有统一的入口:mmgsdi_uicc_auth()。在函数中判断是否启用了虚拟卡,如果启用了虚拟卡则调用相关处理函数mmgsdi_uicc_onchip_auth(),在该函数中完成AKA_milenage_f2345()软件算法的调用,使用软件鉴权算法替代实体SIM卡进行鉴权操作。Ki和OPc作为鉴权算法传入参数,为了安全在使用时从SFS文件系统读取KEY到局部变量,使用完成后通过memset()对局部变量清零,预防从内存中泄露。

4 测试结果

4.1 测试用例

测试分为无卡、单卡、双卡测试,相关的测试用例如表1所示。

启用虚拟卡会占用一个物理卡槽。默认情况下会占用空卡槽,如果没插卡或者插入两张物理卡,则需要用户手动设置占用哪个卡槽激活虚拟卡。经测试,测试结果满足预期要求,终端能够通过虚拟卡接入网络。

测试选用大陆测试套餐,测试套餐只在测试阶段使用内部账号登录才会使用。投入市场不会有大陆套餐选项,成功购买的套餐会在“我的订单”中列出来。到达漫游地后用户可以选择需要启用虚拟卡,激活成功会提示用户当前处于国际漫游状态。经过激活后可以使用漫游地数据服务。激活成功后的虚拟卡会在状态栏信号处显示状态为3G并且带有R(Roaming,漫游)标识,提醒用户当前终端处于数据漫游状态。相关实现结果如图6所示。

4.2 资费对比

由于各服务商之间提供漫游服务的覆盖区域不同,因此选取比较热门出行的国家及地区进行漫游资费对比,对比结果如表2所示。套餐选择是包天不限流量。

通过对比发现虚拟卡提供的漫游资费水平明显低于中国移动、中国电信提供的国际漫游资费,给消费者带来方便的数据漫游服务的同时也降低了漫游资费。

5 结论

本文设计实现了基于Android平台的虚拟SIM卡功能,实现用户通过支持虚拟卡技术的终端方便地订购、激活、使用漫游地套餐;无需SIM卡即可连接当地运营商网络;使用户摆脱了目的地购买当地SIM卡,历经沟通、购买、换卡以及激活的繁琐流程,以及运营商高昂的国际漫游资费,降低了国际漫游资费。虚拟SIM卡的发展反映了用户需求下的市场发展。不过,虚拟SIM卡仍有很长的路要走。首先,虚拟SIM卡服务商必须获得网络运营商的合作授权,能否得到运营商的广泛支持,成为了虚拟SIM卡能否生存的关键所在[12]。此外,虚拟SIM卡的技术标准、产业推广等其他方面,也仍有很大的发展空间。

参考文献

[1] 傅剑峰,蒋静,李方,等.降低国际漫游费的方法及可行性研究[J].移动通信,2015,39(24):71-76.

[2] 杨青平.深入理解Android Telephony原理剖析与最佳实践[M].北京:机械工业出版社,2013.

[3] 郑显义,李文,孟丹.TrustZone技术的分析与研究[J].计算机学报,2016,39(9):1912-1928.

[4] 杨红梅.eUICC的关键技术及相关标准[J].电信网技术,2015(6):58-62.

[5] 陈健.几种常用数据加密算法的比较[J].福建商业高等专科学校学报,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卡发展影响及取证新挑战[J].中国新通信,2016(21):66.

串口改7816接口


上图中, 三极管Q1 由上拉电阻R1驱动,运行在集电极开路模式。
晶体管Q1会反转信号,所以在基极前面加了一个反相器A1。

实际上,在Q1的集电极,我们看到一个TX-UART信号的复制品。SIM卡的IO脚(它只是一个集电极开路的IO脚), 能够
将信号按照自己的意愿拉低, 而不会引起TX-UART的短路。

RX-UART能够拾取信号, 回放来自TX-UART或者SIM卡IO脚的信号。 两个引脚都没没有拉起信号。
这就是R1电阻正在做的事情。

所以,电路可以改成

ISO-7816
当TX-UART发送数据时, SIM卡的IO脚 监听 通过R1传递过来的信号。当TX-UART停止发送时,UART将进入idle状态
(逻辑高电平). 这将有效地将R1绑定到Vcc. 这个行为与上面的复杂电路完全一样。

如果 SIM卡要发送数据, SIM卡的IO脚将会拉低到地,就会有一些电流从TX-UART流出。但是没关系, 相对于驱动一个LED而言,
驱动GPIO根本算不了什么。

简单步骤:
1. 在MCU那边配置UART的速率为9600bps, 8位数据位, 两位停止位,偶校验。
2. 给SIM卡Vcc管脚上电, 复位为低电平
3. 提供时钟信号为波特率的372倍,也就是3.57MHz
4. 等待一小会,让SIM卡稳定
5. 拉升复位线, 让SIM卡脱离复位状态。
6. 然后在MCU的UART-RX管脚观察,是否有ATR签名信号到达。
7. ….

R1的建议取值
3.6k for 1.8V supply
6.6k for 3.3V supply
10k for 5V supply.

SIM卡管脚定义的记忆方法


0) 缺口对着的脚  Data I/O
1) 跟I/O 同侧, 最上面的是 GND
2) 在I/O 另一侧中间的脚 是 RST

我只关心这3个脚


2023年10月31日 补充
贴片sim卡



芯片左下角 打圆点的那个管脚是 管脚1, 也就是GND, 对应原SIM卡管脚定义中的C5

CMU200测试卡写卡指令

00 FC 00 00 08 CD521A991ACFD7BA

00 FB 00 00 10 CA68607CFEC097FD 04 UIM_ID

00 FB 00 00 10 3A1CEF403BD6D435 AKey

00 FB 00 00 1A 68C114AAE79CE965 01 10 HRPD_SS
00 FB 00 00 __ 0CD1E18335FF3760 SIP_SS
00 FB 00 00 __ 4F555E9F586081B2 MIP_SS
00 FB 00 00 __ C3A76E5679AC01DA MNAAA_SS

00 FB 00 00 09 18A1056A09BCB27500

00 FB 00 00 18 8C0F235728A5D5A5 Ki
00 FB 00 00 18 259AE652A82BE2F7 Opc
00 FB 00 00 18 7C6BE8363BB070CE OP
00 FB 00 00 09 6FE0439609E4560703

00 FB 00 00 09 6FE0439609E4560701
00 FB 00 00 09 6FE0439609E4560700

00 FB 00 00 09 11DC8F66AAE5E9B307
00 FB 00 00 09 11DC8F66AAE5E9B303

00 FB 00 00 18 120341650C277C1C GSM_Ki

00 FB 00 00 18 D952B308BFB50BDF PIN-1
00 FB 00 00 18 A2DC946D9735D5B0 PIN-2
00 FB 00 00 10 EFA240A90C02232C ADM

00 FC 00 00 08 6FE0439609E45607
00 FC 00 00 08 D952B308BFB50BDF
00 FC 00 00 08 A2DC946D9735D5B0
00 FC 00 00 08 11DC8F66AAE5E9B3
00 FC 00 00 08 B2F16FD4AA2E2F8F

电信SMSP

电信短信中心

与CDMA to CDMA不同的是,G网下的短信发送需配置正确的短信中心号码,中国电信与沃达丰、和记之间均设有3个合作节点(短信网关),三大短信中心分别是在北京、上海及广州,各节点对应不同的省市。相应省市的用户需将短信中心设置为对应网关的号码才能使用。

一般来说,制卡方会按要求将对应中心号码内置在UIM卡中,但不排除意外情况导致内置信息有误,故在用户CDMA to GSM状态下遇到发送短信故障时,需引导用户核实该号码并确保正确。

CDMA to CDMA(C-C) 指电信手机号码漫游至CDMA网络服务国家和地区并使用CDMA网络服务
CDMA to GSM (C-G) 指电信手机号码漫游至GSM网络服务国家使用GSM网络服务

原天翼国际卡(和记卡) 短信中心:
北京 +85294983153
上海 +85294983335
广州 +85294983442

新天翼国际卡(沃达丰卡) 短信中心:
北京 +316540942002 (北京、黑龙江、吉林、辽宁、河北、山西、内蒙古、陕西、甘肃、宁夏、青海、新疆、天津、山东14个省市区)
上海 +316540942001 (上海、江苏、浙江、安徽、福建、江西,5省1市)
广州 +316540942000 (广东、广西、海南、湖南、湖北、河南、云南、贵州、西藏、四川、重庆11省区及澳门公司)

iPhone系列可在拨号盘界面输入*#5005*7672#后按通话键来查看,同时可在拨号盘界面通过*5005*7672*短信中心号码#通话键修改。

中国电信UIM卡IMSI切换技术要求

IMSI切换技术要求
1. 概述
随着中国电信LTE网络的建设,为满足LTE、WCDMA、GSM、CDMA国际漫游需要,根据中国电信国际漫游签约协议,中国电信多功能通用卡中可能存在多个IMSI(要求多功能通用卡上能够存储10套IMSI数据),包括:
1) 中国电信CDMA网络使用的IMSI(已有:46003号段)。
2) 中国电信LTE网络使用的IMSI(新增IMSI)。
3) 中国电信C2G国际漫游用IMSI(中国电信漫游合作运营商ISMI:20404号段)。
中国电信多功能通用卡中需预置中国电信国际漫游网络优选IMSI列表,卡片通过接收终端发出的位置信息,根据下面描述的判断步骤[1],判断是否进行IMSI切换,完成开机选网流程。

正常流程

1 终端开机后发送TERMINAL PROFILE指令。
2 卡发起SET UP MENU命令;
3 卡片发送SET UP EVENT LIST指令(指令详细描述见5.3章节),要求终端监听位置状态事件。
4 终端成功接受监听该事件后,发送TERMINAL RESPONSE(OK)指令到卡片。
5 当终端从网络获得PLMN(MCC,MNC)后,终端发送ENVELOPE EVENT(MCC/MNC)指令到卡片。

6 卡片接收终端发出的MCC/MNC,根据5.4.2章节描述的判断步骤,决定是否进行IMSI切换,卡片IMSI切换流程详细见5.4章节描述。

7 如需进行IMSI切换,6F07文件的IMSI切换成功后,卡片发出REFRESH指令(03)要求终端刷新文件,终端重新进行开机选网流程。

8 如不需进行IMSI切换,终端正常读取IMSI文件,进行选网操作。

异常流程

1 终端开机后发送TERMINAL PROFILE指令。
2 卡发起SET UP MENU命令;
3 卡片发送SET UP EVENT LIST指令(指令详细描述见5.3章节),要求终端监听位置状态事件。
4 终端成功接受监听该事件后,发送TERMINAL RESPONSE(OK)指令到卡片。
5 如果终端回复ENVELOPE命令,location status命令内容是”01”(Limited service);卡发送PROVIDE LOACAL INFORMATION命令给终端,如果终端无法提供位置信息,卡最多再发两次PROVIDE LOCAL INFORMATION命令给终端;如果卡总共发送三次provide local information命令给终端,终端都无法正常提供位置,卡停止重发provide local information命令。
如果终端再次响应01,流程同上面描述;
6 终端返回Terminal Response 命令,包含从网络获得的位置信息
7 卡片接收终端发出的位置信息,根据下面描述的判断步骤[1],决定是否进行IMSI切换,卡片IMSI切换流程详细见5.4章节描述。
8 如需进行IMSI切换,切换成功后,卡片发出REFRESH指令(03)要求终端刷新文件,终端重新进行开机选网流程。
9 如不需进行IMSI切换,终端正常读取IMSI文件,进行选网操作。

异常流程2

1 终端开机后发送TERMINAL PROFILE指令。
2 卡发起set up menu命令;
3 卡片发送SET UP EVENT LIST指令(指令详细描述见5.3章节),要求终端监听位置状态事件。
4 终端成功接受监听该事件后,发送Teminal Response OK指令到卡片。
5 如果终端回复envelop命令,location status命令内容是”02”(no service);卡不做处理;
如后续终端对set up even list 指令返回ENVELOP指令的location status内容是正常的位置信息,卡的处理参照5.2.1章节;
如后续终端对set up even list 指令返回ENVELOP指令的location status内容是01,卡的处理参照5.2.2章节;


IMSI切换的流程
当卡片接收到终端发送给卡片的位置信息前三个字节后,对比卡内存放的网络优选IMSI列表9F02,如需切换,则进行IMSI切换,并发送REFRESH指令,要完成切换流程,卡片需完成以下工作:
1) 卡建立存放中国电信漫游合作方IMSI文件,该文件为中国电信自定义的私有文件,可远程更新,详细定义参见5.5.2章节。
2) 卡预置网络优选IMSI,判断列表文件。9F02文件为中国电信定义的私有文件,可远程更新,详细定义参见5.5.3章节。
3) 根据5.4.2章节的判断步骤,确定需要使用的IMSI;如果其与当前USIM\6F07的IMSI相同,不需要切换,否则需要切换IMSI并且继续步骤4
4) USIM\6F07文件切换IMSI的同时,USIM\EFFPLMN也需要切换至与切换后IMSI相匹配的FPLMN内容(9F01文件中对应IMSI记录里的FPLMN内容)。
5) 切换成功后,卡片发送REFRESH 03指令。

判断IMSI切换的步骤:
1) 卡首先判断接收到的位置信息是否中国或者澳门的位置信息,如果是,使用9F01记录1对应的IMSI;否则继续第2步;
表示“中国”的位置信息 : 从终端向卡传递的位置信息,是64x0xx(3GPP格式的位置信息 ,x表示通配符)或者是6701xx(3GPP2格式的位置信息x表示通配符)
表示“澳门”的位置信息 : 从终端向卡传递的位置信息,是54x5xx(3GPP格式的位置信息 ,x表示通配符)或者是5801xx(3GPP2格式的位置信息x表示通配符)
2) 将位置信息与包含MCC及MCC的位置信息记录(9F02记录中,第一个字节为“00”的记录)对比,如果匹配到对应记录,使用对应的IMSI,如果无法匹配,跳至第3步;
如接收到的位置信息是64F650(3GPP格式的位置信息),9F02文件中“00”开始的记录中有64F650的位置信息记录,使用64F650位置信息对应的IMSI;
如接收到的位置信息是63015C(3GPP2格式的位置信息), 9F02文件中“00”开始的记录中有63015C的位置信息记录,使用63015C位置信息对应的IMSI;
3) 将位置信息与只包含MCC的位置信息记录(9F02记录中,第一个字节为“01”的记录)对比,如果匹配到对应记录,使用对应的IMSI,如果无法匹配,跳至第4步;
如接收到的位置信息是64F650 (3GPP格式的位置信息),9F02文件中“00”开始的记录中没有64F650的位置信息记录,9F02文件“01”开始的记录中有64F6FF的位置信息记录,使用64F6FF位置信息对应的IMSI;
如接收到的位置信息是63015C(3GPP2格式的位置信息),9F02文件中“00”开始的记录中没有63015C的位置信息记录,9F02文件“01”开始的记录中有6301FF的位置信息记录, 使用6301FF位置信息对应的IMSI;
4) 如果经历步骤1-3都无法匹配到相关条件,使用9F01文件第2条记录的IMSI)
如接收到的位置信息是64F650 (3GPP格式的位置信息),9F02文件中“00”开始的记录中没有63015C的位置信息记录,9F02文件“01”开始的记录中没有6301FF的位置信息记录,使用9F01文件第2条记录对应的IMSI;
如接收到的位置信息是63015C(3GPP2格式的位置信息),9F02文件中“00”开始的记录中没有63015C的位置信息记录,9F02文件“01”开始的记录中没有6301FF的位置信息记录,使用9F01文件第2条记录对应的IMSI;


多IMSI切换的相关文件

(6F07)EF_IMSI 文件定义(国际移动用户识别符) (文件容量 9个字节)
该EF文件位于ADF USIM目录下,包含了国际移动用户识别符(IMSI)。

(9F01)EF_IMSI_2文件定义(中国电信自定义私有文件) (记录长度:69个字节)
该EF文件位于ADF USIM目录下,由中国电信自定义并且可以进行远程文件更新,包括10条记录,每条记录存放的内容包括:
IMSI长度(1字节)、IMSI(8字节)、IMSI对应的FPLMN(IMSI长度及IMSI的存储格式参照USIM\6F07格式里的说明).
例如:
中国电信LTE IMSI长度(1字节)、
中国电信LTE IMSI(8字节)、
中国电信LTE IMSI对应的FPLMN(60字节);

漫游合作方IMSI长度(1字节)、
漫游合作方IMSI(8字节)、
漫游合作方IMSI对应的FPLMN(60字节)。

实际发卡时候,9F01文件记录中存放的IMSI及其FPLMN由实际情况决定。

(9F02) EF_IMSI ROAMING_LIST文件定义(中国电信自定义私有文件) (记录长度:253个字节)
该EF文件位于ADF USIM目录下,由中国电信自定义,可进行远程文件更新,存放中国电信定义的优选漫游IMSI列表,包含20条记录(记录1至记录20),每条记录253字节。

字节1:
00: MCC+MNC类型的位置信息(3GPP格式),例如64F030;MCC+ IMSI_11_12类型的位置信息(3GPP2格式),例如67015C;
01: MCC类型的位置信息(3GPP格式),例如64F0FF;MCC类型的位置信息(3GPP2格式),例如6701FF

INDEX: IMSI2文件的记录号,长度为1字节 取值:0x01~0xFE,

9F02文件中的记录从第1条记录开始顺序保存,即如果某条记录内容是全“FF”,表示该记录及其之后的所有记录内容都是全“FF”;

9F02文件中记录的内容在实际发卡的时候写入。

支持USIM网络模式下的多IMSI切换应用;预制两套鉴权数据;
其中
第一套为:L_IMSI、L_KI、L_OPC;
第二套为:G_IMSI、G_KI、G_OPC;

9F01文件:两条记录分别预制成中国电信的L_IMSI+FPLMN 和 G_IMSI+FPLMN ;
FPLMN见选网文件;
9F02文件:预制为全F,见选网文件;
9F03文件:两条记录分别预制为中国电信的LTE和G网(带OPC)鉴权数据;
记录1:L_KI + L_OPC+R1-R5/C1-C5/ IND / L / N / ResLen
记录2:G_KI +G_OPC+R1-R5/C1-C5/ IND / L / N / ResLen

KI+OPC+R1-R5/C1-C5为后个人数据,于客户数据901文件中提供;
IND / L / N / ResLen 取固定值:05 / 000000000000 / 1C / 08

G网参数:
客户数据901文件提供数据有G_OPC 、G_IMSI、G_KI 为IMSI切换中的沃达丰数据;更新在9F01/9F03下,GSM模式(7F20)下更新G_IMSI、G_KI

2F00 (Application ID) 目录下 记录文件值的顺序:CSIM、USIM、ISIM、PKCS#15

==================

远写空卡 多IMSI切换部分:

9F01:两条记录;
记录1:L_IMSI+FPLMN
记录2:G_IMSI+FPLMN ;
L_IMSI和G_IMSI更新为全F;FPLMN按选网文件部分预制;

9F02: 按选网文件预制全F;

9F03: 两条记录
记录1:L_KI + L_OPC+R1-R5/C1-C5/ IND / L / N / ResLen
记录2:G_KI +G_OPC+R1-R5/C1-C5/ IND / L / N / ResLen

KI+OPC更新为全F;
R1-R5/C1-C5为后个人化数据,于客户数据提供;
IND / L / N / ResLen 取固定值:05 / 000000000000 / 1C / 08

==========

EVDO参数:

简单IP用户名SIP_UPP、简单IP共享加密数据SIP_SS需要预置指定的值,写到制卡文件中。
SIP_UPP预置值为:ctwap@mycdma.cn和ctnet@mycdma.cn
写入制卡文件中采取16进制数写入,值为:
23200F6374776170406D7963646D612E636E210F63746E6574406D7963646D612E636E20

SIP_SS预置值为:vnet.mobi
写入制卡文件中采取16进制数写入,值为:766E65742E6D6F6269


9F01 
FCP:    62198205422100450A83029F018A01058B036F0604800202B28800
    6219
       8205 42(线性定长)21(数据编码)0045(记录长度)0A(记录个数)
       8302 9F01
       8A0105
       8B03 6F0604
       8002 02B2 (文件大小)
       8800

记录
08 4906117016036564 64F0-00 64F0-10 64F0-20 64F0-60 64F0-70 64F0-02FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
08 2940401697468429 64F0-00 64F0-10 64F0-20 64F0-60 64F0-70 64F0-02FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
....

9F02
FCP:  62198205422100FD1483029F028A01058B036F0604800213C48800

记录为全F

移动通信鉴权算法之三Milenage

UMTS/WCDMA,LTE,5G NR基本鉴权算法都是一致的,为Milenage。 UMTS是一个基于五元组的鉴权 鉴权五元组(RAND,XRES,IK,CK,AUTN)。 LTE鉴权是一个基于四元组的鉴权:Kasme、AUTN、RAND、XRES,鉴权流程为:
1) UE向NAS层MMS发起鉴权请求;
2) MME(Mobility Management Entity) 则向HSS(Home Subscriber Server)索要鉴权向量;
3) HSS返回一套或多套EPS鉴权向量给MME,其中包括AMF分割符,1代表LTE/SAE,0代表非LTE/SAE;
4) MME收到后保存XRES,Kasme并将RAND和AUTN发送给UE;
5) UE通过AUTN对网络进行鉴权,并根据AUTN和RAND计算出RES和CK/IK,进一步计算出Kasme;
6) UE与MME根据Kasme推导出NAS层与AS层所需的CK、IK。当UE从ACTIVE到IDLE态时将删除这些密钥 VLR通过基站-手机发送 RAND和AUTN到USIM卡
RAND由AuC用f0算法生成
AUTN= SQN [AAK] || AMF || MAC_A


USIM用f1 计算XMAC,输入为 SQN || RAND || AMF
若 XMAC = MAC_A ,且SQN在有效范围, 则认为网络是合法网络,不是伪基站(其实伪基站这个叫法不对,但民间都这么称呼)

USIM用f2 计算RES

当SQN不在有效范围时,用f1*进行同步 TD-LTE USIM卡和TD-SCDMA USIM卡USIM应用和SIM应用均使用Milenage算法, LTE卡支持AMF分隔符为1的LTE模式。 外在表现主要差异在于EF_UST(6F38)文件中声明支持EPS Mobility Management Information服务和Call control on EPS PDN connection by USIM服务。
在文件系统中ADF下新增EPS_LOCI(6FE3)和EPS_NSC(6FE4)两个文件由终端访问和存储鉴权中间值。 实例分析:
00 A4 08 04 02 

A4 

7F FF 

61 34 


00 C0 00 00 34 

C0 

62 32 82 02 78 21 83 02 7F F0 84 10 A0 00 00 00 

87 10 02 FF 86 FF 03 89 FF FF FF FF A5 03 80 01 

71 8A 01 05 8B 03 2F 06 04 C6 09 90 01 40 83 01 

01 83 01 81 

90 00 



00 88 00 81 (80=2g,81=3g, 82=vgcs, 84=gba) 22 

88 

10 

D3 5E 1C AD 1F 84 8C 90 69 66 39 D3 0E 12 7F 32  (RAND)

10 

58 11 8D A8 EE 70(SQN@AK)-- F2 4C (AMF) ---2B 33 55 DC B7 26 43 8E (MAC_A) (AUTN)

61 2C 



其中,AUTN实际由SQN xor AK, AMF 和 MAC 三部分组成^M

AK = f5(Ki,RAND)^M

XMAC = f1(Ki,RAND,SQN,AMF)^M

如果XMAC与MAC相等, 则认为UE将要接入的网络是合法的^M



00 C0 00 00 2C 

C0 

DB      --DB表示成功, DC表示SQN需要重新同步

08 

F8 CD 98 87 CA 77 04 8F    --RES

10 

D3 EF 06 E5 86 28 F1 94 3A 57 2B 4B 20 06 1B F4 --CK

10 

AF 9B 2F 86 F5 92 85 8F 03 21 24 8A BB F3 A1 5A --IK

08 
2B 33 55 DC B7 26 43 8E  (MAC_A)

90 00 
鉴权管理字段

对AMF的使用没有标准化。除了参与AUTN的计算以外,3GPP提出了三种用法
1.用于在多个鉴权算法、多个密钥中进行选择。
2.用于动态改变SQN验证所用的参数L
3.初步确定使用该项功能:用于指定CK/IK密钥生命周期的阈值。
理由:
AMF用于动态更新threadhold,如果KASUMI算法有问题,通过增大CK、IK的更新频度提高使用KASUMI算法的安全程度。

考虑到AMF还没有标准化,并且今后可能用于中国移动特定的功能,设置AMF = 0x00 0x01 也就是分离比特位 如果网络类型为LTE, AUTN中的AMF字段的”分离比特位”应该设置为1, 向ME指明 认证向量 仅用于 EPS上下文的AKA认证.
如果”分离比特位”为0, 向量仅能用于 非EPS上下文(如GSM, UMTS)的AKA认证.

对于”分离比特位”为1的认证向量, AKA认证过程产生的密钥CK和IK 应该驻留在HSS中
分离比特位 是 AMF字段的最低位, 不应再被用于其他用途 AMF(authentication and key management field):AMF用来指示SQNMS(移动站的)和SQN(VLR或Auc的)之间的最大许可差值;其用来指示生成某一个鉴权向量所使用的密钥和算法。USIM对密钥有一个有效期限制,通过AMF来调整它的时间。
若SQN – SQNMS < AMF 且SQN > SQNMS,则SQN正确
AUTS:它的长度为14个字节,当MS鉴权失败并且返回失败原因是”同步失败”时,带有AUTS参数,其作用是为启动再鉴权流程而给网络提供必要的信息。 “Synchronisation failure” tag = ‘DC’ “Successful 3G authentication” tag = ‘DB’