曾祥宏
(深圳職業技術學院 計算機工程學院,廣東 深圳 518055)
基于單片機的動態鍵位防窺密碼鍵盤的設計
曾祥宏
(深圳職業技術學院 計算機工程學院,廣東 深圳 518055)
介紹一種基于單片機技術實現的動態鍵位防窺密碼鍵盤的設計原理和實現方案.通過設計10個數碼管和10個按鍵并一一對應,但每個數碼管上所顯示的具體數字并不固定,而是在輸入密碼時,由單片機通過程序控制將0~9這10個數字隨機地亂序顯示在10個數碼管上,用戶通過觀察數碼管上顯示的數字按下對應按鍵輸入密碼數字,由于每次輸入密碼時每個數碼管顯示的數字是變化不固定的,實現數字鍵位置動態變化,從而達到防止偷窺按鍵位置而泄露密碼的目的,提高了密碼鍵盤的安全性.
密碼;鍵盤;動態鍵位;單片機;泄密
計算機已廣泛應用于生產、生活的各個方面,人們在銀行網點、證券營業部、電信營業廳、商場收銀臺等場所使用計算機系統辦理相關業務時都要輸入密碼,而目前使用的密碼鍵盤缺乏防窺安全措施,這些密碼鍵盤的不足之處是將數字直接印在按鍵上,而按鍵在鍵盤上的位置是固定的,這樣使用者在輸入密碼時,偷窺者很容易看見按鍵上的數字或者根據按鍵的位置而猜出數字,進而竊取密碼.為解決上述不足,防止密碼被偷窺,本研究提出一種動態鍵位防窺密碼鍵盤設計方案.
動態鍵位密碼鍵盤的設計原理是:改變現有密碼鍵盤將數字直接印制在按鍵上,且每個數字按鍵位置固定、使用者在輸入密碼時容易被窺看的缺點,設計10個數碼管與10個按鍵一一對應,按鍵上不印數字,而是將數字顯示在數碼管上,而且每個數碼管上顯示的數字是通過軟件動態隨機產生的,在每次輸入密碼時都是不同的,這樣按鍵與數字之間就沒有了固定的對應關系,即使你知道了所按鍵的位置,也無法知道所輸入的數字,因此偷窺者無法通過偷窺按鍵操作來竊取密碼.
系統硬件主要包括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 鍵盤接口接線圖
軟件采用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-),男,湖南人,高級工程師,主要研究方向:軟件、嵌入式系統開發.