魏平俊, 楊 潔, 胥浩陽
(1.中原工學院 電子信息學院, 河南 鄭州 450007; 2.鄭州工業(yè)應用技術學院 信息工程學院, 河南 新鄭 451100)
隨著社會的進步和科技的發(fā)展,人們的安全意識越來越強,傳統(tǒng)的機械鎖已不能滿足人們的需要。電子密碼鎖因其操作簡單、密碼可變、誤碼保護等特點,成為密碼鎖的主流產品,并得以迅速推廣。但有些產品密碼鍵盤外露,易被破解;有些產品需攜帶遙控器、卡片等,安全性和易用性較差。藍牙是一種無線技術標準,可實現固定設備、移動設備和樓宇個人域網之間的短距離數據交換,并可通過密碼算法對數據進行處理,安全性得到極大提升。本文設計了一種藍牙加密密碼鎖,系統(tǒng)以STC89C52單片機為主控模塊,運用藍牙技術實現安卓手機和密碼鎖的通信,在單片機編程的基礎上,通過藍牙地址配對、算法加密、密碼校驗等技術,實現了隨機密碼功能。用戶只需攜帶手機即可實現自由密碼修改,安全性和便捷性大大提高。
系統(tǒng)包括智能手機端和單片機端。其中,手機端采用安卓系統(tǒng)自帶的藍牙模塊;單片機端采用STC公司生產的高性能芯片STC89C52作為中央處理器[1],基于HCI協(xié)議層的開發(fā)方式,用HC-06藍牙模塊實現密碼信息的無線傳輸。藍牙模塊通信的建立主要分為5個步驟:初始化藍牙芯片、查詢周邊藍牙地址、建立連接、數據傳輸、斷開連接[2]。初始化過程中,通過編寫C語言程序,單片機產生6位初始密碼信息,通過HC-06藍牙模塊查詢周邊藍牙地址,并進行初始化密碼的驗證,待6位密碼配對成功后,建立手機端和單片機端的連接。手機隨機設置4位密碼信息,通過藍牙無線信道發(fā)送到單片機,單片機接收隨機密碼信息并存儲。開鎖時,通過鍵盤輸入密碼并與單片機存儲器中的密碼進行比對,實現密碼驗證;若密碼驗證不成功,則通過繼電器控制和無源蜂鳴器等作出反饋。系統(tǒng)流程如圖1所示。
圖1 系統(tǒng)流程
由于藍牙協(xié)議是一個公開協(xié)議,為保證信息的安全傳輸,每個藍牙設備都須具備密鑰管理的功能,如加密、解密和破解等。本文采用的E0加密算法是一種作用于鏈路層的對稱的單鑰加密算法,加密過程就是將數據流與密鑰比特流進行異或運算[3]。
E0算法實現結構如圖2所示[4]。它主要包含3個部分:LFSR(線性反饋移位寄存器)、混合器和組合邏輯。混合器中L1、L2表示線性變換網絡,可通過異或來實現,Z-1表示延時網絡。E0算法的實現過程如下[5]:首先進行初始化,以加密私鑰Kc、藍牙設備地址ADR、時鐘信號CL和隨機數RAND作為輸入,產生有效載荷字(凈荷密鑰);然后有效載荷字發(fā)生器對輸入的比特位以適當的形式進行組合,再傳送給LFSR,LFSR產生偽隨機序列,形成密鑰流;最后將密鑰流按模二加運算作用于數據流完成加密,若將密文和形成的密鑰流再異或即可實現解密。
圖2 E0算法實現框圖
硬件系統(tǒng)主要包括手機、控制電路、電插鎖和電源等部分,其結構如圖3所示。
圖3 硬件系統(tǒng)結構
控制電路由單片機、液晶顯示屏、HC-06藍牙模塊、繼電器和無源蜂鳴器模塊等組成。電路原理如圖4所示。
2.1.1 單片機
單片機采用高性能、低功耗的8位微控制器STC89C52,它具有8 k字節(jié)Flash,32位I/O口,具有可在線編程功能[6],可直接使用串口下載、編寫和燒錄程序實現電路控制。本設計使用了STC89C52單片機的15個I/O口,其中P0為LCD1602數據,P2. 2為電插鎖控制端口,P2. 4為蜂鳴器控制端口,P2. 5為讀/寫端口,P2. 6為液晶數據指令端口,P2. 7為液晶使能端口,P3. 0為RXD接口(接藍牙的TX端,是單片機串口的接收端),P3. 1為TXD接口(接藍牙的RX端,是單片機串口的發(fā)送端)。
2.1.2 液晶屏
液晶屏采用并行驅動的LCD1602,通過電壓控制顯示區(qū)。開機后打開背光燈,成功連接后顯示“enter password:”,每輸入一位密碼,顯示一個“*”,密碼輸入錯誤顯示“error!try again:”,密碼輸入正確顯示“welcome!!!”。
2.1.3 藍牙模塊
HC-06藍牙模塊支持藍牙2.0協(xié)議標準,采用CSR藍牙芯片,具有2~3 Mbps的調制度,內置2.4 GHz天線[7],有效距離可以達到10 m,輸入電壓為3.6~6 V,未配對時電流約為30 mA,配對后約為10 mA,具有標準HCI端口(UART or USB)并采用自適應跳頻技術。
采用內置和外接雙電源供電系統(tǒng),如圖5所示。Vcc IN為12 V、1 A的電源適配器,BT1為13 V、0.6 A、2 000 mAh的鋰電池。當外接電源斷開時使用內置電源供電,采用繼電器切換,繼電器采用T73型12 V電磁式5腳繼電器。
圖4 控制電路原理圖
圖5 雙電源供電電路圖
采用XL03型電磁式電插鎖,工作電流為0.6 A,電壓為12 V,額定功率為7.5 W,開鎖時間為1 s,允許連續(xù)通電時間10 s。通過繼電器來控制一個D觸發(fā)器,電流通過,觸點斷開,開鎖;斷電時,觸點閉合,關鎖。
該系統(tǒng)軟件采用上位機和下位機分別編程的方法來實現。上位機利用Eclipse平臺,使用Java語言編程,將智能手機設置的隨機密碼信息通過HC-06模塊傳輸給下位機[8]。
單片機作為下位機,采用Keil平臺,使用C語言編程。89C52單片機具有3個16位的定時/計數器,其中,T1、T2都可以用作串口波特率發(fā)生器。在本設計中采用T2作為波特率發(fā)生器,使用11.059 2 MHz的晶振,其產生的波特率最高且誤差較小[9]。采用RS-232C通信標準,8位數據位、1位停止位、無奇偶校驗的通信格式。
采用隨機編碼方式,逐一傳輸6組密碼信息,每組范圍為0X00到0XFF,可以表示“0”到“9”的任意數,具有256種變化方式。主要程序如下:
if (RI) //RI接收中斷標志
{ RI=0; //清除RI接收中斷標志
table3[i]=SBUF-m; /*SUBF為接收/發(fā)送緩沖器;m為隨機編碼種子,若使用ASCII碼,m為48*/
i++; }
單片機通過隨機編碼產生6位密碼信息與手機進行地址匹配,匹配成功后接收手機端設置的4位密碼,同樣采用隨機編碼方式進行編碼并保存在單片機存儲芯片中。開鎖時,與鍵盤輸入的隨機密碼信息進行比對,密碼正確則開鎖。
硬件電路搭建完成后,暫不通電,先觀察焊接情況,看有無虛焊漏焊現象;然后根據電路原理圖判斷線路連接是否正確;再用萬用表檢查關鍵元件的電壓、電流是否正常,排除隱患后進行系統(tǒng)調試。
采用單片機開發(fā)裝置調試單片機程序,用藍牙串口通信助手調試HC-06藍牙模塊[10]。將單片機I/O口的P3.0接HC-06藍牙模塊的TX端,P3.1接藍牙模塊的RX端,給HC-06模塊上電,進入AT指令模式;在PC端啟動串口調試助手,選擇正確的端口和波特率并打開串口,勾選自動發(fā)送,在輸入框中輸入AT指令并回車,回收框中顯示OK,則說明串口正常;打開手機的藍牙,利用串口調試助手查詢HC-06藍牙地址并進行連接,匹配成功后在輸入框中輸入一個AT命令,若LED燈亮且回收框中顯示返回值,則說明HC-06藍牙模塊調試成功,可以與手機及單片機連接進行數據傳輸。
在單片機燒寫程序和電路板制作時,電路報警裝置提前設置好參數,若輸入密碼錯誤,則單片機會驅動報警裝置,蜂鳴器做出響應,時間為2 s。若連續(xù)5次出現密碼輸入錯誤,則蜂鳴器長時間鳴叫,需按下復位鍵方可停止報警。
本文設計的密碼鎖,利用藍牙無線技術進行數據傳輸,通過加密算法和隨機密碼的設置,實現了手機對密碼的控制,提高了密碼鎖的安全性和方便性。實驗表明,該密碼鎖具有安全性高、使用方便、價格低廉等特點,可以應用在圖像處理設備、安全產品、建筑、家用電器等領域,具有廣闊的應用前景。本設計已通過中華人民共和國國家知識產權局審批,被授予實用新型專利權(201420358698X)。