一种实现多任务访问智能卡的方法

文档序号:6574806阅读:258来源:国知局
专利名称:一种实现多任务访问智能卡的方法
技术领域
本发明涉及通讯领域中对智能卡的应用技术,尤其是智能卡在数字版权管理(DigitalRight Management)设计方案中的应用,是一种实现在异步半双工字符传输协议应用中支持多任务访问智能卡(Smart Card)的方法。
背景技术
近年来网络技术与多媒体技术的高速发展,为大容量媒体内容的快捷传播提供了一个崭新的渠道。随之而来的是媒体安全和数字版权遭受到空前的挑战和威胁,数字版权管理技术在纷乱中腾空而出,有效地保护数字内容的版权,从技术上防止数字内容的非法复制,或在一定程度上提高复制的技术和成本门槛。
在数字版权管理的方案设计中,如果引入了智能卡,将会使系统的性能得到显著的提高,并且不容易遭受到攻击,从而改善了整体的安全性。从图1中,我们可以清楚看到智能卡完全分担了CPU处理解密所消耗的能力,大大地提升了系统的性能。
在数字版权管理技术方案中引入智能卡,标志着又一种新的信息处理手段的问世,并且已被越来越多的设计人员所采用。然而,智能卡和读卡器是通过一个串行通道通讯的,在多任务同时访问智能卡时,很容易造成混乱,威胁到系统的稳定性和可靠性。

发明内容
本发明的目的在于提出一种实用可靠的方法来解决智能卡在异步半双工字符传输协议中的应用难题,实现支持多任务访问智能卡的功能。
为实现上述目的,本发明提出的实现多任务访问智能卡的方法如下创建一个消息队列,队列中的元素包括操作请求类型和操作请求内容。操作请求类型有两种,即为复位请求(Reset Request)和读写请求(IO Request)。如果是复位请求,则请求内容为空;如果是读写请求,则请求内容为后续交互中所用到的指令和参数。把所有与智能卡交互的操作交由一个守护进程来完成,用户程序依靠消息交互的方式向守护进程发送操作请求,间接地访问智能卡。守护进程起到中间桥梁的作用一方面,监听来自用户程序的操作请求消息,并将其插入到消息队列中;另一方面,从消息队列中获取操作请求消息和操作请求内容,用于与智能卡交互,并把最终的结果发送给相应的用户程序。
对于复位请求消息,守护进程首先做硬件复位操作,然后读取智能卡的在位状态,分不同情况向用户程序回复复位报告(Reset Report)。
对于读写请求消息,守护进程按照如下步骤与智能卡交互第一步,向智能卡发送请求指令;第二步,接收来自智能卡的请求指令应答;第三步,向智能卡发送待处理数据;第四步,接收来自智能卡的状态字和处理后数据的长度;第五步,向智能卡发送请求指令和处理后数据的长度;第六步,接收来自智能卡的请求指令应答、处理后数据、状态字。
经过上述六个步骤,守护进程已经获取到了被处理后的数据,于是通过读写回复(IOResponse)把结果发送给相应的用户程序。
本发明依赖守护进程逐次完成上述步骤,保证了每一条操作请求消息都能在不受干扰的情况下被处理,从本质上解决了多用户访问的互扰问题。采用本发明所述的方法,从根本上实现了多任务访问智能卡的功能,提高了系统的稳定性和可靠性。


