CN111222128A - 一种安全输入和校验USBKey PIN码的方法及模块 - Google Patents

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

Info

Publication number
CN111222128A
CN111222128A CN201911405393.3A CN201911405393A CN111222128A CN 111222128 A CN111222128 A CN 111222128A CN 201911405393 A CN201911405393 A CN 201911405393A CN 111222128 A CN111222128 A CN 111222128A
Authority
CN
China
Prior art keywords
pin code
keyboard
usbkey
kernel
pin
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201911405393.3A
Other languages
English (en)
Inventor
焦祥
刘跃雷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Watchdata Co ltd
Original Assignee
Beijing Watchdata Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Watchdata Co ltd filed Critical Beijing Watchdata Co ltd
Priority to CN201911405393.3A priority Critical patent/CN111222128A/zh
Publication of CN111222128A publication Critical patent/CN111222128A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/45Structures or tools for the administration of authentication
    • G06F21/46Structures or tools for the administration of authentication by designing passwords or checking the strength of passwords
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/83Protecting input, output or interconnection devices input devices, e.g. keyboards, mice or controllers thereof

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)

Abstract

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

Description

一种安全输入和校验USBKey PIN码的方法及模块
技术领域
本发明涉及,具体涉及一种安全输入和校验USBKey PIN码的方法及模块。
背景技术
USBKey作为身份认证介质,广泛应用于身份认证以及金融领域转账交易等场景。其特点是私钥保存在USBKey内的安全存储区内,不允许出设备。
在使用USBKey进行身份认证或转账交易时,需要先校验USBKey的PIN码,取得USBKey用户权限才能使用Key内私钥进行签名或解密操作。PIN码的泄露则直接影响使用USBKey系统的安全性。攻击者通过木马或病毒监听到PIN码,并窃取到USBKey设备,就可以非法取得Key内私钥的使用权限。现有技术主要通过以下方法保护PIN码:
(1)安装应用层键盘钩子PIN输入过程的安全性。在输入USBKey PIN码时,应用层弹出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时的安全性。
为实现上述目的,本发明采用的技术方案如下:
一种安全输入和校验USBKey PIN码的方法,所述方法包括:安装内核键盘钩子、输入USBKey PIN码、校验USBKey PIN码和卸载内核键盘钩子;
所述输入USBKey PIN码包括:软键盘输入USBKey PIN码和物理键盘输入USBKeyPIN码,所述软键盘输入USBKey PIN码包括:
USBKey的应用层对软键盘输入的PIN码进行编码,将编码后的PIN码以及对应的标识信息下发至所述USBKey的内核驱动;
所述内核驱动根据编码后的PIN码的标识信息获取编码后的PIN码在所述内核驱动中的内存位置,对编码后的PIN码进行解析,将解析后的PIN码追加至该内存位置尾部,完成软键盘输入PIN码;
所述物理键盘输入USBKey PIN码包括:
所述内核驱动通过当前安装的内核键盘钩子截获物理键盘输入的PIN码,根据当前PIN码的标识信息获取当前PIN码在所述内核驱动中的内存位置,将当前PIN码追加至该内存位置尾部,完成物理键盘输入PIN码;
所述校验USBKey PIN码包括:
所述应用层向所述内核驱动发送校验PIN指令和当前PIN码的标识信息;
所述内核驱动根据当前PIN码的标识信息获取当前PIN码在所述内核驱动中的内存位置,提取当前PIN码,将当前PIN码加密封装成密文信息后返回给所述应用层;
所述应用层将所述密文信息转发至所述USBKey进行校验。
进一步,如上所述的一种安全输入和校验USBKey PIN码的方法,所述安装内核键盘钩子包括:
当PIN输入窗口获取到焦点时,所述应用层打开内核驱动设备;
当所述内核驱动设备成功打开时,所述应用层向所述内核驱动发送第一IOCtrl指令,启动内核键盘钩子;
当启动内核键盘钩子时,所述应用层向所述内核驱动发送PIN码的标识信息,所述PIN码的标识信息包括:USBKey设备句柄信息、PIN输入窗口的进程及线程信息、PIN输入窗口句柄、PIN操作类型、PIN复杂度、PIN长度、随机数以及算法标识。
进一步,如上所述的一种安全输入和校验USBKey PIN码的方法,所述安装内核键盘钩子包括:
所述内核驱动接收所述应用层下发的第一IOCtrl指令和所述PIN码的标识信息,启动内核键盘钩子;
所述内核驱动启动内核键盘钩子包括:
根据键盘类设备的名称查找键盘类驱动,记录键盘类驱动的起始地址以及空间范围,若未查找到键盘类驱动,则退出执行;
根据USB类型键盘端口驱动的名称以及PS/2类型键盘端口驱动的名称打开对应的键盘端口驱动,若该两种键盘端口驱动均打开失败,则退出执行;
依次遍历已查找到的键盘端口驱动对象上绑定的设备对象链,获取绑定的设备信息并判断设备扩展指针指向的地址空间是否位于键盘类驱动的地址范围内,用于查找绑定的键盘类驱动;
记录所述设备扩展指向的键盘类驱动回调实例函数地址的指针,启用内核键盘钩子时,将指针替换为重写后的键盘类驱动回调实例函数地址;卸载内核键盘钩子时,将其恢复为记录的原始指针;
根据所述PIN码的标识信息设置当前安装的内核键盘钩子的PIN码的标识信息。
进一步,如上所述的一种安全输入和校验USBKey PIN码的方法,所述软键盘输入USBKey PIN码具体包括:
所述应用层产生随机数,根据所述随机数建立所述软键盘与PIN码之间的映射关系,并对所述软键盘的布局进行随机分散,显示分散处理后的所述软键盘的UI窗口,通过IOCtrl与所述内核驱动通信,将所述随机数下发至所述内核驱动;
所述应用层根据所述随机数对软键盘输入的PIN码进行编码,将编码后的PIN码以及对应的标识信息下发至所述USBKey的内核驱动;
所述内核驱动根据编码后的PIN码的标识信息中的随机数对编码后的PIN码进行解析,根据该标识信息中的USBKey设备句柄信息、PIN输入窗口的进程信息、PIN输入窗口句柄和PIN操作类型查找内核驱动中的PIN码存放的内存位置,将解析后的PIN码追加至该内存位置尾部,完成软键盘输入字符。
进一步,如上所述的一种安全输入和校验USBKey PIN码的方法,所述物理键盘输入USBKey PIN码具体包括:
所述内核驱动通过当前安装的内核键盘钩子截获物理键盘输入的PIN码,根据当前PIN码的标识信息中的USBKey设备句柄信息、PIN输入窗口的进程信息、PIN输入窗口句柄和PIN操作类型在内存中分散存放当前PIN码。
进一步,如上所述的一种安全输入和校验USBKey PIN码的方法,所述内核驱动将当前PIN码加密封装成密文信息后返回给所述应用层包括:
所述内核驱动根据当前PIN码的标识信息中的算法标识将当前PIN码加密封装成密文信息后返回给所述应用层。
进一步,如上所述的一种安全输入和校验USBKey PIN码的方法,所述应用层将所述密文信息转发至所述USBKey进行校验包括:
所述应用层根据COS指令集将所述密文信息封装成校验PIN码的APDU指令后转发至所述USBKey;
所述USBKey通过片内操作系统COS对所述APDU指令中的所述密文信息进行PIN校验,将PIN校验结果返回给所述应用层。
进一步,如上所述的一种安全输入和校验USBKey PIN码的方法,所述卸载内核键盘钩子包括:
当所述PIN输入窗口失去焦点时,所述应用层向所述内核驱动发送第二IOCtrl指令,停用内核键盘钩子。
进一步,如上所述的一种安全输入和校验USBKey PIN码的方法,所述卸载内核键盘钩子包括:
当监测到所述PIN输入窗口的进程被强制结束或者异常退出时,所述内核驱动检查当前安装的内核键盘钩子的启用状态以及进程关联数据;
若当前退出的进程为启用内核键盘钩子的状态,则自动卸载当前安装的内核键盘钩子;
若当前退出的进程在所述内核驱动中存在已记录的键盘录入数据时,则清空该数据。
本发明实施例中还提供了一种安全输入和校验USBKey PIN码的系统,所述系统包括:安装内核键盘钩子模块、输入USBKey PIN码模块、校验USBKey PIN码模块和卸载内核键盘钩子模块;
所述输入USBKey PIN码模块包括:软键盘输入USBKey PIN码模块和物理键盘输入USBKey PIN码模块,所述软键盘输入USBKey PIN码模块用于:
USBKey的应用层对软键盘输入的PIN码进行编码,将编码后的PIN码以及对应的标识信息下发至所述USBKey的内核驱动;
所述内核驱动根据编码后的PIN码的标识信息获取编码后的PIN码在所述内核驱动中的内存位置,对编码后的PIN码进行解析,将解析后的PIN码追加至该内存位置尾部,完成软键盘输入PIN码;
所述物理键盘输入USBKey PIN码模块用于:
所述内核驱动通过当前安装的内核键盘钩子截获物理键盘输入的PIN码,根据当前PIN码的标识信息获取当前PIN码在所述内核驱动中的内存位置,将当前PIN码追加至该内存位置尾部,完成物理键盘输入PIN码;
所述校验USBKey PIN码模块用于:
所述应用层向所述内核驱动发送校验PIN指令和当前PIN码的标识信息;
所述内核驱动根据当前PIN码的标识信息获取当前PIN码在所述内核驱动中的内存位置,提取当前PIN码,将当前PIN码加密封装成密文信息后返回给所述应用层;
所述应用层将所述密文信息转发至所述USBKey进行校验。
本发明的有益效果在于:本发明所提供的方法及系统,通过应用层在内核驱动内安装内核键盘钩子,防止来自应用层和内核层的病毒或木马程序对PIN码输入及校验过程的监听和截获行为,防止PIN信息泄露,提高使用USBKey时的安全性。
附图说明
图1为本发明实施例中提供的校验USBKey PIN码的流程示意图;
图2为本发明实施例中提供的应用层安装内核键盘钩子的流程示意图;
图3为本发明实施例中提供的内核驱动安装内核键盘钩子的流程示意图;
图4为本发明实施例中提供的通过软键盘输入PIN码的流程示意图;
图5为本发明实施例中提供的校验USBKey PIN码的流程示意图。
具体实施方式
下面结合说明书附图与具体实施方式对本发明做进一步的详细说明。
本发明提供一种安全输入和校验USBKey PIN码的方法,方法包括:安装内核键盘钩子、输入USBKey PIN码、校验USBKey PIN码和卸载内核键盘钩子;
输入USBKey PIN码包括:软键盘输入USBKey PIN码和物理键盘输入USBKey PIN码,软键盘输入USBKey PIN码包括:
USBKey的应用层对软键盘输入的PIN码进行编码,将编码后的PIN码以及对应的标识信息下发至USBKey的内核驱动;
内核驱动根据编码后的PIN码的标识信息获取编码后的PIN码在内核驱动中的内存位置,对编码后的PIN码进行解析,将解析后的PIN码追加至该内存位置尾部,完成软键盘输入PIN码;
物理键盘输入USBKey PIN码包括:
内核驱动通过当前安装的内核键盘钩子截获物理键盘输入的PIN码,根据当前PIN码的标识信息获取当前PIN码在内核驱动中的内存位置,将当前PIN码追加至该内存位置尾部,完成物理键盘输入PIN码;
如图1所示,校验USBKey PIN码包括:
S1、应用层向内核驱动发送校验PIN指令和当前PIN码的标识信息;
S2、内核驱动根据当前PIN码的标识信息获取当前PIN码在内核驱动中的内存位置,提取当前PIN码,将当前PIN码加密封装成密文信息后返回给应用层;
S3、应用层将密文信息转发至USBKey进行校验。
应用层作为执行主体时,安装内核键盘钩子包括:
当PIN输入窗口获取到焦点时,应用层打开内核驱动设备;
当内核驱动设备成功打开时,应用层向内核驱动发送第一IOCtrl指令,启动内核键盘钩子;
当启动内核键盘钩子时,应用层向内核驱动发送PIN码的标识信息,PIN码的标识信息包括:USBKey设备句柄信息、PIN输入窗口的进程及线程信息、PIN输入窗口句柄、PIN操作类型、PIN复杂度、PIN长度、随机数以及算法标识。
内核驱动作为执行主体时,安装内核键盘钩子包括:
内核驱动接收应用层下发的第一IOCtrl指令和PIN码的标识信息,启动内核键盘钩子;
内核驱动启动内核键盘钩子包括:
根据键盘类设备的名称查找键盘类驱动,记录键盘类驱动的起始地址以及空间范围,若未查找到键盘类驱动,则退出执行;
根据USB类型键盘端口驱动的名称以及PS/2类型键盘端口驱动的名称打开对应的键盘端口驱动,若该两种键盘端口驱动均打开失败,则退出执行;
依次遍历已查找到的键盘端口驱动对象上绑定的设备对象链,获取绑定的设备信息并判断设备扩展指针指向的地址空间是否位于键盘类驱动的地址范围内,用于查找绑定的键盘类驱动;
记录设备扩展指向的键盘类驱动回调实例函数地址的指针,启用内核键盘钩子时,将指针替换为重写后的键盘类驱动回调实例函数地址;卸载内核键盘钩子时,将其恢复为记录的原始指针;
根据PIN码的标识信息设置当前安装的内核键盘钩子的PIN码的标识信息。
软键盘输入USBKey PIN码具体包括:
应用层产生随机数,根据随机数建立软键盘与PIN码之间的映射关系,并对软键盘的布局进行随机分散,显示分散处理后的软键盘的UI窗口,通过IOCtrl与内核驱动通信,将随机数下发至内核驱动;
应用层根据随机数对软键盘输入的PIN码进行编码,将编码后的PIN码以及对应的标识信息下发至USBKey的内核驱动;
内核驱动根据编码后的PIN码的标识信息中的随机数对编码后的PIN码进行解析,根据该标识信息中的USBKey设备句柄信息、PIN输入窗口的进程信息、PIN输入窗口句柄和PIN操作类型查找内核驱动中的PIN码存放的内存位置,将解析后的PIN码追加至该内存位置尾部,完成软键盘输入字符。
物理键盘输入USBKey PIN码具体包括:
内核驱动通过当前安装的内核键盘钩子截获物理键盘输入的PIN码,根据当前PIN码的标识信息中的USBKey设备句柄信息、PIN输入窗口的进程信息、PIN输入窗口句柄和PIN操作类型在内存中分散存放当前PIN码。
内核驱动将当前PIN码加密封装成密文信息后返回给应用层包括:
内核驱动根据当前PIN码的标识信息中的算法标识将当前PIN码加密封装成密文信息后返回给应用层。
步骤S3包括:
应用层根据COS指令集将密文信息封装成校验PIN码的APDU指令后转发至USBKey;
USBKey通过片内操作系统COS对APDU指令中的密文信息进行PIN校验,将PIN校验结果返回给应用层。
卸载内核键盘钩子包括两种处理方式:
第一种,卸载内核键盘钩子包括:
当PIN输入窗口失去焦点时,应用层向内核驱动发送第二IOCtrl指令,停用内核键盘钩子。
第二种,卸载内核键盘钩子包括:
当监测到PIN输入窗口的进程被强制结束或者异常退出时,内核驱动检查当前安装的内核键盘钩子的启用状态以及进程关联数据;
若当前退出的进程为启用内核键盘钩子的状态,则自动卸载当前安装的内核键盘钩子;
若当前退出的进程在内核驱动中存在已记录的键盘录入数据时,则清空该数据。
在Ring0内层实现USBKey中间件PIN保护模块(即内核驱动),应用层通过设备名称访问该内核设备。内核驱动的安装随USBKey管理工具一起安装,驱动服务随系统自启动。
在内核驱动中设置IRP_MJ_DEVICE_CONTROL的例程,向应用层的USBKey中间件提供控制接口,用于接收来自应用层的安装/卸载内核键盘钩子请求、设置随机因子、软键盘输入PIN操作、查询PIN信息(复杂度、PIN长度、字符集等)、校验PIN以及清空PIN等指令操作。重写系统内核驱动层的KbdClass键盘类驱动的回调实例,过滤键盘输入USBKey PIN码的行为,提高PIN码输入过程中安全性。
1)内核键盘钩子安装
内核键盘钩子的安装过程与PIN码输入窗口有关,仅在PIN码输入框焦点激活时才安装。
安装钩子过程分为:应用层处理及内核驱动层处理。
应用层处理:如图2所示,首先PIN输入窗口获取到焦点,尝试打开内核驱动设备,当设备打打开失败,则跳出;当内核驱动设备打开成功,则由应用层向内核驱动发送IOCtrl控制指令启动键盘钩子。在应用层启动内核键盘钩子时,将PIN码的标识信息发送至内核驱动。
PIN码的标识信息包括但不限于USBKey设备句柄信息、PIN窗口的进程及线程信息、PIN码输入框窗口句柄、PIN操作类型、PIN复杂度、PIN长度、随机数、算法标识等。
内核驱动层处理:如图3所示,内核驱动层接收应用层下发的IOCtrl指令,在内核中开启内核键盘钩子,其处理步骤见下:
1、首先,根据键盘类设备的名称\\Driver\\Kbdclass查找键盘类驱动,记录键盘类驱动起始地址以及空间范围;若键盘类设备不存在,则跳出;否则继续执行下一步。
2、根据USB类型键盘端口驱动的名称\\Driver\\Kbdhid以及PS/2类型键盘端口驱动的名称\\Driver\\i8042prt打开对应的键盘端口驱动。若打开该两种键盘端口驱动均失败,则跳出;否则继续下一步。
3、依次遍历在已找到的键盘端口驱动对象上绑定的设备对象链,获取绑定的设备信息并判断DeviceExtension设备扩展指针指向地址空间是否位于键盘类驱动的地址范围内,用于查找绑定的键盘类驱动。若已找到匹配的设备,则执行下一步;否则继续执行本流程,直至所有绑定的设备遍历结束。
4、记录DeviceExtension设备扩展指向键盘类驱动回调实例函数地址的指针,用于卸载键盘钩子时恢复原始函数指针,填充键盘类驱动对象,并将函数指针替换为重写后的键盘类驱动回调实例地址。
5、设置键盘钩子PIN码标识信息。PIN标识信息包括:主体进程、设备句柄、PIN操作类型(校验或修改PIN)、PIN类型(新PIN、PIN确认、旧PIN、校验PIN)、随机数、算法标识,用于区分不同USBKey设备、不同进程及线程、不同窗口、不同PIN类型。
2)输入PIN过程
PIN码的输入分为两种情况:
a.通过物理键盘输入:内核驱动接收通过键盘端口驱动发送键盘数据,进入到键盘类设备处理实例中。根据当前安装的内核键盘钩子的USBKey设备句柄、进程信息、PIN窗口、PIN操作类型等参数在内存中分散存放。
b.通过软键盘输入:
应用层准备:产生随机数,根据随机数建立软键盘按键与字符映射关系,随机分散和显示软键盘UI窗口;通过IOCtrl与内核驱动通信将随机数下发至内核驱动;
软键盘输入字符:用户点击软键盘,应用层将输入的字符进行编码转换并IOCtrl发送至内核驱动;
内核驱动处理:内核驱动接收应用的IOCtrl指令,随机因子还原实际输入PIN的字符,并根据USBKey设备句柄、进程信息、PIN窗口、PIN操作类型,查找PIN码的存放在系统内核层内存位置,并将提取到的PIN码信息追加至PIN码尾部,完成软键盘输入字符。如图4所示,具体流程如下:
1、应用层产生随机数并分散键盘,布局显示分散后的软键盘UI界面;
2、应用层通过IOCtrl与内核驱动通信,将随机数下发至内核驱动;
3、用户点击软键盘输入字符;
4、应用层对输入字符进行编码转化,通过IOCtrl下发至内核驱动;
5、内核驱动接收上层软键盘的IOCtrl命令,提取编码后的字符;
6、内核驱动利用随机数还原实际输入的PIN码,并将还原的PIN码追加至PIN码所在内存位置的尾部;
7、完成软键盘输入PIN码行为。
3)校验PIN
如图5所示,具体流程如下:
1、USBKey应用层中间件发送IOCtrl校验PIN指令,将当前PIN标识信息的线程句柄、窗口句柄、PIN类型等信息下发至内核驱动;
2、内核驱动接收应用层校验PIN码的IOCtrl命令,根据PIN标识信息提取PIN原文,加密封装成密文信息返回给应用层;
3、应用层调用USBKey中间件处理密文信息,并将处理后的数据按照APDU指令格式封装并下发至USBKey内;
4、USBKey内COS接收上层APDU指令校验PIN,并将校验的结果返回;
5、完成校验PIN码行为。
4)内核键盘钩子卸载
应用层的PIN码输入窗口失去焦点时,由应用层主动向内核驱动发送IOCtrl指令停用内核键盘钩子。
另一类特殊情况是PIN窗口所在进程被强制结束或者异常退出,由内核驱动处理。内核驱动主动监测到应用层进程的退出行为,立即检查内核键盘钩子启用状态以及进程关联数据信息。并做如下响应处理:
键盘钩子状态恢复:若当前退出的进程是启用内核键盘钩子的状态,则自动卸载内核键盘钩子,保障用户正常使用键盘设备;否则不处理。
进程关联数据清理:若查询到当前退出的进程在内核驱动中的存在记录的键盘录入数据时,则清空数据;否则不处理。
本发明实施例中还提供了一种安全输入和校验USBKey PIN码的系统,系统包括:安装内核键盘钩子模块、输入USBKey PIN码模块、校验USBKey PIN码模块和卸载内核键盘钩子模块;
输入USBKey PIN码模块包括:软键盘输入USBKey PIN码模块和物理键盘输入USBKey PIN码模块,软键盘输入USBKey PIN码模块用于:
USBKey的应用层对软键盘输入的PIN码进行编码,将编码后的PIN码以及对应的标识信息下发至USBKey的内核驱动;
内核驱动根据编码后的PIN码的标识信息获取编码后的PIN码在内核驱动中的内存位置,对编码后的PIN码进行解析,将解析后的PIN码追加至该内存位置尾部,完成软键盘输入PIN码;
物理键盘输入USBKey PIN码模块用于:
内核驱动通过当前安装的内核键盘钩子截获物理键盘输入的PIN码,根据当前PIN码的标识信息获取当前PIN码在内核驱动中的内存位置,将当前PIN码追加至该内存位置尾部,完成物理键盘输入PIN码;
校验USBKey PIN码模块用于:
应用层向内核驱动发送校验PIN指令和当前PIN码的标识信息;
内核驱动根据当前PIN码的标识信息获取当前PIN码在内核驱动中的内存位置,提取当前PIN码,将当前PIN码加密封装成密文信息后返回给应用层;
应用层将密文信息转发至USBKey进行校验。
本发明包括以下优点:
1)通过Ring0层内核驱动,实现物理键盘输入PIN码以及校验PIN过程的安全防护。
2)提供应用层软键盘UI,通过IOCtrl直接与内核通信输入PIN码,在数据传递过程使用随机数对键盘布局进行分散处理,并在内核中还原实际PIN码。
3)Ring0层内核驱动提供涉及的PIN操作包括但不限于PIN输入、PIN校验、修改PIN、查询PIN复杂度、查询PIN长度以及清空PIN数据等操作。
4)内核中基于USBKey PIN码标识的USBKey PIN处理方式,实现支持多设备、多进程、多种类型的PIN操作方式。
5)内核驱动自动监测应用层的进程异常退出,释放内核中存放的进程相关数据信息的处理方法。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其同等技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种安全输入和校验USBKey PIN码的方法,其特征在于,所述方法包括:安装内核键盘钩子、输入USBKey PIN码、校验USBKey PIN码和卸载内核键盘钩子;
所述输入USBKey PIN码包括:软键盘输入USBKey PIN码和物理键盘输入USBKey PIN码,所述软键盘输入USBKey PIN码包括:
USBKey的应用层对软键盘输入的PIN码进行编码,将编码后的PIN码以及对应的标识信息下发至所述USBKey的内核驱动;
所述内核驱动根据编码后的PIN码的标识信息获取编码后的PIN码在所述内核驱动中的内存位置,对编码后的PIN码进行解析,将解析后的PIN码追加至该内存位置尾部,完成软键盘输入PIN码;
所述物理键盘输入USBKey PIN码包括:
所述内核驱动通过当前安装的内核键盘钩子截获物理键盘输入的PIN码,根据当前PIN码的标识信息获取当前PIN码在所述内核驱动中的内存位置,将当前PIN码追加至该内存位置尾部,完成物理键盘输入PIN码;
所述校验USBKey PIN码包括:
所述应用层向所述内核驱动发送校验PIN指令和当前PIN码的标识信息;
所述内核驱动根据当前PIN码的标识信息获取当前PIN码在所述内核驱动中的内存位置,提取当前PIN码,将当前PIN码加密封装成密文信息后返回给所述应用层;
所述应用层将所述密文信息转发至所述USBKey进行校验。
2.根据权利要求1所述的一种安全输入和校验USBKey PIN码的方法,其特征在于,所述安装内核键盘钩子包括:
当PIN输入窗口获取到焦点时,所述应用层打开内核驱动设备;
当所述内核驱动设备成功打开时,所述应用层向所述内核驱动发送第一IOCtrl指令,启动内核键盘钩子;
当启动内核键盘钩子时,所述应用层向所述内核驱动发送PIN码的标识信息,所述PIN码的标识信息包括:USBKey设备句柄信息、PIN输入窗口的进程及线程信息、PIN输入窗口句柄、PIN操作类型、PIN复杂度、PIN长度、随机数以及算法标识。
3.根据权利要求2所述的一种安全输入和校验USBKey PIN码的方法,其特征在于,所述安装内核键盘钩子包括:
所述内核驱动接收所述应用层下发的第一IOCtrl指令和所述PIN码的标识信息,启动内核键盘钩子;
所述内核驱动启动内核键盘钩子包括:
根据键盘类设备的名称查找键盘类驱动,记录键盘类驱动的起始地址以及空间范围,若未查找到键盘类驱动,则退出执行;
根据USB类型键盘端口驱动的名称以及PS/2类型键盘端口驱动的名称打开对应的键盘端口驱动,若该两种键盘端口驱动均打开失败,则退出执行;
依次遍历已查找到的键盘端口驱动对象上绑定的设备对象链,获取绑定的设备信息并判断设备扩展指针指向的地址空间是否位于键盘类驱动的地址范围内,用于查找绑定的键盘类驱动;
记录所述设备扩展指向的键盘类驱动回调实例函数地址的指针,启用内核键盘钩子时,将指针替换为重写后的键盘类驱动回调实例函数地址;卸载内核键盘钩子时,将其恢复为记录的原始指针;
根据所述PIN码的标识信息设置当前安装的内核键盘钩子的PIN码的标识信息。
4.根据权利要求2所述的一种安全输入和校验USBKey PIN码的方法,其特征在于,所述软键盘输入USBKey PIN码具体包括:
所述应用层产生随机数,根据所述随机数建立所述软键盘与PIN码之间的映射关系,并对所述软键盘的布局进行随机分散,显示分散处理后的所述软键盘的UI窗口,通过IOCtrl与所述内核驱动通信,将所述随机数下发至所述内核驱动;
所述应用层根据所述随机数对软键盘输入的PIN码进行编码,将编码后的PIN码以及对应的标识信息下发至所述USBKey的内核驱动;
所述内核驱动根据编码后的PIN码的标识信息中的随机数对编码后的PIN码进行解析,根据该标识信息中的USBKey设备句柄信息、PIN输入窗口的进程信息、PIN输入窗口句柄和PIN操作类型查找内核驱动中的PIN码存放的内存位置,将解析后的PIN码追加至该内存位置尾部,完成软键盘输入字符。
5.根据权利要求2所述的一种安全输入和校验USBKey PIN码的方法,其特征在于,所述物理键盘输入USBKey PIN码具体包括:
所述内核驱动通过当前安装的内核键盘钩子截获物理键盘输入的PIN码,根据当前PIN码的标识信息中的USBKey设备句柄信息、PIN输入窗口的进程信息、PIN输入窗口句柄和PIN操作类型在内存中分散存放当前PIN码。
6.根据权利要求2所述的一种安全输入和校验USBKey PIN码的方法,其特征在于,所述内核驱动将当前PIN码加密封装成密文信息后返回给所述应用层包括:
所述内核驱动根据当前PIN码的标识信息中的算法标识将当前PIN码加密封装成密文信息后返回给所述应用层。
7.根据权利要求1所述的一种安全输入和校验USBKey PIN码的方法,其特征在于,所述应用层将所述密文信息转发至所述USBKey进行校验包括:
所述应用层根据COS指令集将所述密文信息封装成校验PIN码的APDU指令后转发至所述USBKey;
所述USBKey通过片内操作系统COS对所述APDU指令中的所述密文信息进行PIN校验,将PIN校验结果返回给所述应用层。
8.根据权利要求1-7任一项所述的一种安全输入和校验USBKey PIN码的方法,其特征在于,所述卸载内核键盘钩子包括:
当所述PIN输入窗口失去焦点时,所述应用层向所述内核驱动发送第二IOCtrl指令,停用内核键盘钩子。
9.根据权利要求1-7任一项所述的一种安全输入和校验USBKey PIN码的方法,其特征在于,所述卸载内核键盘钩子包括:
当监测到所述PIN输入窗口的进程被强制结束或者异常退出时,所述内核驱动检查当前安装的内核键盘钩子的启用状态以及进程关联数据;
若当前退出的进程为启用内核键盘钩子的状态,则自动卸载当前安装的内核键盘钩子;
若当前退出的进程在所述内核驱动中存在已记录的键盘录入数据时,则清空该数据。
10.一种安全输入和校验USBKey PIN码的系统,其特征在于,所述系统包括:安装内核键盘钩子模块、输入USBKey PIN码模块、校验USBKey PIN码模块和卸载内核键盘钩子模块;
所述输入USBKey PIN码模块包括:软键盘输入USBKey PIN码模块和物理键盘输入USBKey PIN码模块,所述软键盘输入USBKey PIN码模块用于:
USBKey的应用层对软键盘输入的PIN码进行编码,将编码后的PIN码以及对应的标识信息下发至所述USBKey的内核驱动;
所述内核驱动根据编码后的PIN码的标识信息获取编码后的PIN码在所述内核驱动中的内存位置,对编码后的PIN码进行解析,将解析后的PIN码追加至该内存位置尾部,完成软键盘输入PIN码;
所述物理键盘输入USBKey PIN码模块用于:
所述内核驱动通过当前安装的内核键盘钩子截获物理键盘输入的PIN码,根据当前PIN码的标识信息获取当前PIN码在所述内核驱动中的内存位置,将当前PIN码追加至该内存位置尾部,完成物理键盘输入PIN码;
所述校验USBKey PIN码模块用于:
所述应用层向所述内核驱动发送校验PIN指令和当前PIN码的标识信息;
所述内核驱动根据当前PIN码的标识信息获取当前PIN码在所述内核驱动中的内存位置,提取当前PIN码,将当前PIN码加密封装成密文信息后返回给所述应用层;
所述应用层将所述密文信息转发至所述USBKey进行校验。
CN201911405393.3A 2019-12-31 2019-12-31 一种安全输入和校验USBKey PIN码的方法及模块 Pending CN111222128A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911405393.3A CN111222128A (zh) 2019-12-31 2019-12-31 一种安全输入和校验USBKey PIN码的方法及模块

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911405393.3A CN111222128A (zh) 2019-12-31 2019-12-31 一种安全输入和校验USBKey PIN码的方法及模块

