一种提高输入安全性的方法和装置转让专利

申请号 : CN201510685462.6

文献号 : CN105389506B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陆舟于华章

申请人 : 飞天诚信科技股份有限公司

摘要 :

本发明公开了一种提高输入安全性的方法和装置,涉及信息安全领域。所述装置包括键盘过滤驱动、NT驱动和安全输入插件,所述方法包括键盘过滤驱动对模拟键盘输入信息的过滤以及将真实的键盘输入信息存储在NT驱动中,安全输入插件通过发送验证码到NT驱动进行验证,并在验证通过后从NT驱动发来的返回结果中获得密码数据。本发明提供的方法和装置,可以有效保护用户从键盘上输入的密码等数据,具有安全方便的特点。

权利要求 :

1.一种提高输入安全性的方法,其特征在于,包括:

当键盘过滤驱动接收到键盘输入信息时,执行步骤a1至步骤a3:步骤a1,所述键盘过滤驱动判断所述键盘输入信息是否为模拟键盘输入信息,是则执行步骤a2,否则执行步骤a3;

步骤a2,所述键盘过滤驱动清除当前存储的模拟键盘输入信息,等待接收下一个键盘输入信息;

步骤a3,所述键盘过滤驱动产生键盘输入信息,将接收到的键盘输入信息与产生的键盘输入信息一同存入NT驱动密码存储队列的末尾地址,并将产生的键盘输入信息返回给系统键盘线程;

所述步骤a3还包括,系统根据所述产生的键盘输入信息转换得到键盘输入发送到安全输入插件;

当安全输入插件接收到所述键盘输入时,执行步骤b1和步骤b2:步骤b1,所述安全输入插件对接收到的键盘输入加密处理形成验证码,将所述验证码发送给NT驱动;

步骤b2,所述安全输入插件接收所述NT驱动的返回结果,从所述返回结果中获取明文密码,对所述明文密码进行加密得到密文密码并保存,在安全输入插件创建的输入框中显示指定字符,并将所述输入框中的光标的位置移动到所述指定字符之后。

2.如权利要求1所述的方法,其特征在于,还包括:

当所述安全输入插件接收到光标出现提醒消息时,执行步骤S1-步骤S3;

步骤S1,所述安全输入插件链接NT驱动,并向NT驱动发送键盘过滤请求;

步骤S2,所述安全输入插件接收所述NT驱动返回的过滤请求响应;

步骤S3,所述安全输入插件等待键盘输入;

当所述安全输入插件接收到光标消失提醒消息时,执行步骤S4-步骤S5;

步骤S4,所述安全输入插件向所述NT驱动发送关闭键盘过滤请求;

步骤S5,所述安全输入插件接收所述NT驱动返回的已关闭消息响应;

当所述安全输入插件接收到外部应用发来的获取输入数据请求时,对保存的密文密码解密得到明文密码,使用用户指定密钥对所述明文密码加密后传递给外部应用。

3.如权利要求2所述的方法,其特征在于,还包括:

当所述NT驱动接收到所述键盘过滤请求时,执行:开启键盘过滤开关,向所述安全输入插件返回过滤请求响应;

当所述NT驱动接收到所述关闭键盘过滤请求时,执行:关闭键盘过滤开关,向所述安全输入插件返回已关闭消息响应。

4.如权利要求1所述的方法,其特征在于,还包括:

所述NT驱动接收所述安全输入插件发送的验证码,对所述验证码进行解密得到解密结果,根据NT驱动密码存储队列中首地址存储的内容所对应的索引内容判断所述解密结果是否正确,是则所述NT驱动从NT驱动密码存储队列中首地址存储的内容中获取键盘输入信息,然后删除NT驱动密码存储队列中首地址存储的内容,并对所述键盘输入信息进行加密处理得到返回结果返回给所述安全输入插件;否则所述NT驱动删除NT驱动密码存储队列中首地址存储的内容。

5.如权利要求1所述的方法,其特征在于,所述键盘输入信息中包含有按键标识、按键扫描码,所述步骤a1具体包括:步骤i1,判断键盘过滤开关是否打开,是则执行步骤i2,否则键盘过滤驱动将所述键盘输入信息返回给系统键盘线程,结束;

步骤i2,判断按键发送标识是否置位,是则执行步骤i3,否则执行步骤i5;

步骤i3,判断所述键盘输入信息中的按键标识的值是否等于预设数值,是则执行步骤i4,否则执行步骤i5;

步骤i4,判断所述键盘输入信息中的按键扫描码是否与当前存储的模拟键盘输入信息中的按键扫描码匹配,是则确定所述键盘输入信息为模拟键盘输入信息,复位按键发送标识,执行步骤a2,否则执行步骤i5;

步骤i5,判断所述键盘输入信息是否为可见字符,是则执行步骤a3,否则键盘过滤驱动将所述键盘输入信息返回给系统键盘线程,结束。

6.如权利要求1所述的方法,其特征在于,所述键盘输入信息中包含有按键标识、按键扫描码和扩展标识,所述步骤a1具体包括:步骤e1,判断键盘过滤开关是否打开,是则执行步骤e2,否则键盘过滤驱动将所述键盘输入信息返回给系统键盘线程,结束;

步骤e2,判断所述键盘输入信息中的按键标识的值是否等于预设数值,是则执行步骤e3,否则执行步骤e4;

步骤e3,判断扩展标识是否置位,是则将按键标识的值更新为其当前值加2,复位扩展标识,执行步骤e4,否则执行步骤e4;

步骤e4,判断按键发送标识是否置位,是则执行步骤e5,否则执行步骤e9;

步骤e5,判断所述按键标识的值是否等于预设数值或预设数值加2,是则执行步骤e6,否则执行步骤e9;

