函数密码锁
2019-07-01袁志富
袁志富
摘 要:在日常金融生活中,资金安全才是最重要的,方便都在其次。当前流行的指纹密码、肖像密码等均属于静态密码,这种密码容易被恶意软件套取。这里要向大家介绍的是一种函数型密码,这种密码的破解难度非常大。希望能为密码设计者提供参考。这种密码的输入界面将手机屏幕从左至右分为1至6六个区域,纵坐标为0至20,静态点记为J100-J620(第一位数为横坐标,后两位数为纵坐标)。每个区域有六个动态标志物上下往复运动,记为D11-D66(第一位数为区域号,第二位数为序号)。其中任意两个动态标志物都有相遇(纵坐标相同)的时候。当用户需要输入密码时,手机先向服务器发送解锁请求,服务器向手机发送36个0-39的随机数,手机根据这36个随机数来确定36个动态标志物的初始位置,然后上下往复运动,随机数小于20的往上运动,其余的往下运动。其运动速度要统一标准,20秒往复一次吧。
关键词:密码 安全性
中图分类号:TS914 文献标识码:A 文章编号:1003-9082(2019)06-0-01
一、引入输入密码的时机
用户可以这样设置:“当D11到达J115点的时候,从J106点划向D62所在点。”如果D11没到达J115点就开始操作则视为错误密码,如果错过了时机只能等到D11再次到达J115点的时候才操作(这样其实有两种可能:D11上升到达J115点和D11下降到达J115点)。用户操作之后,手机就把用户的操作作为密钥发送到服务器开锁,如果密钥中的点位跟服务器计算出的结果相同则视为正确密码。在用户手机上可设置背景图片,比如上面的J115点在背景图片中可能就是一间房屋、一棵树等等静态标志物,有需要的时候也可以显示坐标,同时也可以将动态标志物替换成头像、动物等图片。在银行柜员机等公用操作平台上就要用带坐标的背景图片,以及人人都看得懂的动态标志物。
这样设置的密码就算在别人眼皮底下输入他也看不出个所以然。
二、引入函数
如果说上面的方法还不够复杂,那就引入函数吧。先规定一些常数,如:S(用户自己设定的常数,类似于数字密码)、圆周率、常数的平方根、角度的正弦值等等。再引入一些公共变量,如C(当天第C次使用该密码成功开锁)、W(当前是星期几)、SG(当前时晨天干的序数)、ss(当前分钟数)、NR(当前农历日期数)等等。
有了这些常数和公共变量,用户就可以很方便的设置函数。如:
x=(C+W)%8 //(C+W)除以8的余数;
y=int((π*10^(C*2+W)-int(π*10^(C*2+W)))*10) //π的小数部分第C*2+W+1位数;
函数想设多复杂就可以设多复杂,只要用户心算能力足够好。这些函数看上去很复杂,用习惯了其实也是很简单的。
函数设置好之后就能进一步设置,如:
当D15到达J108点的时候,从D13划到D5x,再从D5x划到D55。(当x>6时系统默认x=x%6,x=0时x=6。)
再如:当D1x与D23相遇纵坐标相同时(这也有两种情况,而且应该与纵坐标为10那条线对称),点击(C%2-NR%2==0?D35:D45 //当C与农历日期数奇偶性相同时点D35,否则点D45)。
此外还可以将上面的S等参数引进来,不管是纵坐标还是横坐标都可以设置函数。如S的第x位所代表的纵坐标,sin70的第x位所代表的横坐标等等。也不管是时机标志点还是操作点都可以设置成函数。
其实也可以抛开上面的框架,在用户设置密码时让用户设置一个函数,输入密码时让用户输入一个函数计算出的不断变化的结果,这种方式安全性已经比较高了。
三、灵活设置密码
这种密码允许用户对同一帐户设置多个密码,如:
当D1x上升到达J103点时点击D55,或当D31到达J3(x%20)点时从J1(6-x%6)划到D53,或当D52与D56相遇时从D1(x%6)划到J5(y%10+3)。这样就设置了三个密码,用其中任何一个都可以开锁,哪个密码的操作时机先到就用哪一个,节约了等待时间。同时由于窃密者需要获取大量的数据进行对比分析才有可能破解这种密码,用户如果设了几个密码混搭使用,窃密者就永远找不出一个规律来,他就算复制了银行卡也很难把钱取出来。
如果说窃密者还能通过不停地试密码来碰运气,用户还能进一步设置,比如连续输错三次锁定该帐户(用户自己设定次数)。可以让用户设定两种密码,其中一种用来清除输错记录,这种密码不常用,也就不容易被窃取。窃密者就算窃取了这种密码而没有开锁密码也没办法把钱取出来。
用户设定密码时要分情形设定不同的密码,银行卡密码跟普通的网络帐号不能设置为同一密码。银行卡密码只能到银行自动柜员机去设定或修改,以防止被恶意软件窃取,如果窃密者窃取了密码设置的方法,那密码就不保密了。如果怕密碼太多不好记,或者长时间不用忘了,可以找一个小本子记录下来放在家里别人看不到的地方,要用时如果忘了就翻出来看看,最好不要记录在手机或者联网的电脑里,防止被窃取,也不要用联网的电脑或手机来对密码中的函数进行模拟计算。
四、函数密码锁的拓展运用
函数密码锁的运用广泛,不仅限于银行帐户,其它网络帐户、电脑上的文档加密等也可以,另外门锁、车锁、保险箱锁等都可以开发。比如电子门锁吧,当用户走到门前时拿出手机打开开锁软件,手机跟门锁通过蓝牙建立连接,然后输入密码,门锁就自动打开。这样用户就不用在腰间挂一大串钥匙了,而且不必担心钥匙丢失,如果手机丢了,拿另一个装上开锁软件的手机就可以打开,捡到手机的人也没办法开锁。如果手机被锁在屋里了,直接找邻居借一个手机来开一下就行。如果是几个人合租的房子,就设几个密码每人用一个密钥,有人搬走了就把他的密钥删除即可,有人搬进来就新增一个密钥。
五、开发专门的开锁设备
或许你想用一个很复杂的密码却又懒得去计算,可以开发专门的开锁设备,比如智能手表吧。用户可以将银行帐号及密码设在手表里,要开锁时手机向其通过蓝牙关联的手表发送开锁请求,用户在手表上点击确认(多一个环节避免恶意软件套取密码),手表向手机发送计算好的密码信息,然后自动进行开锁,完成支付。这样虽然方便,但是要保管好手表,手表的抗毒能力要强。
其它的电子密码锁也可以用这种方式打开。手表和手机等智能产品可以相互开锁,别人如果只拿到其中一个,就直接锁定,无法打开,更没办法从中得到什么好处。而用户可以动手输入密码开锁。