CN101183941A - 随机隐询式密码认证技术 - Google Patents

随机隐询式密码认证技术 Download PDF

Info

Publication number
CN101183941A
CN101183941A CNA2007101385603A CN200710138560A CN101183941A CN 101183941 A CN101183941 A CN 101183941A CN A2007101385603 A CNA2007101385603 A CN A2007101385603A CN 200710138560 A CN200710138560 A CN 200710138560A CN 101183941 A CN101183941 A CN 101183941A
Authority
CN
China
Prior art keywords
password
character
input
random
user
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.)
Granted
Application number
CNA2007101385603A
Other languages
English (en)
Other versions
CN101183941B (zh
Inventor
廖睿
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to CN2007101385603A priority Critical patent/CN101183941B/zh
Publication of CN101183941A publication Critical patent/CN101183941A/zh
Application granted granted Critical
Publication of CN101183941B publication Critical patent/CN101183941B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

随机隐询式密码认证技术,是一种用于单机及网络、金融、防盗等需要通过帐号、密码验证身份的***内,针对传统密码技术的缺陷,为解决:监控程序、恶意程序、木马程序盗窃帐号、密码,钓鱼网站骗取帐号、密码,拍摄、偷窥他人帐号、密码输入过程的新型密码认证技术。通过在按键上随机的分配多个字符,根据原始密码中前5位(可根据需求设定)字符在当前的随机分布位置来输入特定位上的密码,使得每次询问和输入的密码都不相同,达到随机隐蔽询问、防盗、防钓鱼的效果。利用人眼的生理特点,通过高敏感颜色和图形,瞬间覆盖所有按键上的字符并随机移动,进而达到防拍摄、偷看和监视屏幕的作用。该技术不需要额外的卡、证或电子媒介。

Description

随机隐询式密码认证技术
所属技术领域
本技术是一种在有线或无线互联网***、独立网络***、金融***、保险***以及需要身份验证的应用领域内,为保障合法用户信息安全的全新技术。该技术旨在建立一种让帐号、密码信息只存在于服务器和用户头脑中,并杜绝在输入过程中造成帐号泄密可能性的解决方案。
背景技术
随着网络化、信息化的发展,利用电脑、手机,通过网络收发电子邮件,聊天,网络游戏,操作网上银行、股票已经普及。各种网络服务提供商、金融机构为了缓解柜面工作压力和排队现象,也鼓励用户通过网络平台进行自助操作。现行的身份认证机制,仍然沿用传统的方法,即:用户首先在官方注册,填写帐号(或取得卡、证)、设定密码及相关信息;使用时填写帐号(或出具卡、证)并填写密码,***在数据库中查找该用户,并比对其密码,若两者完全一致则认定为合法用户,否则拒绝操作请求。但由于电脑软、硬件体系设计和互联网的开放式构架,各种用于监控和盗窃的恶意程序、木马程序、与官方网站拥有相似域名和完全相同外观,骗取帐号密码的钓鱼网站,以及用摄像头偷拍或人为剽窃他人输入过程等犯罪行为,使传统的身份密码认证机制无法保护用户帐号的安全。由于帐号和密码原本只存在于服务器和用户记忆中,现在各种帐号泄密事件的发生,绝大多数发生在帐号的输入过程中,这是由传统的密码验证机制以下缺陷造成的:
1.每个按键代表一个有效字符(可以在帐号和密码中出现的字符)。
2.每个按键的位置固定不变。
3.每次的输入完全相同,包括位数和每位所对应的字符。
4.为防止钓鱼网站骗取用户帐号密码,用户在注册或开户时,与官方约定一个固定不变的静态服务信息,当用户登录后看到该信息即可确认登录的是官方网站。由于只能在登录后确认网站的合法性,对于钓鱼网站而言,用户输入帐号密码后,就已经骗取了帐号和密码。所以这种“被动”式的证明方式,证明时为时已晚。
发明内容
为了杜绝输入过程的泄密可能,同时对现有的电脑、手机等设备的体系设计和已有的输入习惯保持兼容,本技术包含以下特点:
1.密码有效字符(允许使用的字符)为:0~9,A~Z共36个字符,字母不必区分大小写(不需要用到字符按键区),密码固定为10位。输入设备默认使用鼠标。没有鼠标则使用其原有键盘上的某一键模拟鼠标输入的开始,然后用其他键输入所需字符。
2.“随机分配”特点:36个密码有效字符在每次用户登录操作时,都将随机的分配在10个按键上,并在显示设备的屏幕上显示。
3.“字符集合”特点:每个按键上包含3~4个有效的字符,每个字符用图片表示。当用户按下某一按键,该键上对应多个字符,解除了传统技术中按键与字符的唯一对应性。
4.“防智能识别”特点:用图片表示字符是为了让非法程序成不能识别字符,因为人可以清楚的理解图片代表的含义,虽然理论上程序可以识别,但将非常困难。例如:程序不知道两竖一横是字符“H”。(为防止软件智能识别,图片可定期更换或随机进行旋转、变形等变化,以增加识别难度)
5.每个按键上所包含的字符在每一次操作过程中将随机变化,保证每次字符在按键上的分布都不相同,用户的输入也就不会相同。解除了传统技术中输入位置的固定性。
6.“随机隐蔽询问”特点:***要求输入的密码位数可视安全要求而定,为了输入方便快捷,只要求输入5位。但最低不应少于4位,因为在输入3位,按键只有10个的情况下,任意输入将有千分之一的概率命中。由于每次字符所在位置是随机的,用户根据原始密码中的第一位所在的按键,来确定第一下输入密码中的第几位。以图1为例,设:用户原始密码为:ABCDE12345,登录时,密码第一位字符“A”被随机分配在数字键盘的3键上,那么用户第一下应该输入密码中的第3位字符“C”,找到字符“C”所在的按键并按下,此时用户便正确的输入了一位。密码第二位字符“B”被随机分配在数字键盘的1键上,那么用户第二下应该输入密码中的第1位字符“A”,找到字符“A”所在的按键并按下,此时用户便正确的输入了两位。密码第三位字符“C”被随机分配在数字键盘的3键上,那么用户第三下应该输入密码中的第3位字符“C”,找到字符“C”所在的按键并按下,此时用户便正确的输入了三位。密码第四位字符“D”被随机分配在数字键盘的9键上,那么用户第四下应该输入密码中的第9位字符“4”,找到字符“4”所在的按键并按下,此时用户便正确的输入了四位。密码第五位字符“E”被随机分配在数字键盘的0键上,那么用户第五下应该输入密码中的第10位字符“5”,找到字符“5”所在的按键并按下,此时用户输入了5位正确的密码,服务器可以认定用户为合法用户。相当于服务器随机询问用户设定的原始密码中的第3位,第1位,第3位,第9位和第10位。在该过程中,即使被人看到或拍摄,由于人眼或摄像头的焦点只有一个,观察字符的分配就不能看清用户手的按键动作,观察手的动作就不能记忆字符的分配,或木马程序已经监控了鼠标、键盘及电脑屏幕,在这些极端不利状态下,由于不知道原始密码,以及“快门视觉冲击”特点的保护,被记录的按键位置,按键顺序,字符分布等信息都将无法利用,无法得知服务器询问的是哪五位,也无法提交正确密码。每次分配在每个按键上的多个字符完全不同,服务器每次询问的将是完全不同的5位。
7.“快门视觉冲击”特点:现在已经应用的“校验码”技术,可以防止“暴力穷尽代入”逐一试取密码,加上本技术包含的上述特点,在密码的输入过程中将很难被找到有用信息,较为可能而且简单的盗窃漏洞就存在于用户注册过程中,对于在柜台开户注册而言,如银行等,将不存在该漏洞。“随机隐蔽询问”式登录过程是在服务器和用户这两个已经知道密码的“个体”之间进行,针对密码本身的任何问题双方都知道答案,所以能够防止“第三方”窃取。但注册时,用户必须准确的告知服务器所要设定的密码,即:每一位的唯一的密码字符。本技术在注册时同样使用随机分配字符的10个按键,通过程序算法的控制,在3次输入中比对,找出在3次输入中每一位上都出现的唯一一个字符,进而判断用户所要设定的密码。由于用户是根据屏幕上显示的字符分布来按键,而木马程序可以监控屏幕,甚至录像的,所以必须采用有效的保护措施。本技术中使用“快门视觉冲击”技术来防止用户的屏幕被监视或录像。现行的屏幕监控和屏幕录像软件大多只能录制15~50帧/秒,即:每秒可以录制15~50幅画面。本技术利用人眼的“敏感色彩”和“视觉暂留”特点,防止包含关键信息的帧被录制。
(“敏感色彩”原理:人眼对黑色最不敏感,对红、黄、橙等色彩高度敏感。人眼对几何形状中的基本形状或“尖锐”形状敏感。两者结合可以达到最好效果,且色盲患者也可正常使用。)
(“视觉暂留”原理:人眼将看到的影像暂时保存,在影像消失之后,之前的影像还会暂时停留在眼前40~200毫秒,每秒24帧画面以上的播放速度将被视为连续画面。)
本技术“快门视觉冲击”原理:用户输入用户名后,在屏幕上找到所要设定密码字符的位置,将鼠标移动到输入区内(无鼠标的输入设备可用键盘上的特定键模拟鼠标进入或移出输入区),此时,10个按键被黑色覆盖,并保持500毫秒,对视网膜的神经进行类似“清空”的刺激,使先前因“视觉暂留”保存的图象清空,然后将***中设定的多幅图片(每幅图片为黑色背景,以敏感颜色绘制的敏感形状,用以增强视觉反差对比)随机分配到10个按键上并停留5~17毫秒(5~17毫秒的停留画面即为包含关键信息的帧,该时间用户可自行调整,以适应不同年龄和不同视力的人群,或自动调整以适应不同刷新频率的显示设备。普通液晶显示器最低刷新频率为60赫兹,对应17毫秒。更高的刷新率可用更短的停留时间。)人眼受到强烈的视觉冲击后很容易记住所要设定的密码字符上对应的彩色图形,然后再以黑色“遮断”500毫秒,由于黑色是不敏感颜色,不会立刻“清空”原暂留的高敏感彩色图形,然后***对10幅图片进行随机移动,其下面被覆盖的字符也被一同移动,用户用鼠标点击被移动后的“眼前仍然停留”的彩色图形,即完成了一位密码字符的输入。然后将鼠标光标移出输入区,将会再次显示先前的字符分配。依次输完10位后,程序的算法将控制字符进行移动,用户将要设定的密码重复输入一次后,程序将再次移动字符,然后最后一次输入以确认密码,完成用户的注册。由于截取屏幕的本质为截取显示适配器(如:计算机显卡)的显示存储器中的数据,关键信息帧在屏幕上停留的时间取决于显示设备的刷新速度(如:计算机显示器),该时间通常为5~17毫秒,所以显示存储器中的数据也停留5~17毫秒。鼠标何时进入输入区无法被确定,且整个注册过程中共有30次关键信息出现,录制软件只有达到每秒60~200帧的录制速度才能确保捕获关键信息帧,目前软件做到这点难度较大,过高的录制速度会大量消耗计算机***资源,容易引起用户警觉。该操作只对注册过程必需,登陆过程可直接使用键盘按键,以提高输入速度。
8.“主动证明”特点:为了防止钓鱼网站骗取帐号,用户的登录过程分两步,第一步是输入用户名,服务器确认后将返回一个针对该用户的动态服务信息,如上次成功登录的时间。当用户看到信息后便可确认该网站的合法性,然后再输入密码,即可保证双方的互相认证。若钓鱼网站用任意用户名或在已知用户名的情况下到官方网站取得服务信息,那么为了保证不被识破,必须进行大量的“试登录”以保证取得最新的服务信息,如此将极大增加其工作量和维护难度。即便用户“误登”该网站,由于本密码技术的“随机隐蔽询问”特点,也不会对帐号安全构成威胁。
9.“临时序号”特点:由于人的思维习惯,为方便***管理、扩充和记忆,会将字符按照某种规律来存放,如:0~9,A~Z,这给密码的破解和窃取留下了漏洞,必须解除这种字符与位置的固定对应关系,需要一个随机生成的“中间层”(临时分配表),该“中间层”在每次用户与服务器的对话过程中都会随机变化,并且只临时保存在服务器端,在其后对字符的所有引用中均用当前临时分配表中的位置(即临时序号)表示,服务器根据客户端返回的数据,在“临时分配表”中查找对应密码字符。这样做可以防止恶意程序通过在客户端机器的内存中查找敏感信息而造成密码泄漏。
附图说明
以用户进行一次完整的注册帐号、密码,和一次登录操作进行说明:
图1为开始注册时,字符随机分配示意图。
图2为输入一次密码后,控制1、2位字符位移后的字符分配示意图。
图3为输入二次密码后,控制2、3位字符位移后的字符分配示意图。
图4为输入三次密码并注册成功,或开始登录操作时的字符随机分配示意图。
图5为鼠标进入输入区,用黑色覆盖字符进行“视觉清空”的示意图。
图6为“视觉清空”后,随机用高敏感彩色图形覆盖字符进行“视觉冲击”的示意图。
图7为“视觉冲击”后,对高敏感彩色图形及被其覆盖的字符进行随机移动后的示意图。
注册过程:
1.用合法字符组合成特定位数的用户名,输入用户名。
2.用户自行设定密码(设密码为ABBAC12345),并根据当前字符在按键上的分配进行3次密码输入。
(1)当前字符分布如附图1,第一次密码输入:
第一位“A”在键位3上,注视3号键,将鼠标移进输入区,所有按键将被黑色覆盖进行“视觉清空”(见图5),500毫秒后所有按键将被高敏感彩色图形覆盖,进行“视觉冲击”(见图6),用户能够记住3号键上的图形为橙色三角形,17毫秒(该值为对应液晶显示器最低刷新率,可根据显示器实际刷新率自动调整。)后所有按键再次被黑色覆盖以加深记忆(见图5),500毫秒后所有按键再次被高敏感彩色图形覆盖,并保持第一次视觉冲击时的对应关系,但位置已随机变化(见图7),找到橙色三角形所在按键,鼠标单击确认第一位密码“A”的输入。将鼠标移出输入区,将显示原字符分布(见图1),依次输入第二位密码“B”,第三位密码“B”,第四位密码“A”,第五位密码“C”,第六位密码“1”,第七位密码“2”,第八位密码“3”,第九位密码“4”,第十位密码“5”。按下“确认”完成第一次密码的输入。
(2)第一次输入密码并确认后,程序将每个按键上的第1、2位字符(左上、右上、左下、右下对应1、2、3、4位)移动到下一号按键上1、2位,如:0号键上的1、2号字符“7”“Z”移动到1号键的1、2位置上,1号键变成“7”“Z”“W”“F”。9号键1、2位移动到0号键1、2位,0号键变成“9”“D”“X”“E”。变化后的字符分布如图2,并按照第一次的输入方法,完成第二次的密码输入。
(3)第二次输入密码并确认后,程序将每个按键上的第2、3位字符,移动到下一号按键上2、3位,如:0号键上的2、3号字符“D”“X”移动到1号键的2、3位置上,1号键变成“7”“D”“X”“F”。9号键2、3位“2”“S”移动到0号键2、3位,0号键变成“9”“2”“S”“E”。变化后的字符分布如图3,并按照第一次的输入方法,完成密码的第三次输入。
(4)用鼠标单击“确认”或按下键盘的“回车”键,或按下注册区的“提交”按钮,完成用户帐号、密码的注册过程。成功后将提示用户,并记录用户的注册时间作为“动态服务信息”,失败则重新分配字符,并要求用户重新输入。在前三次密码输入过程中如果输错,可单击“删除”或按下键盘的“←”或数字键盘的“.”以删除前一位的输入,如果想重新填写可按下注册区的“重填”按钮。
(5)三次密码输入的比对原理:(以第一位密码字符“A”为例):
图1时,“A”“1”“C”“T”在同一键上,按此键可确认密码第一位为此4个字符中的其一,图2时,“A”“1”“8”在同一键上,按此键可确认密码第一位为“A”“1”此2个字符中的其一,图3时,“A”“4”“C”在同一键上,按此键可确认密码的第一位字符为“A”。若按“L”“1”“8”“Y”键,则密码第一位位字符为“1”,若按此2个键之外的其他按键则密码输入错误。其余九位方法相同,比对过程在“提交”后进行。
登录过程:
1.输入用户名。
2.按下键盘“回车”键,将显示动态服务信息(第一次登录将显示用户的注册时间,其后的登录将显示上一次成功登录的时间),服务器进行主动证明。
3.输入密码。输入时遵循“随机隐蔽询问”原则,用鼠标或键盘进行。
“随机隐蔽询问”原则说明:
输入密码时,以***要求的位数为基准(5位),用密码中的前5位所在按键的按键号,以按键号对应密码的特定位,进行输入。如:密码ABBAC12345,图4时,原始密码第一位“A”在3号键,用原始密码中的“第3位”字符“B”填充密码输入中的第1位,按下“4”“B”“D”“6”所在的数字键盘1号键,或用鼠标单击1号键在“视觉冲击”时显示的图形,完成“第一位”的输入。原始密码第二位“B”在1号键,用原始密码中的“第1位”字符“A”填充密码输入中的第2位,按下K”“1”“H”“A”所在的数字键盘3号键,或用鼠标单击3号键在“视觉冲击”时显示的图形,完成“第二位”的输入。原始密码第五位“C”在0号键,用原始密码中的“第10位”字符“5”填充密码输入中的第5位,按下“5”“W”“N”“E”所在的数字键盘9号键,或用鼠标单击9号键在“视觉冲击”时显示的图形,完成“第五位”的输入。至此,***要求的密码位数5位以全部输入。
“随机隐蔽询问”特点分析:
在此例中,相当于服务器随机确定询问用户原始密码中的第3位,第1位,第1位,第3位和第10位。对于合法用户而言,能够知道服务器的问题,并能正确回答。在该过程中,即使被人看到或拍摄,由于人眼或摄像头的焦点只有一个,观察字符的分配就不能看清用户手的按键动作,观察手的动作就不能记忆字符的分配,或木马程序已经监控了鼠标、键盘及电脑屏幕,在这些极端不利状态下,由于不知道原始密码,以及“快门视觉冲击”特点的保护,被记录的按键位置,按键顺序,字符分布等信息都将无法利用,无法得知服务器询问的是哪五位,也无法提交正确密码。每次分配在每个按键上的多个字符完全不同,服务器每次询问的将是完全不同的5位。
4.输入随机生成的“校验码”。
5.按“登录”按钮,进行登录,所有输入全部正确则登录成功,提示用户,记录并显示本次登录时间,否则失败,重新分配字符并提示重填。
具体实施方式
该技术的实施,只需要对现有的密码***的认证部分的代码进行升级,原有的用户数据部分不需改造。由于在独立***内或互联网***内实施该技术在开发工具和编程语言的选择上存在多样性,无法逐一列举,在此,用C语言为例来进行说明:
核心数据结构:
1.用于存储密码有效密码字符集的结构数组(字符信息表):
struct
{
    TCHAR         character;//存储一个有效字符
    HBITMAP       hBitmap;  //存储与该字符对应的图片句柄,格式为位图。
}CharInfo[36];     //36为默认的有效字符数量,0~9,A~Z。可视要求扩充。
2.由于人的思维习惯,为方便***管理、扩充和记忆,会将字符按照某种规律来存放,如:0~9,A~Z,这给密码的破解和窃取留下了漏洞,必须解除这种字符与位置的固定对应关系,需要一个随机生成的“中间层”(临时分配表),该“中间层”在每次用户与服务器的对话过程中都会随机变化,并且只临时保存在服务器端,在其后对字符的所有引用中均用当前临时分配表中的位置(即临时序号)表示,服务器根据客户端返回的数据,在“临时分配表”中查找对应密码字符。这样做可以防止恶意程序通过在客户端机器的内存中查找“敏感信息”而造成密码泄漏。
用于临时存储密码有效字符集的结构数组(临时分配表):
struct
{
    TCHAR     character;//存储一个有效字符
    HBITMAP   hBitmap;  //存储与该字符对应的图片句柄
    BOOL      used;     //标识该位置已存储信息,以免随机分配时再此选中该位置
    int       KeyNumber;//标识该位置的信息在其后被随机分配到的按键的编号
}tempDisTable[36];
3.用于存储每个按键信息的结构数组(按键信息表),每个按键根据当前的状况,用其所包含的图片,负责对自身的刷新和显示:
struct
{
    POINT    point[4];  //定义每个按键上4幅图片显示时的左上角坐标
    HBITMAP  hBitmap[4];//4幅图片的句柄,只有3个字符的按键,第4幅图片为空
    int      nIndex[4]; //4幅图片所对应字符在临时分配表中的标号,其后的比对均用此值
int      max;      //该按键最多被分配的标号数量,0、1、3、5、7、9键为4个,
                    //2、4、6、8键为3个,第4个为空。
int      count;    //标识当前该按键的标号数量,当等于max时,表示该键已“装满”
                    //防止随机分配时再次选中,向已满的按键装入信息。
HBITMAP  key;      //存储该按键的键位图片,因为按键不能移动,故一旦赋值不再改变
HBITMAP  color;    //鼠标输入密码时,该键被随机赋予的高敏感彩色图形图片。
BOOL     colorused;//标识该键已被赋予彩色图片,防止随即分配时再次选中此键。
}KeyInfo[12]        //最后2个键为“删除”“确认”键,信息较少且赋值后固定不变。
4.根据用户输入密码时的按键,将每个键包含的所有标号取出,组成表格(密码输入表),便于比对和检查:
struct
{
    int  Number;         //一次输入的位数,小于10则错误(密码固定为10)
    int  KeyNumber[10];  //一次输入中,每一位对应的按键号
    int  Index[10][4];   //一次输入中,每一位对应的按键号所包含的全部标号
}input[4];               //前3个密码输入表存储注册中的3次密码输入信息,
                          //第4个密码输入表存储登录中密码输入信息。
5.根据注册中3次提交的密码输入信息,将密码输入表1和表2进行比对,将每一位上相同的2个标号存储,由于字符移动算法的控制,必定只能找到2个,若找不到相同的2个,说明输入错误。将10位的比对结果组成数组(一次比对表)并存储:
int  cmptable[10][2];    //10代表10位,2代表每位上相同的2个标号。
6.根据密码输入表3和一次比对表,将二者逐位比对,把每一位上相同的1个标号存储,由于字符移动算法的控制,必定只能找到1个,否则说明密码输入错。用10位的比对结果,将标号还原成实际密码字符,组成数组(原始密码),并存储于服务器:
TCHAR   password[10];    //10代表10位密码
7.用于不同状况下,显示不同信息的控制变量:
BOOL    visible;         //控制每个按键上代表字符的图片是否可见。
BOOL    shield;          //控制“视觉冲击”前后用黑色遮断的标志。
BOOL    serveinfo;       //在登录时,用户名正确时,控制显示动态服务信息。
BOOL    checkout;        //在登录时,用户名正确时,控制显示校验码。
8.由于校验码技术不是本技术所特有,故实现其功能的数据和方法不列出。
核心功能代码:
1.以密码有效字符集,字符信息表CharInfo[36]为基础,对临时分配表tempDisTable[36]进行随机初始化:
int RandDisTable()
{
    int    i,j;
    srand((unsigned int)time(NULL));//以当前***时间作为随机数序列的“种子”
    for(i=0;i<36;i++)
    {
       j=abs(rand()%36);//生成0~35之间的一个随机数,对应0~35号位置
       while(tempDisTable[j].used==TRUE)//排除已经使用的位置
       {
          if(j<35)
            j++;
         else
            j=0;
      }
      tempDisTable[j].character=CharInfo[i].character;//赋值
      tempDisTable[j].hBitmap  =CharInfo[i].hBitmap;  //赋值
      tempDisTable[j].used     =TRUE;                 //标识已使用
      tempDisTable[j].KeyNumber=99;                   //初始化
    }
    return 0;
}
2.以临时分配表tempDisTable[36]为基础,对按键信息表KeyInfo[12]进程随机初始化:
int RandKeyInfo()
{
    int  i,j,k;
    for(i=0;i<10;i++)
    {
       KeyInfo[i].count=0;//为0~9号按键的当前标号数量清空
       //为0~9号键赋值按键固有图片
       KeyInfo[i].key=LoadBitmap(hInstance,BitmapName[49+i]);
    }//BitmapName[]为存储程序中所有位图图片名称的数组
    //为“.”键赋值按键固有图片
    KeyInfo[10].key=LoadBitmap(hInstance,BitmapName[37]);
     //为“回车”键赋值按键固有图片
     KeyInfo[11].key   =LoadBitmap(hInstance,BitmapName[38]);
     //为0~9号键随机分配信息
     srand((unsigned int)time(NULL));
     for(i=0;i<36;i++)
     {
        j=abs(rand()%10);
        while(KeyInfo[j].count==KeyInfo[j].max)
        {
          if(j<9)
             j++;
          else
             j=0;
        }
        k=KeyInfo[j].count;
        KeyInfo[j].nIndex[k]      =i;
        KeyInfo[j].hBitmap[k]     =tempDisTable[i].hBitmap;
        tempDisTable[i].KeyNumber =j;
        KeyInfo[j].count++;
    }
    backupKeyInfo();//保存当前的分布,以便在“视觉冲击”时随机移动后的复原
                     //该函数与restoreKeyInfo()配合使用,由于功能简单不列出代码
    return 0;
}
3.注册中,第一、第二次输入密码后将对每个按键上的信息进行位移:
int MoveChar(int p)//p为控制标志,用0调用函数将移动按键上的1、2位,
                   //            用1调用函数将移动按键上的2、3位。
{
    int      i;
    struct    //位移时需要的临时结构
    {
       int        nIndex[2];
       HBITMAP    hBitmap[2];
    }tempmove={{{KeyInfo[9].nIndex[p]},{KeyInfo[9].nIndex[p+1]}   },
                {{KeyInfo[9].hBitmap[p]},{KeyInfo[9].hBitmap[p+1]} }
               };
     for(i=9;i>0;i--)
     {
        KeyInfo[i].nIndex[p]    =KeyInfo[i-1].nIndex[p];
        KeyInfo[i].nIndex[p+1]  =KeyInfo[i-1].nIndex[p+1];
        KeyInfo[i].hBitmap[p]   =KeyInfo[i-1].hBitmap[p];
        KeyInfo[i].hBitmap[p+1] =KeyInfo[i-1].hBitmap[p+1];
     }
     KeyInfo[0].nIndex[p]    =tempmove.nIndex[0];
     KeyInfo[0].nIndex[p+1]  =tempmove.nIndex[1];
     KeyInfo[0].hBitmap[p]   =tempmove.hBitmap[0];
     KeyInfo[0].hBitmap[p+1] =tempmove.hBitmap[1];
     return 0;
}
4.“视觉冲击”后会对彩色图形及其下所覆盖的按键信息一同移动:
int RandMoveKeyInfo()
{
    int    i,j;
    struct  //用于随机移动的临时结构数组
    {
       int        nIndex[4];
       HBITMAP    hBitmap[4];
       HBITMAP    color;
       BOOL       used;
     }tempmove[10];
     //复制原按键信息,准备进行按键-(顺序)-临时结构-(随机)-按键的倒换
     for(i=0;i<10;i++)
     {
        //复制标号
        tempmove[i].nIndex[0]=KeyInfo[i].nIndex[0];
        tempmove[i].nIndex[1]=KeyInfo[i].nIndex[1];
        tempmove[i].nIndex[2]=KeyInfo[i].nIndex[2];
    tempmove[i].nIndex[3]=KeyInfo[i].nIndex[3];
    //复制位图
    tempmove[i].hBitmap[0]=KeyInfo[i].hBitmap[0];
    tempmove[i].hBitmap[1]=KeyInfo[i].hBitmap[1];
    tempmove[i].hBitmap[2]=KeyInfo[i].hBitmap[2];
    tempmove[i].hBitmap[3]=KeyInfo[i].hBitmap[3];
    //复制彩色图形
    tempmove[i].color=KeyInfo[i].color;
    //为其后的随机移动时的选择做准备
    tempmove[i].used=FALSE;
}
//开始随机倒换
srand((unsigned int)time(NULL));
for(i=0;i<10;i++)
{
    j=abs(rand()%10);
    while(tempmove[j].used==TRUE)
    {
       if(j<9)
          j++;
       else
          j=0;
    }
    //倒换标号
    KeyInfo[i].nIndex[0]=tempmove[j].nIndex[0];
    KeyInfo[i].nIndex[1]=tempmove[j].nIndex[1];
    KeyInfo[i].nIndex[2]=tempmove[j].nIndex[2];
    KeyInfo[i].nIndex[3]=tempmove[j].nIndex[3];
    //倒换位图
    KeyInfo[i].hBitmap[0]=tempmove[j].hBitmap[0];
    KeyInfo[i].hBitmap[1]=tempmove[j].hBitmap[1];
    KeyInfo[i].hBitmap[2]=tempmove[j].hBitmap[2];
    KeyInfo[i].hBitmap[3]=tempmove[j].hBitmap[3];
    //倒换彩色图形
    KeyInfo[i].color=tempmove[j].color;
    //标识已有信息,防止再被选中
    tempmove[j].used=TRUE;
      }
      return 0;
}
5.选择用鼠标输入密码时,鼠标进入输入区在“视觉冲击”的瞬间所出现的彩色图片将随机确定:
int RandColor()
{
    int i,j;
    //为每个按键随机赋值彩色图形
    srand((unsigned int)time(NULL));
    for(i=0;i<10;i++)
    {
        j=abs(rand()%10);
        while(KeyInfo[j].colorused==TRUE)
        {
            if(j<9)
               j++;
            else
               j=0;
        }
        KeyInfo[j].color     =LoadBitmap(hInstance,BitmapName[39+i]);
        KeyInfo[j].colorused =TRUE;//标识已有彩色图形,防止下次再被选中
    }
    //防止下次调用函数时,因为所有按键的“colorused”全为“TRUE”而死循环!
    for(i=0;i<10;i++)
        KeyInfo[i].colorused=FALSE;
    return 0;
}
6.将注册时的三次密码输入进行比对,正确则存储密码,错误则提示重填
int CmpforPW()
{
    int  i,j,k,l;
    //检查3次是否输入同样的位数
    if((input[0].num==input[1].num)&&(input[1].num==input[2].num))
       ;
    else
     return 1;  //3次的输入位数不同
  //检查位数是否足够
  if(input[0].num==10)
      ;
  else
     return 2;//位数不足10位
//用第一次的输入input[0]和第二次的输入input[1],进行比对
for(k=0;k<10;k++)//控制位数
{
     l=0;  //每位上已找到相同字符的数量
     for(j=0;j<4;j++)//控制input[0]的字符
     {
         for(i=0;i<4;i++)//控制input[1]的字符
         {
              if(input[0].Index[k][j]==input[1].Index[k][i])
              {
                   //将相同标号保存到一次比对表cmptable中
                   cmptable[k][l]=input[0].Index[k][j];
                   l++;
                   break;
              }
         }
         if(l==2)//找到2个相同字符后,跳出当前位的比对循环,进行下一位的比对
              break;
     }
     if(l!=2)//逐位检查
         return 3;//当前位没有找到相同的2个标号说明密码输入错误
}
//用cmptable与第三次输入input[2]对比!
for(k=0;10;k++)//控制位数
    {
    l=0;
    for(j=0;j<2;j++)//控制cmptable的字符
    {
        for(i=0;i<4;i++)//控制input[2]的字符
        {
            if(cmptable[k][j]==input[2].Index[k][i])
                   {
                         //将相同的标号转换成实际字符,存储在password中作为原始密码
                         password[k]=tempDisTable[cmptable[k][j]].character;
                         l++;
                         break;
                   }
                }
                if(l==1)
                   break;
         }
         if(l!=1)//逐位检查
            return 3;//当前位没有找到相同的唯一1个标号说明密码输入错误
    }
    return 0;  //密码有效,设置成功
}
7.登录时,将用户的密码输入input[3]与原始密码password按“随机隐蔽询问”原则进行比对:
int CmpPW()
{
    int i,j,k,l,a,b,pwlevel=0;//pwlevel--连续正确的密码位数
    if(input[3].num<5)//位数检查
        return 0;  //输入少于***要求的位数5位,错误
    //开始按“随机隐蔽询问”规则比对密码
    for(i=0;i<input[3].num;i++)//控制位数,允许大于要求的位数,并逐一比对
    {
        k=0;
        //在临时分配表tempDisTable中找到原始密码中当前位上的字符,
        //并查找其所在的按键号。
        for(l=0;l<36;l++)
        {
            if(password[i]==tempDisTable[l].character)
            {
               a=tempDisTable[l].KeyNumber;//获取原始密码当前位所在的按键号
               break;
            }
         }
         //对按键号的偏移进行修正
         if(a>0)
            b=a-1;
         else
            b=9;
         //以“随机隐蔽询问”原则进行密码比对
         for(j=0;j<4;j++)//控制input[3]的字符
         {
             if(tempDisTable[input[3].Index[i][j]].character==password[b])
             {
                 k++;
                 break;
             }
         }
         if(k!=1)//当前位上没有找到相同的字符
            return pwlevel;//返回密码中连续正确的位数,结束密码比对
         else    //当前位找到了相同字符,将正确位数加1,并继续下一位的比对
            pwlevel++;
     }
     return pwlevel;    //所有输入的位数均已比对完成,返回连续正确的密码位数!
}
技术比较
本密码技术克服了传统密码技术,对恶意程序、木马盗窃程序,钓鱼骗号网站,偷拍行为无能为力的缺点,针对现在普遍发生盗号现象给出了可行的解决方法。是一种除生物识别技术以外(如:指纹识别,声音识别,视网膜识别等)能够提供全面安全防范措施的密码保护技术,只需对网络***服务器或独立内部***服务器进行程序改造,不需要大量改造成本即可实现。
与现行密码保护新技术:矩阵卡技术、电子钥匙(如银行***的U盾)相比较,也具有一定的优势。首先是成本优势,用户使用矩阵卡、电子钥匙需要支付相应的费用。其次是安全和便捷优势,由于矩阵卡是一种将字符呈矩阵排列的固定分配卡片,也是一种“额外的媒介”,当U盾或卡片遗失后,用户自己也将不能登录,因为用户不会去记下U盾中的信息或卡片上字符的分布,如果矩阵卡被他人记录、拍照(如:手机拍照)、复印后也将失去其保护效果。即使在未遗失,未被拍照和复印的情况下,如果用户所用电脑或设备被木马监控后将会泄漏矩阵卡的部分信息,因为***要求输入特定坐标点的字符是“显示的询问”虽然每次只需要卡上几十到上百个坐标点中的几个,但通过多次监视屏幕、记录键盘,就可以完全复原矩阵卡本身。如:某矩阵卡有8×10共80个坐标点,某次要求输入A5,B9,E3点的字符,那么木马程序监控到屏幕和键盘后,就可以知道此3个坐标点的字符,多次记录后,最终将得到全部的矩阵卡信息,甚至只需知道一部分,就有被***选中已知坐标点的概率,此时矩阵卡也就失去了保护效果。
与指纹、声音等生物识别技术相比较,由于生物信息要通过计算机终端,所以此类信息均将被转换为二进制的数字信息,进而进行存储、运算、传输,通过对特定输入或传输端口的监控,理论上也可以破解生物密码和U盾密码。本技术的随机隐询特点,目的为建立一种只存在于服务器和合法用户头脑中的随机隐蔽询问密码认证机制,弥补操作过程和相关设备造成泄密的漏洞。
本技术无法用“暴力穷尽算法”破解,传统的固定式密码,把所有符合密码规则的字符串集合起来,逐一试取,必定能取得密码。本技术的密码为非固定式,故无法用穷尽算法,只能用“暴力随机算法”,即:模拟键盘,输入符合密码位数的随机按键,虽然同样可能被命中,但此方法没有代入密码的最大次数,即:有可能陷入无穷循环。加上“识别码”认证技术,可以有效的防止他人利用软件恶意的暴力循环代入,将极大的提高对密码的监控、欺骗、偷拍偷看、破解和逐一试取难度。
本技术的主要缺点在于输入时的不习惯,容易出错。用户需要根据前五位密码在按键上的位置去找到对应位数的那一位密码,因此要反复的默念密码,并数密码的位数。要通过多次的操作才能提高输入的熟练程度和准确率,但因为反复的默念可以加深对密码的印象,从而不易遗忘原始密码。

Claims (4)

1.一种针对在有线或无线互联网或独立网络***、金融***、保险***中,利用恶意程序、木马程序监控输入过程,盗窃帐号密码,利用钓鱼网站骗取帐号密码,利用偷拍、偷窥他人输入过程套取帐号密码,以及为解决传统密码技术固有缺陷而设计的新型密码身份认证技术。
2.根据权利要求1所述的密码技术,其具有--随机集合特征:原始密码的位数固定,且和按键数目相等,每个按键上随机分配规定字符集中的多个字符。
3.根据权利要求1所述的密码技术,其具有--随机隐蔽询问特征:密码的输入过程中,用户需要根据当前字符在按键上的随机分布,将设定的原始密码中前5位(可根据安全要求更改)字符所在的按键位置,其位置所对应的特定位上的密码字符所在的键位依次输入。
4.根据权利要求1所述的密码技术,其具有--快门式视觉冲击特征:利用人眼的敏感颜色,敏感形状和视觉暂留生理特点,在极短时间内用高敏感彩色图形覆盖所有按键,然后进行随机移动,用户按眼前视觉暂留的图象进行输入,防止显示设备被他人监控或偷拍、偷看而造成的密码信息泄漏。
CN2007101385603A 2007-08-03 2007-08-03 随机隐询式密码认证技术 Expired - Fee Related CN101183941B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2007101385603A CN101183941B (zh) 2007-08-03 2007-08-03 随机隐询式密码认证技术

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2007101385603A CN101183941B (zh) 2007-08-03 2007-08-03 随机隐询式密码认证技术

Publications (2)

Publication Number Publication Date
CN101183941A true CN101183941A (zh) 2008-05-21
CN101183941B CN101183941B (zh) 2011-03-09

Family

ID=39449039

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007101385603A Expired - Fee Related CN101183941B (zh) 2007-08-03 2007-08-03 随机隐询式密码认证技术

Country Status (1)

Country Link
CN (1) CN101183941B (zh)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101944914A (zh) * 2010-09-19 2011-01-12 刘继峰 一种账号和密码的动态组合方法
CN103632075A (zh) * 2013-10-17 2014-03-12 东莞盛世科技电子实业有限公司 鉴权装置及鉴权方法
CN103729605A (zh) * 2014-01-13 2014-04-16 深圳市中航软件技术有限公司 基于触摸屏的密码输入方法和触控终端
CN103873442A (zh) * 2012-12-13 2014-06-18 腾讯科技(深圳)有限公司 登录信息的处理方法和装置
CN104011729A (zh) * 2011-12-16 2014-08-27 Nec个人电脑株式会社 输入信息认证装置、服务器装置、输入信息认证***以及装置的程序
CN104156656A (zh) * 2014-05-28 2014-11-19 东莞盛世科技电子实业有限公司 动态校验密码的方法及密码校验设备
WO2015161565A1 (zh) * 2014-04-24 2015-10-29 东莞盛世科技电子实业有限公司 密码验证装置及密码验证方法
US9286451B2 (en) 2013-02-28 2016-03-15 International Business Machines Corporation Password authentication
WO2016058304A1 (zh) * 2014-10-13 2016-04-21 桑永朋 一种基于两级转换的口令输入方法及***
WO2016070774A1 (zh) * 2014-11-07 2016-05-12 百度在线网络技术(北京)有限公司 一种声纹验证方法、装置、存储介质和设备
CN106096350A (zh) * 2016-06-14 2016-11-09 东莞盛世科技电子实业有限公司 终端设备密码解锁方法、装置和终端设备
WO2016188405A1 (zh) * 2015-05-28 2016-12-01 东莞盛世科技电子实业有限公司 密码设定方法及其设备
CN106407827A (zh) * 2016-11-24 2017-02-15 合肥工业大学 一种基于频率差的屏幕防偷拍设备
WO2019165978A1 (zh) * 2018-02-28 2019-09-06 于君 以随机字符段标记间接输入的密码输入方法及设备
CN113323515A (zh) * 2021-06-07 2021-08-31 北京京东方技术开发有限公司 基于触觉反馈的密码输出装置、身份认证装置及其方法
WO2024140296A1 (zh) * 2022-12-29 2024-07-04 于君 密码认证***的密码图形认证方法

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104020972B (zh) * 2014-05-15 2017-07-14 小米科技有限责任公司 背景显示方法、装置及电子设备
CN104134032B (zh) * 2014-07-30 2018-05-29 黄伟强 一种基于视觉混淆的防偷窥密码锁***及解锁方法
CN108319874A (zh) * 2018-02-28 2018-07-24 于君 一种密码输入方法和装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1354413A (zh) * 2000-11-17 2002-06-19 宋士宁 变键隐形键盘
CN1371038A (zh) * 2001-02-27 2002-09-25 秦建忠 密码输入装置
CN2529310Y (zh) * 2002-05-29 2003-01-01 李涛 动态保密键盘
CN2572467Y (zh) * 2002-07-25 2003-09-10 上海融磁电子有限公司 旋转变位密码键盘装置
CN1416038A (zh) * 2002-11-14 2003-05-07 王伟东 一种按键数字可变的键盘及用途
CN1220128C (zh) * 2003-01-22 2005-09-21 王洋 键值可随机变化的智能保密键盘
CN1831727A (zh) * 2005-03-09 2006-09-13 上海新虹伟信息技术有限公司 视角限制密码乱序键盘

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101944914A (zh) * 2010-09-19 2011-01-12 刘继峰 一种账号和密码的动态组合方法
CN104011729B (zh) * 2011-12-16 2016-08-24 Nec个人电脑株式会社 输入信息认证装置、服务器装置以及输入信息认证***
CN104011729A (zh) * 2011-12-16 2014-08-27 Nec个人电脑株式会社 输入信息认证装置、服务器装置、输入信息认证***以及装置的程序
CN103873442A (zh) * 2012-12-13 2014-06-18 腾讯科技(深圳)有限公司 登录信息的处理方法和装置
US9286451B2 (en) 2013-02-28 2016-03-15 International Business Machines Corporation Password authentication
US9881146B2 (en) 2013-10-17 2018-01-30 Smart Electronic Industrial (Dong Guan) Co., Ltd. Authenticating device and authenticating method
WO2015054934A1 (zh) * 2013-10-17 2015-04-23 东莞盛世科技电子实业有限公司 鉴权装置及鉴权方法
CN103632075B (zh) * 2013-10-17 2016-03-30 东莞盛世科技电子实业有限公司 鉴权装置及鉴权方法
CN103632075A (zh) * 2013-10-17 2014-03-12 东莞盛世科技电子实业有限公司 鉴权装置及鉴权方法
RU2665222C2 (ru) * 2013-10-17 2018-08-28 Смарт Электроник Индастриал (Дун Гуань) Ко., Лтд. Устройство для установления подлинности и способ установления подлинности
CN103729605A (zh) * 2014-01-13 2014-04-16 深圳市中航软件技术有限公司 基于触摸屏的密码输入方法和触控终端
WO2015161565A1 (zh) * 2014-04-24 2015-10-29 东莞盛世科技电子实业有限公司 密码验证装置及密码验证方法
WO2015180236A1 (zh) * 2014-05-28 2015-12-03 东莞盛世科技电子实业有限公司 动态校验密码的方法及密码校验设备
CN104156656A (zh) * 2014-05-28 2014-11-19 东莞盛世科技电子实业有限公司 动态校验密码的方法及密码校验设备
WO2016058304A1 (zh) * 2014-10-13 2016-04-21 桑永朋 一种基于两级转换的口令输入方法及***
WO2016070774A1 (zh) * 2014-11-07 2016-05-12 百度在线网络技术(北京)有限公司 一种声纹验证方法、装置、存储介质和设备
US10277589B2 (en) 2014-11-07 2019-04-30 Baidu Online Network Technology (Beijing) Co., Ltd. Voiceprint verification method, apparatus, storage medium and device
WO2016188405A1 (zh) * 2015-05-28 2016-12-01 东莞盛世科技电子实业有限公司 密码设定方法及其设备
RU2656685C1 (ru) * 2015-05-28 2018-06-06 Смарт Электроник Индастриэл (Дон Гуань) Ко., Лтд. Способ формирования пароля и устройство для его осуществления
CN106096350B (zh) * 2016-06-14 2019-02-05 东莞盛世科技电子实业有限公司 终端设备密码解锁方法、装置和终端设备
WO2017215225A1 (zh) * 2016-06-14 2017-12-21 东莞盛世科技电子实业有限公司 终端设备密码解锁方法、装置和终端设备
CN106096350A (zh) * 2016-06-14 2016-11-09 东莞盛世科技电子实业有限公司 终端设备密码解锁方法、装置和终端设备
US11010463B2 (en) 2016-06-14 2021-05-18 Smart Electronic Industrial (Dong Guan) Co., Ltd. Terminal device password unlocking method and device, and terminal device using the same
CN106407827A (zh) * 2016-11-24 2017-02-15 合肥工业大学 一种基于频率差的屏幕防偷拍设备
WO2019165978A1 (zh) * 2018-02-28 2019-09-06 于君 以随机字符段标记间接输入的密码输入方法及设备
CN113323515A (zh) * 2021-06-07 2021-08-31 北京京东方技术开发有限公司 基于触觉反馈的密码输出装置、身份认证装置及其方法
WO2024140296A1 (zh) * 2022-12-29 2024-07-04 于君 密码认证***的密码图形认证方法

Also Published As

Publication number Publication date
CN101183941B (zh) 2011-03-09

Similar Documents

Publication Publication Date Title
CN101183941B (zh) 随机隐询式密码认证技术
US10643210B2 (en) Secure transactions using a personal device
CA2689853C (en) Secure access by a user to a resource
US5276314A (en) Identity verification system resistant to compromise by observation of its use
CN109891478A (zh) 用于保护从非安全终端执行的交易的方法
CA2644272C (en) Method and system for securing interface access via visual array paths in combination with hidden operators
US20080229397A1 (en) Website log in system with user friendly combination lock
US7904947B2 (en) Gateway log in system with user friendly combination lock
US9196111B1 (en) Automated teller machine (“ATM”) dynamic keypad
JP2008537210A (ja) 安全保証されたデータ通信方法
US20100199100A1 (en) Secure Access by a User to a Resource
US20060098841A1 (en) Method and system for enabling remote message composition
Kasat et al. Revolving flywheel pin entry method to prevent shoulder surfing attacks
JP2007531126A (ja) 技術的システムに対して安全にログオンする方法
Salman et al. A graphical PIN entry system with shoulder surfing resistance
Bostan et al. Shoulder surfing resistant graphical password schema: Randomized Pass Points (RPP)
Kasat et al. Study and analysis of shoulder-surfing methods
US9214051B1 (en) Dynamic touch screen for automated teller machines (“ATMs”)
Rao et al. Improved session based password security system
Aljaffan Password security and usability: from password checkers to a new framework for user authentication
Ray et al. GPOD: an efficient and secure graphical password authentication system by fast object detection
Pais et al. Illusion PIN: tricking the eye to defeat shoulder surfing attack by using hybrid images
Gibson et al. Accessible and secure? Design constraints on image and sound based passwords
Habibu Development of secured algorithm to enhance the privacy and security template of biometric technology
US20140304834A1 (en) Personalized Secure Data Access Techniques

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110309

Termination date: 20130803