步骤e6,判断所述键盘输入信息中的按键扫描码是否与当前存储的模拟键盘输入信息中的按键扫描码相等,是则执行步骤e7,否则执行步骤e9;

步骤e7,判断所述按键标识是否与当前存储的模拟键盘输入信息中的按键标识相等,是则置位扩展标识后执行步骤e8,否则执行步骤e8;

步骤e8,确定所述键盘输入信息为模拟键盘输入信息,复位按键发送标识,执行步骤a2;

步骤e9,判断所述键盘输入信息是否为可见字符,是则执行步骤a3,否则键盘过滤驱动将所述键盘输入信息返回给系统键盘线程,结束。

7.一种提高输入安全性的装置,其特征在于,包括安全输入插件、NT驱动和键盘过滤驱动;

所述键盘过滤驱动包括第一接收模块、判断模块,清除模块、存储模块和运行模块;

所述第一接收模块,用于接收键盘输入信息;

所述判断模块,用于判断所述键盘输入信息是否为模拟键盘输入信息,是则触发清除模块工作,否则触发运行模块工作;

所述清除模块,用于清除当前存储的模拟键盘输入信息;

所述运行模块,用于产生键盘输入信息,将所述第一接收模块接收到的键盘输入信息与产生的键盘输入信息一同存入NT驱动密码存储队列的末尾地址,并将产生的键盘输入信息返回给系统键盘线程;

所述存储模块,用于存储模拟键盘输入信息;

所述安全输入插件包括第二接收模块、加解密模块和输入框显示模块;

所述第二接收模块,用于接收系统发送来的根据所述产生的键盘输入信息转换得到的键盘输入,并触发加解密模块工作;

所述加解密模块,用于对所述第二接收模块接收到的所述键盘输入加密处理形成验证码,并发送给NT驱动;用于接收所述NT驱动的返回结果,并从所述返回结果中获取明文密码,对所述明文密码进行加密得到密文密码;

所述输入框显示模块;用于显示指定字符和光标。

8.如权利要求7所述的装置,其特征在于:所述安全输入插件还包括链接模块和传送模块;

所述第二接收模块,还用于接收光标出现提醒消息和光标消失提醒消息,并触发链接模块工作;

所述链接模块,用于当所述接收模块接收到光标出现提醒消息时,链接NT驱动,并向NT驱动发送键盘过滤请求,以及接收所述NT驱动返回的过滤请求响应;用于当所述第二接收模块接收到光标消失提醒消息时,向NT驱动发送关闭键盘过滤请求,以及接收所述NT驱动返回的已关闭消息响应;

所述第二接收模块,还用于接收获取输入数据请求,并触发传送模块工作;所述加解密模块,还用于当所述第二接收模块接收到所述获取输入数据请求时,对所述密文密码解密得到明文密码,并使用用户指定密钥对所述明文密码加密;

所述传送模块,用于当所述第二接收模块接收到所述获取输入数据请求时,将经所述加解密模块加密后的明文密码传递给外部应用。

9.如权利要求8所述的装置,其特征在于:所述NT驱动包括第三接收模块、处理模块和发送模块;

所述第三接收模块,用于接收所述安全输入插件发来的键盘过滤请求和关闭键盘过滤请求,并触发处理模块工作;

所述处理模块,用于当所述第三接收模块接收到所述键盘过滤请求时,开启键盘过滤开关并触发发送模块工作,用于当所述第三接收模块接收到所述关闭键盘过滤请求时,关闭键盘过滤开关,并触发发送模块工作;

所述发送模块,用于向所述安全输入插件发送过滤请求响应和已关闭消息响应。

10.如权利要求7所述的装置,其特征在于:所述NT驱动包括加解密子模块、判断子模块和删除子模块;

所述加解密子模块,用于接收所述安全输入插件发送的验证码,对所述验证码进行解密得到解密结果,并触发判断子模块工作;用于对所述判断子模块获取的键盘输入信息进行加密处理得到返回结果返回给所述安全输入插件;

所述判断子模块,用于判断所述解密结果是否正确,是则从NT驱动密码存储队列中首地址存储的内容中获取键盘输入信息然后触发删除子模块和加解密子模块工作,否则直接触发删除子模块工作;

所述删除子模块,用于删除NT驱动密码存储队列中首地址存储的内容。

11.如权利要求10所述的装置,其特征在于:所述判断模块包括第一判断单元、第二判断单元、第三判断单元、第四判断单元和第五判断单元;

所述第一判断单元,用于判断键盘过滤开关是否打开,是则触发第二判断单元工作,否则将所述键盘输入信息返回给系统键盘线程;

所述第二判断单元,用于判断按键发送标识是否置位,是则触发第三判断单元工作,否则触发第五判断单元工作;

所述第三判断单元,用于判断所述键盘输入信息中的按键标识的值是否等于预设数值,是则触发第四判断单元工作,否则触发第五判断单元工作;

所述第四判断单元,用于判断所述键盘输入信息中的按键扫描码是否与当前存储的模拟键盘输入信息中的按键扫描码相等,是则确定所述键盘输入信息为模拟键盘输入信息,复位按键发送标识,触发所述清除模块工作;否则触发第五判断单元工作;

所述第五判断单元,用于判断所述键盘输入信息是否为可见字符,是则触发所述运行模块工作,否则将所述键盘输入信息返回给系统键盘线程。

12.如权利要求10所述的装置,其特征在于:所述判断模块包括第一判断单元、第二判断单元、第三判断单元、第四判断单元、第五判断单元、第六判断单元、第七判断单元和第八判断单元;

所述第一判断单元,用于判断键盘过滤开关是否打开,是则触发第二判断单元工作,否则将所述键盘输入信息返回给系统键盘线程;

