一种安全读卡器及其工作方法

文档序号:8259461阅读:271来源:国知局
一种安全读卡器及其工作方法
【技术领域】
[0001]本发明涉及信息安全领域,尤其涉及一种安全读卡器及其工作方法。
【背景技术】
[0002]在现有技术中,读卡器作为上位机和卡片之间的通讯通道,在接收到上位机发送的包含指令的数据包时,获取数据包中的指令,将获取到的指令发送给卡片,接收卡片返回的数据并发送给上位机。由于读卡器与卡片之间只能传输明文的APDU(Applicat1nProtocol Data Unit,应用协议数据单元),而上位机与卡片之间的通讯数据有时会包含敏感信息,如PIN或密钥信息等,在通讯过程中存在安全隐患,并且在上位机与卡片的通讯过程中,读卡器仅起到转接的作用,敏感信息均是从上位机输入的,而上位机的环境存在木马等危险因素,也增加了通讯的风险。

【发明内容】

[0003]本发明的目的是为了克服现有技术的缺陷,提供一种安全读卡器及其工作方法。
[0004]本发明方法是通过下述技术方案实现的:
[0005]本发明提供的一种安全读卡器的工作方法,其基本实施过程为:所述读卡器上电初始化后,使能总中断,并在完成USB枚举之后进入主循环流程,所述主循环流程包括以下步骤:
[0006]步骤S1:判断是否接收到上位机发送的USB数据包,是则执行步骤S2,否则重新执行主循环流程;
[0007]步骤S2:根据所述USB数据包中的预设字节判断所述USB数据包中包含的指令的类型,若为第一预设通道指令则执行步骤S3,若为其他通道指令则执行通用读卡器的常规操作后,重新执行主循环流程;
[0008]步骤S3:根据所述USB数据包中的预设标识判断所述第一预设通道指令是否需要在安全通道中传输,若不需要在安全通道中传输则执行步骤S4,若需要在安全通道中传输则执行步骤S5 ;
[0009]步骤S4:将所述第一预设通道指令直接发送给卡片,执行步骤S8 ;
[0010]步骤S5:检查安全通道是否已建立,是则执行步骤S6,否则执行步骤S7 ;
[0011]步骤S6:将所述第一预设通道指令通过安全通道发送给卡片,执行步骤S8 ;
[0012]步骤S7:建立与卡片之间的安全通道,将所述第一预设通道指令通过安全通道发送给卡片,执行步骤S8 ;
[0013]步骤S8:根据卡片的返回结果设置返回数据和返回状态,并将返回数据和返回状态返回给所述上位机,重新执行主循环流程。
[0014]上述主循环流程的步骤S5之前,还可以包括:判断所述第一预设通道指令的类型,若所述第一预设通道指令为建立安全通道指令,则建立与卡片之间的安全通道,设置返回状态,并将返回状态返回给所述上位机,重新执行主循环流程,否则执行所述步骤S5 ;此时,上述主循环流程的步骤S7还可以替换为,设置返回状态为安全通道未建立,并将返回状态返回给所述上位机,重新执行主循环流程。
[0015]上述主循环流程中,所述判断是否接收到上位机发送的USB数据包,可以具体包括:检查USB接收标志是否被置位,是则接收到上位机发送的USB数据包,否则未接收到上位机发送的USB数据包;此时,上述主循环流程的步骤SI中,当接收到上位机发送的USB数据包时,还包括复位所述USB接收标志;所述方法中还包括:当USB中断被触发时,所述读卡器获取上位机发送的USB数据包,置位所述USB接收标志。
[0016]上述主循环流程中,所述根据所述USB数据包中的预设字节判断所述USB数据包中包含的指令的类型,可以具体包括:判断所述USB数据包中的第一个字节,若为预设数据则所述USB数据包中包含的指令为第一预设通道指令,否则所述USB数据包中包含的指令为其他通道指令。
[0017]上述主循环流程中,所述根据所述USB数据包中的预设标识判断所述第一预设通道指令是否需要在安全通道中传输,可以具体包括:判断所述USB数据包中的第十一个字节的高位端第6个比特,若所述比特为第一预设值则所述第一预设通道指令不需要在安全通道中传输,若所述比特为第二预设值则所述第一预设通道指令需要在安全通道中传输。
[0018]上述主循环流程中,所述检查安全通道是否已建立,可以具体包括:检查安全通道标志是否被置位,是则安全通道已建立,否则安全通道未建立;此时,上述主循环流程的步骤S7中,所述建立与卡片之间的安全通道之后,还包括置位所述安全通道标志;所述步骤S2中,还包括:若所述USB数据包中包含的指令为第三预设通道指令,且所述第三预设通道指令为给卡片下电指令,则对卡片下电,并复位所述安全通道标志。
[0019]进一步地,所述读卡器进入上述主循环流程之前,还可以包括:检查并记录卡槽状态,上报卡槽状态给所述上位机;更进一步地,上述主循环流程的步骤Si之前还可以包括:检查并记录卡槽状态,判断与上次记录的卡槽状态是否相同,若相同则执行步骤SI,若不相同则上报卡槽状态给所述上位机后执行步骤SI ;或者上述主循环流程的步骤S8中,所述将返回数据和返回状态返回给所述上位机之后,还可以包括:检查并记录卡槽状态,判断与上次记录的卡槽状态是否相同,若相同则重新执行主循环流程,若不相同则上报卡槽状态给所述上位机后重新执行主循环流程;再进一步地,当判断出与上次记录的卡槽状态不同之后,还可以包括:若检查并记录的卡槽状态为无卡,则复位所述安全通道标志;
[0020]或者,进一步地,所述读卡器进入上述主循环流程之前,还可以包括:检查并记录卡槽状态,置位上报卡槽状态标志;此时,上述主循环流程的步骤Si之前,还包括判断所述上报卡槽状态标志是否被置位,若被置位则上报卡槽状态给所述上位机,复位所述上报卡槽状态标志,执行步骤SI,若未被置位则执行步骤SI ;或者,所述步骤S8中,所述将返回数据和返回状态返回给所述上位机之后,还包括判断所述上报卡槽状态标志是否被置位,若被置位则上报卡槽状态给所述上位机,复位所述上报卡槽状态标志,重新执行主循环流程,若未被置位则重新执行主循环流程;更进一步地,上述主循环流程的步骤SI之前,还可以包括:检查并记录卡槽状态,判断与上次记录的卡槽状态是否相同,若相同则执行步骤Si,若不相同则置位所述上报卡槽状态标志后执行步骤SI ;或者,上述主循环流程的步骤S8中,所述将返回数据和返回状态返回给所述上位机之后,还可以包括检查并记录卡槽状态,判断与上次记录的卡槽状态是否相同,若相同则重新执行主循环流程,若不相同则置位所述上报卡槽状态标志后重新执行主循环流程;再进一步地,当判断出与上次记录的卡槽状态不同之后,还可以包括:若检查并记录的卡槽状态为无卡,则复位所述安全通道标志。
[0021]上述主循环流程中,所述建立与卡片之间的安全通道,可以具体包括:与卡片协商生成数据密钥、认证密钥和会话密钥;所述将所述第一预设通道指令通过安全通道发送给卡片,具体包括:用所述数据密钥加密所述第一预设通道指令中的敏感信息,用所述会话密钥计算包含敏感信息密文的第一预设通道指令的消息认证码,用所述认证密钥加密包含敏感信息密文的第一预设通道指令,将所述消息认证码和包含敏感信息密文的第一预设通道指令的密文发送给卡片。
[0022]所述与卡片协商生成数据密钥、认证密钥和会话密钥之前,还包括:获取所述读卡器中预置的初始密钥;所述与卡片协商生成数据密钥、认证密钥和会话密钥,具体为:根据所述初始密钥与卡片协商生成数据密钥、认证密钥和会话密钥;
[0023]或者,所述与卡片协商生成数据密钥、认证密钥和会话密钥之前,还包括:获取所述读卡器中保存的初始密钥;所述与卡片协商生成数据密钥、认证密钥和会话密钥,具体为:根据所述初始密钥与卡片协商生成数据密钥、认证密钥和会话密钥;此时,上述主循环流程的步骤S2中,还包括:若所述USB数据包中包含的指令为第二预设通道指令,且所述第二预设通道指令为下载密钥指令,则保存所述下载密钥指令中的初始密钥。
[0024]所述第一预设通道指令包括登陆指令;所述登陆指令需要在安全通道中传输;当所述USB数据包中包含的第一预设通道指令为所述登陆指令时,所述将所述第一预设通道指令通过安全通道发送给卡片之前,还包括:判断PIN的来源,若来源于默认PIN则获取读卡器中预置的默认PIN,添加获取的默认PIN到所述登陆指令中,若来源于键盘输入则获取用户输入的PIN,添加获取的PIN到所述登陆指令中。
[0025]所述第一预设通道指令包括输入密钥信息指令;所述输入密钥信息指令需要在安全通道中传输;当所述USB数据包中包含的第一预设通道指令为所述输入密钥信息指令时,所述将所述第一预设通道指令通过安全通道发送给卡片之前,还包括:判断密钥信息的来源,若来源于卡片则获取卡片中存储的密钥信息,显示获取的密钥信息,当接收到用户确认信息时添加获取的密钥信息到所述输入密钥信息指令中,若来源于键盘输入则获取用户输入的密钥信息,显示获取的密钥信息,当接收到用户确认信息时添加获取的密钥信息到所述输入密钥信息指令中。
[0026]所述第一预设通道指令包括修改用户数据指令;所述修改用户数据指令需要在安全通道中传输;当所述USB数据包中包含的第一预设通道指令为所述修改用户数据指令时,所述将所述第一预设通道指令通过安全通道发送给卡片之前,还包括:判断更新前的PIN和更新后的PIN的来源,当更新前的PIN来源于默认PIN时,获取读卡器中预置的默认PIN,添加获取的PIN到所述修改用户数据指令中,当更新前的PIN来源于用户输入时,获取用户输入的PIN,添加获取的PIN到所述修改用户数据指令中,当更新后的PIN来源于默认PIN时,获取读卡器中预置的默认PIN,添加获取的PIN到所述修改用户数据指令中,当更新后的PIN来源于用户输入时,获取用户输入的PIN,添加获取的PIN到所述修改用户数据指令中。
[0027]所述第一预设通道指令包括获取用户名称指令;所述获取用户名称指令不需要在安全通道中传输;当所述USB数据包中包含的第一预设通道指令为所述获取用户名称指令时,所述步骤S4中,所述将所述第一预设通道指令直接发送给卡片之后,还包括:显示卡片返回的用户名称。
[0028]本发明提供的一种安全读卡器,其基本实施过程为:所述安全读卡器包括初始化模块和功能模块,所述初始化模块与所述功能模块相连,所述初始化模块用于在所述安全读卡器上电后进行初始化,使能总中断,以及进行USB枚举,所述功能模块用于在所述初始化模块完成USB枚举后执行主循环流程;
[0029]所述功能模块具体包括:
[0030]数据包接收判断单元,用于判断是否接收到上位机发送的USB数据包;
[0031]指令类型判断单元,用于当所述数据包接收判断单元判断出接收到上位机发送的USB数据包时,根据所述USB数据包中的预设字节判断所述USB数据包中包含的指令的类型;
[0032]安全传输标识判断单元,用于当所述指令类型判断单元判断出所述USB数据包中包含的指令为第一预设通道指令时,根据所述USB数据包中的预设标识判断所述第一预设通道指令是否需要在安全通道中传输;
[0033]安全通道检查单元,用于当所述安全传输标识判断单元判断出所述第一预设通道指令需要在安全通道中传输时,检查安全通道是否已建立;
[0034]安全通道建立单元,用于当所述安全通道检查单元检查到安全通道未建立时,建立与卡片之间的安全通道;
[0035]安全传输单元,用于当所述安全通道检查单元检查到安全通道已建立时,或者当所述安全通道建立单元建立与卡片之间的安全通道之后,将所述第一预设通道指令通过安全通道发送给卡片,接收卡片的返回结果;
[0036]直接传输单元,用于当所述安全传输标识判断单元判断出所述第一预设通道指令不需要在安全通道中传输时,将所述第一预设通道指令直接发送给卡片,接收卡片的返回结果;
[0037]上报单元,用于根据所述安全传输单元和所述直接传输单元接收到的卡片的返回结果设置返回数据和返回状态,并将返回数据和返回状态返回给所述上位机;
[0038]常规操作执行单元,用于当所述指令类
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1