图1是智能卡在数字版权管理方案中的解扰图。
图2是守护进程处理读写请求消息的流程图。
图3是守护进程的有限状态机图。
具体实施例方式
以下将结合附图和具体实施例对本发明方法作进一步的说明。
创建一个消息队列,队列中的元素包括操作请求类型和操作请求内容。操作请求类型有两种,即为复位请求(Reset Request)和读写请求(IO Request)。如果是复位请求,则请求内容为空;如果是读写请求,则请求内容为后续交互中所用到的指令和参数。把所有与智能卡交互的操作全部封装在一个守护进程里,用户程序依靠消息交互的方式向守护进程发送操作请求,间接地访问智能卡。守护进程起到中间桥梁的作用一方面,监听来自用户程序的操作请求消息,并将其插入到消息队列中;另一方面,从消息队列中获取操作请求消息和操作请求内容,用于与智能卡交互,并把最终的结果发送给相应的用户程序。守护进程可以依据不同机理插入和提取操作请求消息,比如一种简单可行的处理方式是按时间排序,插入时将操作请求消息插到消息队列的尾部,提取时从消息队列的首部取时操作请求消息,当然也可以根据需要采取其他方式处理。
对于复位请求消息,守护进程首先做硬件复位操作,然后读取智能卡的在位状态。如果不在位,则向用户程序回复卡不在位的复位报告(Reset Report);如果在位而获取的复位应答(Answer To Reset,简称ATR)无效,则向用户程序回复卡出错的复位报告(Reset Report);如果在位而获取的复位应答(ATR)有效,则向用户程序回复卡在位的复位报告(Reset Report)。
读写请求消息的操作请求内容主要有“分类(Class,简称CLA)”、“指令(Instruction,简称INS)”、“参数1(Parameter 1,简称P1)”、“参数2(Parameter 2,简称P2)”、“参数3(Parameter 3,简称P3)”、“数据(DATA)”。对于读写请求消息,守护进程按照如图2所示步骤与智能卡进行交互,具体如下第一步,守护进程把操作请求内容中的五个连续字节CLA、INS、P1、P2、P3传送到智能卡里;第二步,智能卡回复确认字节ACK;第三步,守护进程将待处理的数据(DATA)送到智能卡里;第四步,智能卡依次回应状态字节1(Status Word 1,简称SW1)和状态字节2(Status Word2,简称SW2)。SW1表示处理的状态,SW2表示处理后生成的数据长度。如果智能卡不能立即处理完毕,将先回复一个字节表示需要继续等待新的数据,比如回复一个字节0x60。如果能及时处理完毕,则该字节不是必需的。
第五步,守护进程再次把五个连续字节CLA、INS、P1、P2、P3传送到智能卡里,其中CLA、P1和P2的值与第一步相同,INS为0xfe,P3为第四步中的SW2;第六步,智能卡回复确认字节ACK,接着是被处理后生成的数据,最后是结束序列SW1-SW2,表示智能卡的状态。
经过上述六个步骤,守护进程已经获取到了被处理后的数据,于是通过读写回复(IOResponse)把结果发送给相应的用户程序。
守护进程的内部处理机制可以使用一个具有7种状态的有限状态机(Finite StateMachine)来表示。图3所示守护进程的有限状态机图,详尽地介绍了读写请求、复位请求以及热插拔被处理的状态转换情况。图中的圆角矩形表示状态,箭头表示状态之间的转换,各状态的描述如表1所示。图中的每条状态变换线上均标有“事件/动作”,其中“-”表示什么也没有。
表1守护进程的有限状态机的状态表