所述第二判断单元,用于判断所述键盘输入信息中的按键标识的值是否等于预设数值,是则触发第三判断单元工作,否则触发第四判断单元工作;

所述第三判断单元,用于判断扩展标识是否置位,是则将按键标识的值更新为其当前值加2,复位扩展标识,然后触发第四判断单元工作,否则直接触发第四判断单元工作;

所述第四判断单元,用于判断按键发送标识是否置位,是则触发第五判断单元工作,否则触发第八判断单元工作;

所述第五判断单元,用于判断所述按键标识的值是否等于预设数值或预设数值加2,是则触发第六判断单元工作,否则触发第八判断单元工作;

所述第六判断单元,用于判断所述键盘输入信息中的按键扫描码是否与当前存储的模拟键盘输入信息中的按键扫描码相等,是则触发第七判断单元工作,否则触发第八判断单元工作;

所述第七判断单元,用于判断所述按键标识是否与当前存储的模拟键盘输入信息中的按键标识相等,是则置位扩展标识,确定所述键盘输入信息为模拟键盘输入信息,复位按键发送标识,并触发所述清除模块工作;否则触发第八判断单元工作;

所述第八判断单元,用于判断所述键盘输入信息是否为可见字符,是则触发所述运行模块工作,否则将所述键盘输入信息返回给系统键盘线程。

说明书 :

一种提高输入安全性的方法和装置

技术领域

[0001] 本发明涉及信息安全领域,尤其涉及一种提高输入安全性的方法和装置。

背景技术

[0002] 随着网络技术的发展,电子商务正在以惊人的速度发展,同时,黑客的攻击、病毒和木马程序的泛滥,使得网络的安全性日渐受到挑战。特别是目前流行的网络大盗奇迹变种,以及KeyLogger等木马程序,以记录按键信息为手段,盗取银行密码,非法获取他人资金,给用户造成了较大损失。现有技术中,Windows系统下,NT驱动用于为键盘设备创建键盘驱动设备对象,并为所创建的键盘驱动设备对象提供所需要的驱动分发处理函数,并且可以对安全输入插件的请求作出响应,当用户在键盘设备上输入按键信息时,键盘过滤驱动对象在NT驱动提供的驱动分发处理函数中将键盘设备上输入的按键信息存储到NT驱动,安全输入插件通过向NT驱动发送请求获取到按键信息,并在输入框中进行显示,在按键信息从键盘设备达到输入框的过程中,目前通常采用的安全措施也仅是进行了简单的加解密。
[0003] 因此,为了防范在键盘上输入的内容如用户账号、密码等被截获,提出一种更高安全级别的能够有效保护输入的密码等信息的方法,成为目前要解决的安全问题。

发明内容

