一种安全输入和校验USBKey PIN码的方法及模块技术

技术编号:24354065 阅读:27 留言:0更新日期:2020-06-03 02:11
本发明专利技术公开了一种安全输入和校验USBKey PIN码的方法及系统,方法包括:安装内核键盘钩子、输入USBKey PIN码、校验USBKey PIN码和卸载内核键盘钩子;输入USBKey PIN码包括:软键盘和物理键盘输入方式,内核驱动解析软键盘以及物理键盘输入的数据获取实际输入的PIN码,根据PIN码的标识信息查询内核驱动层PIN码的内存位置,将解析后的PIN码追加至该内存位置尾部;校验USBKey PIN码包括:应用层向内核驱动发送校验PIN指令和当前PIN码的标识信息;内核驱动根据PIN码的标识信息获取PIN码所在内核驱动中的内存位置,获取PIN码,将该PIN码加密封装成密文信息后返回给应用层;应用层将密文信息转发至USBKey进行校验。本发明专利技术通过内核键盘钩子防止PIN信息泄露,提高使用USBKey时的安全性。

A method and module for safe input and verification of USBKEY pin code

【技术实现步骤摘要】
一种安全输入和校验USBKeyPIN码的方法及模块
本专利技术涉及,具体涉及一种安全输入和校验USBKeyPIN码的方法及模块。
技术介绍
USBKey作为身份认证介质,广泛应用于身份认证以及金融领域转账交易等场景。其特点是私钥保存在USBKey内的安全存储区内,不允许出设备。在使用USBKey进行身份认证或转账交易时,需要先校验USBKey的PIN码,取得USBKey用户权限才能使用Key内私钥进行签名或解密操作。PIN码的泄露则直接影响使用USBKey系统的安全性。攻击者通过木马或病毒监听到PIN码,并窃取到USBKey设备,就可以非法取得Key内私钥的使用权限。现有技术主要通过以下方法保护PIN码:(1)安装应用层键盘钩子PIN输入过程的安全性。在输入USBKeyPIN码时,应用层弹出PIN码UI窗口的同时安装WH_KEYBOARD或WH_KEYBOARD_LL键盘钩子,拦截及保护通过键盘输入的PIN码。但是,该方式仅能拦截应用层监听和截获键盘记录的行为,无法防护内核层键盘过滤驱动的对PIN码的监听行为。(2)替换已经存在的kbdclass键盘类驱动对象的分发函数的指针。直接Hook键盘类驱动的IRP_MJ_READ读请求处理分发函数KeyboardClassRead,实现过滤键盘读请求。但是,键盘类驱动要晚于绑定在键盘类驱动设备栈上的过滤驱动接收到键盘的IRP请求。若系统中安装了别的键盘类过滤驱动设备,则键盘类驱动的读请求处理的IRP信息都经过设备栈上的过滤驱动处理,键盘输入的PIN信息容易泄露。简单替换KeyboardClassRead分发函数,不利于驱动的安装卸载。键盘的读请求总处于“未完成”的状态,容易造成按键蓝屏崩溃。(3)在键盘设备栈中安装键盘类过滤设备,并将设备绑定到键盘类过滤驱动设备上,从内核驱动层监听及截获键盘的输入行为。但是,键盘按键时产生的IRP请求先发送给绑定在键盘过滤驱动设备上的过滤驱动。设备栈上可以存在多个过滤驱动设备,栈顶的键盘过滤驱动设备先收到IRP请求、获取键盘数据。设备栈上的数据与过滤驱动的安装先后有关。若其他的过滤驱动先获取到键盘数据,则会造成输入的PIN信息泄露。
技术实现思路
针对现有技术中存在的缺陷,本专利技术的目的在于提供一种安全输入和校验USBKeyPIN码的方法及模块,通过应用层在内核驱动内安装内核键盘钩子,防止病毒或木马程序对PIN码输入及校验过程的监听和截获行为,防止PIN信息泄露,提高使用USBKey时的安全性。为实现上述目的,本专利技术采用的技术方案如下:一种安全输入和校验USBKeyPIN码的方法,所述方法包括:安装内核键盘钩子、输入USBKeyPIN码、校验USBKeyPIN码和卸载内核键盘钩子;所述输入USBKeyPIN码包括:软键盘输入USBKeyPIN码和物理键盘输入USBKeyPIN码,所述软键盘输入USBKeyPIN码包括:USBKey的应用层对软键盘输入的PIN码进行编码,将编码后的PIN码以及对应的标识信息下发至所述USBKey的内核驱动;所述内核驱动根据编码后的PIN码的标识信息获取编码后的PIN码在所述内核驱动中的内存位置,对编码后的PIN码进行解析,将解析后的PIN码追加至该内存位置尾部,完成软键盘输入PIN码;所述物理键盘输入USBKeyPIN码包括:所述内核驱动通过当前安装的内核键盘钩子截获物理键盘输入的PIN码,根据当前PIN码的标识信息获取当前PIN码在所述内核驱动中的内存位置,将当前PIN码追加至该内存位置尾部,完成物理键盘输入PIN码;所述校验USBKeyPIN码包括:所述应用层向所述内核驱动发送校验PIN指令和当前PIN码的标识信息;所述内核驱动根据当前PIN码的标识信息获取当前PIN码在所述内核驱动中的内存位置,提取当前PIN码,将当前PIN码加密封装成密文信息后返回给所述应用层;所述应用层将所述密文信息转发至所述USBKey进行校验。进一步,如上所述的一种安全输入和校验USBKeyPIN码的方法,所述安装内核键盘钩子包括:当PIN输入窗口获取到焦点时,所述应用层打开内核驱动设备;当所述内核驱动设备成功打开时,所述应用层向所述内核驱动发送第一IOCtrl指令,启动内核键盘钩子;当启动内核键盘钩子时,所述应用层向所述内核驱动发送PIN码的标识信息,所述PIN码的标识信息包括:USBKey设备句柄信息、PIN输入窗口的进程及线程信息、PIN输入窗口句柄、PIN操作类型、PIN复杂度、PIN长度、随机数以及算法标识。进一步,如上所述的一种安全输入和校验USBKeyPIN码的方法,所述安装内核键盘钩子包括:所述内核驱动接收所述应用层下发的第一IOCtrl指令和所述PIN码的标识信息,启动内核键盘钩子;所述内核驱动启动内核键盘钩子包括:根据键盘类设备的名称查找键盘类驱动,记录键盘类驱动的起始地址以及空间范围,若未查找到键盘类驱动,则退出执行;根据USB类型键盘端口驱动的名称以及PS/2类型键盘端口驱动的名称打开对应的键盘端口驱动,若该两种键盘端口驱动均打开失败,则退出执行;依次遍历已查找到的键盘端口驱动对象上绑定的设备对象链,获取绑定的设备信息并判断设备扩展指针指向的地址空间是否位于键盘类驱动的地址范围内,用于查找绑定的键盘类驱动;记录所述设备扩展指向的键盘类驱动回调实例函数地址的指针,启用内核键盘钩子时,将指针替换为重写后的键盘类驱动回调实例函数地址;卸载内核键盘钩子时,将其恢复为记录的原始指针;根据所述PIN码的标识信息设置当前安装的内核键盘钩子的PIN码的标识信息。进一步,如上所述的一种安全输入和校验USBKeyPIN码的方法,所述软键盘输入USBKeyPIN码具体包括:所述应用层产生随机数,根据所述随机数建立所述软键盘与PIN码之间的映射关系,并对所述软键盘的布局进行随机分散,显示分散处理后的所述软键盘的UI窗口,通过IOCtrl与所述内核驱动通信,将所述随机数下发至所述内核驱动;所述应用层根据所述随机数对软键盘输入的PIN码进行编码,将编码后的PIN码以及对应的标识信息下发至所述USBKey的内核驱动;所述内核驱动根据编码后的PIN码的标识信息中的随机数对编码后的PIN码进行解析,根据该标识信息中的USBKey设备句柄信息、PIN输入窗口的进程信息、PIN输入窗口句柄和PIN操作类型查找内核驱动中的PIN码存放的内存位置,将解析后的PIN码追加至该内存位置尾部,完成软键盘输入字符。进一步,如上所述的一种安全输入和校验USBKeyPIN码的方法,所述物理键盘输入USBKeyPIN码具体包括:所述内核驱动通过当前安装的内核键盘钩子截获物理键盘输入的PIN码,根据当前PIN码的标识信息中的USBKey设备句柄信息、PIN输入窗口的进程信息、PIN输入窗口句柄和PIN操作类型在内存中分散本文档来自技高网
...