Publications (1)

Publication Number Publication Date
CN111222128A true CN111222128A (zh) 2020-06-02

Family

ID=70829239

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911405393.3A Pending CN111222128A (zh) 2019-12-31 2019-12-31 一种安全输入和校验USBKey PIN码的方法及模块

Country Status (1)

Country Link
CN (1) CN111222128A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112684914A (zh) * 2020-12-31 2021-04-20 深圳雷柏科技股份有限公司 基于内核驱动实现键鼠功能修改的方法及相关设备

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102222179A (zh) * 2010-04-13 2011-10-19 郑勇 一种基于Windows内核的反键盘记录技术
CN103107883A (zh) * 2013-01-04 2013-05-15 深圳市文鼎创数据科技有限公司 Pin码的安全防护方法及客户端
US20130278411A1 (en) * 2011-10-17 2013-10-24 Paul Roy DiBella Security system and devices for musical instruments, firearms, bicycles, and other objects
CN103577757A (zh) * 2013-11-15 2014-02-12 北京奇虎科技有限公司 病毒防御方法和装置
CN103605430A (zh) * 2013-12-03 2014-02-26 深圳雷柏科技股份有限公司 一种模拟键盘输入的方法及装置
CN103810413A (zh) * 2014-03-05 2014-05-21 上海动联信息技术股份有限公司 一种避免USBKey密码锁死的校验系统以及校验方法
CN104917763A (zh) * 2015-06-08 2015-09-16 飞天诚信科技股份有限公司 一种pin码缓存方法
CN104915602A (zh) * 2015-04-22 2015-09-16 飞天诚信科技股份有限公司 一种Android平台下的PIN码保护方法
CN105069351A (zh) * 2015-07-23 2015-11-18 浪潮电子信息产业股份有限公司 一种应用程序登录信息防盗取的装置及方法
CN105786740A (zh) * 2014-12-26 2016-07-20 北京握奇智能科技有限公司 一种USBKey
US20180041510A1 (en) * 2016-08-02 2018-02-08 Micro Focus Software Inc. Multi-factor authentication
CN109691016A (zh) * 2016-07-08 2019-04-26 卡列普顿国际有限公司 分布式事务处理及认证系统

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102222179A (zh) * 2010-04-13 2011-10-19 郑勇 一种基于Windows内核的反键盘记录技术
US20130278411A1 (en) * 2011-10-17 2013-10-24 Paul Roy DiBella Security system and devices for musical instruments, firearms, bicycles, and other objects
CN103107883A (zh) * 2013-01-04 2013-05-15 深圳市文鼎创数据科技有限公司 Pin码的安全防护方法及客户端
CN103577757A (zh) * 2013-11-15 2014-02-12 北京奇虎科技有限公司 病毒防御方法和装置
CN103605430A (zh) * 2013-12-03 2014-02-26 深圳雷柏科技股份有限公司 一种模拟键盘输入的方法及装置
CN103810413A (zh) * 2014-03-05 2014-05-21 上海动联信息技术股份有限公司 一种避免USBKey密码锁死的校验系统以及校验方法
CN105786740A (zh) * 2014-12-26 2016-07-20 北京握奇智能科技有限公司 一种USBKey
CN104915602A (zh) * 2015-04-22 2015-09-16 飞天诚信科技股份有限公司 一种Android平台下的PIN码保护方法
US20180025177A1 (en) * 2015-04-22 2018-01-25 Feitian Technologies Co., Ltd. Method for protecting pin code on android platform
CN104917763A (zh) * 2015-06-08 2015-09-16 飞天诚信科技股份有限公司 一种pin码缓存方法
CN105069351A (zh) * 2015-07-23 2015-11-18 浪潮电子信息产业股份有限公司 一种应用程序登录信息防盗取的装置及方法
CN109691016A (zh) * 2016-07-08 2019-04-26 卡列普顿国际有限公司 分布式事务处理及认证系统
US20180041510A1 (en) * 2016-08-02 2018-02-08 Micro Focus Software Inc. Multi-factor authentication

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
AHMED MAHGOUB等: "Effect of pin tool profile on mechanical and metallurgical properties in friction stir spot welding of pure copper", 2017 8TH INTERNATIONAL CONFERENCE ON MECHANICAL AND AEROSPACE ENGINEERING (ICMAE), 18 September 2017 (2017-09-18) *
JIA FAN等: "Design and implementation of protection process for USB Key", COMPUTER ENGINEERING AND APPLICATIONS, vol. 47, no. 15, 21 May 2011 (2011-05-21) *
李晶等: "基于短信和USB Key的网银安全认证方案", 计算机光盘软件与应用, vol. 2011, no. 23, 17 June 2012 (2012-06-17) *
贾凡;谢蒂;: "USB Key保护进程的设计与实现", 计算机工程与应用, vol. 47, no. 15, 21 May 2011 (2011-05-21) *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112684914A (zh) * 2020-12-31 2021-04-20 深圳雷柏科技股份有限公司 基于内核驱动实现键鼠功能修改的方法及相关设备
CN112684914B (zh) * 2020-12-31 2021-11-19 深圳雷柏科技股份有限公司 基于内核驱动实现键鼠功能修改的方法及相关设备

