ARM7 智能卡的动态口令终端研究与实现
文章出处:http://www.nexussmartsolutions.com 作者:中国一卡通网 收编 人气: 发表时间:2011年10月08日
1 引言
目前动态口令主要有基于事件、时间和挑战码三种实现方式[1], 现有的动态口令终端主要有刮刮卡、令牌、智能卡与卡片阅读机相结合以及基于SIM 卡等。刮刮卡是一种塑料或者纸质卡片,除卡号外,每张卡片上印刷30~45 个一次性使用的密码,每个密码前面印有引导用户使用的序号方便用户查询,每个密码都单独覆盖了刮刮膜,它用于记载后台虚拟动态口令设备计算出的动态口令, 用户每次认证时按照系统提示刮开一个新的密码使用。令牌也是一种能产生并显示动态口令的设备。这两种方式安全性虽高于静态口令,但是需要有终端成本, 根据终端的不同,成本不同,而且使用次数有限[2]。智能卡与卡片阅读机相结合的方式是指在用户登录时,必须将智能卡插入卡片阅读机中,采集活体指纹,如果匹配成功,才允许操作。此种方式操作不灵活,用户每次登录都必须带有卡片阅读机[3]。基于SIM 卡的动态口令是指移动终端借助于电信智能卡USIM 或PIM 卡生成,根据某种加密算法,随某一个动态参数(例如时间、事件等)计算产生的一次一变的一种口令[4]。此方案可以将动态口令集成到SIM 卡上,虽然解决了前三种终端的不足,但是需要用户更换原有SIM 卡。目前投入使用的几亿张SIM 卡要换成带有STK 的动态口令新一代卡,再加上大量新应用服务的宣传推广,均需要投入大量资金;用户也不愿意另花钱更换具有STK 应用功能单一、或需求不迫切的带动态口令的USIM 卡或PIM 卡,因此此种换卡模式的推广有难度[5]。
针对以上几种终端存在的缺陷,本文利用每台手机均具有标准的SIM 卡接口对手机STK功能进行扩展,设计了一个贴在手机SIM 卡上的超薄ARM7 智能卡芯片,采用STK 菜单实现动态口令终端操作。此方案为手机应用软件提供安全便捷、统一兼容的硬件平台,实现不同手机STK 动态口令应用功能的无障碍扩展。手机用户无需更换手机或SIM 卡,也可任意换机换号,只要将该智能卡直接贴在SIM 卡上,插入手机卡槽即可使用STK 菜单的动态口令功能,不影响手机原有服务及功能;同时智能卡内可通过空中下载方式(OTA)更换动态口令的PIN码,在用户手机上构建一个开放的动态口令应用平台。智能卡内部通过硬件加密方式,解决了用户数据传输的安全问题,满足动态口令安全应用需求。此种终端实现方式人机界面友好,投入成本低,容易推广,具有广阔的应用前景。
2 ARM7 智能卡硬件平台设计
动态口令硬件实现平台采用ARM 公司的32 位ARM7 接触式智能IC 芯片,该芯片主要针对高端GSM 电信卡、3G SIM 卡和JAVA 卡应用。内置256K 字节可编程ROM 、64K 字节数据ROM、8K 字节静态RAM,集成了定时器、中断控制器、系统控制、DES、RSA 硬件加密协处理器、安全检测控制以及硬件7816 接口等模块,适合SIM 卡的STK 功能扩展设计。该智能卡硬件平台的电气连接SIM 卡和手机内线路,整体厚度小于0.7 毫米,长和宽都和原有SIM 卡一致,遵循SIM 卡所有的接口标准,保持手机与SIM 卡原有的交互功能不变,通过手机的SIM 卡插槽与手机进行交互,使手机的显示屏及键盘成为智能卡用户的人机接口。在智能卡内部安装有卡片操作系统(简称COS),该COS 支持SIM 卡一般性功能、扩展性功能及空中下载三大模块。一般性功能指的是对ISO 7816 硬件接口和GSM 11.11 部分的通讯层和指令协议栈的实现,是实现智能卡与SIM 卡和手机通讯的基础;扩展性功能指的是对GSM11.14 协议栈的实现,是实现STK 应用的基础。OTA 菜单下载的实现借助于STK 功能和数据短消息通道,支持空中下载的COS 提供可行的人机接口界面供用户发起下载申请,OTA 应用下载服务器根据用户请求,以数据短信息的形式将相应的服务内容发给用户手机,并将下载数据透明地传递给ARM 智能卡芯片,COS 对下载的短信息内容通过双向认证后进行解析,把STK 菜单的字节码数据流重新进行组织存储,实现相应的STK 菜单管理。对手机而言,ARM7 智能卡相当于SIM 卡而屏蔽了其微处理器及相关电路的软硬件特性,而对SIM 卡而言,ARM7 智能卡就相当于手机而屏蔽了其微处理器及相关电路的软硬件特性。在此基础上,实现ARM7 智能卡对SIM 卡的STK 功能扩展,把不同规格的SIM卡整合到一个开放的STK 应用平台上。其整体硬件结构逻辑功能框图及ARM7 智能卡硬件接口分别如下图(1)和图(2)所示:
在 ARM7 智能卡硬件接口中,VDD、GND、RST、CLK 分别连接手机和SIM 卡的对应接口,保持手机和SIM 卡内线路连通,IO1 连接手机的IO 口,IO2 连接SIM 卡的IO 口,通过这两个接口实现ARM7 智能卡、手机以及SIM 卡之间的相互通信。
3 动态口令实现
3.1 动态口令实现流程
基于ARM7智能卡的动态口令认证系统终端采用双因素认证方式,首先获取动态口令具有PIN码保护,用户需要输入正确的PIN码,才能产生动态口令。利用手机STK菜单功能,使用Get Input命令输入数字PIN码。用户除了输入正确的PIN码之外,还要求与认证服务器的计数器实现同步才能得到正确的操作口令。
动态口令的实现过程包括开通服务、数据同步及获取口令等。开通服务主要包括密钥分散以及数据加密两部分,智能卡和认证服务器都预先存储10 组相同的主密钥。在开通时智能卡利用随机生成的密钥索引(简称KID)选取其中的一组(16 字节),采用PBOC 算法进行密钥分散后得到用于数据加密的会话密钥KC,然后使用KC 对卡号和随机生成的口令加密密钥(deskey)经过三重数据加密标准算法(简称3DES)加密,再将加密结果连同密钥索引一起以数据短信息的形式上行给认证服务器,认证服务器接收到数据后,利用密钥索引取出相同的主密钥,同样对主密钥进行PBOC 密钥分散得到解密密钥KC,再用KC 解出对应智能卡的ICCID 及deskey,并同时将同步计数器清零,实现了与卡端的同步。数据同步主要用于防止智能卡计数器与认证服务器计数器出现异常时能够重新获取同步信息的操作。
获取口令过程主要包括三部分,首先使用智能卡内部与认证服务器随机生成的deskey 对卡片序列号(简称ICCID)和计数器Counter 进行加密,然后对加密结果进行SHA1-HASH 处理得到20 字节密文,最后对HASH 结果进行数字化。其实现流程如下图(3)所示:
其中数字化是从 HASH 结果的20 字节(160bit)数据中动态取出4 字节的数据,把该4 字节数据转换为8 位十进制数字。
3.2 动态口令STK 菜单实现
用户识别应用发展工具 SIM TOOL KIT(简称STK)是在原SIM 卡被动式的操作系统上,衍生出的SIM 卡交互式操作系统。其原理就是通过手机SIM 卡接口,为手机的用户接口(简称UI)提供符合GSM11.14 规范的字节流,手机UI 把这些字节流解析成能够识别的菜单元素,从而构建一个跟手机菜单系统一致的应用菜单。这个应用菜单跟手机菜单是有区别的,用户选择菜单后,手机把这个信息直接传递给ARM7 智能卡,而不是手机的操作系统。动态口令的输出采用STK 菜单方式在手机屏幕上进行显示,为了实现STK 操作流程,需要将动态口令加密算法封装成字节码(Byte Code)形式在智能卡操作系统内部进行运算,最终采用STK 的display 命令在手机终端将结果显示出来。在具体STK 菜单设计过程中,采用了自行设计的《手机STK 功能仿真器》工具对动态口令的STK 菜单进行了仿真测试,动态口令的 STK 菜单在手机上实现效果图如下图(4)所示:
在ARM7智能卡内部使用STK菜单方式实现动态口令令牌功能,口令由智能卡内部生成,通过手机屏幕以STK菜单形式显示出来。口令动态生成,随时间或者次数变化而变化,具有不可预测性。口令生命周期短,一次有效,既可以克服静态口令重复使用容易泄漏的弱点,有效抵御密码窃取和重播攻击行为,又具有友好的菜单操作界面。由于用户口令更新阶段是在手机终端完成的,因此也可以防止拒绝服务攻击及口令猜测攻击等行为。
4 结论
本文利用手机终端STK 功能扩展技术,使用ARM7 智能卡硬件平台实现动态口令客户端STK 菜单设计,解决了动态口令终端USIM 卡或PIM 卡需更换用户SIM 卡或因刮刮卡、令牌因终端成本高带来的不足;利用智能卡内部的硬件加密算法及STK 菜单提供的友好界面,很好地解决了动态口令信息交换的安全与数据加密问题。本文设计实现的动态口令终端系统将在各网络平台中应用推广,届时将会在越来越多的商业场合得到广泛应用。预计5年内整个项目手机用户使用的带动态口令功能的ARM7 智能卡片可达100 多万片,产生经济效益可达1500 多万元。