[0004] 为了防范键盘输入信息被截获,本发明提供了一种提高输入安全性的方法和装置,其具有安全方便的特点。
[0005] 本发明采用的技术方案如下:
[0006] 本发明提供的一种提高输入安全性的方法,包括:
[0007] 当键盘过滤驱动接收到键盘输入信息时,执行步骤a1至步骤a3:
[0008] 步骤a1,所述键盘过滤驱动判断所述键盘输入信息是否为模拟键盘输入信息,是则执行步骤a2,否则执行步骤a3;
[0009] 步骤a2,键盘过滤驱动清除当前存储的模拟键盘输入信息,等待接收下一个键盘输入信息;
[0010] 步骤a3,键盘过滤驱动产生键盘输入信息,将接收到的键盘输入信息与产生的键盘输入信息一同存入NT驱动密码存储队列的末尾地址,并将产生的键盘输入信息返回给系统键盘线程;系统根据所述产生的键盘输入信息转换得到键盘输入发送到安全输入插件。
[0011] 当安全输入插件接收到键盘输入时,执行步骤b1和步骤b2:
[0012] 步骤b1,所述安全输入插件对接收到的键盘输入加密处理形成验证码,将所述验证码发送给NT驱动;
[0013] 所述NT驱动接收所述安全输入插件发送的验证码,对所述验证码进行解密得到解密结果,判断所述解密结果是否正确,是则所述NT驱动从NT驱动密码存储队列中首地址存储的内容中获取键盘输入信息,然后删除NT驱动密码存储队列中首地址存储的内容,并对所述键盘输入信息进行加密处理得到返回结果返回给所述安全输入插件;否则所述NT驱动删除NT驱动密码存储队列中首地址存储的内容。
[0014] 步骤b2,所述安全输入插件接收所述NT驱动的返回结果,从所述返回结果中获取明文密码,对所述明文密码进行加密得到密文密码并保存,在安全输入插件创建的输入框中显示一个指定字符,并将所述输入框中的光标的位置移动到所述指定字符之后。
[0015] 当所述安全输入插件接收到外部应用发来的获取输入数据请求时,对保存的密文密码解密得到明文密码,使用用户指定密钥对所述明文密码加密后传递给外部应用。
[0016] 本发明提供的一种提高输入安全性的装置,包括安全输入插件、NT驱动和键盘过滤驱动;
[0017] 所述键盘过滤驱动包括第一接收模块、判断模块,清除模块、存储模块和运行模块;
[0018] 所述第一接收模块,用于接收键盘输入信息;
[0019] 所述判断模块,用于判断所述键盘输入信息是否为模拟键盘输入信息,是则触发清除模块工作,否则触发运行模块工作;
[0020] 所述清除模块,用于清除当前存储的模拟键盘输入信息;
[0021] 所述运行模块,用于产生键盘输入信息,将所述第一接收模块接收到的键盘输入信息与产生的键盘输入信息一同存入NT驱动密码存储队列的末尾地址,并将产生的键盘输入信息返回给系统键盘线程;
[0022] 所述存储模块,用于存储模拟键盘输入信息;
[0023] 所述安全输入插件包括第二接收模块、加解密模块和输入框显示模块;
[0024] 所述第二接收模块,用于接收键盘输入,并触发加解密模块工作;具体用于接收系统发来的根据所述产生的键盘输入信息转换得到的键盘输入,并触发加解密模块工作。
[0025] 所述加解密模块,用于对所述第二接收模块接收到的所述键盘输入加密处理形成验证码,并发送给NT驱动;用于接收所述NT驱动的返回结果,并从所述返回结果中获取明文密码,对所述明文密码进行加密得到密文密码;
[0026] 所述输入框显示模块;用于显示指定字符和光标。
[0027] 所述安全输入插件还包括链接模块和传送模块;
[0028] 所述第二接收模块,还用于接收光标出现提醒消息和光标消失提醒消息,并触发链接模块工作;
[0029] 所述链接模块,用于当所述接收模块接收到光标出现提醒消息时,链接NT驱动,并向NT驱动发送键盘过滤请求,以及接收所述NT驱动返回的过滤请求响应;用于当所述接收模块接收到光标消失提醒消息时,向NT驱动发送关闭键盘过滤请求,以及接收所述NT驱动返回的已关闭消息响应;
[0030] 所述第二接收模块,还用于接收获取输入数据请求,并触发传送模块工作;所述加解密模块,还用于当所述第二接收模块接收到所述获取输入数据请求时,对所述密文密码解密得到明文密码,并使用用户指定密钥对所述明文密码加密;
[0031] 所述传送模块,用于当所述接收模块接收到所述获取输入数据请求时,将经所述加解密模块加密后的明文密码传递给外部应用。
[0032] 所述NT驱动包括第三接收模块、处理模块和发送模块;
[0033] 所述第三接收模块,用于接收所述安全输入插件发来的键盘过滤请求和关闭键盘过滤请求,并触发处理模块工作;
[0034] 所述处理模块,用于当所述第三接收模块接收到所述键盘过滤请求时,开启键盘过滤开关并触发发送模块工作,用于当所述第三接收模块接收到所述关闭键盘过滤请求时,关闭键盘过滤开关,并触发发送模块工作;
[0035] 所述发送模块,用于向所述安全输入插件发送过滤请求响应和已关闭消息响应。
[0036] 所述NT驱动包括加解密子模块、判断子模块和删除子模块;
[0037] 所述加解密子模块,用于接收所述安全输入插件发送的验证码,对所述验证码进行解密得到解密结果,并触发判断子模块工作;用于对所述判断子模块获取的键盘输入信息进行加密处理得到返回结果返回给所述安全输入插件;
[0038] 所述判断子模块,用于判断所述解密结果是否正确,是则从NT驱动密码存储队列中首地址存储的内容中获取键盘输入信息然后触发删除子模块和加解密子模块工作,否则直接触发删除子模块工作;
[0039] 所述删除子模块,用于删除NT驱动密码存储队列中首地址存储的内容。
[0040] 本发明提供的提高输入安全性的方法和装置,通过过滤机制和加解密机制来保障用户的按键输入和传递给应用程序的信息的一致性,尤其对提高用户按键输入的密码等敏感信息的安全性有重大意义。

附图说明

[0041] 图1是实施例1提供的一种提高输入安全性的方法流程图;
[0042] 图2是实施例1提供的方法中当键盘过滤驱动接收到键盘输入信息时的处理流程图;
[0043] 图3是图2所示内容适用于PS2键盘时的细化流程图;
[0044] 图4是图2所示内容适用于USB键盘时的细化流程图;
[0045] 图5是实施例2提供的一种提高输入安全性的装置组成框图。

具体实施方式

