来源:simpleteam.com
简单地介绍STK方面的开发
SIM卡最初用来储存电话号码、短消息和用户个人资料。卡内处理器在认证和编码时进行计算。它完全从属于手机。GSM标准的演进带来全新的概念——SAT,它使电话在某些时候不再授命而是听命于SIM卡处理器内的应用,从而通过一些命令就可进行与人的双向反应。
SAT或SAT技术使营运商很容易通过SMS或小区广播来更更新用户的SIM卡设置或提供新的服务。SAT应用在服务器端运行于JAVA环境,服务器需遵守一些智能卡规范如Gemplus、Giesecke&Devrient或Orga,有时还要遵守独立开发商制定的规范,如瑞典开发商Across的。所有主要手机制造商都开发出支持SAT的手机,但因为协议种类繁杂,即便大家都基于GSM标准,手机各自能运行的SAT应用仍会不同。相比之下,WAP提供了更具网络概念、更单纯的用户环境,更易于管理。
实际上,SAT用在了尚未成为智能电话的移动电话上。程式短小,因而易于开发。比如说,SAT可以实现双槽手机上使用银行储蓄卡,又或者下载铃声等。
安全保障也是SAT的一个主要特点,并包含在标准中。移动银行是应用广泛的SAT业务,此外还有电子邮件通知和信息点播等。
虽然智能电话行业在猛推SAT,相信它极有可能只是一个短暂过渡的技术。支持WAP的GPRS终端大量上市后,SAT将会逐渐退出,营运商将逐渐转用WAP来开发同类或更多应用。另外,有指WAP2.0标准中将包含SAT。无论如何,直到现在,SAT还是用得很多,它是第一个移动商务启动者,为移动商务的需求和模式的形容提供的第一手实例。
SAT的应用
移动设备(电话)和SIM卡间的通讯遵从ISO的T=0协议,电话向SIM卡发送APDU指款,SIM卡执行命令后返回一个返回报告(return code)。根据其内容或状态,电话再就APDU指示从卡中读取额外信息。如要实现互动(双向)反应,必须有一些改动。通常,SIM卡成功完成指令后,会返回0x9000的码。表5.1列示了与SAT有关的新的返回报告内容。
SW1 |
SW2 |
解释 |
90 |
00 |
正常的成功报告,SIM卡无其他SAT命令 |
91 |
xx |
命令成功执行,有一个长为xx的proactive command |
93 |
00 |
SIM卡正忙于执行前一个proactive command |
9E |
xx |
SIM数据下载时出错,有一个长为xx的回应 |
最重要的是0x91xx码。SIM在成功执行完APDU后会返回该码,告诉电话它有一个proactive command需要执行。接收到带有proactive command的通知后,电话从SIM卡中读取命令并继续执行。SIM卡会重新发出另一个proactive command(如有),或返回成功报告0x9000。下图列示了SIM卡与ME在执行proactive command时的过程。
SIM与ME的互动命令反应过程 | ||
SIM卡 | ME | |
<-------------------- | 发出命令 | |
SW1 SW2 = 91 XX | --------------------> | |
<-------------------- | 索取 | |
Proactive Command | --------------------> | 执行命令 |
<-------------------- | 终端反馈 | |
SW1 SW2 = 9000 | --------------------> |
---------------------------HENG FENG ---------------------------------
在ME执行完PROACTIVE COMMAND 之后要用TERMINAL RESPONSE给SIM发送相应,其结构为:
Direction: ME to SIM
The command header is specified in GSM 11.11 [14]. Length (A+B+C+D+E+F+G) is indicated by P3 of
the header.
Command parameters/data:
Description | M/O | Min | Length |
Command details | M | Y | A |
Device identities | M | N | B |
Result | M | Y | C |
Duration (only required in response to a POLL INTERVAL proactive command) |
M/O | Y/N | D |
Text string (only required in response to a GET INKEY or GET INPUT proactive command) |
M/O | Y/N | E |
Item identifier (only required in response to SELECT ITEM proactive command) |
M/O | Y/N | F |
Local information (only required in response to PROVIDE LOCAL INFORMATION proactive command) |
M/O | Y/N | G |
-----------------------------------------------------------------------
SIM卡的初始化和激活
SIM卡为表示能够执行proactive command且支持SAT,它必须在文件EFphaseTKG EFsst中有相关数据。 Phase文件指的是SIM卡所支持的GSM标准的级数,值为3则指SIM卡支持GSM phase 2和设置下传功能(profile download)。SST文件包含支持哪些GSM性能的准确信息。
如果SIM卡支持设置下传,在初始化SIM卡时,ME应发送终端设置给SIM卡。终端设置信息中包含有ME支持哪些SAT功能,SIM卡会根据这些信息来界定它自己的功能。
如果SST表示SIM卡支持互动反应的SIM业务,ME则必须至少每隔三十秒查询SIM卡一次,此确定是否SIM卡发出proactive command给ME并要求执行。查询将在ME不通话或闲置时进行。
SST还带有SIM卡是否支持如数据下传、菜单选择、拔叫控制、短消息控制等事件能力的信息。一旦出现SIM卡可支持的事件,ME就会发出一个含有事件详细信息的包裹给SIM卡。
PROACTIVE COMMAND
Proactive Command使SIM卡可与用户和网络交互信息,但不同移动电话应用时可能各不相同,例如大多数命令都有不同的用户界面。几种典型命令将在下面解释。下表列出了GSM 11.14标准(7.1.0版,1998年)定义的全部proactive command。
SAT
DisplayText发送需要显示的字符串给移动电话,它可以包含标准的SMS字符(字母、数字、特殊符号)。该命令让用户可以手工清除屏幕上的内容,或在几秒钏后自动清除。
GetInput命令发送一个查询,并要求用户输入。输入连同终端反馈报告一起发给SIM卡。可选择设定最短或最长的输入长度、接受数字或全部SMS字会。
SetUpMenu可在电话的标准菜单中建立一个定制菜单,用户可在多个选择中择一。如果菜单内还嵌套子菜单,则需要多次使用这一命令。
电话与网络间的通讯通过发送SMS、SS、USSD、拔号等方式进行。ProvideLocalInformation命令可使一些应用程式知道以蜂窝站代码表示的位址信息。
以前SAT将它所支持的proactive command分为三类——1类、2类和3类,制造商只需申明1、2、3,即移动电话支持的是其中一类功能或全部功能。但随着指标和命令的演化和增加,这种没有弹性的定义显得不合时宜。1999年初,所有主要厂家的新型移动电话都开始支持SAT。
SAT的可能性
在出现Java SIM API前,市场上有几种不同厂家专有的SAT,应用开发有用图形环境的,也有使用底层语言的组件式开发。
SIM卡和支持SAT的移动电话已广为使用,SIM卡内存也提高到32K,营运商可以开发多种商业应用,最简单的莫过于以更友好和简单的方式提供已有的SMS服务,通过定制菜单,用户可以选择索取诸如股票报价、天气预报等各类信息。
SAT很适合提供一些静态应用,并且可以在出厂前就下载至每个SIM卡中,比如大多数GSM用户进行语音信箱管理的SAT功能。另一个应用领域是它也适合对安全性要求较高和需要用户认证的平台,如银行、证券交易以及其他与支付和转帐有关的业务。SAT可以使移动交易更具吸引力。