【技术保护点】
1.一种安全输入和校验USBKey PIN码的方法,其特征在于,所述方法包括:安装内核键盘钩子、输入USBKey PIN码、校验USBKey PIN码和卸载内核键盘钩子;/n所述输入USBKey PIN码包括:软键盘输入USBKey PIN码和物理键盘输入USBKey PIN码,所述软键盘输入USBKey PIN码包括:/nUSBKey的应用层对软键盘输入的PIN码进行编码,将编码后的PIN码以及对应的标识信息下发至所述USBKey的内核驱动;/n所述内核驱动根据编码后的PIN码的标识信息获取编码后的PIN码在所述内核驱动中的内存位置,对编码后的PIN码进行解析,将解析后的PIN码追加至该内存位置尾部,完成软键盘输入PIN码;/n所述物理键盘输入USBKey PIN码包括:/n所述内核驱动通过当前安装的内核键盘钩子截获物理键盘输入的PIN码,根据当前PIN码的标识信息获取当前PIN码在所述内核驱动中的内存位置,将当前PIN码追加至该内存位置尾部,完成物理键盘输入PIN码;/n所述校验USBKey PIN码包括:/n所述应用层向所述内核驱动发送校验PIN指令和当前PIN码的标识信息;/n所述内核驱动根据当前PIN码的标识信息获取当前PIN码在所述内核驱动中的内存位置,提取当前PIN码,将当前PIN码加密封装成密文信息后返回给所述应用层;/n所述应用层将所述密文信息转发至所述USBKey进行校验。/n...