Similar Documents

Publication Publication Date Title
US12058154B2 (en) Real-time prevention of malicious content via dynamic analysis
US20200050765A1 (en) Methods and apparatus for identifying and removing malicious applications
US8863290B2 (en) Methods and devices for improving the reliability of communication between an aircraft and a remote system
CN101136049B (zh) 信息处理系统和信息处理方法
US7562160B2 (en) Storage device and method of setting configuration information of same
MX2010014464A (es) Sistema y metodo para el manejo seguro de memoria.
CN106612178A (zh) 保护Android adb数据传输安全的方法及装置
CN109241730B (zh) 一种容器风险的防御方法、装置、设备及可读存储介质
US10902122B2 (en) Just in time memory analysis for malware detection
CN115701019A (zh) 零信任网络的访问请求处理方法、装置及电子设备
CN111222128A (zh) 一种安全输入和校验USBKey PIN码的方法及模块
CN106951771B (zh) 一种安卓操作系统的移动终端使用方法
CN104955043A (zh) 一种智能终端安全防护系统
CN109785537B (zh) 一种atm机的安全防护方法及装置
US20240163264A1 (en) Real-time data encryption/decryption security system and method for network-based storage
US20190102541A1 (en) Apparatus and method for defending against unauthorized modification of programs
CN105278954A (zh) 反破解安卓app及其运行方式
CN104866761B (zh) 一种高安全性安卓智能终端
CN113162936B (zh) 一种防止异常动态分析的方法和系统
CN111814137B (zh) 终端的运维方法、运维系统及存储介质
CN115859337B (zh) 基于内核的防止设备破解方法、设备、服务器及介质
KR100846123B1 (ko) 키보드 보안 방법 및 상기 방법을 이용한 키보드 보안드라이버를 기록한 기록 매체
CN113849819B (zh) 命令行指令的处理方法、装置、计算机设备和存储介质
CN110515914B (zh) 一种基于自助终端设备的日志安全导出方法
CN111159018B (zh) 基于软件防护扩展指令sgx的在线模糊测试系统和方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination