隨著社會經濟的快速增長,安全防盜已成為一個社會問題。特別是對于各金融機構以及許多企事業單位,為了資金周轉方便,一般設有金庫。然而近年來發生許多重大盜庫案,如河北邯鄲農行金庫5 100萬元被盜案,金庫的安全管理已成為一個不可忽視的問題。本論文就加強金庫的安全管理,針對目前金庫的管理缺陷,設計了一種金庫門電子密碼鎖系統。這種密碼鎖不需要更改密碼卻每次開鎖密碼都不一樣。保密性很高,既需要輸入一組隨機序號,同時還需要輸入一個經過密碼生成器計算得出的可變密碼。本設計在安全系數要求很高,且需要多人管理與參與才能開鎖的場合下非常適用。每次開鎖密碼不同,解決了傳統鍵盤式電子密碼鎖容易被他人在鍵盤上試探出來,或被旁觀者窺測出來,保密性不足的缺點。
1 設計思路
整個設計由金庫門密碼鎖控制器和密碼生成器兩大部分組成。兩部分均有液晶顯示模塊和鍵盤模塊,作為人機對話的界面和工具。不同的是密碼鎖控制器還包含密碼識別模塊和開鎖控制模塊,用戶從鍵盤上輸入密碼信息,通過內置信息的計算、對比和判斷,產生對開鎖控制模塊與報警系統的控制。而密碼生成器主要包含密碼生成模塊,根據用戶輸入的信息,通過一定的算法計算出密碼,并將密碼通過液晶顯示反饋給用戶。
密碼生成器由一名機構負責人掌管。當用戶需要開啟金庫門時,金庫門密碼鎮控制器先為用戶產生六位隨機碼,用戶獲取了隨機碼之后需要向機構負責人索取密碼。機構負責人在密碼產生器上按照提示輸入2位隨機序號和用戶所告知的6位隨機碼,密碼產生器計算出6位密碼,負責人員告知用戶2位隨機序號和6位密碼,用戶輸入2位序號和6位密碼后,金庫門密碼鎖經同樣算法計算,如果密碼匹對正確,則開鎖,否則不開。密碼輸入錯誤次數超3次則蜂鳴器鳴叫并啟動報警系統,只有輸入正確的系統內置口令才能使蜂鳴器停止鳴叫以及關閉報警系統。
金庫門密碼鎖控制器和密碼生成器具有同樣的內置口令,該內置口令可重新設置,當重新設置時需要驗證原口令,如果相同則可進行更改,并將新口令保存在單片機的EEP-ROM中。關機后,保存的口令不丟失。重新設置內置口令后,同樣的隨機碼、隨機序號,開鎖密碼是不一樣的。
2 STC12系列單片機以及OCM12864的簡介
STC12系列單片機是宏晶科技生產的單時鐘/機器周期(1T)的單片機,與普通單片機相比,具有高速/低功耗/超強抗干擾/無法解密等優點,是新一代8051單片機,且指令代碼完全兼容傳統8051,速度卻快8~12倍。工作電壓為3.8 V~2.2 V(3 V單片機)/5.5 V~3.3 V(5 V單片機),有6個16位定時器,兼容普通8051的定時器或4個外部中斷,具有看門狗和EEPROM功能,并且內部集成MAX810專用復位電路;谏鲜鰞瀯,本設計采用STC12系列單片機。
液晶顯示部分采用OCM12864圖形點陣液晶顯示模塊,該圖形點陣液晶顯示模塊有128×64點陣,可顯示各種字符及圖形,可與CPU直接接口,具有8位標準數據總線、6條控制線及電源線。OCM12864具有自己的指令集,結合OCM12864的接口時序,可以實現對液晶模塊的讀寫操作。圖1、圖2分別為OCM12864的讀操作和寫操作時序,比較讀寫操作時序,可以發現讀寫操作時序的不同之處在于片選信號R/W在E有效時的取值。當E為高電平,R/W為高電平時則是單片機執行的是讀操作;當E為高電平,R/W為低電平時則是單片機執行的是寫操作。本設計采用OCM12864中的OCM12864-5(3 V)和OCM12864-2(5 V),根據金鵬電子有限公司提供的讀寫操作時序編程可以實現對液晶模塊的讀寫。
3 硬件設計
系統硬件設計由兩大部分組成:密碼生成器硬件設計和密碼鎖控制器硬件設計。
3.1 密碼生成器硬件設計
以STC12系列單片機STC12LE5410AD(3 V單片機)為核心,結構框圖如圖3所示。其功能模塊主要由電源電路模塊、鍵盤電路、液晶顯示模塊和指示控制模塊四部分組成的。
電源模塊設計采用雙電源切換供電,即既可以通過USB接口供電,也可以通過電池為系統供電。經USB或電池引出來的電壓是5 V,再經1117-33穩壓管穩壓之后為CPU提供3.3V電壓。STC12LE5410AD的P1口與鍵盤電路相連接,P3.6接LED燈作為系統的指示燈。P3.0與OCM12864的數據/指令引腳RS相連,實現數據/指令選擇,當RW=1時,數據DB0-DB7將送入顯示RAM;當RW=0時,數據DB0-DB7將送入指令寄存器執行。數據的讀寫選擇R/W由P3.4來控制。E為0CM12864的液晶屏的讀寫使能端,并通過STC12LE5410AD的P3.2和P3.3選擇OCM12864左半屏和右半屏。除此之外,V0是LCD的調整電壓,必須與VEE一起與10 k電位器相連,可對液晶屏的對比度進行調整。
3.2 金庫門密碼鎖控制器硬件設計
以STC12系列的STC12C5410AD(5V單片機)為核心,主要包括電源電路模塊、液晶顯示驅動模塊、鍵盤電路模塊、報警輸出模塊以及和STC12C2052AD通信的串口通信模塊、開鎖控制電路。
在該系統中,電源電路模塊主要是由一個12 V變壓器與一個LM7805穩壓器電路所組成的,為CPU提供電壓。由于STC12C5410AD是5 V的單片機,所以液晶顯示模塊同樣采用5 V的OCM12864-2液晶模塊。8位標準數據總線與單片機STC12C5410AD的P2口相連接;讀寫選擇管腳R/W與P3.3相連;讀寫使能管腳CS1、CS2分別與P3.7、P3.5相連接;RS與P3.4相連,控制數據/指令的選擇。系統包含報警輸出電路,當連續輸入3次錯誤密碼時,則蜂鳴器報警以示警告并啟動報警系統,則再不能做任何的操作,直到輸入正確的內置口令才能關閉報警系統。本系統中,還采用輸入和顯示部分與開鎖控制電路相分開,PCB制作時制作成兩塊板,用串口通信實現兩塊板之間的通信,使密碼比對后的結果能輸送到STC12C2052AD,實現對機械鎖的控制。
4 軟件設計
4.1 密碼算法的實現
密碼算法是本設計中的一個最重要的部分,當用戶使用密碼鎖開鎖時每次輸入的密碼都不一樣。密碼主要由隨機碼、內置口令和隨機序號經過一定的算法計算出來。
直接采用C51語言的mad();語句實現的隨機碼具有一定的隨機順序,每次開機后所得的隨機碼序列基本一樣,屬于偽隨機碼。因此對于保密性產品來說,用rand();語句具有缺陷。本設計采用定時器實現隨機序列。定時器設置為模式2,即可自動重裝載的8位計數器,初值為100。密碼鎖控制器開機后,定時器開始定時。通過用戶3次按鍵產生中斷,讀取定時器低八位的值,將其轉換為十進制并取低兩位存到一個預先定義好的6位數組中的2個元素。3次按鍵共產生3次2位數的隨機碼,組成6位隨機碼。該隨機碼重復概率很小,為1/1 000 000。因此,對定時器的采樣,可實現真正的隨機碼。
用戶自產生一個2位隨機序號,與隨機碼、密碼生成器的內置口令經過一定的算法計算生成密碼。密碼鎖控制器根據用戶輸入的隨機序號和密碼,將隨機序號、隨機碼、以及內置口令,利用與密碼生成器生成密碼同樣的算法計算出密碼,與用戶輸入的密碼比較驗證。
STC單片機自帶EEPROM,用EEPROM來儲存密碼,關機后密碼不丟失,并可隨意更改密碼。每次開鎖密碼都不一樣,可有效預防惡意窺測行為,并能清楚進出金庫的人員,且無需經常更換密碼,方便管理。
5 結束語
本文設計的金庫門電子密碼鎖系統,解決了金庫門管理的“一密二鑰三分離”中密碼的管理和分離的規定。每次開機密碼都不一樣,有效防止密碼泄露,增強了金庫管理的安全性。本電子密碼鎖系統,不僅可以運用于金庫門,同時適用于其他要求高保密性的產品或場所,且一個密碼生成器可配備若干個密碼鎖控制器,方便管理。