[0046] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0047] 实施例1
[0048] 本实施例提供了一种提高输入安全性的方法,以用户通过物理键盘(如USB键盘或PS2键盘)进行的输入为例进行详细说明,如图1所示,包括:
[0049] 步骤101:安全输入插件接收到光标出现提醒消息,链接NT驱动,并向NT驱动发送键盘过滤请求;
[0050] 具体的,安全输入插件链接NT驱动时,NT驱动根据当前键盘设备,为每一个键盘设备创建一个键盘驱动设备对象,当用户通过键盘设备发生键盘输入时,则对应的键盘驱动设备对象会自动接收各种信息,并做出响应。
[0051] 在Windows系统中,NT驱动加载时运行的是NT驱动设备,对于键盘设备,则需在NT驱动下增加相应的功能驱动来运行。本实施例中优选的,当键盘设备如USB键盘插入到主机时,NT驱动会为该键盘设备加载键盘过滤驱动,当键盘设备发生键盘输入时,NT驱动会为该键盘设备创建对应的键盘驱动设备对象。当键盘设备拔出时,NT驱动将自动删除该键盘设备对应的键盘驱动设备对象。
[0052] 步骤102:NT驱动接收到所述键盘过滤请求后,开启键盘过滤开关,并向安全输入插件返回过滤请求响应;
[0053] 步骤103:安全输入插件接收NT驱动返回的过滤请求响应;
[0054] 步骤104:安全输入插件等待键盘输入;
[0055] 当安全输入插件接收到键盘输入时,执行步骤105;
[0056] 具体的,当键盘设备上有按键被按下时,根据按键对应字符组成的自定义结构的键盘输入信息会传递到NT驱动下加载的键盘过滤驱动,最后由NT驱动传递一个键盘输入给安全输入插件,安全输入插件收到的键盘输入为一个字符。
[0057] 优选的,当键盘设备上的按键被按下,键盘过滤驱动接收到键盘输入信息时,如图2所示,执行以下步骤;
[0058] 本实施例中具体的,键盘过滤驱动接收到的键盘输入信息的结构如下:
[0059]
[0060]
[0061] 其中,按键按下时Flags=0,按键弹起时Flags=1。PS2键盘对应的Unitld=0,USB键盘对应的Unitld=1。
[0062] 步骤104-1:键盘过滤驱动判断接收到的键盘输入信息是否为模拟键盘输入信息,是则执行步骤104-2,否则执行步骤104-3;
[0063] 具体的,键盘过滤驱动将接收到的键盘输入信息与当前存储的数据进行比较,若存在一致的数据则判断为接收到的键盘输入信息是模拟键盘输入信息,否则不是。
[0064] 优选的,如果是PS2键盘,则键盘过滤驱动不间断、不定时地往键盘控制器芯片的端口发送干扰字节,系统自动将该干扰字节识别为模拟的键盘输入信息结构体数据,并通过回调函数写入到系统键盘类驱动kbdclass,再由kbdclass经由键盘过滤驱动发给系统键盘线程;若是USB键盘,则键盘过滤驱动不间断、不定时地通过回调函数向kbdclass写入模拟的键盘输入信息结构体数据,再由kbdclass经由键盘过滤驱动发给系统键盘线程,相应的,键盘过滤驱动会记录并存储向kbdclass发送的数据,并当键盘过滤驱动接收到kbdclass发送的模拟键盘输入信息时,将其与当前存储的数据进行比较,进而实现过滤模拟键盘输入信息的目的。
[0065] 例如,当用户按下按键‘1’时,其对应的按键扫描码为2,则键盘过滤驱动接收到的键盘输入信息为:
[0066] UnitId=0;
[0067] MakeCode=2;
[0068] Flags=0;
[0069] Reserved=0;
[0070] ExtraInformation=0;
[0071] 另一方面,若当前键盘为PS2键盘,键盘过滤驱动向键盘控制器芯片的端口发送的干扰字节为0x0a和0x8a,键盘过滤驱动当前存储的模拟键盘输入信息为:
[0072] UnitId=0;
[0073] MakeCode=10;
[0074] Flags=0;
[0075] Reserved=0;
[0076] ExtraInformation=0;
[0077] 和
[0078] UnitId=0;
[0079] MakeCode=10;
[0080] Flags=1;
[0081] Reserved=0;
[0082] ExtraInformation=0;
[0083] 若当前键盘为USB键盘,则键盘过滤驱动当前存储的模拟键盘输入信息为:
[0084] UnitId=1;
[0085] MakeCode=10;
[0086] Flags=0;
[0087] Reserved=0;
[0088] ExtraInformation=0;
[0089] 和
[0090] UnitId=1;
[0091] MakeCode=10;
[0092] Flags=1;
[0093] Reserved=0;
[0094] ExtraInformation=0;
[0095] 步骤104-2:键盘过滤驱动清除当前存储的模拟键盘输入信息,执行步骤104;
[0096] 步骤104-3:键盘过滤驱动产生一个键盘输入信息,将接收到的键盘输入信息与产生的键盘输入信息存入NT驱动密码存储队列的末尾地址,并将产生的键盘输入信息返回给系统键盘线程,由系统通过消息机制根据产生的键盘输入信息得到键盘输入发送到安全输入插件,然后执行步骤105;
[0097] 具体的,键盘过滤驱动根据接收到的键盘输入信息产生一个键盘输入信息,产生的键盘输入信息中的按键扫描码根据接收到的键盘输入信息中的按键扫描码确定。进一步的,系统键盘线程接收到键盘过滤驱动发来的所述产生的键盘输入信息时,会自动将其转换为一个正确的字符作为键盘输入返回给安全输入插件。
[0098] 例如,接收到键盘输入信息中的按键扫描码是2,产生的键盘输入信息中的按键扫描码是3。
[0099] 优选将键盘输入信息中的重要内容存入NT驱动密码存储队列的末尾地址,本步骤存入NT驱动密码存储队列的末尾地址的信息的结构如下:
[0100] //接收到的键盘输入信息:
[0101]
[0102] //产生的键盘输入信息:
[0103] USHORT       m_RndCode;     //按键扫描码
[0104] USHORT       m_RndCodeIndex;  //校验码索引
[0105] USHORT       m_RndCodeTab;  //校验码表格索引
[0106] 例如,本步骤接收到的键盘输入信息为:
[0107] UnitId=1;
[0108] MakeCode=2;
[0109] Flags=0;
[0110] Reserved=0;
[0111] ExtraInformation=0;
[0112] 本步骤产生的键盘输入信息为:
[0113] UnitId=1;
[0114] MakeCode=3;
[0115] Flags=0;
[0116] Reserved=0;
[0117] ExtraInformation=0;
[0118] 存入到所述末尾地址的内容为:
[0119] m_Code=2;m_CodeIndex=3;m_CodeTab=10;Flags=0;
[0120] m_RndCode=3;m_RndCodeIndex=5;m_RndCodeTab=10;
[0121] 发送到安全输入插件的键盘输入为字符2(对应ASCII码为50)。需说明的是,发送到安全输入插件的为字符2还是字符@是由系统决定的。
[0122] 当安全输入插件接收到光标消失提醒消息时,执行步骤110;
[0123] 步骤105:安全输入插件使用协商密钥对所述键盘输入加密处理形成验证码,将所述验证码发送给NT驱动;
[0124] 具体的,安全输入插件接收到键盘输入时,还包括安全输入插件与NT驱动协商产生协商密钥的过程。例如,安全输入插件产生一个随机数作为协商密钥,并发送给NT驱动,NT驱动接收NT驱动发送的随机数并保存为协商密钥。
[0125] 优选的,安全输入插件接收到键盘输入,将键盘输入先按照指定运算方法进行运算,然后使用协商密钥对运算结果加密得到验证码,或者是直接使用协商密钥对键盘输入加密得到验证码,并将所述验证码发送给NT驱动。
[0126] 例如,安全输入插件接收到的键盘输入为字符2,将其加密处理形成验证码发送给NT驱动。
[0127] 步骤106:NT驱动接收到所述验证码,使用协商密钥解密所述验证码得到解密结果,验证所述解密结果是否正确,是则执行步骤108,否则执行步骤107;
[0128] 具体的,验证解密结果是否正确具体为,将解密结果与NT驱动密码存储队列中首地址存储的内容所对应的索引内容进行比对,若存在一致的内容则解密结果正确,执行步骤108,否则解密结果错误,执行步骤107。
[0129] 例如,解密结果包含所述键盘输入即字符2;
[0130] NT驱动密码存储队列中首地址存储的内容有:m_RndCode=3;m_RndCodeIndex=5;m_RndCodeTab=10,其对应的索引内容有:2、@;
[0131] 即解密结果与索引内容中的2一致,解密结果正确。
[0132] 具体的,本步骤还包括,NT驱动根据所述解密结果确定键盘输入信息中的按键扫描码对应的用户按键的大小写,例如,解密结果与索引内容中的2一致,则确定用户按键为小写字符。
[0133] 步骤107:NT驱动删除NT驱动密码存储队列中首地址存储的内容,执行步骤104;
[0134] 步骤108:NT驱动从NT驱动密码存储队列中首地址存储的内容中获取键盘输入信息,删除NT驱动密码存储队列中首地址存储的内容,并用协商密钥对获取的所述键盘输入信息对应的输入字符进行加密处理得到加密结果,将所述加密结果返回给安全输入插件;
[0135] 例如,从NT驱动密码存储队列中首地址存储的内容中获取的键盘输入信息为:
[0136] m_Code=2;m_CodeIndex=3;m_CodeTab=10;Flags=0;该信息对应输入字符1,使用协商密钥对字符1加密处理得到的加密结果返回给安全输入插件。
[0137] 步骤109:安全输入插件接收到NT驱动返回的加密结果后,使用协商密钥解密所述加密结果获取明文密码,使用插件密钥对所述明文密码进行加密得到密文密码并保存,在安全输入插件开辟的输入框中显示一个显示符号,并将输入框中光标移动到显示符号后面,然后返回步骤104;
[0138] 例如,获取的明文密码为字符1,输入框中显示的一个显示符号为“*”。
[0139] 步骤110:安全输入插件向NT驱动发送关闭键盘过滤请求;
[0140] 步骤111:NT驱动接收到所述关闭键盘过滤请求后,关闭键盘过滤开关,并向安全输入插件返回已关闭消息响应;
[0141] 步骤112:当安全输入插件接收到外部应用发来的获取输入数据请求时,使用插件密钥对保存的密文密码解密得到明文密码,使用用户指定密钥对所述明文密码加密后作为输入数据传递给外部应用。
[0142] 在本实施例中,如果物理键盘为PS2键盘,则当键盘过滤驱动接收到键盘输入信息时,图2中所示步骤可以细化为如图3所示内容,具体如下:
[0143] 步骤1-1:判断键盘过滤开关是否打开,是则执行步骤1-2,否则执行步骤1-12;
[0144] 步骤1-2:判断接收到的键盘输入信息中的按键标识的值是否等于0或1,是则执行步骤1-3,否则执行步骤1-5;
[0145] 本步骤具体为,判断Flags是否等于0或1,是则执行步骤1-3,否则执行步骤1-5。优选的,Flags=0表示按键按下,Flags=1表示按键弹起。
[0146] 步骤1-3:判断扩展标识是否置位,是则执行步骤1-4,否则执行步骤1-5;
[0147] 本步骤具体为,判断ExtraInformation是否为1,是则执行步骤1-4,否则执行步骤1-5。
[0148] 优选的,ExtraInformation=1时,Flags=2表示按键按下,Flags=3表示按键弹起。
[0149] 步骤1-4:将按键标识的值更新为其当前值加2,复位扩展标识,然后执行步骤1-5;
[0150] 步骤1-5:判断按键发送标识是否置位,是则执行步骤1-6,否则执行步骤1-14;
[0151] 步骤1-6:判断所述按键标识的值是否等于0或1或2或3,是则执行步骤1-7,否则执行步骤1-14;
[0152] 优选的,Flags=0或2表示按键按下,Flags=1或3表示按键弹起。
[0153] 步骤1-7:判断接收到的键盘输入信息中的按键扫描码是否等于当前存储的模拟键盘输入信息中的按键扫描码,是则执行步骤1-8,否则执行步骤1-14;
[0154] 本步骤具体为,判断接收到的键盘输入信息中的Code的值是否与当前存储的模拟键盘输入信息中的Code的值相等,是则执行步骤1-8,否则执行步骤1-16。
[0155] 步骤1-8:判断所述按键标识是否与当前存储的模拟键盘输入信息中的按键标识相等,是则执行步骤1-9,否则执行步骤1-10;
[0156] 本步骤具体为,判断接收到的键盘输入信息中的Flags的值是否与当前存储的模拟键盘输入信息中的Flags的值相等,是则执行步骤1-9,否则执行步骤1-10。
[0157] 步骤1-9:置位扩展标识,然后执行步骤1-10;
[0158] 步骤1-10:确认接收到的是模拟键盘输入信息,执行步骤1-11;
[0159] 步骤1-11:清除当前存储的模拟键盘输入信息,复位按键发送标识,然后执行步骤104;
[0160] 步骤1-12:确认接收到的是真实键盘输入信息,执行步骤1-13;
[0161] 步骤1-13:键盘过滤驱动将接收到的键盘输入信息返回给系统键盘线程,当系统键盘线程接收到外部应用的获取键盘输入数据请求时,将所述键盘输入信息传递给外部应用,结束。
[0162] 步骤1-14:确认接收到的是真实键盘输入信息,执行步骤1-15;
[0163] 步骤1-15:判断接收到的键盘输入信息是否是可见字符,是则执行步骤1-16,否则执行步骤1-13;
[0164] 步骤1-16:产生一个键盘输入信息,将接收到的键盘输入信息与产生的键盘输入信息存入NT驱动密码存储队列的末尾地址,并将产生的键盘输入信息返回给系统键盘线程,由系统通过消息机制根据所述产生的键盘输入信息得到键盘输入发送到安全输入插件,然后执行步骤105。
[0165] 在本实施例中,如果物理键盘为USB键盘,则当键盘过滤驱动接收到键盘输入信息时,图2中所示步骤可以细化为如图4所示内容,具体如下:
[0166] 步骤2-1:判断键盘过滤开关是否打开,是则执行步骤2-2,否则执行步骤2-7;
[0167] 步骤2-2:判断按键发送标识是否置位,是则执行步骤2-3,否则执行步骤2-9;
[0168] 步骤2-3:判断接收到的键盘输入信息中的按键标识是否等于0或1,是则执行步骤2-4,否则执行步骤2-9;
[0169] 本步骤具体为,判断Flags是否等于0或1,是则执行步骤2-4,否则执行步骤2-9。优选的,Flags=0表示按键按下,Flags=1表示按键弹起。
[0170] 例如,以用户按下caps lock键为例,其对应的按键扫描码为58,键盘过滤驱动接收到的键盘输入信息为:
[0171] UnitId=0;
[0172] MakeCode=58;
[0173] Flags=0;
[0174] Reserved=0;
[0175] ExtraInformation=0;
[0176] 键盘过滤驱动中当前存储的模拟键盘输入信息为:
[0177] UnitId=1;
[0178] MakeCode=30;
[0179] Flags=0;
[0180] Reserved=0;
[0181] ExtraInformation=0;
[0182] 和
[0183] UnitId=1;
[0184] MakeCode=30;
[0185] Flags=1;
[0186] Reserved=0;
[0187] ExtraInformation=0;
[0188] 步骤2-4:判断接收到的键盘输入信息中的按键扫描码是否与当前存储的模拟键盘输入信息中的按键扫描码相等,是则执行步骤2-5,否则执行步骤2-9;
[0189] 本步骤具体为,判断接收到的键盘输入信息中的MakeCode的值是否与当前存储的模拟键盘输入信息中的MakeCode的值相等,是则执行步骤2-5,否则执行步骤2-9。
[0190] 步骤2-5:确认接收到的是模拟键盘输入信息,执行步骤2-6;
[0191] 步骤2-6:清除当前存储的模拟键盘输入信息,复位按键发送标识,然后执行步骤104;
[0192] 步骤2-7:确认接收到的是真实键盘输入信息,执行步骤2-8;
[0193] 步骤2-8:键盘过滤驱动将接收到的键盘输入信息返回给系统键盘线程,当系统键盘线程接收到外部应用的获取键盘输入数据请求时,将所述键盘输入信息传递给外部应用,结束。
[0194] 步骤2-9:确认接收到的是真实键盘输入信息,执行步骤2-10;
[0195] 步骤2-10:判断接收到的键盘输入信息是否是可见字符,是则执行步骤2-11,否则执行步骤2-8;
[0196] 具体的,将接收到的键盘输入信息的按键扫描码与第一存储区中的可见字符对应的按键扫描码比较,若与其中一个一致则接收到的键盘输入信息为可见字符,否则判断shift键状态是否为按下,是则接收到的键盘输入信息为不可见字符,否则将接收到的键盘输入信息的按键扫描码与第二存储区中的可见字符对应的扫描码比较,若与其中一个一致则接收到的键盘输入信息为可见字符,若均不一致则接收到的键盘输入信息为不可见字符。
[0197] 例如,接收到的键盘输入信息的按键扫描码为58,为不可见字符。
[0198] 步骤2-11:产生一个键盘输入信息,将接收到的键盘输入信息与产生的键盘输入信息存入NT驱动密码存储队列的末尾地址,并将产生的键盘输入信息返回给系统键盘线程,由系统通过消息机制根据所述产生的键盘输入信息得到键盘输入发送到安全输入插件,然后执行步骤105。
[0199] 实施例2
[0200] 本实施例提供了一种提高输入安全性的装置,如图5所示,包括:键盘过滤驱动1、安全输入插件2和NT驱动3;其中,
[0201] 键盘过滤驱动1包括第一接收模块101、判断模块102、运行模块103、清除模块104和存储模块105;
[0202] 所述第一接收模块101,用于接收键盘输入信息;
[0203] 所述判断模块102,用于判断所述键盘输入信息是否为模拟键盘输入信息,是则触发清除模块104工作,否则触发运行模块103工作;
[0204] 所述运行模块103,用于产生一个键盘输入信息,将所述第一接收模块101接收到的键盘输入信息与产生的键盘输入信息一同存入NT驱动密码存储队列的末尾地址,并将产生的键盘输入信息返回给系统键盘线程;
[0205] 所述清除模块104,用于清除当前存储的模拟键盘输入信息;
[0206] 所述存储模块105,用于存储模拟键盘输入信息。
[0207] 其中,安全输入插件2包括第二接收模块201、加解密模块202和输入框显示模块203;
[0208] 所述第二接收模块201,用于接收键盘输入,并触发加解密模块202工作;
[0209] 具体用于接收系统发来的根据所述产生的键盘输入信息转换得到的键盘输入,并触发加解密模块202工作。
[0210] 所述加解密模块202,用于对所述第二接收模块201接收到的所述键盘输入加密处理形成验证码,并发送给NT驱动3;用于接收所述NT驱动3的返回结果,并从所述返回结果中获取明文密码,对所述明文密码进行加密得到密文密码;
[0211] 所述输入框显示模块203;用于显示指定字符和光标;
[0212] 所述安全输入插件2还包括链接模块和传送模块;
[0213] 相应的,所述第二接收模块201,还用于接收光标出现提醒消息和光标消失提醒消息,并触发链接模块工作;
[0214] 所述链接模块,用于当所述第二接收模块201接收到光标出现提醒消息时,链接NT驱动3,并向NT驱动3发送键盘过滤请求,以及接收所述NT驱动3返回的过滤请求响应;用于当所述第二接收模块201接收到光标消失提醒消息时,向NT驱动3发送关闭键盘过滤请求,以及接收所述NT驱动3返回的已关闭消息响应;
[0215] 所述第二接收模块201,还用于接收获取输入数据请求,并触发传送模块工作;所述加解密模块202,还用于当所述第二接收模块201接收到所述获取输入数据请求时,对所述密文密码解密得到明文密码,并使用用户指定密钥对所述明文密码加密;
[0216] 所述传送模块,用于当所述第二接收模块201接收到所述获取输入数据请求时,将经所述加解密模块202加密后的明文密码传递给外部应用。
[0217] 本实施例中的所述NT驱动3具体包括第三接收模块、处理模块和发送模块;
[0218] 所述第三接收模块,用于接收所述安全输入插件2发来的键盘过滤请求和关闭键盘过滤请求,并触发处理模块工作;
[0219] 所述处理模块,用于当所述第三接收模块接收到所述键盘过滤请求时,开启键盘过滤开关并触发发送模块工作,用于当所述第三接收模块接收到所述关闭键盘过滤请求时,关闭键盘过滤开关,并触发发送模块工作;
[0220] 所述发送模块,用于向所述安全输入插件2发送过滤请求响应和已关闭消息响应。
[0221] 进一步的,所述NT驱动3还可以包括加解密子模块、判断子模块和删除子模块;
[0222] 所述加解密子模块,用于接收所述安全输入插件2发送的验证码,对所述验证码进行解密得到解密结果,并触发判断子模块工作;用于对所述判断子模块获取的键盘输入信息进行加密处理得到返回结果返回给所述安全输入插件2;
[0223] 所述判断子模块,用于判断所述解密结果是否正确,是则从NT驱动密码存储队列中首地址存储的内容中获取键盘输入信息然后触发删除子模块和加解密子模块工作,否则直接触发删除子模块工作;
[0224] 所述删除子模块,用于删除NT驱动密码存储队列中首地址存储的内容。
[0225] 本实施例中,对于所述判断模块的实现提供了以下两种具体实现方式;
[0226] 一种实现方式是,所述判断模块包括第一判断单元、第二判断单元、第三判断单元、第四判断单元和第五判断单元;
[0227] 所述第一判断单元,用于判断判断键盘过滤开关是否打开,是则触发第二判断单元工作,否则将所述键盘输入信息返回给系统键盘线程;
[0228] 所述第二判断单元,用于判断按键发送标识是否置位,是则触发第三判断单元工作,否则触发第五判断单元工作;
[0229] 所述第三判断单元,用于判断所述键盘输入信息中的按键标识的值是否等于预设数值,是则触发第四判断单元工作,否则触发第五判断单元工作;
[0230] 所述第四判断单元,用于判断所述键盘输入信息中的按键扫描码是否与当前存储的模拟键盘输入信息中的按键扫描码相等,是则确定所述键盘输入信息为模拟键盘输入信息,复位按键发送标识,触发所述清除模块工作;否则触发第五判断单元工作;
[0231] 所述第五判断单元,用于判断所述键盘输入信息是否为可见字符,是则触发所述运行模块工作,否则将所述键盘输入信息返回给系统键盘线程。
[0232] 另一种实现方式是,所述判断模块包括第一判断单元、第二判断单元、第三判断单元、第四判断单元、第五判断单元、第六判断单元、第七判断单元和第八判断单元;
[0233] 所述第一判断单元,用于判断键盘过滤开关是否打开,是则触发第二判断单元工作,否则将所述键盘输入信息返回给系统键盘线程;
[0234] 所述第二判断单元,用于判断所述键盘输入信息中的按键标识的值是否等于预设数值,是则触发第三判断单元工作,否则触发第四判断单元工作;
[0235] 所述第三判断单元,用于判断扩展标识是否置位,是则将按键标识的值更新为其当前值加2,复位扩展标识,然后触发第四判断单元工作,否则直接触发第四判断单元工作;
[0236] 所述第四判断单元,用于判断按键发送标识是否置位,是则触发第五判断单元工作,否则触发第八判断单元工作;
[0237] 所述第五判断单元,用于判断所述按键标识的值是否等于预设数值或预设数值加2,是则触发第六判断单元工作,否则触发第八判断单元工作;
[0238] 所述第六判断单元,用于判断所述键盘输入信息中的按键扫描码是否与当前存储的模拟键盘输入信息中的按键扫描码相等,是则触发第七判断单元工作,否则触发第八判断单元工作;
[0239] 所述第七判断单元,用于判断所述按键标识是否与当前存储的模拟键盘输入信息中的按键标识相等,是则置位扩展标识,确定所述键盘输入信息为模拟键盘输入信息,复位按键发送标识,并触发所述清除模块工作;否则触发第八判断单元工作;
[0240] 所述第八判断单元,用于判断所述键盘输入信息是否为可见字符,是则触发所述运行模块工作,否则将所述键盘输入信息返回给系统键盘线程。
[0241] 以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。