一种时间关联的信息输入方法与流程

文档序号:11215702阅读:376来源:国知局

本发明为一种信息输入方法,尤其是一种信息输入安全方法。



背景技术:

当前各种信息终端功能繁多,使用环境十分复杂,可以随时随地连接网络,可以处理各种信息事务,比如个人电脑、智能手机等等,但由此也带来各种各样的信息安全问题,一旦有恶意程序,比如感染病毒或木马,就很容易造成信息泄露或被盗用,特别是口令密码等敏感信息,被盗用会对用户造成严重的后果。为了保护密码输入的安全,也出现了各种密码输入保护措施,比如物理密码键盘、输入安全控件、输入软键盘等等,物理密码键盘具备高度安全性,但其用于专用的高度安保系统,并且需要专用的驱动,没有一般的可用性,其它是比较通用的输入安全措施,这些通用的输入保护措施有一定的保护作用,但保护安全性不足,容易被破解,如何安全输入信息,使得信息在输入过程中不泄露,并且在一般终端设备上可以通用,在使用信息终端过程中,是难以解决的问题。

输入安全控件,通常是指windows系统的密码控件,又称作低级键盘钩子式密码控件。在windows系统应用的正常输入过程中,程序在接收用户键盘的输入时实际上是接收相应的wm_char消息,wm_char消息的产生过程需要如下几个步骤:首先是系统中断处理,其次是键盘驱动处理,然后是gui线程处理(gui即是图形用户界面,gui线程,即专门用来监听gui的特定线程,用于实现对用户在图形用户界面上的操作的监听和响应。),最后是用户程序获取wm_char消息;依次为系统低级到高级的应用。系统中断处理是,当用户按下一个键时,系统产生键盘中断irq,系统调用键盘中断处理程序处理原始的键盘扫描码生成数据结构,缓存数据。键盘驱动处理是,负责用键盘事件产生的数据生成一个按键消息wm_keydown,并且放入对应的gui线程的输入队列中。gui线程处理是,在消息循环中使用getmessage取出一个wm_keydown消息,然后如果该gui线程中使用了translatemessage处理这个wm_keydown消息,则会生成一个wm_char消息存入自身的post消息队列。用户程序获取wm_char消息,用户程序按键事件获取wm_char消息,得到按键代码virtualkeycode。如果作为一个攻击者想要获取用户输入的密码,很简单的做法就是截获wm_char消息,攻击者可以轻易地获得一个原生密码输入框的所有wm_char消息,所以输入安全密码控件的目标就是让攻击者无法截获wm_char消息,或者截获到wm_char消息的时候这个键码virtualkeycode是假的,而真正的键码virtualkeycode已经被处理。保护wm_char消息的做法,一般是在得到wm_keydown这个消息的时候就进行,绕过系统后续的处理,先于系统计算出用户按键的键码virtualkeycode并保存,然后再返回一个修改过的wm_keydown消息,使得攻击者即使截获到wm_char消息,也不能得到真实正确的键码virtualkeycode。要处理在系统生成wm_char消息之前就处理修改wm_keydwon,就必须要使用windows一种技术――低级键盘钩子,wh_keyboard_ll。综上所述,输入安全控件就是在较高层级截获和修改按键消息,使得更高层级的攻击者截取的按键消息为假的按键消息,从而保护真实的键码,从以上分析也可以看到,这种保护是很有限的,如果攻击者在同层或更低层进行攻击,比如键盘驱动层攻击,输入安全控件就起不到保护的作用。

输入软键盘是完全不使用键盘输入,绕过键盘输入从而避开针对键盘输入的攻击。输入软键盘是在屏幕上显示一个虚拟的键盘,此键盘上的各个按键与真实的键盘不一样,按键是随机排列的,然后使用鼠标按键输入,鼠标按键消息不包涵按键键码信息,只包涵了鼠标按键时的屏幕坐标(x,y),使用映射算法通过屏幕位置坐标计算可以得到相应位置的按键,从而确定键码。所以键码由鼠标按键消息和映射算法或按键的位置确定,每次软件盘的各个按键位置是随机的,所以每次的映射算法也是不一样的,攻击者通常会截获鼠标按键消息和对屏幕进行截屏以确定软件盘各个按键的具体位置,所以通常还需要对鼠标按键消息进行保护和对截屏进行黑屏处理。由于软件盘显示在屏幕上,用户的输入操作是明显可见的,所以在公共场所使用不安全。另外,鼠标按键消息和屏幕信息也难以从系统低层级进行有效的保护。



技术实现要素:

现有的安全输入技术方法基本上都是对输入信息进行较高层级的截取和变更,以保护输入的信息安全,但没有从所有层级进行有效的保护,其对输入信息的保护很有限,容易受到各种攻击,使得输入信息的安全性不足。本发明使得输入的信息与具体的按键无关,从根本上不需要保护按键信息,可以抵抗各种针对具体按键键码的攻击,保障信息输入的安全。

本发明所采用的方案是,在信息输入前,将需要使用按键键码集的各键码与时间段随机进行关联,在等待输入时,在每一关联时间段的开始或整个时间段,以相应关联键码的不同特征提示用户,表明此时间段所关联的键码,比如显示与此时间段相关联键码所表示的图形或字符信息,或者播放相关联键码所表示的声音等,如果用户在此时间段内进行按键输入,即表示当前输入的为当前时间段相关联的键码,与按键的具体键码信息无关,用户得到的输入键码与具体的按键无关,只与输入当前时刻的具体关联时间段相关,用户输入按键当前时刻时间段所关联的键码就是输入的键码,在不同的时间段进行按键,可以得到不同的键码信息。比如需要输入0至9之间的数字密码信息,那么键码集就是0至9之间的10个数字,如果每一个数字相关联的时间段为1秒,那么整个键码集所关联的时间为10秒,随机进行关联,每一秒时间段代表一个数字;如果是屏幕表示,可以在10秒的每一秒显示代表各数字的不同信息,最简单的就是,比如直接按随机关联顺序显示0至9个数字,在每一秒时间以箭头指向相关联的数字,如果在此一秒时间段内有按键输入,就代表输入的是箭头所指向的数字;如果是声音表示,每一秒关联一个数字的语音,按随机顺序,在10秒的每一秒开始用语音播放相关联的语音,当用户听到相应语音并输入按键时,当前语音所关联的数字就是输入的键码。本发明方案也有一个很大的缺点,输入键码需要花费的时间比较长,上面的例子中,输入一个数字键码最多需要10秒钟。对于小的键码集,比如0至9阿拉伯数字键,处理比较简单,直接与时间段作相关联即可,但对于比较大的键码集,比如英文字母,如果直接进行时间段关联,输入一个字母所需要的时间是令人无法接受的;一个简化的方案是把输入分成二步,首先把大的键码集先分成更小的键码集,小键码集与时间段关联,这样可以先选取小键码集,然后再用小键码集的各键码与时间段直接关联,就可以输入相应的键码。如果存在攻击者,他截取按键信息可以得到按键的消息和时间,但如果要想知道结果键码,他必须得到该时刻与相应键码所关联的关系或表示,比如屏幕的表示;在输入软键盘方案,显示的按键是随机顺序的,但显示后是静态的,只要做截屏或直接读取内存就可以得到键码的位置,本发明方案与此不同的是,关联表示是动态的,屏幕显示的表示,每个时间段会各有不同,即使攻击者能够截屏信息,一个截屏也不可能得到所有信息,而且本发明方案可能只在时间段的开始做表示,比如作短暂的箭头指向或闪烁,如果攻击者在用户按键时截屏,可能什么有用的信息也得不到!如果攻击者在整个输入过程对屏幕信息进行记录保存,那么记录的屏幕信息数据将是巨量的,使得攻击者难以实施;实际上我们也可以象输入软键盘一样对屏幕信息采取保护措施,在输入过程中对截屏信息进行黑屏处理。本发明方案由于输入信息与具体按键的键码无关,除了使用取消或删除键更正错误输入外,使用其他任意按键输入的效果都相同,对于特别的应用也可以减少实际按键的数量;特别是对于嵌入式的硬件应用,其按键一般比较少,使用本发明输入方案特别适合实际需要。

本发明的有益效果是,可以使得用户输入信息更加安全,可以有效地抵抗针对输入的攻击,并且使用极少的按键就可以进行信息输入;当然,其缺点也是明显的,就是输入所需要的时间比较长。

具体实施方式

构造时间关联的数字输入安全控件。在接收输入前,把数字0至9按随机顺序,包括“#”符号和每一个数字各关联时间段0.5秒;有屏幕和声音两种表示方式,可以通过切换按钮进行切换;屏幕表示方式时,在屏幕上显示一行内容包括“#”符号和0至9按从小到大排列,其上按关联顺序在各时间段分别显示指向各个数字的箭头,每隔0.5秒切换指向关联数字的箭头,当有按键输入时,当前指向的数字为输入的键码,如果指向“#”符号,代表输入结束,如果有截屏操作,进行黑屏处理;声音表示方式时,按关联顺序播放各关联代表的语音,每隔0.5秒切换,按键输入时,输入键码为当前语音所关联的数字,如果是“#”符号,则表示输入结束;如果输入键是“esc”或“backspace”键,则取消上次输入。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1