【技术实现步骤摘要】
一种安全输入和校验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信 ...
【技术保护点】
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 ...
【技术特征摘要】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。