基于单片机的便携防盗密码输入器方案设计
一、项目概述
1.1 引言
在信息化的今天,很多情况下都需要输入密码。由于输入方式和装置采用按键的限制,密码输入方式变为开放式,对密码的安全性构成威胁。此领域的专利虽然很多,但多是遮挡式和隐蔽式的,输入完整的密码依然会存在安全隐患。
1.2 项目背景/选题动机
在信息化时代的今天,很多情况下都要有密码的确认,即要输入密码,然后才能进入特定的“空间”,或执行某种“动作”。如学校、金融、零售、网络等需要输入密码的场所和行业。目前,采用密码的输入方式和装置,都是以键盘式(包括普通键盘、特殊键盘、小键盘等)为主,此种输入装置及其输入方法的缺陷是:由于是键盘按键式,其输入密码方式为开放式,也就是说,在使用者输入密码时,旁观者可通过其操作方式偷窥或推算到其密码,也可通过使用者所按按键的位置获悉其密码,从而在安全上构成威胁。即使旁观者无意想知道使用者的密码,比如:上下级、师生、同事、同学等,采用此种方法双方都会感到尴尬。此领域的专利有很多,但多数是遮挡式的或隐藏式的,但不管怎样都要在现场输入完整的密码,这样就存在安全隐患。
本设计是解决开放式密码输入装置在输入密码时容易被周围的人偷窥到所输入的密码信息而存在安全隐患的问题,提出一种新的密码输入系统。该系统即便在没有任何防护的情况下,人或摄像设备也无法得知所输入的密码,从而从根本上杜绝了密码被他人因窥视而被盗。
二、需求分析
2.1 功能要求
设计目的是解决开放式密码输入装置存在安全隐患的问题,提供一种密码输入方式与密码输入装置。使该装置即便在没有任何防护的情况下从根本上杜绝了密码被他人因窥视而被盗。
用户掌握开机密码才可开启PC机及进入用户工作页面,并可以自己通过该密码编辑软件修改密码,用数字键代表的字符串来取代固定的数字。可以将原来的简单数字密码,变为比较复杂的由大写字符、小写字符、数字、下划线等字符组成的密码,从而使密码的破解更为困难,这样可以一举两得。
2.2 性能要求
本设计的密码输入器在设计时还特别添加了保护措施,单片机上的程序是加密而不可读的,存储模块内存储的密码是经过加密处理的,不是原始密码,本密码输入器设有开机密码,只有输入正确的开机密码才能进行密码操作,而开机密码可以设定输入次数,一旦错误开机密码次数达到某一规定数值,密码输入器将自锁。
三、方案设计
3.1 系统功能实现原理
图1所示为密码输入装置的原理框图。
图1 密码输入装置原理框图
单片机通过USB接口与PC机相接,单片机上安装有应用软件,PC机上有密码编辑软件。PC机开机时要求输入开机密码,只有当开机密码输入正确时,才能开启PC机进入系统。当单片机与PC机连接后,PC机显示屏上出现页面:要求在密码输入装置中输入开机密码。若开机密码不正确,程序将提示继续输入开机密码,当开机密码达到限定的输入次数时,程序自锁。
若开机密码正确,则打开用户工作页面。这时,用户可以通过该密码编辑软件修改密码,自己编辑用数字键代表的字符串来取代固定的数字。该密码输入装置与常规键盘的本质区别在于:常规键盘的按键对应于唯一的固定键码,而该输入装置的按键所对应的是该装置中存储器的一个固定地址。而这一按键的映射地址中存储的数据是该按键所关联的作为密码的字符串。这个字符串由键码组成,因而当一个按键按下等同于连续按下多个按键,因而能用一个按键实现一串密码的输入。该装置按键与密码关联的实质是在存储器中按键对应的地址写入密码数据。该装置输入密码过程的实质是从存储器中按键对应地址读取密码数据,然后通过提供的接口将密码发送至需要密码输入的设备。
密码编辑保存后就可以直接存入系统。系统可以对该密码保留记忆,下次使用该系统时就可以直接按某一个或两个键来输入一串密码。
本设计的密码输入器在设计时还特别添加了保护措施,中央处理器上的程序是加密而不可读的,存储模块内存储的密码是经过加密处理的,不是原始密码,这就保证了密码的安全性,因此在现场输入的并非真正的密码,所以即便在有很多人围观的情况下也无法获取用户的真正密码,真正的实现了密码的安全保护作用。而且系统的本身也提供了一个开机密码,只有正确输入开机密码后才能进入系统,因此即使不小心丢失该产品,他人也无法轻易使用。
选用的开发板符合USB协议可以直接与PC机相连,在PC机上对单片机进行编程,设计可以在PC机上安装应用的密码编辑软件。数字键盘按键和确认按键可利用PC机的键盘输入,显示装置即为PC机的屏幕。只需要用单片机编程出相应的安装应用软件,即可达到预期目标。
此处以EEPROM作为存储器、USB接口作为通信的媒介的密码输入装置为例。当该密码输入装置插入需要密码输入的设备(此处以普通PC为例)时,该装置表现为一个标准HID键盘。该密码输入装置完全可以像普通键盘一样直接向PC发送键码数据,同时也可以使用与之配套的PC软件,通过USB接口向该装置发送新的密码数据并命令其修改EEPROM中按键对应地址的数据。
该密码输入装置所需要的两个主要步骤的详细说明如下:
1. 按键与密码的关联
PC软件先通过图形界面从用户处获悉该用户希望某个按键对应的密码,之后软件会将其转换成HID协议中键盘的字符编码,然后通过USB接口将编码后的密码以及该密码在EEPROM中的存储位置一同发送给密码输入装置,并通知其修改EEPROM的数据。该密码输入装置得到修改的命令以及相关数据后,就会在EEPROM的指定位置储存该密码,完成按键与密码的关联。
例如,用户希望为按键“2”设置密码“123456”。“123456”对应的键盘编码是“1d 1e 1f 20 21 22”,按键“2” 的存储地址被设置为“06”。PC软件会将这些数据以及写EEPROM的命令通过USB接口发送给该密码输入装置。该装置接收到数据后就立即会将“1d 1e 1f 20 21 22”写入EEPROM的地址“06”中,完成按键“2”与密码“123456”的关联。
2. 使用关联密码的按键输入过程
当用户通过按键输入密码时,密码输入装置会从EEPROM存储器中该按键对应地址读取与之关联的密码数据串,然后通过USB接口将该串数据逐次发送给PC。此时密码输入装置对PC表现为标准HID设备(即可看成是一个标准键盘),从USB接口发送来的密码会被系统自动填充至需要输入密码的位置,从而完成密码的输入。
本发明提供的密码输入器上的一个按键或两个键的组合表示一串密码,按下不同的按键或组合键,即可输出不同的密码,最后将密码通过输出接口传给密码接收方。比如通过USB口传给PC机、或带有USB口的自动存取款机、或带有USB口的超市收款机以及带有USB口的任何需要密码的系统。密码的编辑可通过密码编辑系统,在PC机上任意编辑自己所需要的密码(密码可以由大写字符、小写字符、数字和下划线等组成),然后通过USB口将编辑好的密码存储到密码输入器上,也可在密码输入器上编辑简单的数字密码。
3.2 硬件平台选用及资源配置
硬件选用AMTEL AVR大赛提供的EVK1100,EVK1100是一个基于AVR32 AT32UC3A单片机控制器的评估套件和开发系统。它配备一系列丰富的外设、内存。图2所示为开发板与PC机连接的示意图。
--支持AT32UC3A
--JTAG连接器、Nexus、USART、USB2.0接口、TWI接口、SPI
图2 应用时连接方式及作用
AVR32 AT32UC3A
高性能低功耗AVR32UC,32字节微控制器
——单循环RISC指令,包含DSP指令系统
——读改写指令和独立位控制
——运行速度1.49DMIPS/MHz
——存储保护系统
多层次数据总线
——高性能的数据传输,总线分离提高性能
——有15条存储器直接存取通道,改善外围设备交流速度
内部高速SRAM——64K字节
派生的外置存储器接口——SDRAM/SRAM兼容存储总线
中断控制器——自动运行低延迟中断服务和程序优化
系统功能
——时钟管理包括内部的阻容时钟和一个32KHz振荡器
——两个多功能振荡器和两个锁相环路允许CPU和USB频率分离
——监视时钟,实时时钟
USB
——USB2.0,符合OTG协议
——DMA(存储器直接存取通道)
——片上收发器包含上拉电阻
一个三通道16比特定时器/计数器
四个通用同步异步收发器
——支持SPI,红外,ISO 7816接口
——支持硬件信号交换,RS485接口和调试解调器
两个主从串行接口(SPI)
ATMEL的开发板满足USB的传输协议,而且满足串口的各种协议,可以直接将单片机和CPU进行通信和信息的传递,保障了设计的进行。
3.3系统软件架构
图3为进行密码编辑的流程框图。图4为进行密码编辑时的用户工作界面的设想图。
图3 密码编辑流程框图
图4 用户工作界面设想图
PC机开机时要求输入开机密码,只有当开机密码正确时,才可以打开PC机。PC机开机后,单片机与PC机相接时也需要输入开机密码才能在PC机上安装设计的应用软件。若开机密码不正确,程序将提示继续输入开机密码,当开机密码达到限定的输入次数时,程序自锁。当开机密码全部输入正确时,PC机上出现使用界面,用户可以通过该应用程序修改密码,自己编辑用数字键代表的字符串来取代固定的数字。密码编辑保存后就可以直接存入系统。系统可以对该密码保留记忆,下次使用该系统时就可以直接按某一个或两个键来输入一串密码。
本设计的密码输入器在设计时还特别添加了保护措施,中央处理器上的程序是加密而不可读的,存储模块内存储的密码是经过加密处理的,不是原始密码,这就保证了密码的安全性。
密码编辑软件即为设计中的应用软件,使其能在PC机上运行。选用的开发板符合USB协议,可以直接与PC机相连,在PC机上进行对单片机进行编程,达到设计软件的目的。数字键盘按键和确认按键可利用PC机的键盘输入,显示装置即为PC机的屏幕。只需要用单片机编程出应用软件,即可达到预期目标。
3.4 系统软件流程
图5 程序运行流程图
3.4 系统预计实现结果
设计一个通过USB口传给PC机、或带有USB口的自动存取款机、或带有USB口的超市收款机以及带有USB口的任何需要密码的系统。密码的编辑可通过密码编辑系统,在PC机上任意编辑自己所需要的密码(密码可以由大写字符、小写字符、数字和下划线等组成),然后通过USB口将编辑好的密码存储到密码输入器上,也可在密码输入器上编辑简单的数字密码。
1、从根本上解决传统密码输入所存在的安全隐患问题,保护密码,避免因为密码被盗而带来的巨大经济损失。
2、采用USB接口,与其他设备的连接很简单,可以很方便的进行扩展,可以自动扩展自ATM机,超市收款机,银行柜台等。
3、将原来的简单数字密码变为由大小写字符,下划线,数字等组成的密码,从而使密码的破解更为困难。
4、密码输入方式新颖,实现难度不大可以运用于任何带USB接口同时又需要密码输入的装置,具有很好的实用价值