CN101335611B - 安全按键输入***、设备、和方法 - Google Patents
安全按键输入***、设备、和方法 Download PDFInfo
- Publication number
- CN101335611B CN101335611B CN2007101181930A CN200710118193A CN101335611B CN 101335611 B CN101335611 B CN 101335611B CN 2007101181930 A CN2007101181930 A CN 2007101181930A CN 200710118193 A CN200710118193 A CN 200710118193A CN 101335611 B CN101335611 B CN 101335611B
- Authority
- CN
- China
- Prior art keywords
- safe
- input
- internal memory
- module
- client
- 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.)
- Active
Links
Images
Landscapes
- Input From Keyboards Or The Like (AREA)
Abstract
本发明公开了一种安全按键输入***,包括:安全输入模块,用于挂接键盘中断,并通过安全单元对按键输入进行加密;内存监控模块,由服务器动态生成,用于验证安全输入模块,以及生成存活消息;以及安全单元,除了用于对按键输入进行加密外,还用于对存活消息进行加密。借助于本发明的技术方案,实现了以下有益效果:独立地动态审计模块可以随时更新,因此木马程序难以定位其在内存中所处的位置;受信根为服务器,易于***维护和升级;输入信息加密和内存监控模块的存活消息共同保证输入不被修改,提升了***安全性。
Description
技术领域
本发明涉及计算机安全通讯领域,并且特别地,涉及安全按键输入***、设备、和方法。
背景技术
目前,大部分的网络应用采用用户名加密码的方式进行登录,然而,由于Windows操作***的安全性漏洞,使得木马和病毒可以利用操作***的公开机制,非常容易地获得用户按键输入的信息。此类程序和针对应用场景判断机制进行结合,可以非常方便地取得用户的关键信息。例如现在的网游盗号、QQ盗号、和网银大盗程序等,就是使用键盘截获加上应用程序判定技术来获得用户账户和密码。
Windows下常用的获取键盘按键信息方法有:(1)全局键盘/鼠标钩子;(2)BlockInput()API;(3)使用setupapi进行控制;(4)全局键盘/鼠标钩子+远线程***WINLOGON进程屏蔽CTRL+AL+DEL;(5)拦截win23k!RawInputThread()函数;(6)修改DDK中自带的kbfilter的键盘(Port Driver)过滤驱动;(7)拦截kdbclass驱动的driver dispatch routine;(8)实现PS/2与USB键盘过滤驱动;(9)浏览器漏洞导致按键输入的COM控件被截获。
而避免键盘信息被截获的解决方案主要有以下几种:
(1)软键盘。用户通过鼠标按键输入,用户按键信息通过自定义消息或剪切板传输到用户输入对话框中。此方式能够防止简单键盘截获攻击,但是由于***消息机制的固有缺陷,安全性不高,因此未能被广泛接受。
(2)专有加密键盘。一般在键盘内部增加专有的安全模块,将按键输入通过该安全模块和应用共享密钥进行加密,并由上层应用负责解密。此方式安全性高,但是需要增加键盘的实现成本,所以一般仅用于某些特定场所的安全输入。
(3)封闭***。将***环境变成只读,禁止恶意代码修改核心代码和操作***运行时环境,但是此种方式将导致较多应用限制,需要显著增加***厂商定制成本。
(4)键盘过滤驱动。通过键盘过滤驱动挂接到操作***键盘访问队列,在特殊应用程序启动时,特殊应用程序直接和此驱动通讯,获得按键输入。但是此种方式无法防止恶意代码修改键盘过滤驱动,使其先于过滤驱动加载,导致按键信息泄露。
通过以上描述可以看出,在目前采用的技术方案中存在安全性不高,实现成本或定制成本较大,或者无法有效地防止按键信息泄露的问题。
发明内容
考虑到上述问题而提出本发明。为此,本发明旨在提供一种安全按键输入机制。
根据本发明的实施例,提供了一种安全按键输入***。
该***包括:安全输入模块,用于挂接键盘中断,并通过安全单元对按键输入进行加密;内存监控模块,由服务器动态生成,用于验证安全输入模块,以及生成存活消息;以及安全单元,除了用于对按键输入进行加密外,还用于对存活消息进行加密。
其中,服务器根据加密的按键输入和存活消息来验证按键输入的有效性。
并且,客户端从服务器获取加密设置信息,并根据加密设置信息设置安全单元的加密方式。这里,客户端将来自服务器的密钥转发到安全单元,并且安全单元使用密钥对按键输入和存活消息进行加密。
在该***中,内存监控模块可以为以下任一种:监控某一内存地址的设备驱动程序,运行在虚拟机中的监控某一内存地址的软件程序,运行于基本输入输出***中监控某一内存地址的软件程序或者是专用内存监控硬件上的初始化程序。此外,在客户端不存在内存监控模块的副本。并且,对于内存监控模块在内存中设置的位置没有限定。
另外,内存监控模块通过检测安全输入模块挂接的键盘处理中断地址对应的代码空间是否被修改来检测安全输入模块的有效性。其中,内存监控模块在随机时间间隔或预定时长内分段检测安全输入模块。并且,存活消息中携带有与内存检测模块的检测时间间隔或预定时长相关的信息。这样,当加密的按键输入正确,且按键输入在检测时间间隔内或未超过预定时长的情况下,服务器判定客户端有效。
根据本发明的另一实施例,提供了一种安全按键输入方法。
该方法包括:初始化步骤,客户端在启动时动态加载安全输入模块和内存监控模块,并设置安全单元的加密方式,其中,内存监控模块由服务器动态生成;按键输入处理步骤,安全输入模块通过安全单元对用户的按键输入进行加密,并将加密的按键输入经由客户端发送到服务器;内存监控处理步骤,内存监控模块检测安全输入模块,生成存活消息,并将通过安全单元加密存活消息经由客户端发送到服务器;以及验证步骤,服务器根据加密按键输入和存活消息来验证按键输入的有效性。
初始化步骤进一步包括以下处理:服务器生成加密设置消息;客户端从服务器获取加密设置消息,并根据加密设置消息设置安全单元的加密方式;客户端加载安全输入模块;安全输入模块挂接键盘处理中断;服务器生成内存监控模块;以及客户端从服务器下载内存监控模块,并将其动态加载到***内存。
其中,安全输入模块挂接键盘处理中断后,修改代码空间中的键盘中断(IRQ1和IRQ2)的处理地址,使得用户进行按键输入时,直接触发安全输入模块的键盘中断处理部分。
另外,按键输入处理步骤进一步包括以下处理:用户进行按键输入;安全输入模块读取按键输入,并清空按键缓冲区;安全输入模块将按键输入提交到安全单元,并由安全单元对按键输入进行加密;以及安全输入模块将加密按键输入发送到客户端,并由客户端进一步发送到服务器。
除此之外,内存监控处理步骤进一步包括以下处理:内存监控模块启动,并检测安全输入模块挂接的键盘处理中断地址对应的代码空间;判断代码空间中的键盘中断(IRQ1和IRQ2)指向的代码段是否为客户端加载的代码段,并且在判断结果为是的情况下,进行以下处理:内存监控模块生成存活消息,并通过安全单元对存活消息进行加密;以及客户端从内存监控模块获取加密的存活消息,并将其转发到服务器。
其中,存活消息中携带有与内存检测模块的检测时间间隔或预定时长相关的信息。
并且,验证步骤进一步包括以下处理:服务器判断加密的按键输入是否正确,在判断结果为是的情况下,进行以下处理:服务器判断按键输入是否在检测时间间隔内或者未超过预定时长,在判断结果为是的情况下,判断按键输入有效。
根据本发明的另一实施例,还提供了一种安全按键输入***。
该***包括:安全输入模块,用于挂接键盘中断,并通过安全单元对按键输入进行加密;内存监控模块,由客户端动态生成,用于验证安全输入模块,以及生成存活消息;以及安全单元,除了用于对按键输入进行加密外,还用于对存活消息进行加密。
其中,客户端根据加密的按键输入和存活消息来验证按键输入的有效性。这里,客户端设置安全单元的加密方式,并生成安全单元进行加密的密钥。
此外,内存监控模块为以下任一种:监控某一内存地址的设备驱动程序,运行在虚拟机中的监控某一内存地址的软件程序,运行于基本输入输出***中监控某一内存地址的软件程序或者是专用内存监控硬件上的初始化程序,而对于内存监控模块在内存中设置的位置没有限定。
并且,内存监控模块通过检测安全输入模块挂接的键盘处理中断地址对应的代码空间是否被修改来检测安全输入模块的有效性。
其中,内存监控模块在随机时间间隔或预定时长内分段检测安全输入模块。并且,存活消息中携带有与内存检测模块的检测时间间隔或预定时长相关的信息。这样,当加密的按键输入正确,且按键输入在检测时间间隔内或未超过预定时长的情况下,客户端判定按键输入有效。
根据本发明的再一个实施例,提供了一种安全按键输入方法。
该方法包括:初始化步骤,客户端在启动时动态加载安全输入模块和内存监控模块,并设置安全单元的加密方式,其中,内存监控模块由客户端动态生成;按键输入处理步骤,安全输入模块通过安全单元对用户的按键输入进行加密,并将加密的按键输入发送到客户端;内存监控处理步骤,内存监控模块检测安全输入模块,生成存活消息,并将通过安全单元加密存活消息发送到客户端;以及验证步骤,客户端根据加密按键输入和存活消息来验证按键输入的有效性。
其中,初始化步骤进一步包括以下处理:客户端设置安全单元的加密方式;客户端加载安全输入模块;安全输入模块挂接键盘处理中断;以及客户端生成内存监控模块,并将其动态加载到***内存。
这里,在安全输入模块挂接键盘处理中断后,修改代码空间中的键盘中断(IRQ1和IRQ2)的处理地址,使得用户进行按键输入时,直接触发安全输入模块的键盘中断处理部分。
此外,按键输入处理步骤进一步包括以下处理:用户进行按键输入;安全输入模块读取按键输入,并清空按键缓冲区;安全输入模块将按键输入提交到安全单元,并由安全单元对按键输入进行加密;以及安全输入模块将加密按键输入发送到客户端。
除此之外,内存监控处理步骤进一步包括以下处理:内存监控模块启动,并检测安全输入模块挂接的键盘处理中断地址对应的代码空间;判断代码空间中的键盘中断指向的代码段是否为客户端加载的代码段,并且在判断结果为是的情况下,进行以下处理:内存监控模块生成存活消息,并通过安全单元对存活消息进行加密;以及客户端从内存监控模块获取加密的存活消息。
其中,存活消息中携带有与内存检测模块的检测时间间隔或预定时长相关的信息。
并且,验证步骤进一步包括以下处理:客户端判断加密的按键输入是否正确,在判断结果为是的情况下,进行以下处理:客户端判断按键输入是否在检测时间间隔内或者未超过预定时长,在判断结果为是的情况下,判断按键输入有效,并对按键输入进行二次加密后发送到服务器。
最后,根据本发明实施例,还提供了一种安全按键输入设备,包括:安全输入模块,用于挂接键盘中断,并通过安全单元对按键输入进行加密;内存监控模块,由服务器或客户端动态生成,用于验证安全输入模块,以及生成存活消息;以及安全单元,除了用于对按键输入进行加密外,还用于对存活消息进行加密;其中,客户端或服务器根据安全按键输入设备提供的加密的按键输入和存活消息来验证按键输入的有效性。
通过本发明的上述技术方案,本发明实现了以下有益效果:独立地动态内存监控模块可以随时更新,因此木马程序难以定位其在内存中所处的位置;受信根为服务器,易于***维护和升级;输入信息加密和内存监控模块的存活消息共同保证输入不被修改,因此提升了***安全性。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明***实施例1的安全按键输入***的示意图;
图2是根据本发明***实施例1的安全按键输入***的结构框图;
图3是根据本发明方法实施例1的安全按键输入方法的流程图;
图4是根据本发明方法实施例1的安全按键输入方法的初始化处理的流程图;
图5是根据本发明方法实施例1的安全按键输入方法中用户按键输入处理和验证步骤的流程图;
图6是根据本发明方法实施例1的安全按键输入方法中内存监控处理的流程图;
图7是根据本发明方法实施例1的安全按键输入方法中客户端退出的流程图;
图8是根据本发明***实施例2的安全按键输入***的示意图;
图9是根据本发明***实施例2的安全按键输入***的框图;
图10是根据本发明方法实施例2的安全按键输入方法的流程图;以及
图11是根据本发明设备实施例的安全按键输入设备的框图。
具体实施方式
总的来说,为了提升用户输入的安全性,在本发明中,用户应用程序自身在启动安全输入时,应用程序的客户端程序接管键盘输入,此时仅接受加密的用户按键信息。下面将参照附图详细描述本发明的实施例。
***实施例1
在本实施例中,提供了一种安全按键输入***。
在本实施例中,客户端(例如,通过客户端中设置的初始化单元)需要从服务器端下载独立的内存监控模块,并在***中以设备驱动的形式加载安全输入模块和内存监控模块,并初始化***安全芯片。内存监控模块负责对安全输入模块核心代码的审计,并提交加密的存活消息。安全输入模块负责接管用户输入,对用户输入信息进行加密。最后,客户端(初始化单元)将用户按键输入和存活消息转发到服务器。图1示出了根据该***实施例的安全按键输入***的示意图。
具体地,如图2所示,根据本实施例的安全按键输入***200包括客户端和服务器,并且在客户端包括:安全输入模块202,用于挂接键盘中断,并通过安全单元206对按键输入进行加密;内存监控模块204,由服务器动态生成,用于验证安全输入模块202,以及生成存活消息;以及安全单元206,除了用于对按键输入进行加密外,还用于对存活消息进行加密。
其中,服务器根据加密的按键输入和存活消息来验证按键输入的有效性。具体地,安全单元可以采用对称密钥或非对称密钥的方式对按键输入和存活消息进行加密处理。服务器和安全单元配对使用相应的解密密钥。对称密钥的加密方式可以包括DES,3DES,AES,RC4,RC5等,非对称密钥的加密方式可以包括RSA,ECC等。为了保证上传消息不被修改,还可以对消息进行数字签名。数字签名算法可以是SHA-1,MD5和HMAC等。
并且,在该***中,客户端从服务器获取加密设置信息,并根据加密设置信息设置安全单元的加密方式(例如,DES、RSA等)。这里,客户端将来自服务器的密钥转发到安全单元206,并且安全单元106使用密钥对按键输入和存活消息进行加密。
在该***中,内存监控模块204可以为以下任一种:监控某一内存地址的设备驱动程序,运行在虚拟机中的监控某一内存地址的软件程序,运行于基本输入输出***中监控某一内存地址的软件程序或者是专用内存监控硬件上的初始化程序,例如,驱动程序、独立芯片、软件模块等。
这样,由于内存监控模块由服务器动态生成,并且在应用程序运行时加载,因此在客户端不存在内存监控模块204的副本,因此难以对其进行修改。此外,在本发明中,对于内存监控模块204在内存中设置的位置没有限定。
内存监控模块204通过检测安全输入模块挂接的键盘处理中断地址对应的代码空间是否被修改来检测安全输入模块的有效性(如果有修改,则证明安全输入模块已经无效)。
其中,内存监控模块在随机时间间隔(例如,以10ms-30ms-10ms-20ms...的间隔来检测)或预定时长(例如,30ms)内分段检测安全输入模块。并且,存活消息中携带有与内存检测模块的检测时间间隔或预定时长相关的信息。这样,当加密的按键输入正确,且按键输入在检测时间间隔内或未超过预定时长的情况下,服务器判定客户端有效,并还原按键信息。
方法实施例1
在本实施例中,提供了一种安全按键输入方法,该方法可以使用***实施例1中提供的安全按键输入***。
如图3所示,根据本实施例的安全按键输入方法包括:步骤S302,初始化步骤,客户端在启动时动态加载安全输入模块和内存监控模块,并设置安全单元的加密方式,其中,内存监控模块由服务器动态生成;步骤S304,按键输入处理步骤,安全输入模块通过安全单元对用户的按键输入进行加密,并将加密的按键输入经由客户端发送到服务器;步骤S306,内存监控处理步骤,内存监控模块检测安全输入模块,生成存活消息,并将通过安全单元加密存活消息经由客户端发送到服务器;以及步骤S308,验证步骤,服务器根据加密按键输入和存活消息来验证按键输入的有效性。
如图4所示,上述的初始化步骤进一步包括以下处理:服务器生成加密设置消息;客户端从服务器获取加密设置消息,并根据加密设置消息设置安全单元的加密方式(例如,DES、RSA等);客户端加载安全输入模块;安全输入模块挂接键盘处理中断;服务器生成内存监控模块;以及客户端从服务器下载内存监控模块,并将其动态加载到***内存。
其中,在上述处理中,客户端可以首先上传应用程序版本信息和安全单元版本信息,并且服务器可以根据应用程序版本信息来生成内存监控模块。
其中,安全输入模块挂接键盘处理中断后,修改代码空间(例如,中断描述符表(IDT))中的IRQ1和IRQ2的处理地址,使得用户进行按键输入时,直接触发安全输入模块的键盘中断处理部分。
另外,如图5所示,按键输入处理步骤进一步包括以下处理:用户进行按键输入;安全输入模块读取按键输入,并清空按键缓冲区;安全输入模块将按键输入提交到安全单元,并由安全单元对按键输入进行加密(安全单元使用服务器经由客户端发送的密钥来进行加密);以及安全输入模块将加密按键输入发送到客户端,并由客户端进一步发送到服务器。
此外,如图6所示,内存监控处理步骤进一步包括以下处理:内存监控模块启动,并检测安全输入模块挂接的键盘处理中断地址对应的代码空间;判断代码空间(描述符表)中的键盘中断(IRQ1和IRQ2)指向的代码段是否为客户端加载的代码段,并且在判断结果为是的情况下,进行以下处理(在判断结果为否的情况下,内存监控模块将提示客户端存在安全性风险,终止键盘输入):内存监控模块生成存活消息,并通过安全单元对存活消息进行加密(安全单元使用服务器经由客户端发送的密钥来进行加密);以及客户端从内存监控模块获取加密的存活消息,并将其转发到服务器。
其中,存活消息中携带有与内存检测模块的检测时间间隔或预定时长相关的信息,以保证安全输入模块的有效性(即,在检测时间间隔或未超过预定时长)。优选地,在进行代码段检查时,可以采用计算代码摘要值的方法和关键代码比较方法。
并且,参照图5,在本实施例中,验证步骤进一步包括以下处理:服务器判断加密的按键输入是否正确,在判断其正确的情况下,进行以下处理:服务器判断按键输入是否在检测时间间隔内或者未超过预定时长,在判断结果为是的情况下,判断按键输入有效,在判断结果为否的情况下,将按键信息丢弃。即,通过按键信息加密和内存监控模块的存活信息共同确认输入的有效性。
除此之外,当客户端退出时,需要卸载内存监控模块和安全输入模块,还原***按键处理流程,其具体过程如图6所示。
以上描述的是内存监控模块由服务器生成,并且在服务器进行按键输入有效性的验证的方案。当然,上述操作也可以在客户端实现,即,由客户端生成内存监控模块、生成安全单元加密的密钥、以及进行按键输入有效性的验证。以下将通过实施例来描述该种方案。
***实施例2
在本实施例中,提供了一种安全按键输入***。
在本实施例中,客户端动态生成内存监控模块,并在***中以设备驱动的形式加载安全输入模块和内存监控模块,并初始化***安全芯片。内存监控模块负责对安全输入模块核心代码的审计,并提交加密的存活消息。安全输入模块负责接管用户输入,对用户输入信息进行加密。最后,客户端根据用户按键输入和存活消息来验证输入的有效性。图8示出了该安全按键输入***的示意图。
具体地,参照图9,根据本实施例的安全按键输入***包括:安全输入模块902,用于挂接键盘中断,并通过安全单元906对按键输入进行加密;安全单元906,除了用于对按键输入进行加密外,还用于对存活消息进行加密。不同之处在于:在根据***实施例2的安全按键***中,内存监控模块904是由客户端动态生成的,其用于验证安全输入模块904,以及生成存活消息。并且,客户端设置安全单元906的加密方式,并生成安全单元906进行加密的密钥,并根据加密的按键输入和存活消息来验证按键输入的有效性。
此外,与***实施例1类似,内存监控模块904为以下任一种:监控某一内存地址的设备驱动程序,运行在虚拟机中的监控某一内存地址的软件程序,运行于基本输入输出***中监控某一内存地址的软件程序或者是专用内存监控硬件上的初始化程序,且对于内存监控模块904在内存中设置的位置没有限定。并且,内存监控模块904通过检测安全输入模块902挂接的键盘处理中断地址对应的代码空间是否被修改来检测安全输入模块902。
类似地,内存监控模块904在随机时间间隔或预定时长内分段检测安全输入模块902。并且,存活消息中携带有与内存检测模块904的检测时间间隔或预定时长相关的信息。这样,当加密的按键输入正确,且按键输入在检测时间间隔内或未超过预定时长的情况下,客户端判定按键输入有效。
方法实施例2
在本实施例中,提供了一种安全按键输入方法,该方法可以使用***实施例2提供的安全按键输入***。
如图10所示,根据方法实施例2的安全按键输入方法包括:步骤S1002,初始化步骤,客户端在启动时动态加载安全输入模块和内存监控模块,并设置安全单元的加密方式,其中,内存监控模块由客户端动态生成;步骤S1004,按键输入处理步骤,安全输入模块通过安全单元对用户的按键输入进行加密,并将加密的按键输入发送到客户端;步骤S1006,内存监控处理步骤,内存监控模块检测安全输入模块,生成存活消息,并将通过安全单元加密存活消息发送到客户端;以及步骤S1008,验证步骤,客户端根据加密按键输入和存活消息来验证按键输入的有效性。
其中,初始化步骤进一步包括以下处理:客户端设置安全单元的加密方式;客户端加载安全输入模块;安全输入模块挂接键盘处理中断;以及客户端生成内存监控模块,并将其动态加载到***内存。
这里,在安全输入模块挂接键盘处理中断后,修改代码空间(例如,中断描述符表(IDT))中的键盘中断(IRQ1和IRQ2)的处理地址,使得用户进行按键输入时,直接触发安全输入模块的键盘中断处理部分。
此外,与图5中所示的处理类似,该方法中的按键输入处理步骤进一步包括以下处理:用户进行按键输入;安全输入模块读取按键输入,并清空按键缓冲区;安全输入模块将按键输入提交到安全单元,并由安全单元对按键输入进行加密;安全输入模块将加密按键输入发送到客户端;之后,安全输入模块将加密按键输入发送到客户端,与图5中所示的处理不同,这里,客户端不将加密按键输入转发到服务器,而是将其保留在本地,并在本地进行之后的验证处理。
除此之外,参照图6,与方法实施例1中的内存监控处理类似,在本实施例中的内存监控处理步骤可以进一步包括以下处理:
内存监控模块启动,并检测安全输入模块挂接的键盘处理中断地址对应的代码空间;判断代码空间(例如,IDT)中的键盘中断(IRQ1和IRQ2)指向的代码段是否为客户端加载的代码段,在判断结果为否的情况下,内存监控模块提示客户端,并且客户端终止按键输入,在判断结果为是的情况下,进行以下处理:内存监控模块生成存活消息,并通过安全单元对存活消息进行加密;之后,客户端从内存监控模块获取加密的存活消息。
其中,与前面类似,存活消息中携带有与内存检测模块的检测时间间隔或预定时长相关的信息,以保证安全输入模块的有效性。优选地,在进行代码段检查时,可以采用计算代码摘要值的方法和关键代码比较方法。
此外,不同于方法实施例1中在服务器端执行的验证步骤,根据本实施例的方法中验证步骤是在客户端执行的,具体地,包括以下处理:客户端判断加密的按键输入是否正确,在判断其正确的情况下,进行以下处理:客户端判断按键输入是否在检测时间间隔内或者未超过预定时长,在判断结果为是的情况下,判断按键输入有效,并对按键输入进行二次加密后发送到服务器,而在判断结果为否的情况下,将按键信息丢弃。
除此之外,当客户端退出时,同样需要执行图7中所示的处理。
设备实施例
在该实施例中,提供了一种安全按键输入设备,如图11所示,包括:安全输入模块1102,用于挂接键盘中断,并通过安全单元对按键输入进行加密;内存监控模块1104,由服务器或客户端动态生成,用于验证安全输入模块,以及生成存活消息;以及安全单元1106,除了用于对按键输入进行加密外,还用于对存活消息进行加密;其中,客户端或服务器根据该安全按键输入设备提供的加密的按键输入和存活消息来验证按键输入的有效性。
以上***实施例和方法实施例中描述的多个细节同样适用于该设备实施例,因此,省略了相同或相似内容的重复描述。
综上所述,借助于本发明的技术方案,实现了以下有益效果:独立地动态内存监控模块可以随时更新,因此木马程序难以定位其在内存中所处的位置;受信根为服务器,易于***维护和升级;输入信息加密和内存监控模块的存活消息共同保证输入不被修改,提升了***安全性。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (31)
1.一种安全按键输入***,包括客户端和服务器,其特征在于,所述客户端包括:
安全输入模块,用于挂接键盘中断,并通过安全单元对按键输入进行加密;
内存监控模块,由服务器动态生成,用于验证所述安全输入模块,以及生成存活消息;以及
所述安全单元,除了用于对所述按键输入进行加密外,还用于对所述存活消息进行加密。
2.根据权利要求1所述的安全按键输入***,其特征在于,所述服务器根据所述加密的按键输入和所述存活消息来验证所述按键输入的有效性。
3.根据权利要求2所述的安全按键输入***,其特征在于,所述客户端从所述服务器获取加密设置信息,并根据所述加密设置信息设置所述安全单元的加密方式。
4.根据权利要求3所述的安全按键输入***,其特征在于,所述客户端将来自所述服务器的密钥转发到所述安全单元,并且所述安全单元使用所述密钥对所述按键输入和所述存活消息进行加密。
5.根据权利要求2所述的安全接键输入***,其特征在于,所述内存监控模块为以下任一种:监控某一内存地址的设备驱动程序,运行在虚拟机中的监控某一内存地址的软件程序,运行于基本输入输出***中监控某一内存地址的软件程序或者是专用内存监控硬件上的初始化程序。
6.根据权利要求2所述的安全按键输入***,其特征在于,在所述客户端不存在所述内存监控模块的副本。
7.根据权利要求2所述的安全按键输入***,其特征在于,对于所述内存监控模块在内存中设置的位置没有限定。
8.根据权利要求2所述的安全按键输入***,其特征在于,所述内存监控模块通过检测所述安全输入模块挂接的键盘处理中断地址对应的代码空间是否被修改来检测所述安全输入模块的有效性。
9.根据权利要求8所述的安全按键输入***,其特征在于,所述内存监控模块在随机时间间隔或预定时长内分段检测所述安全输入模块。
10.根据权利要求9所述的安全按键输入***,其特征在于,所述存活消息中携带有与所述内存检测模块的检测时间间隔或预定时长相关的信息。
11.根据权利要求10所述的安全按键输入***,其特征在于,当所述加密的按键输入正确,且所述按键输入在所述检测时间间隔内或未超过所述预定时长的情况下,所述服务器判定所述客户端有效。
12.一种安全按键输入方法,使用根据权利要求1至11中任一项所述的安全按键输入***,其特征在于,包括:
初始化步骤,客户端在启动时动态加载安全输入模块和内存监控模块,并设置安全单元的加密方式,其中,所述内存监控模块由服务器动态生成;
按键输入处理步骤,所述安全输入模块通过所述安全单元对用户的按键输入进行加密,并将所述加密的按键输入经由所述客户端发送到所述服务器;
内存监控处理步骤,所述内存监控模块检测所述安全输入模块,生成存活消息,通过所述安全单元加密所述存活消息,并将加密后的所述存活消息经由所述客户端发送到所述服务器;以及
验证步骤,所述服务器根据所述加密按键输入和所述存活消息来验证所述按键输入的有效性。
13.根据权利要求12所述的安全按键输入方法,其特征在于,所述初始化步骤进一步包括以下处理:
所述服务器生成加密设置消息;
所述客户端从所述服务器获取所述加密设置消息,并根据所述加密设置消息设置所述安全单元的加密方式;
所述客户端加载所述安全输入模块;
所述安全输入模块挂接键盘处理中断;
所述服务器生成所述内存监控模块;以及
所述客户端从所述服务器下载所述内存监控模块,并将其动态加载到***内存。
14.根据权利要求13所述的安全按键输入方法,其特征在于,所述安全输入模块挂接键盘处理中断后,修改代码空间中的键盘中断的处理地址,使得用户进行按键输入时,直接触发所述安全输入模块的键盘中断处理部分。
15.根据权利要求12所述的安全按键输入方法,其特征在于,所述按键输入处理步骤进一步包括以下处理:
所述用户进行按键输入;
所述安全输入模块读取所述按键输入,并清空按键缓冲区;
所述安全输入模块将所述按键输入提交到所述安全单元,并由所述安全单元对所述按键输入进行加密;以及
所述安全输入模块将所述加密按键输入发送到所述客户端,并由所述客户端进一步发送到所述服务器。
16.根据权利要求12所述的安全按键输入方法,其特征在于,所述内存监控处理步骤进一步包括以下处理:
所述内存监控模块启动,并检测所述安全输入模块挂接的键盘处理中断地址对应的代码空间;
判断所述代码空间中的键盘中断指向的代码段是否为所述客户端加载的代码段,并且在判断结果为是的情况下,进行以下处理;
所述内存监控模块生成所述存活消息,并通过所述安全单元对所述存活消息进行加密;以及
所述客户端从所述内存监控模块获取所述加密的存活消息,并将其转发到所述服务器。
17.根据权利要求16所述的安全按键输入方法,其特征在于,所述存活消息中携带有与所述内存检测模块的检测时间间隔或预定时长相关的信息。
18.根据权利要求17所述的安全按键输入方法,其特征在于,所述验证步骤进一步包括以下处理:
所述服务器判断所述加密的按键输入是否正确,在判断结果为是的情况下,进行以下处理;
所述服务器判断所述按键输入是否在所述检测时间间隔内或者未超过所述预定时长,在判断结果为是的情况下,判断所述按键输入有效。
19.一种安全按键输入***,其特征在于,在客户端包括:
安全输入模块,用于挂接键盘中断,并通过安全单元对按键输入进行加密;
内存监控模块,由所述客户端动态生成,用于验证所述安全输入模块,以及生成存活消息;以及
所述安全单元,除了用于对所述按键输入进行加密外,还用于对所述存活消息进行加密。
20.根据权利要求19所述的安全按键输入***,其特征在于,所述客户端根据所述加密的按键输入和所述存活消息来验证所述按键输入的有效性。
21.根据权利要求20所述的安全按键输入***,其特征在于,所述客户端设置所述安全单元的加密方式,并生成所述安全单元进行加密的密钥。
22.根据权利要求20所述的安全按键输入***,其特征在于,所述内存监控模块为以下任一种:监控某一内存地址的设备驱动程序,运行在虚拟机中的监控某一内存地址的软件程序,运行于基本输入输出***中监控某一内存地址的软件程序或者是专用内存监控硬件上的初始化程序;此外,对于所述内存监控模块在内存中设置的位置没有限定。
23.根据权利要求20所述的安全按键输入***,其特征在于,所述内存监控模块通过检测所述安全输入模块挂接的键盘处理中断地址对应的代码空间是否被修改来检测所述安全输入模块的有效性。
24.根据权利要求23所述的安全按键输入***,其特征在于,所述内存监控模块在随机时间间隔或预定时长内分段检测所述安全输入模块,并且所述存活消息中携带有与所述内存检测模块的检测时间间隔或预定时长相关的信息。
25.根据权利要求24所述的安全按键输入***,其特征在于,当所述加密的按键输入正确,且所述按键输入在所述检测时间间隔内或未超过所述预定时长的情况下,所述客户端判定所述按键输入有效。
26.一种安全按键输入方法,使用根据权利要求19至25中任一项所述的安全按键输入***,其特征在于,包括:
初始化步骤,客户端在启动时动态加载安全输入模块和内存监控模块,并设置安全单元的加密方式,其中,所述内存监控模块由所述客户端动态生成;
按键输入处理步骤,所述安全输入模块通过所述安全单元对用户的按键输入进行加密,并将所述加密的按键输入发送到所述客户端;
内存监控处理步骤,所述内存监控模块检测所述安全输入模块,生成存活消息,并将通过所述安全单元所述加密存活消息发送到所述客户端;以及
验证步骤,所述客户端根据所述加密按键输入和所述存活消息来验证所述按键输入的有效性。
27.根据权利要求26所述的安全按键输入方法,其特征在于,所述初始化步骤进一步包括以下处理:
所述客户端设置所述安全单元的加密方式;
所述客户端加载所述安全输入模块;
所述安全输入模块挂接键盘处理中断;以及
所述客户端生成所述内存监控模块,并将其动态加载到***内存;
其中,所述安全输入模块挂接键盘处理中断后,修改代码空间中的键盘中断指向的处理地址,使得用户进行按键输入时,直接触发所述安全输入模块的键盘中断处理部分。
28.根据权利要求26所述的安全按键输入方法,其特征在于,所述按键输入处理步骤进一步包括以下处理:
所述用户进行按键输入;
所述安全输入模块读取所述按键输入,并清空按键缓冲区;
所述安全输入模块将所述按键输入提交到所述安全单元,并由所述安全单元对所述按键输入进行加密;以及
所述安全输入模块将所述加密按键输入发送到所述客户端。
29.根据权利要求26所述的安全按键输入方法,其特征在于,所述内存监控处理步骤进一步包括以下处理:
所述内存监控模块启动,并检测所述安全输入模块挂接的键盘处理中断地址对应的代码空间;
判断所述代码空间中的键盘中断指向的代码段是否为所述客户端加载的代码段,并且在判断结果为是的情况下,进行以下处理;
所述内存监控模块生成所述存活消息,并通过所述安全单元对所述存活消息进行加密;以及
所述客户端从所述内存监控模块获取所述加密的存活消息。
30.根据权利要求29所述的安全按键输入方法,其特征在于,所述存活消息中携带有与所述内存检测模块的检测时间间隔或预定时长相关的信息;所述验证步骤进一步包括以下处理:
所述客户端判断所述加密的按键输入是否正确,在判断结果为是的情况下,进行以下处理;
所述客户端判断所述按键输入是否在所述检测时间间隔内或者未超过所述预定时长,在判断结果为是的情况下,判断所述按键输入有效,并对所述按键输入进行二次加密后发送到所述服务器。
31.一种安全按键输入设备,其特征在于,包括:
安全输入模块,用于挂接键盘中断,并通过安全单元对按键输入进行加密;
内存监控模块,由服务器或客户端动态生成,用于验证所述安全输入模块,以及生成存活消息;以及
所述安全单元,除了用于对所述按键输入进行加密外,还用于对所述存活消息进行加密;
其中,所述客户端或所述服务器根据所述安全按键输入设备提供的所述加密的按键输入和所述存活消息来验证所述按键输入的有效性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101181930A CN101335611B (zh) | 2007-06-29 | 2007-06-29 | 安全按键输入***、设备、和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101181930A CN101335611B (zh) | 2007-06-29 | 2007-06-29 | 安全按键输入***、设备、和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101335611A CN101335611A (zh) | 2008-12-31 |
CN101335611B true CN101335611B (zh) | 2011-06-22 |
Family
ID=40197949
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101181930A Active CN101335611B (zh) | 2007-06-29 | 2007-06-29 | 安全按键输入***、设备、和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101335611B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102195940A (zh) * | 2010-03-12 | 2011-09-21 | 北京路模思科技有限公司 | 一种基于虚拟机技术安全输入和提交数据的方法和*** |
CN102663185B (zh) * | 2012-04-06 | 2017-07-25 | 北京大学 | 一种基于模糊处理的抗硬件木马电路设计方法 |
CN102621480B (zh) * | 2012-04-20 | 2014-02-05 | 南开大学 | 集成电路中混合激活型硬件木马的无损检出方法 |
EP2690838A1 (en) * | 2012-07-23 | 2014-01-29 | Alcatel Lucent | Authentification system preserving secret data confidentiality |
CN105528562B (zh) * | 2014-10-22 | 2019-11-12 | 北京中电瑞铠科技有限公司 | Ps/2鼠标、键盘操作审计及控制方法与装置 |
CN104462942B (zh) * | 2014-11-20 | 2018-03-27 | 工业和信息化部电信研究院 | 移动终端可信用户输入输出接口的检测方法及*** |
CN105389506B (zh) * | 2015-10-20 | 2018-03-30 | 飞天诚信科技股份有限公司 | 一种提高输入安全性的方法和装置 |
CN105426790A (zh) * | 2015-11-18 | 2016-03-23 | 北京微智全景信息技术有限公司 | 一种基于触摸屏的密码安全输入方法及装置 |
CN105516157B (zh) * | 2015-12-16 | 2019-05-17 | 上海交通大学 | 基于独立加密的网络信息安全输入***和方法 |
CN106953850B (zh) * | 2017-03-02 | 2019-08-30 | 飞天诚信科技股份有限公司 | 一种支持多应用的安全输入方法及装置 |
CN110414225B (zh) * | 2019-07-24 | 2023-05-26 | 广东魅视科技股份有限公司 | 一种防hid键盘攻击的***及方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1402461A (zh) * | 2001-08-24 | 2003-03-12 | 富士通株式会社 | 信息处理装置及输入操作装置 |
CN1889420A (zh) * | 2005-06-30 | 2007-01-03 | 联想(北京)有限公司 | 一种实现加密的方法 |
CN1937490A (zh) * | 2006-09-19 | 2007-03-28 | 北京飞天诚信科技有限公司 | 一种智能密钥设备 |
-
2007
- 2007-06-29 CN CN2007101181930A patent/CN101335611B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1402461A (zh) * | 2001-08-24 | 2003-03-12 | 富士通株式会社 | 信息处理装置及输入操作装置 |
CN1889420A (zh) * | 2005-06-30 | 2007-01-03 | 联想(北京)有限公司 | 一种实现加密的方法 |
CN1937490A (zh) * | 2006-09-19 | 2007-03-28 | 北京飞天诚信科技有限公司 | 一种智能密钥设备 |
Also Published As
Publication number | Publication date |
---|---|
CN101335611A (zh) | 2008-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101335611B (zh) | 安全按键输入***、设备、和方法 | |
US8949607B2 (en) | Digital data authentication | |
CN107567630B (zh) | 受信输入/输出设备的隔离 | |
CN106687985B (zh) | 用于基于特权模式的安全输入机构的方法 | |
US8332930B2 (en) | Secure use of user secrets on a computing platform | |
CN1331017C (zh) | 安全芯片 | |
EP2795829B1 (en) | Cryptographic system and methodology for securing software cryptography | |
CN100527145C (zh) | 支持安全模式的可编程处理器 | |
US20060195907A1 (en) | Data processing device | |
JP2010092485A6 (ja) | データ処理装置、通信端末機器、および、データ処理装置を用いたデータ処理方法 | |
EP2202662A1 (en) | Portable security device protecting against keystroke loggers | |
CN103930899B (zh) | 用于管理在设备处输入的公用数据和私人数据的方法 | |
NO332737B1 (no) | System og fremgangsmate for beskyttet oppstart av operativsystemet gjennom bruk av statusvalidering. | |
WO2012021722A1 (en) | Disposable browser for commercial banking | |
EP3683712B1 (en) | Protecting integrity of log data | |
WO2021051591A1 (zh) | 安全键盘实现方法、装置、计算机设备及存储介质 | |
Frisby et al. | Security Analysis of Smartphone Point-of-Sale Systems. | |
CN100334519C (zh) | 建立可信输入输出通道的方法 | |
US20200242235A1 (en) | Virus immune computer system and method | |
CN101609489A (zh) | 一种计算机安全输入方法及*** | |
KR101368772B1 (ko) | 키 입력 보호 방법과 이를 위한 키 보호 장치 | |
Dietrich | A Secure and Reliable Platform Configuration Change Reporting Mechanism for Trusted Computing Enhanced Secure Channels | |
WO2010003284A1 (zh) | 网络交互方法、***及其安全设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |