基于单片机的动态键位防窥密码键盘的设计
2015-12-13曾祥宏
曾祥宏
(深圳职业技术学院 计算机工程学院,广东 深圳 518055)
基于单片机的动态键位防窥密码键盘的设计
曾祥宏
(深圳职业技术学院 计算机工程学院,广东 深圳 518055)
介绍一种基于单片机技术实现的动态键位防窥密码键盘的设计原理和实现方案.通过设计10个数码管和10个按键并一一对应,但每个数码管上所显示的具体数字并不固定,而是在输入密码时,由单片机通过程序控制将0~9这10个数字随机地乱序显示在10个数码管上,用户通过观察数码管上显示的数字按下对应按键输入密码数字,由于每次输入密码时每个数码管显示的数字是变化不固定的,实现数字键位置动态变化,从而达到防止偷窥按键位置而泄露密码的目的,提高了密码键盘的安全性.
密码;键盘;动态键位;单片机;泄密
计算机已广泛应用于生产、生活的各个方面,人们在银行网点、证券营业部、电信营业厅、商场收银台等场所使用计算机系统办理相关业务时都要输入密码,而目前使用的密码键盘缺乏防窥安全措施,这些密码键盘的不足之处是将数字直接印在按键上,而按键在键盘上的位置是固定的,这样使用者在输入密码时,偷窥者很容易看见按键上的数字或者根据按键的位置而猜出数字,进而窃取密码.为解决上述不足,防止密码被偷窥,本研究提出一种动态键位防窥密码键盘设计方案.
1 设计原理
动态键位密码键盘的设计原理是:改变现有密码键盘将数字直接印制在按键上,且每个数字按键位置固定、使用者在输入密码时容易被窥看的缺点,设计10个数码管与10个按键一一对应,按键上不印数字,而是将数字显示在数码管上,而且每个数码管上显示的数字是通过软件动态随机产生的,在每次输入密码时都是不同的,这样按键与数字之间就没有了固定的对应关系,即使你知道了所按键的位置,也无法知道所输入的数字,因此偷窥者无法通过偷窥按键操作来窃取密码.
2 硬件设计
系统硬件主要包括MCU模块、按键功能模块、LED显示模块、语音功能模块、与PC机接口模块.
系统结构框图如图1所示,由MCU处理模块、按键功能模块、LED显示模块、语音功能模块、与PC机接口模块几部分组成.其中的核心部分是MCU处理模块,负责控制各功能模块完成相关功能,PC接口模块的功能是接收来自PC机的控制信息和将按键代码发送至PC机,LED显示模块的功能显示0~9十个数字,并动态地变换各数字的显示位置,按键功能模块是完成按键及其识别,语音功能模块是实现语音播放功能.
图1 系统总体结构图
2.1 MCU模块基本设计
该部分电路为本系统的核心部分,采用AT89C52单片机为主控芯片,基本电路有电源电路、时钟电路、复位电路.
2.2 按键模块功能设计
采用4X4行列式键盘,设计了16个按键,具体分配:10个按键分别对应0~9十个数字的输入,1个确认键,1个取消键,1个启动键,1个停止键,2个备用功能键,用于功能扩充.
确认键:用于确认密码输入完毕.
取消键:用于输入错误时取消,并重新进行输入.
启动键:用于启动密码键盘进入输入状态.停止键:用于关闭密码键盘输入.
行线由P2.0-P2.3控制,列线由P2.4-P2.7控制.
2.3 LED显示模块设计
该模块的功能是实现在10个键位上的数码管上随机地显示0~9十个数字,是实现动态键位的重要组成部分.由10个7段LED数码管、10个LED指示灯和相应显示控制电路组成,LED灯包括1个运行指示灯;1个出错指示灯;8个密码按键指示灯,用来指示输入的位数.软件上采用随机算法来动态确定每个数字的显示位置,数码管的显示通过动态显示的方法实现,位选信号为DIG_0---DIG_9(P0.1--P1.7,P3.6,P3.7),用来循环轮流选通显示数字0~9,段码信号DIGA,DIGB,...DIGG(P0.0--P0.6)用来控制当前显示数字的段码,DIGLED(P0.7)用来控制LED指示灯,为确保显示亮度,通过三极管对电流进行放大,电路原理图参见图2.
2.4 语音功能模块设计
语音功能模块的作用是用来播放提示语音,提示使用者进行密码输入操作,语音芯片采用美国ISSI公司的IS22C012一次性编程集成电路,也可采用与其兼容的API8108A,能直接驱动喇叭,为确保语音效果,通过1个三极管Q1进行语音放大,语音采样频率为6 kHz,提前分段烧录在芯片中,放音电阻R1大小为240 k,通过TG1(P3.2),TG2(P3.3),TG3(P3.3),TG4(P3.3)触发播放[1].参见图3.
2.5 键盘与PC机接口功能模块设计
键盘与PC机接口采用通用的PS/2接口,键盘与AT89C52单片机的连接方式如图4所示,P3.0接PS/2时钟线CLK,P3.1接PS/2数据线DATA,由于PS/2接口的时钟线与数据线都是集电极开路结构,需要外接上拉电阻才能正常工作,因为单片机的P3口内部是带上拉电阻的,所以满足直接相连接的要求[2].
图2 显示模块电路
图3 语音模块电路
图4 键盘接口接线图
3 软件设计
软件采用C语言和汇编语言结合的方式,主程序采用Keil C,键盘接口子程序采用汇编语言实现,主程序中,按键部分采用行列扫描来识别具体按键,数码管采用动态显示方法实现.键盘接口子程序,负责接收PC主机指令和实现将所按按键的扫描码发送至PC机.子程序关键说明参见表1,程序流程如图5所示.
实验应用结果显示,提示语音播放清晰,LED数码管显示数字清楚,虽然数字的位置是动态变化的,但对使用者而言没有造成任何影响,能快速、正确地实现密码输入,使用方便,同时达到了防窥的目的.
表1 发送键盘扫描码汇编子程序关键说明[2,3]
图5 程序流程图
[1] 谢少伟.IS22C011/20语音芯片的原理及在MCS-51单片机中的应用[J].国外电子元器件,2002(4):26-28.
[2] 郑伟,须文波,胡晋.单片机系统中PS/2键盘驱动程序的设计[J].江南大学学报(自然科学版),2006(6):281-285.
[3] 周建斌,刘红军.基于89C51的计算机可锁定加密键盘设计[J].单片机与嵌入式系统应用,2003(10):57-60.
Design of Dynamic Keys Password Keyboard Based on MCU Technique
ZENG Xianghong
(School of Computer Engineering, Shenzhen Polytechnic, Shenzhen, Guangdong 518055, China)
This paper introduces how dynamic keys password keyboard based on MCU technique is designed and implemented. 10 digital tubes and 10 buttons are designed to correspond with each other. However, the number shown on specific digital tube is not fixed, and the 10 numbers (0-9) shown on the 10 digital tubes are randomly controlled by MCU program when the password is entered. The user enters the password by pressing the numbers shown on digital key buttons. As the numbers shown on the digital key button are changeable and not fixed each time the password is entered, a dynamic change of digital key position is realized. It can prevent the leak of password by peeping at the key position and hence improve the security of the password keyboard.
password; keyboard; dynamic keys; MCU; leak
TP342
A
1672-0318(2015)03-0019-03
10.13899/j.cnki.szptxb.2015.03.004
2014-12-11
曾祥宏(1963-),男,湖南人,高级工程师,主要研究方向:软件、嵌入式系统开发.