一种对键盘输入进行混淆保护的方法和装置与流程

    专利2022-07-07  42


    本发明涉及信息安全技术和密码学技术领域,具体涉及一种对键盘输入进行混淆保护的方法和装置。



    背景技术:

    本发明中涉及的“键盘”,包括两类:第一类是一种硬件设备,专用于输入字符(特别是密码字符)的计算机外设;第二类是一种软件程序,通过鼠标、触摸屏点击图形界面上模拟的按键输入字符(特别是密码字符)。

    现有的保护键盘输入消息的机密性的方法,大致分为3类。

    第一类:访问控制。通过驱动层、应用层的访问控制手段,使攻击者无法读取、截获键盘输入消息。缺点是面临软件漏洞、恶意软件的攻击,且无法在物理线路上或内存中保护键盘输入消息的传输过程。

    第二类:加密。键盘(设备或软件)和接收键盘输入的程序中都包含密码模块与共享密钥,键盘用共享密钥对用户输入的消息加密,传输密文消息,接收键盘输入的程序用共享密钥解密后还原用户输入的消息。缺点是键盘(设备或软件)需要改造以增加密码模块,无法兼容其他协议的软、硬件键盘设备。

    第三类:干扰。在用户输入信息的过程中,安全控件模拟键盘击键产生随机的干扰信息,并记录所产生的干扰信息;攻击者无法区分干扰信息和用户输入信息;安全控件基于所记录的干扰信息对混合信息进行过滤后,可以还原用户输入的真实信息。缺点是干扰信息的生成和过滤需要在同一处处理,无法应用在硬件键盘设备或其他协议的软、硬件键盘上;或者需要额外传输干扰信息用于过滤,而这本身又引入了新的安全问题,例如攻击者可能截获干扰信息。



    技术实现要素:

    针对现有技术中存在的缺陷,本发明的目的在于提供一种对键盘输入进行混淆保护的方法和装置,在不改变键盘(设备或软件)设计的前提下,从旁路注入攻击者无法预测的干扰信息,实现混淆保护。

    为实现上述目的,本发明采用的技术方案如下:

    一种对键盘输入进行混淆保护的方法,包括:

    s100、在干扰发生模块和应用的输入控件之间预先共享一个会话密钥、一种对称加解密算法与一个明文序列;

    s200、在用户使用键盘键入输入消息过程中,所述干扰发生模块使用所述会话密钥基于所述对称加解密算法对所述明文序列循环按字节加密,生成密文序列,基于所述密文序列和所述输入消息的值域,得到干扰消息序列;

    s300、所述干扰发生模块按随机时间间隔将所述干扰消息序列输出到键盘消息传输信道上,与所述输入消息进行混合,得到混合消息,通过键盘驱动程序将所述混合消息输出至所述输入控件;

    s400、所述输入控件使用所述会话密钥基于所述对称加解密算法对所述明文序列循环按字节加密,生成所述密文序列,基于所述密文序列和所述输入消息的值域,得到所述干扰消息序列;

    s500、所述输入控件从所述混合消息中过滤掉所述干扰消息序列,得到所述输入消息。

    进一步,如上所述的对键盘输入进行混淆保护的方法,s100中,每次启动所述输入控件时,所述干扰发生模块和所述输入控件之间协商新的会话密钥。

    进一步,如上所述的对键盘输入进行混淆保护的方法,

    所述对称加解密算法包括:流密码算法和块密码算法的流模式,所述流密码算法包括rc4算法、zuc算法,所述块密码算法的流模式包括3des算法、aes算法、sm4算法的ofb模式;所述明文序列为一个不存在连续相同元素的序列;

    进一步,如上所述的对键盘输入进行混淆保护的方法,

    当所述对称加解密算法选用所述块密码算法的流模式时,所述干扰发生模块和所述输入控件之间还需要约定加密初始向量。

    进一步,如上所述的对键盘输入进行混淆保护的方法,s200和s400中,所述基于所述密文序列和所述输入消息的值域,得到干扰消息序列,包括:

    将所述密文序列中值属于所述值域以外的元素排除,剩余元素即为所述干扰消息序列。

    进一步,如上所述的对键盘输入进行混淆保护的方法,

    在启用所述输入控件的同时启用所述干扰发生模块,所述干扰发生模块开始输出所述干扰消息序列;

    在所述干扰发生模块开启第一预设时间后,才允许用户使用键盘输入;

    在用户结束输入后,所述干扰发生模块持续运行第二预设时间;

    在用户使用键盘键入输入消息过程中,所述干扰发生模块以随机时间间隔输出所述干扰消息序列,相邻两个所述干扰消息序列的最大时间间隔小于用户两次击键的时间间隔;

    进一步,如上所述的对键盘输入进行混淆保护的方法,

    所述干扰发生模块在接收到所述输入控件发送的启动指令后启动运行,在接收到所述输入控件发送的停止指令后停止运行。

    进一步,如上所述的对键盘输入进行混淆保护的方法,

    所述键盘为键盘设备或键盘软件;

    若所述干扰发生模块为软件形式,则所述干扰发生模块为独立的软件产品或者集成在所述键盘内部;

    若所述干扰发生模块为设备形式,则所述干扰发生模块为独立的硬件产品或者安装在所述键盘内部。

    一种对键盘输入进行混淆保护的装置,包括:依次连接的干扰发生模块、键盘驱动程序和应用的输入控件,以及键盘;

    在所述干扰发生模块和所述输入控件之间预先共享一个会话密钥、一种对称加解密算法与一个明文序列;

    在用户使用键盘键入输入消息过程中,所述干扰发生模块用于使用所述会话密钥基于所述对称加解密算法对所述明文序列循环按字节加密,生成密文序列,基于所述密文序列和所述输入消息的值域,得到干扰消息序列;

    所述干扰发生模块用于按随机时间间隔将所述干扰消息序列输出到键盘消息传输信道上,与所述输入消息进行混合,得到混合消息,通过键盘驱动程序将所述混合消息输出至所述输入控件;

    所述输入控件用于使用所述会话密钥基于所述对称加解密算法对所述明文序列循环按字节加密,生成所述密文序列,基于所述密文序列和所述输入消息的值域,得到所述干扰消息序列;

    所述输入控件用于从所述混合消息中过滤掉所述干扰消息序列,得到所述输入消息。

    进一步,如上所述的对键盘输入进行混淆保护的装置,

    所述键盘为键盘设备或键盘软件;

    若所述干扰发生模块为软件形式,则所述干扰发生模块为独立的软件产品或者集成在所述键盘内部;

    若所述干扰发生模块为设备形式,则所述干扰发生模块为独立的硬件产品或者安装在所述键盘内部。

    本发明的有益效果在于:本发明的干扰发生模块和输入控件之间预先共享一个会话密钥、一种对称加解密算法、一个加密初始向量(如果需要)与一个明文序列。干扰发生模块不断的用上述共享会话密钥基于约定的加密算法对约定的明文序列循环按字节加密,输出密文序列,如键盘支持的输入消息的值域为[zmin-zmax],将密文序列中值为[zmin-zmax]范围之外的元素排除,即可得到干扰消息序列。将干扰消息序列按随机时间间隔输出到键盘消息传输信道上,与用户输入的消息一同成为混合消息,通过键盘驱动程序将混合消息输出至输入控件。在输入控件中,也用相同的算法、密钥、初始向量对约定的明文序列循环做加密,输出密文序列,将密文序列中值为[zmin-zmax]范围之外的元素排除,得到干扰消息序列。输入控件从接收到的混合消息中,过滤掉干扰消息,即可得到用户输入的消息。对于攻击者,即使窃听到混合消息,因为不知道密钥,无法猜测干扰消息序列,也就无法从混合消息中得到用户输入的消息,从而在对键盘(设备或软件)的设计或实现没有额外要求以及不改变用户输入的习惯和体验的情况下,保护用户通过键盘(设备或软件)输入的消息在传输信道上端到端的机密性。

    附图说明

    图1为本发明实施例中提供的一种对键盘输入进行混淆保护的方法的流程示意图;

    图2为本发明实施例中提供的一种对键盘输入进行混淆保护的装置的结构示意图。

    具体实施方式

    下面结合说明书附图与具体实施方式对本发明做进一步的详细说明。

    用户使用键盘向应用输入字符的过程,大致分为以下四个阶段:

    1)对于计算机上的软件程序,在图形界面上模拟的按键上击键(或点击触控屏上显示的按钮),键盘产生按键消息,消息中包含要输入的字符;

    2)对于计算机外接的物理键盘设备,按键消息经连接键盘和计算机的线缆和总线(也可以通过无线信道)传输至计算机操作系统中的键盘设备驱动;

    3)按键消息从键盘设备驱动经计算机操作系统传输至应用的输入控件;

    4)输入控件向应用提交用户输入的字符。

    本发明的目的是在步骤2)、步骤3)中,保护按键消息不被攻击者窃听和截获。

    本发明采用的技术方案是:在步骤1)中,增加一个干扰发生模块(可以在键盘内部或外部),生成干扰消息;干扰消息和用户输入消息组成的混合消息出现在上述步骤2)、步骤3)的传输通道上;在步骤4)中,从混合消息中过滤掉干扰消息,仅向应用提交用户输入的消息。具体方案如下。

    如图1所示,一种对键盘输入进行混淆保护的方法,包括:

    s100、在干扰发生模块和应用的输入控件之间预先共享一个会话密钥、一种对称加解密算法与一个明文序列。

    每次启动输入控件时,干扰发生模块和输入控件之间协商新的会话密钥。

    对称加解密算法包括:流密码算法和块密码算法的流模式,流密码算法包括rc4算法、zuc算法,块密码算法的流模式包括3des算法、aes算法、sm4算法的ofb模式。当对称加解密算法选用块密码算法的流模式时,干扰发生模块和输入控件之间还需要约定加密初始向量。

    明文序列为一个不存在连续相同元素的序列,比如一个从0至255的单调递增序列。

    s200、在用户使用键盘键入输入消息过程中,干扰发生模块使用会话密钥基于对称加解密算法对明文序列循环按字节加密,生成密文序列,基于密文序列和输入消息的值域,得到干扰消息序列。

    本发明可以基于对称加解密算法对明文序列循环按字节加解密,即加密时可以每次输入一字节明文、输出一字节密文;解密时可以每次输入一字节密文、输出一字节明文。生成密文序列之后,将密文序列中值属于值域以外的元素排除,剩余元素即为干扰消息序列,比如键盘支持的输入消息的值域为[zmin-zmax],将密文序列中值为[zmin-zmax]范围之外的元素排除,即可得到干扰消息序列,保持干扰消息序列的值域与输入消息的值域相同。

    s300、干扰发生模块按随机时间间隔将干扰消息序列输出到键盘消息传输信道上,与输入消息进行混合,得到混合消息,通过键盘驱动程序将混合消息输出至输入控件。

    由于s200中保持干扰消息序列的值域与输入消息的值域相同,因此,两者生成的混合消息中每个元素的值域也与输入消息的值域相同。

    s400、输入控件使用会话密钥基于对称加解密算法对明文序列循环按字节加密,生成密文序列,基于密文序列和输入消息的值域,得到干扰消息序列。

    由于会话密钥、对称加解密算法和明文序列均为干扰发生模块与输入控件所共享,因此,输入控件基于相同的会话密钥、对称加解密算法和明文序列生成的密文序列与干扰发生模块产生的密文序列相同,输入控件基于相同的密文序列和输入消息,得到的干扰消息序列也与干扰发生模块得到的干扰消息序列相同。

    s500、输入控件从混合消息中过滤掉干扰消息序列,得到输入消息。

    本实施例中,采用基于流加密的方法生成干扰消息。首先,干扰发生模块和输入控件之间预先共享一个会话密钥、一种对称加解密算法、一个加密初始向量(如果需要)与一个明文序列。加密时可以每次输入一字节明文、输出一字节密文;解密时可以每次输入一字节密文、输出一字节明文。干扰发生模块不断的用上述共享会话密钥基于约定的加密算法对约定的明文序列循环按字节加密,输出密文序列,如键盘支持的输入消息的值域为[zmin-zmax],将密文序列中值为[zmin-zmax]范围之外的元素排除,即可得到干扰消息序列。将干扰消息序列按随机时间间隔输出到键盘消息传输信道上,与用户输入的消息一同成为混合消息。混合消息序列中每个元素的值域与键盘支持的输入消息相同。在输入控件中,也用相同的算法、密钥、初始向量对约定的明文序列循环做加密,输出密文序列,将密文序列中值为[zmin-zmax]范围之外的元素排除,即可得到干扰消息序列。输入控件从接收到的混合消息中,过滤掉干扰消息,即可得到用户输入的消息。对于攻击者,即使窃听到混合消息,因为不知道密钥,无法猜测干扰消息序列,也就无法从混合消息中得到用户输入的消息,从而在对键盘(设备或软件)的设计或实现没有额外要求以及不改变用户输入的习惯和体验的情况下,保护用户通过键盘(设备或软件)输入的消息在传输信道上端到端的机密性。

    本实施例中,为了防止攻击者根据用户击键的频率、速度、时间间隔等信息,从混合消息中还原用户输入的消息,还可以采用以下方法保护用户输入行为的时域特征的机密性:

    1、在启用输入控件的同时启用干扰发生器,开始输出干扰消息;

    2、干扰发生器开启一段时间后(如3秒)才允许用户输入;

    3、用户结束输入后,干扰发生器需继续运行一段时间(如3秒);

    4、干扰发生器持续以随机时间间隔(如0-10ms之间的随机值)输出干扰消息,相邻两个干扰消息的最大时间间隔应远远小于用户两次击键的时间间隔。

    本实施例中,干扰发生模块和输入控件之间,除了传输混合消息,还需要:

    1、输入控件向干扰发生模块传输启动指令、停止指令;即干扰发生模块在输入控件的指令下实现启动和停止运行。

    2、输入控件与干扰发生模块之间协商会话密钥的过程。协商会话密钥的方法是本领域常用技术手段,在此不再赘述。

    如图2所示,本实施例还提供一种对键盘输入进行混淆保护的装置,包括:依次连接的干扰发生模块100、键盘驱动程序200和应用的输入控件300,以及键盘400。在干扰发生模块100和输入控件300之间预先共享一个会话密钥、一种对称加解密算法与一个明文序列。

    在用户使用键盘400键入输入消息过程中,干扰发生模块100用于使用会话密钥基于对称加解密算法对明文序列循环按字节加密,生成密文序列,基于密文序列和输入消息的值域,得到干扰消息序列;干扰发生模块100还用于按随机时间间隔将干扰消息序列输出到键盘消息传输信道上,与输入消息进行混合,得到混合消息,通过键盘驱动程序200将混合消息输出至输入控件300。

    输入控件300用于使用会话密钥基于对称加解密算法对明文序列循环按字节加密,生成密文序列,基于密文序列和输入消息的值域,得到干扰消息序列;输入控件300还用于从混合消息中过滤掉干扰消息序列,得到输入消息。

    键盘400为键盘设备或键盘软件;若干扰发生模块为软件形式,则干扰发生模块为独立的软件产品或者集成在键盘内部;若干扰发生模块为设备形式,则干扰发生模块为独立的硬件产品或者安装在键盘内部。

    需要说明的是,本实施例中对键盘输入进行混淆保护的装置和方法为同一发明构思,关于对键盘输入进行混淆保护的装置的功能可以详见对键盘输入进行混淆保护的方法实施例。

    本发明的键盘可以是键盘设备,也可以是键盘软件,前述的干扰发生模块如果是软件形式则可以设置在键盘设备或键盘软件内部。基于键盘和干扰发生模块的不同存在形式,可以应用在不同场景中:

    本实施例还提供一种密码键盘设备和配套的输入控件,密码键盘设备包括本发明的干扰发生模块。

    本实施例还提供一种独立的干扰发生设备和配套的输入控件,配合普通键盘设备使用。

    本实施例还提供一种密码键盘软件和配套的输入控件,键盘软件中含有上述干扰发生模块。

    本实施例还提供一种干扰发生器软件和配套的输入控件,配合普通键盘设备或键盘软件使用。

    本发明包括以下有益效果:

    1、无需改变键盘(设备或软件)的设计或实现,从旁路注入攻击者无法预测的干扰信息,攻击者无法区分用户输入和干扰信息,实现用户输入信息在传输信道上端到端的机密性。

    2、通过密码学技术生成和过滤干扰信息的方法,无需额外存储和传输用于还原用户输入的干扰信息。

    3、生成干扰信息的模块可以是软件程序、也可以是硬件设备,可以在键盘(设备或软件)的内部或外部。

    4、使用干扰信息保护用户输入行为的时域特征的机密性。

    显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其同等技术的范围之内,则本发明也意图包含这些改动和变型在内。


    技术特征:

    1.一种对键盘输入进行混淆保护的方法,其特征在于,包括:

    s100、在干扰发生模块和应用的输入控件之间预先共享一个会话密钥、一种对称加解密算法与一个明文序列;

    s200、在用户使用键盘键入输入消息过程中,所述干扰发生模块使用所述会话密钥基于所述对称加解密算法对所述明文序列循环按字节加密,生成密文序列,基于所述密文序列和所述输入消息的值域,得到干扰消息序列;

    s300、所述干扰发生模块按随机时间间隔将所述干扰消息序列输出到键盘消息传输信道上,与所述输入消息进行混合,得到混合消息,通过键盘驱动程序将所述混合消息输出至所述输入控件;

    s400、所述输入控件使用所述会话密钥基于所述对称加解密算法对所述明文序列循环按字节加密,生成所述密文序列,基于所述密文序列和所述输入消息的值域,得到所述干扰消息序列;

    s500、所述输入控件从所述混合消息中过滤掉所述干扰消息序列,得到所述输入消息。

    2.根据权利要求1所述的对键盘输入进行混淆保护的方法,其特征在于,s100中,每次启动所述输入控件时,所述干扰发生模块和所述输入控件之间协商新的会话密钥。

    3.根据权利要求1所述的对键盘输入进行混淆保护的方法,其特征在于,

    所述对称加解密算法包括:流密码算法和块密码算法的流模式,所述流密码算法包括rc4算法、zuc算法,所述块密码算法的流模式包括3des算法、aes算法、sm4算法的ofb模式;所述明文序列为一个不存在连续相同元素的序列。

    4.根据权利要求3所述的对键盘输入进行混淆保护的方法,其特征在于,

    当所述对称加解密算法选用所述块密码算法的流模式时,所述干扰发生模块和所述输入控件之间还需要约定加密初始向量。

    5.根据权利要求1所述的对键盘输入进行混淆保护的方法,其特征在于,s200和s400中,所述基于所述密文序列和所述输入消息的值域,得到干扰消息序列,包括:

    将所述密文序列中值属于所述值域以外的元素排除,剩余元素即为所述干扰消息序列。

    6.根据权利要求1所述的对键盘输入进行混淆保护的方法,其特征在于,

    在启用所述输入控件的同时启用所述干扰发生模块,所述干扰发生模块开始输出所述干扰消息序列;

    在所述干扰发生模块开启第一预设时间后,才允许用户使用键盘输入;

    在用户结束输入后,所述干扰发生模块持续运行第二预设时间;

    在用户使用键盘键入输入消息过程中,所述干扰发生模块以随机时间间隔输出所述干扰消息序列,相邻两个所述干扰消息序列的最大时间间隔小于用户两次击键的时间间隔。

    7.根据权利要求1所述的对键盘输入进行混淆保护的方法,其特征在于,

    所述干扰发生模块在接收到所述输入控件发送的启动指令后启动运行,在接收到所述输入控件发送的停止指令后停止运行。

    8.根据权利要求1-7任一项所述的对键盘输入进行混淆保护的方法,其特征在于,所述键盘为键盘设备或键盘软件;

    若所述干扰发生模块为软件形式,则所述干扰发生模块为独立的软件产品或者集成在所述键盘内部;

    若所述干扰发生模块为设备形式,则所述干扰发生模块为独立的硬件产品或者安装在所述键盘内部。

    9.一种对键盘输入进行混淆保护的装置,其特征在于,包括:依次连接的干扰发生模块、键盘驱动程序和应用的输入控件,以及键盘;

    在所述干扰发生模块和所述输入控件之间预先共享一个会话密钥、一种对称加解密算法与一个明文序列;

    在用户使用键盘键入输入消息过程中,所述干扰发生模块用于使用所述会话密钥基于所述对称加解密算法对所述明文序列循环按字节加密,生成密文序列,基于所述密文序列和所述输入消息的值域,得到干扰消息序列;

    所述干扰发生模块用于按随机时间间隔将所述干扰消息序列输出到键盘消息传输信道上,与所述输入消息进行混合,得到混合消息,通过键盘驱动程序将所述混合消息输出至所述输入控件;

    所述输入控件用于使用所述会话密钥基于所述对称加解密算法对所述明文序列循环按字节加密,生成所述密文序列,基于所述密文序列和所述输入消息的值域,得到所述干扰消息序列;

    所述输入控件用于从所述混合消息中过滤掉所述干扰消息序列,得到所述输入消息。

    10.根据权利要求9所述的对键盘输入进行混淆保护的装置,其特征在于,所述键盘为键盘设备或键盘软件;

    若所述干扰发生模块为软件形式,则所述干扰发生模块为独立的软件产品或者集成在所述键盘内部;

    若所述干扰发生模块为设备形式,则所述干扰发生模块为独立的硬件产品或者安装在所述键盘内部。

    技术总结
    本发明公开了一种对键盘输入进行混淆保护的方法和装置,方法包括:S100、在干扰发生模块和输入控件之间预先共享一个会话密钥、一种对称加解密算法与一个明文序列;S200、在用户使用键盘键入输入消息过程中,干扰发生模块使用会话密钥生成密文序列,基于密文序列和输入消息的值域,得到干扰消息序列;S300、干扰发生模块按随机时间间隔将干扰消息序列输出到键盘消息传输信道上,与输入消息进行混合,得到混合消息,通过键盘驱动程序将混合消息输出至输入控件;S400、输入控件使用会话密钥生成密文序列,基于密文序列和输入消息的值域,得到干扰消息序列;S500、输入控件从混合消息中过滤掉干扰消息序列,得到输入消息。本发明能实现对输入信息的混淆保护。

    技术研发人员:李勃;张渊
    受保护的技术使用者:北京握奇数据股份有限公司
    技术研发日:2020.11.19
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-8903.html

    最新回复(0)