【技术特征摘要】
1.一种安全输入和校验USBKeyPIN码的方法,其特征在于,所述方法包括:安装内核键盘钩子、输入USBKeyPIN码、校验USBKeyPIN码和卸载内核键盘钩子;
所述输入USBKeyPIN码包括:软键盘输入USBKeyPIN码和物理键盘输入USBKeyPIN码,所述软键盘输入USBKeyPIN码包括:
USBKey的应用层对软键盘输入的PIN码进行编码,将编码后的PIN码以及对应的标识信息下发至所述USBKey的内核驱动;
所述内核驱动根据编码后的PIN码的标识信息获取编码后的PIN码在所述内核驱动中的内存位置,对编码后的PIN码进行解析,将解析后的PIN码追加至该内存位置尾部,完成软键盘输入PIN码;
所述物理键盘输入USBKeyPIN码包括:
所述内核驱动通过当前安装的内核键盘钩子截获物理键盘输入的PIN码,根据当前PIN码的标识信息获取当前PIN码在所述内核驱动中的内存位置,将当前PIN码追加至该内存位置尾部,完成物理键盘输入PIN码;
所述校验USBKeyPIN码包括:
所述应用层向所述内核驱动发送校验PIN指令和当前PIN码的标识信息;
所述内核驱动根据当前PIN码的标识信息获取当前PIN码在所述内核驱动中的内存位置,提取当前PIN码,将当前PIN码加密封装成密文信息后返回给所述应用层;
所述应用层将所述密文信息转发至所述USBKey进行校验。


2.根据权利要求1所述的一种安全输入和校验USBKeyPIN码的方法,其特征在于,所述安装内核键盘钩子包括:
当PIN输入窗口获取到焦点时,所述应用层打开内核驱动设备;
当所述内核驱动设备成功打开时,所述应用层向所述内核驱动发送第一IOCtrl指令,启动内核键盘钩子;
当启动内核键盘钩子时,所述应用层向所述内核驱动发送PIN码的标识信息,所述PIN码的标识信息包括:USBKey设备句柄信息、PIN输入窗口的进程及线程信息、PIN输入窗口句柄、PIN操作类型、PIN复杂度、PIN长度、随机数以及算法标识。


3.根据权利要求2所述的一种安全输入和校验USBKeyPIN码的方法,其特征在于,所述安装内核键盘钩子包括:
所述内核驱动接收所述应用层下发的第一IOCtrl指令和所述PIN码的标识信息,启动内核键盘钩子;
所述内核驱动启动内核键盘钩子包括:
根据键盘类设备的名称查找键盘类驱动,记录键盘类驱动的起始地址以及空间范围,若未查找到键盘类驱动,则退出执行;
根据USB类型键盘端口驱动的名称以及PS/2类型键盘端口驱动的名称打开对应的键盘端口驱动,若该两种键盘端口驱动均打开失败,则退出执行;
依次遍历已查找到的键盘端口驱动对象上绑定的设备对象链,获取绑定的设备信息并判断设备扩展指针指向的地址空间是否位于键盘类驱动的地址范围内,用于查找绑定的键盘类驱动;
记录所述设备扩展指向的键盘类驱动回调实例函数地址的指针,启用内核键盘钩子时,将指针替换为重写后的键盘类驱动回调实例函数地址;卸载内核键盘钩子时,将其恢复为记录的原始指针;
根据所述PIN码的标识信息设置当前安装的内核键盘钩子的PIN码的标识信息。


4.根据权利要求2所述的一种安全输入和校验USBKeyPIN码的方法,其特征在于,所述软键盘输入USBKeyPIN码具体包括:
所述应用层产生随机数,根据所述随机数建立所述软键盘与PIN码之间的映射关系,并对所述软键盘的布局进行随机分散,显示分散处理后的所述软键盘的UI窗口,通过IOCtrl与所述内核驱动通信,将所述随机数下发至所述内核驱动;
所述应用层根据所述随机数对软键盘输入的PIN码进行编码,将编码后的PIN码以及对应的标识信息下发至所述USBKey的内核驱动;
所述内核驱动根据编码后的PIN码...

【专利技术属性】
技术研发人员:焦祥刘跃雷
申请(专利权)人:北京握奇数据股份有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1