参照图3,以下进一步阐述读写请求和复位请求正常处理的状态变迁情况1、读写请求被正常处理的状态变迁情况,图中用粗实线的路线表示(1)收到读写请求消息之后,守护进程从“空闲”状态切入到“发送请求指令”状态,开始发送请求指令;当收到请求指令应答后,切入到“发送待处理数据”状态。
(2)发送待处理数据。当收到状态字及处理后数据的长度后,守护进程切入到“发送请求指令及处理后数据的长度”状态。
(3)发送请求指令及处理后数据的长度。当收到请求指令应答、处理后的数据、状态字后,守护进程切入到“读写结果校验”状态。
(4)校验读写结果。如果合法,守护进程发送读写回复“成功”,并切入到“空闲”状态。
2、复位请求被正常处理的状态变迁情况,图中用粗虚线的路线表示(1)收到复位请求消息之后,守护进程做硬件复位,并切入到“查询卡的在位状态”状态。
(2)查询卡的在位状态。如果卡在位,则守护进程读取ATR,并切入到“校验ATR”状态。
(3)校验ATR。如果合法则发送复位报告“在位”,并且切回到“空闲”状态。
权利要求
1.一种实现多任务访问智能卡的方法,其特征在于,创建一个消息队列,队列中的元素包括操作请求类型和操作请求内容,把所有与智能卡交互的操作交由一个守护进程处理,用户程序依靠消息交互的方式向守护进程发送操作请求,间接地访问智能卡;守护进程一方面监听来自用户程序的操作请求消息,并将其插入到消息队列中;另一方面,从消息队列中获取操作请求消息,用于与智能卡交互,并把最终的结果发送给相应的用户程序。
2.根据权利要求1所述的实现多任务访问智能卡的方法,其特征在于,所述操作请求类型分为复位请求和读写请求,如果是复位请求,则所述操作请求内容为空,如果是读写请求,则所述操作请求内容为后续交互中所用到的指令和参数。
3.根据权利要求2所述的实现多任务访问智能卡的方法,其特征在于,对于复位请求消息,守护进程首先做硬件复位操作,然后读取智能卡的在位状态,分不同情况向用户程序回复复位报告。
4.根据权利要求2或3所述的实现多任务访问智能卡的方法,其特征在于,对于读写请求消息,守护进程按照如下步骤与智能卡进行交互第一步,向智能卡发送请求指令;第二步,接收来自智能卡的请求指令应答;第三步,向智能卡发送待处理数据;第四步,接收来自智能卡的状态字和处理后数据的长度;第五步,向智能卡发送请求指令和处理后数据的长度;第六步,接收来自智能卡的请求指令应答、处理后数据、状态字。
5.根据权利要求3所述的实现多任务访问智能卡的方法,其特征在于,如果智能卡不在位,守护进程向用户程序回复卡不在位的复位报告;如果智能卡在位而获取的复位应答无效,守护进程向用户程序回复卡出错的复位报告;如果智能卡在位且获取的复位应答有效,守护进程向用户程序回复卡在位的复位报告。
6.根据权利要求5所述的实现多任务访问智能卡的方法,其特征在于,对于读写请求消息,守护进程按照如下步骤与智能卡进行交互第一步,向智能卡发送请求指令;第二步,接收来自智能卡的请求指令应答;第三步,向智能卡发送待处理数据;第四步,接收来自智能卡的状态字和处理后数据的长度;第五步,向智能卡发送请求指令和处理后数据的长度;第六步,接收来自智能卡的请求指令应答、处理后数据、状态字。
7.根据权利要求4所述的实现多任务访问智能卡的方法,其特征在于,所述第一步中,守护进程把操作请求内容中的五个连续字节“分类(CLA)”、“指令(INS)”、“参数1(P1)”、“参数2(P2)”、“参数3(P3)”传送到智能卡里;所述第四步中,智能卡通过“状态字节1(SW1)”回应状态字节,并且通过“状态字节2(SW2)”回应处理后的数据长度;所述第五步中,守护进程再次把五个连续字节“分类(CLA)”、“指令(INS)”、“参数1(P1)”、“参数2(P2)”、“参数3(P3)”传送到智能卡里,其中“分类(CLA)”、“参数1(P1)”和“参数2(P2)”的值与第一步相同,“指令(INS)”为0xfe,“参数3(P3)”为第四步中的“状态字节2(SW2)”。
8.根据权利要求6所述的实现多任务访问智能卡的方法,其特征在于,所述第一步中,守护进程把操作请求内容中的五个连续字节“分类(CLA)”、“指令(INS)”、“参数1(P1)”、“参数2(P2)”、“参数3(P3)”传送到智能卡里;所述第四步中,智能卡通过“状态字节1(SW1)”回应状态字节,并且通过“状态字节2(SW2)”回应处理后的数据长度;所述第五步中,守护进程再次把五个连续字节“分类(CLA)”、“指令(INS)”、“参数1(P1)”、“参数2(P2)”、“参数3(P3)”传送到智能卡里,其中“分类(CLA)”、“参数1(P1)”和“参数2(P2)”的值与第一步相同,“指令(INS)”为0xfe,“参数3(P3)”为第四步中的“状态字节2(SW2)”。
全文摘要
本发明公开了一种实现多任务访问智能卡的方法,把所有与智能卡交互的操作交由一个守护进程处理,用户程序依靠消息交互的方式向守护进程发送操作请求,间接地访问智能卡。守护进程一方面监听来自用户程序的操作请求消息,并将其插入到消息队列中;另一方面,从消息队列中获取操作请求消息,用于与智能卡交互,并把最终的结果发送给相应的用户程序。操作请求包括复位请求和读写请求。本发明依赖守护进程逐个处理消息,保证了每一条操作请求消息都能在不受干扰的情况下被处理,从本质上解决了多用户访问的互扰问题,从根本上实现了多任务访问智能卡的功能,提高了系统的稳定性和可靠性。
文档编号G06K17/00GK101021896SQ200710090768
公开日2007年8月22日 申请日期2007年4月6日 优先权日2007年4月6日
发明者方世煌 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1