发明内容
针对现有技术存在的问题和缺陷,本发明的目的在于提供一种基于位置服务的电信智能卡。
为达到上述目的,本发明所采用的技术方案为:一种基于位置服务的电信智能卡,包括:
信息获取模块,用于动态获取用户所处的地理位置信息,所述地理位置信息被发送至服务器以获取与用户所处地理位置相关的信息;
目录设置模块,用于根据用户所处的地理位置信息设置与地理位置相关的目录;
信息存储模块,用于存储与用户所处地理位置相关的信息,所述地理位置相关的信息从服务器获取,并以目录形式进行存储。
采用本发明所述的基于位置服务的电信智能卡后,用户在前往目的地的过程中,每到一个地理位置,通过所述电信智能卡就能方便地获取到与该地理位置相关的信息,与现有技术相比,用户不用时刻查询自己所处的地理位置,省去了寻人问路的麻烦;存储模块和目录设置模块将与地理位置相关的信息以目录形式进行存储,与现有技术相比,用户能够清楚、有条理地了解到自己所处地理位置的相关信息,节省了时间,提高了效率。
为解决上述技术问题,本发明提出了一种基于位置服务的数据业务***,包括移动终端,该移动终端内置有基于位置服务的电信智能卡,与移动终端进行信息交换的服务器;所述电信智能卡包括信息获取模块和信息存储模块;
信息获取模块动态获取用户所处的地理位置信息;
移动终端将用户所处的地理位置发送给服务器;
服务器将与地理位置相关的信息发送给电信智能卡;
信息存储模块将与地理位置相关的信息以目录形式存储起来。
采用本发明所述的基于位置服务的数据业务***后,所述电信智能卡能够获取用户所处的地理位置信息,与现有技术相比,用户不需要通过其他繁琐的途径对所处的地理位置信息进行查询,节省了时间;所述服务器中存储有与地理位置相关的信息,所有信息以数据格式存储,对应每个地理位置,都有该地理位置的相关信息,用户只需要带有移动终端就能获取到该信息,与现有技术相比,用户获取信息的方式更加方便、快捷,获取到的信息更全面。
与上述基于位置服务的数据业务***相对应,本发明提出了一种基于位置服务的方法,包括:
电信智能卡动态获取用户所处的地理位置信息的步骤;
电信智能卡将用户所处的地理位置信息发送给服务器的步骤;
服务器将与地理位置相关的信息发送给电信智能卡的步骤;
电信智能卡将与地理位置相关的信息以目录形式存储起来的步骤。
采用本发明所述的基于位置服务的方法,将该方法应用于上述基于位置服务的数据业务***中后,该***内的电信智能卡会随时检查用户所处的地理位置是否变化,当用户的地理位置发生变化时,电信智能卡将会获取该处的地理位置信息,并将该地理位置信息发送给服务器,服务器通过数据库查找到与该地理位置相关的信息后,发送给电信智能卡,与现有技术相比,用户不用通过其他繁琐的渠道,就能方便、快捷地获取到所处的地理位置信息,以及与地理位置相关的信息,节省了时间、精力,提高了办事效率。
具体实施方式
为了方便用户了解所处地理位置的相关信息,本发明对现有的智能卡进行改进,将改进后的智能卡放进移动终端,用户通过该移动终端从服务器可以了解自己所处的地理位置,以及与该地理位置相关的信息。
如图1所示,本发明对现有的智能卡进行的改进,包括:在现有智能卡的基础上增加信息获取模块,用于获取用户的地理位置信息(获取地理位置信息的过程后文详述);目录设置模块,用于设置与地理位置相关的目录;信息存储模块,用于将与地理位置相关的信息保存到目录下;以及输出模块,用于将地理位置相关的信息输出。下面分别对目录设置模块、信息存储模块、输出模块进行详细说明:
目录设置模块中的目录包括根目录、子目录和子目录的次级目录,使用户从智能卡中获取到的信息更清楚、更有条理。当智能卡获取的地理位置信息是北京时,目录设置模块将北京设置为根目录,与北京相关的信息,如名胜古迹、风土人情等设置为根目录的子目录,具体的名胜古迹、风土人情等更为详细的信息设置为次级子目录。不同的地理位置对应不同的目录名称,不同目录名称下的各级信息也不相同,当用户所处的地理位置改变时,各级目录都会进行更新。
为了使用户清楚、即时地了解自己所在的地理位置相关信息,该智能卡设置了输出模块,将信息目录结构和对应的信息进行组织输出给终端显示。当然,输出模块也可以设置在终端,由终端将地理位置相关信息读出后进行结构和信息的组织显示。
本发明提供的电信智能卡还包括信息管理模块,用于对接收到的地理位置相关信息进行区分,分别发送给根目录、子目录或子目录的次级目录。这样,用户就能通过选择各级目录来了解智能卡提供的各种信息。
假如用户从西直门出发开车到西单,但是路不熟,只知道要经过新街口、平安里、缸瓦市。用户在西直门,利用具有本发明智能卡的移动终端,可以获得当前的地理位置,也可以获得西直门相关的信息,例如:显示西直门附近局部放大的电子地图,方便地看清自己所在的地理位置及方向,确定下一站新街口的路径,这样可以免去询人问路的麻烦。
当开车到达新街口后,同样可以获得类似的与地理位置相关的信息。
当用户到达西单后,利用具有本发明电信智能卡的移动终端,可以获得西单各商场或者购物中心的促销、打折、热卖、新品信息,用户在购物之前,首先通过智能卡了解这些信息,然后对这些信息进行比较,最后直接去购买适合 自己需要的、物美价廉的商品。与现有技术相比,节省了体力、财力,省去了很多麻烦。
如图2所示,将改进后的智能卡放进移动终端,移动终端与服务器组成了基于位置服务的数据业务***。用户通过该移动终端获取地理位置相关的信息的过程如下:
1、智能卡获取用户所处的地理位置信息。
移动终端开始工作后,智能卡对用户当时所处的地理位置信息进行登记,每隔一段时间,或者用户每到达一个新的地理位置区时,智能卡对用户所处的地理位置信息进行更新并重新登记。一般来说,用户地理位置信息的内容为七个字节,包括:三个字节的MCC&MNC(Mobile Country&Network Codes,国家编码和网络编码),两个字节的LAC(Location Area Code,位置区域编码)和两个字节的Cell ID(Cell Identity Value,小区值)。
以SIM卡为例,在GSM网络中使用的电信智能SIM卡支持STK(SimApplication Toolkit,用户识别应用发展工具)开发包,STK开发包由主动式命令构成,其中有一个主动式命令为获取地理位置信息:Provide LocalInformation,通过执行这个指令,可以准确地知道使用者所在的小区,根据小区值,就可以定位出用户的地理位置信息。地理位置信息存储在SIM卡的位置信息文件中。
为了使SIM卡能够即时、动态地显示用户所处的位置信息,在SIM卡中设置有监控模块。SIM卡在位置信息文件7F206E7E文件中存储位置信息内容,当用户的位置改变时,监控模块对位置信息文件7F206E7E文件进行监控,查看该文件是否被改写,若没有被改写,说明用户的位置信息没有改变;若该文件被改写,说明用户的位置信息发生变化,用Provide Local Information这条主动式命令获得新的位置信息。这样,只要用户的位置发生改变,SIM卡就能对用户的位置及相关信息进行更新,因此,用户不管位于何处,都可以通过SIM卡即时、动态地获取到所处的位置信息。
2、将地理位置信息组织成上行短信发送给服务器。
智能卡获得用户所在的地理位置信息后,按照与服务器规定的协议,通过移动终端将该地理位置信息组织成上行短信。移动终端将上行短信发送给服务器。上行短信的报文格式为:
标识 |
长度(字节) |
值 |
说明 |
|
TPDU_Header |
可变 |
短消息头 |
TP-UDHI为0 |
|
UDL |
1 |
|
后续数据长度 |
|
安全应 用数据 |
卡商代码及 协议版本号 |
1 |
HEX |
|
卡片序列号 |
8 |
HEX |
IMSI文件的后8个字节 |
|
同步计数器 |
5 |
HEX |
|
|
随机数 |
4 |
HEX |
|
|
MAC |
4 |
HEX |
|
|
命令数据 |
命令类型 |
1 |
HEX |
|
命令长度 |
1 |
HEX |
本条短信中命令参数的长 度。(如无命令参数,填0) |
|
命令参数 |
X |
HEX |
|
|
在上行短信的报文格式中,卡商代码及协议版本号为1个字节,如下表所示:
b8 |
b7 |
b6 |
b5 |
b4 |
b3 |
b2 |
b1 |
供应商编号 |
协议版本号 |
|
|
|
|
|
|
其中,高五比特(b8-b4)为卡片供应商编号,低三比特(b3-b1)为协议版本号,第一版本为001。
在上行短信的报文格式中,卡片序列号为IMSI(International MobileSubscriber Identity,国际移动用户识别码)文件的后8个字节,用于标识用户身份和密钥分散;随机数用来参与密钥分散和安全认证;对MAC(MessageAuthentication Code,信息验证码)的计算用于保证数据的完整性。(密钥分散、安全认证、MAC值的计算过程后文有详细描述)
在上行短信的报文格式中,上行数据命令类型及其对应的命令参数如下(应用时应有命令长度):
应用下载服务器可支持的上行命令类型为:
用户注册对应的命令参数如下所示:
项目 |
名称 |
长度(字节) |
值 |
说明 |
命令类型 |
用户注册 |
1 |
01 |
|
命令参数 |
卡片发行批号 |
1 |
卡片不同发行批次的编号 |
卡片发行批号 |
位置信息对应的命令参数如下所示:
项目 |
名称 |
长度(字节) |
值 |
说明 |
命令类型 |
位置信息命令 |
1 |
02 |
|
命令参数 |
位置信息 |
7 |
HEX |
|
以一个使用该基于位置服务的SIM卡用户为例,将地理位置信息组织成上行短信发送给服务器的过程为:当用户来到北京西八间房时,SIM卡发现地理位置信息改变,向服务器上发位置信息短信,内容为:0x11FFFFFFFFFFFFFFFF000000000111223344XXXXXXXX020764F00010C6CFAF
其中,0x11是供应商代码和版本号,0xFFFFFFFFFFFFFFFF为卡片序列号,0000000001是计数器值,0x11223344是随机数,XXXXXXXX为MAC值,0x02是命令类型,0x07是长度,0x64F00010C6CFAF是7个字节的位置信息。
3、服务器获取用户所处的地理位置信息后,将与用户所处地理位置信息相匹配的目录和信息组织成下行短信发送给SIM卡。
服务器从上行短信中截取命令参数,即位置信息,查找数据库中是否有匹配的地理位置信息。所述的地理位置信息包括信息的目录结构和目录下的信息。若有,则将对应的目录和信息按照协议规定的格式组织成下行短信,发送给SIM卡。下行短信的报文格式如下:
标识 |
长度(字节) |
值 |
说明 |
|
TPDU_Header |
可变 |
短消息头 |
TP-UDHI为0 |
|
UDL |
1 |
|
后续数据长度 |
|
安全应用数 据 |
标识 |
3 |
0XF0F0F0 |
信息标识 |
同步计数器 |
5 |
|
计数器 |
|
MAC |
4 |
HEX |
MAC |
|
随机数 |
4 |
HEX |
密钥分散及密钥选择用 |
|
命令数据 |
命令类型 |
1 |
HEX |
|
命令长度 |
1 |
HEX |
本条短信中命令参数的长 度。(如无命令参数,填0) |
|
命令参数 |
X |
HEX |
|
|
在下行短信的报文格式中,下行数据命令类型及其对应的命令参数如下(应用时应有命令长度):
应用下载服务器可支持的下行命令类型为:
目录管理对应的命令参数如下所示:
项目 |
名称 |
长度(字节) |
值 |
说明 |
命令类型 |
目录管理 |
1 |
01 |
|
|
目录总数 |
1 |
HEX |
后续目录数据总数 |
目录数据1 |
X |
HEX |
目录ID+长度+目录名称 |
|
操作类型 |
1 |
HEX |
1添加,2删除,3更名 |
|
... |
|
|
|
|
目录数据n |
X |
HEX |
|
|
操作类型 |
1 |
HEX |
|
|
在目录管理中,删除一个目录时,该目录下的信息也应全部删除。更名一个目录时,该目录下的信息不改变。
信息下载对应的命令参数如下所示:
项目 |
名称 |
长度(字节) |
值 |
说明 |
命令类型 |
信息下载 |
1 |
02 |
|
|
目录ID |
1 |
HEX |
|
信息ID |
1 |
HEX |
|
|
信息长度 |
1 |
HEX |
|
|
信息内容 |
X |
|
中文:80+UCS2;英文ASCII |
|
目录数据按如下方式定义:目录ID+后续长度+目录名称,其中,目录ID为1字节,范围为0x01-0xFF;中文目录名称为80+UCS2,英文目录名称为ASCII。
信息按如下方式定义:目录ID+信息ID+后续长度+信息内容,根据目录ID,就可以知道该信息所在的目录归属。信息ID为1字节,范围为0x01-0xFF,信息内容的编码和目录名称的编码相同。
以一个使用该基于位置服务的SIM卡用户为例,服务器将与用户所处地理位置信息相匹配的目录和信息组织成下行短信的过程为:服务器收到北京西八间房的用户发送的短信,根据规定的短信格式从上行短信中截取出位置信息0x64F00010C6CFAF,查找数据库中是否有与之对应的位置信息,找到后,将目录信息“娱乐餐饮”和“房产信息”组成下行短信。短信内容为:
0xF0F0F00000000001XXXXXXXX11121314011801020109805A314E509910996E01020980623F4EA74FE1606F01
其中,0xF0F0F0是下行标识,0x00000000001是计数器值,XXXXXXXX是MAC值,0x11121314是随机数,0x01是命令类型目录管理,0x02表示对两个目录进行管理,0x0109805A314E509910996E01020980623F4EA74FE1606F01表示添加两个目录“娱乐餐饮”和“房产信息”。
4、SIM卡收到下行短信后,将地理位置相关信息以目录形式进行存储。
SIM卡收到服务器的下行短信后,首先,按照双方规定的下行协议,对该下行短信的下行标识部分进行验证,若该下行短信的标识部分与协议中所规定的不同,则证明该下行短信不是位置信息短信,没有通过验证;若该下行短信的标识部分与协议中规定的相同,则证明该下行短信为位置信息短信,通过验证。
为了对SIM卡获取到的位置相关信息进行存储,在SIM卡中设置有信息存储模块,信息存储模块包括一个或多个地理位置相关信息文件,与用户所处地理位置相关的信息保存在该文件里。将SIM卡接收到的下行短信进行解析和拆分,得到目录名称和信息内容,SIM卡的目录设置模块中的目录包括根目录、子目录和子目录的次级目录,信息管理模块将接收到的地理位置相关信息进行区分,然后,根据目录的ID查找到与目录相关联的信息,分别发送给根目录、子目录或子目录的次级目录,最后,把这些目录及信息存储在对应的地理位置相关信息文件中。
在本实施例中,SIM卡收到下行短信后,判断头3个字节是否为0xF0F0F0,若是,则该短信为位置信息短信。SIM卡通过命令类型0x01知道当前的短信为目录管理,根据下行命令的格式分别截取出两个目录“娱乐餐饮”和“房产信息”,并存储到27002E00文件中。
27002E00文件内容定义如下:
Identifier:′2E00′ |
Structure:linear fixed |
Manda tory |
|
Record length:19 |
DF:2700 |
|
|
Access Conditions: READ ADM UPDATE ADM DEACTIVATE ADM ACTIVATE ADM |
|
|
|
Bytes |
Description |
M/O |
Length/byte |
1 |
目录ID |
M |
1 |
1 |
目录长度 |
|
1 |
3-19 |
目录内容 |
M |
17 |
如果文件内容不足19个字节,用0xFF补全。
将目录“娱乐餐饮”和“房产信息”存储到27002E00文件后,文件27002E00内容如下:
记录号 |
保存的内容 |
1 |
0109805A314E509910996E(娱乐餐饮) |
2 |
020980623F4EA74FE1606F(房产信息) |
服务器下发完目录信息后,再分别下发两个目录的下级信息短信,数据库中“娱乐餐饮”的下级信息为“丽都饭店”和“佳境天成”的介绍;“房产信息”的下级信息为“银河湾”和“悠乐汇”的介绍。以下发“丽都饭店”的介绍为例,下行短信内容为:
0xF0F0F00000000003XXXXXXXX11621314025201014F804E3D90FD996D5E97FF0C662F4E2D56FD7B2C4E005BB6504765E5996D5E97FF0C96C6996D5E97FF0C516C5BD3FF0C55464E1A697CFF0C56FD96455B666821548C5E7C513F56ED4E8E4E004F533002
其中,0xF0F0F0是下行标识,0x00000000003是计数器值,XXXXXXXX是MAC值,0x11621314是随机数,0x02是命令类型信息下载,0x52是后续内容长度,0x0101表示目录ID 0x01,信息ID 0x01,0x4F为后续信息内容长度,0x80表示中文,后续表示信息内容:丽都饭店,是中国第一家假日饭店,集饭店、公寓、商业楼、国际学校和幼儿园于一体。
SIM卡收到该短信后,根据下行命令0x02的格式截取出信息,存储到27002E01中。其他3条信息的处理与本条信息相同。
27002E01文件内容定义如下:
Identifier:′2E01′ |
Structure:linear fixed |
Manda tory |
|
Record length:141 |
DF:2700 |
|
|
Access Conditions: READ ADM UPDATE ADM DEACTIVATE ADM ACTIVATE ADM |
|
|
|
Bytes |
Description |
M/O |
Length/byte |
1 |
目录ID |
M |
1 |
2 |
信息ID |
M |
1 |
3 |
信息长度 |
M |
1 |
4-140 |
信息内容 |
M |
137 |
如果文件内容不足140个字节,用0xFF补全。
将与“娱乐餐饮”和“房产信息”相关的信息存储到27002E01文件后,文 件27002E01的内容如下:
记录号 |
保存的内容 |
1 |
0101+长度+80+丽都饭店,是中国第一家假日饭店,集饭店、公寓、商业楼、国际学校和幼儿园于一体。 |
2 |
0102+长度+80+佳境天成俱乐部,400平方米健身中心,10台最新款跑台;4台运转机;2台自行车及各种力量练习器械。 |
3 |
0201+长度+80+银河湾,丽都核心区,20万平方米国际品质花园式住宅有7栋错落有致高层板楼组成,格局方正,户户朝阳。 |
4 |
0202+长度+80+悠乐汇,位于望京核心商区的广顺南大街,总建筑面积22万平方米,是集SOHO办公、体验商业为一体的综合型项目。 |
当用户进入SIM卡选项时,输出模块将27002E00中保存的目录“娱乐餐饮”和“房产信息”组织成列表显示,如果选择“娱乐餐饮”,输出模块根据该目录ID 0x01查找27002E01中与目录相关联的记录,找到记录1和记录2,再把这2条记录中的内容组织成列表显示,用户选择某项后,显示信息的全部内容,如下所示:
为了保证数据的安全,使SIM卡与服务器之间能够正常通信,在所述“将地理位置信息组织成上行短信发送给服务器”的过程中,需要对上行短信中的数据进行计算MAC。在所述“服务器获取用户所处的地理位置信息后,将与用户所处地理位置信息相匹配的目录和信息组织成下行短信发送给SIM卡”过程中,需要对上行短信中的MAC值进行验证。在所述“SIM卡收到下行短信后,将地理位置相关信息以目录形式进行存储”过程中,需要对下行短信中的MAC值进行验证。
在所述“将地理位置信息组织成上行短信发送给服务器”的过程中,对上行短信中的数据进行计算MAC的过程为:
首先,进行密钥分散操作,所述密钥分散操作的过程如下:
在智能卡与服务器中,预先设置双方共享的一组(一组5支)16字节长度的主密钥。
卡与服务器执行密钥分散操作之前,应首先产生4字节长度的随机数。产生随机数的方法如下:取随机数第四字节(从左至右)与“0X07”进行“与”操作,再对其结果取模5的值,模5的结果(0~4之间)即为所要选择的主密钥的索引号。选择主密钥之后,采用如图3所示的密钥分散算法对主密钥进行两级分散操作。分散因子包括卡片序列号及卡/服务器产生的随机数。
然后,采用MAC算法对MAC值进行计算,MAC算法采用标准的DES-CBC算法,初始密钥KEY为会话密钥Kc的左8个字节。计算MAC时应包含以下数据:卡商代码及协议版本号、品牌标识、卡片序列号、同步计数器、随机数、命令类型、命令长度、命令参数。
将所有原始数据按照每8个字节一组进行分组,若原始数据不是8的整数倍,则需要根据实际的数据长度在数据末尾填充1~7字节的“0x20”数据,计算MAC所需填充的数据不包含在上、下行报文数据中,由卡/服务器在计算MAC值时根据上行/下行数据长度自行填充。
以KEY作为DES算法的密钥,初始数据为8字节的“0X00”,对第一分组数据与初始数据异或后的数据进行运算,DES算法的输出数据与第二分组数据异或后,继续以KEY为密钥进行DES运算,依次做下去直至最后一个分组处理完毕。最后一次DES运算的8字节输出数据的最左边4字节数据,即为MAC值。
在所述“服务器获取用户所处的地理位置信息后,将与用户所处地理位置信息相匹配的目录和信息组织成下行短信发送给SIM卡”过程中,对上行短信中的MAC值进行验证的过程为:
服务器收到上行短信后,计算该上行短信的MAC值,并与上行短信中的MAC值进行比较。若两者相同,证明该上行短信的发送者是合法用户,而且数据在传送过程中未被修改、删除或者重组,该上行短信有效;否则,丢弃该上行短信。通过验证后,服务器从上行短信中截取命令参数,即位置信息,查找数据 库中是否有匹配的位置信息。若有,则将对应的目录和信息按照协议规定的格式组织成下行短信,发送给SIM卡;若没有,则不发送。手机收到下行数据短信后,会直接将短信交给SIM卡处理。
在所述“SIM卡收到下行短信后,将位置及相关信息以目录形式进行存储”过程中,对下行短信中的MAC值进行验证的过程为:
SIM卡收到下行短信后,计算该下行短信的MAC值,并与下行短信中的MAC值进行比较,若两者相同,证明该下行短信有效,通过验证;否则,丢弃该下行短信。通过验证后,SIM卡从下行短信中截取出目录信息,并将与该目录相关联的记录存储到对应的目录下,组织成列表显示出来。
以上技术实现以SIM卡为例,但本数据业务***及方法也适用于UIM卡和PIM卡,以上提及的目录更新包括但不限于一级目录的更新,也可以是多级目录的更新。