衛孝賢
摘 要:如今就整體而言,中國的物聯網產業仍然主要處于“概念”階段,投入實用的產品數量與其他領域相比,相差甚多。作為物聯網技術的一種應用,本文設計了一種基于Android手機軟件認證的門鎖系統,討論了該系統的構成方式和工作過程,并分析了該系統的設計方案。本系統使用手機作為“鑰匙”控制門鎖,獲得開鎖密鑰的移動設備在認證通過的情況下可通過發送開鎖控制命令使門鎖打開。
關鍵詞:移動平臺 Android 門鎖 RSA算法 藍牙
中圖分類號:TP277 文獻標識碼:A 文章編號:1672-3791(2017)09(b)-0019-02
隨著開鎖技術的發展,傳統門鎖的安全性受到挑戰,更為重要的是,手動開鎖的繁瑣操作逐漸成為用戶難以接受傳統門鎖的主要原因。本文的目標是針對門鎖系統的改進問題提出通過手機這種移動設備控制門鎖的設計方案。
1 系統構成與工作過程
本系統主要由以Android智能手機為載體的“開鎖器”和可以通信的門鎖設備構成,實驗的載體是Android智能手機,但理論上本系統也可以構建在可運行Android應用程序的其他設備上,例如Android平板電腦。在設計計劃中,門鎖在上鎖之后,該門鎖只有在受到智能手機傳來的與之對應的開鎖控制命令后才能打開,而智能手機通過應用程序驗證用戶身份,并控制開鎖控制命令的發出與否,見圖1。
首先,需要在移動設備和門鎖之間構建遙控通信信道,這一過程的前提是用戶用過了應用程序的身份驗證,獲得使用開鎖程序的權限。第二步,實施移動設備與門鎖之間的身份認證,僅在互相確認對方的身份認證可以通過之后,門鎖控制權限才會被賦予給移動設備,可以向門鎖發送加密信息,認證自身擁有的控制權限,門鎖在受到這一信息之后會進入允許開鎖狀態。如果雙方的身份認證出現錯誤,移動設備不會獲得開鎖權限。即使雙方的身份認證都得到通過并確認,只要“控制認證信息”未正確收到,門鎖也不會進入允許開鎖狀態。第三步,擁有開鎖權限的移動設備向門鎖發出開鎖控制命令,開鎖控制命令會使處于允許開鎖狀態的門鎖實施開鎖,不處于允許開鎖狀態的門鎖會忽略開鎖控制命令。
2 系統組成
通過討論和實驗,系統使用藍牙無線信道作為通信信道,系統中提及的門鎖使用了特制的門鎖,并鑲嵌了藍牙模塊和控制處理芯片。
藍牙無線信道具有使用便捷、耗能低、價格便宜、器件規模小的優點,本系統的藍牙通信使用國際預留的免費的工業、醫療和科技使用的無線電波段。
這一設計易于推廣,因為Android手機具有自帶的藍牙通信模塊,使用藍牙通信不需要任何器材增購的費用。
藍牙無線信道的開放性在本系統中既是優點也是缺點,為避免開放帶來的安全隱患,信息在信道中只能以密文形式傳輸,且系統需要認證通信雙方的身份。設計中采用了破譯難度高,安全性強的RSA非對稱加密算法,RSA基于分解大整數的困難性假定,對于明文數據量不大的本系統來說十分適用。
3 系統實現
根據之前的描述可以看出系統的核心在于軟件部分,在此我們對軟件部分做出規劃,如圖2所示。
Android手機上的開鎖控制軟件是Android開鎖部分的核心,它的主要工作是完成對用戶身份的驗證,建立藍牙信道,加解密信道上的信息,實現身份認證,完成藍牙通信任務。另一方面,門鎖部分的核心在于加鎖控制程序,它建立藍牙信道,監聽并接收數據,發回回復,并加解密信道上傳輸的信息,與移動設備進行身份的互相認證,判斷是否需要打開門鎖。
為便于描述,后續的敘述中,我們將Android平臺上的開鎖程序稱為AU(Android unlock),門鎖上的加鎖控制程序記為GL(gate lock)。
3.1 Android平臺開發
(1)搭建Android開發環境,使用jdk1.8作為java編譯環境,使用Android studio作為開發工具。
(2)Android應用程序組成。
Android系統擁有活動(Activity)、服務(Service)、廣播接收器(Broadcast Receiver)和內容提供器(Content Provider)這四個基本組件。所有Android應用程序的門面都是活動。只要是看得到的東西,都是在活動中的。服務不可見,可以保持持續的運行,即使用戶退出了應用。來自各處的廣播消息由廣播接收器負責接收。內容提供器則為應用程序之間共享數據提供了可能。
而在對外信息交換方面,Android客戶端與服務器實現的登錄驗證和信息傳輸的解決方案已經十分完善,在此不在贅述。在藍牙方面,Android平臺擁有良好的藍牙協議棧支持,Android設備支持以藍牙為基礎的無線交換數據,并且提供了便于應用開發的藍牙API。
我們將客戶端設計為四個主要類型:ClientActivity、RsaCheck、BluetoothBuild、MyTools。
(1)ClientActivity是四個主要類型中的核心,包含的內容也比較多,在這個類中實現軟件界面的設計、藍牙的開關和搜索、藍牙信息交換和身份認證,同時該類也處理藍牙的鏈接請求,另外,該類中定義了一個廣播接收器組件,用于監聽手機信息廣播。
(2)RsaCheck以RSA算法為基礎實現了數字簽名和加解密運算。
(3)BluetoothBuild主要負責了藍牙信道的建立與釋放。
(4)MyTools主要包含了一些常用變量和一些工具函數。
打開開鎖程序AU后首先會驗證用戶身份,用戶需要通過登錄來獲得使用權限,登錄成功后,應用會彈出對話框提示是否打開藍牙,若是選擇取消,軟件將會自動關閉,選擇打開藍牙則軟件進入工作狀態,搜索周圍的藍牙。用戶選擇了對應門鎖的藍牙名稱后,軟件就會發起連接請求,未收到藍牙配對成功的回復,則連接請求就不會中斷。收到配對成功的回復時,藍牙信道就成功建立了。endprint
發出身份認證信息前,先要使用RSA算法處理明文,完成數字簽名和加解密運算。首先AU使用自己的私鑰完成數字簽名,然后使用GL的公鑰和RSA加密技術生成密文,最后將密文送入藍牙信道傳輸。與身份認證相同,控制權限認證信息和開鎖控制命令這兩種信息也需要使用GL的公鑰進行加密后再發出。而身份認證成功回復到達AU處時也是密文,必須經過使用AU的私鑰解密和利用GL的公鑰驗證這兩個過程處理。
僅在收到身份認證成功回復,并且GL的身份驗證得到通過后,AU才擁有開鎖控制權限,可以發送控制權限認證信息通知GL,準備接收開鎖控制命令,只有GL收到開鎖控制命令密文,門鎖才會打開。若GL的身份驗證未通過,則AU會保持在身份認證信息發送狀態。
3.2 加鎖控制部分開發
加鎖控制部分在本系統中起到了類似于“服務端程序”的作用。在加鎖控制程序(GL)的控制下,藍牙工作在被動狀態,當藍牙被設置成可檢測狀態時,GL就轉入了監聽狀態,僅在接收到請求連接的要求,且確認藍牙已經成功的配對后,才會發送一份告知藍牙配對成功的回復到AU處。由此,藍牙信道便成功的建立了,GL進入數據等待狀態,等待接收數據。
GL工作的主要過程可以分為以下階段。
(1)AU身份認證。在這個階段,AU會發送一份密文,其中包含身份認證信息。密文中的數字簽名必須進行處理,首先使用GL的私鑰進行解密,然后再使用AU的公鑰進行驗證。若AU的身份認證信息通過,GL會將內置的身份認證成功表示置為true,并發回經過數字簽名和RSA加密處理的認證成功回復,AU受到回復后,GL進入第二階段。若是身份認證失敗,則持續進行第一階段的工作。
(2)控制權限認證。這一階段發生在身份認證成功之后,允許開鎖之前,主要接受的數據是來自AU的控制認證信息,GL承認AU的權限,則進入允許開鎖狀態并轉入第三階段,否則,仍然停留在第二階段。當然,這一階段的信息交換也是建立在RSA加密解密的基礎上。
(3)控制開鎖。GL在允許開鎖狀態下,僅接收開鎖控制命令的密文,其余信息將直接丟棄。解密后信息符合命令格式,則GL解析命令,完成指定操作。
以上操作都是有著內置的時間限制,時間內未完成操作,則系統將直接終止連接,釋放資源,直到等到新的連接建立。
4 結語
本系統主要特點在于便捷,盡管智能手機的安全性一直存在疑問,但毫無疑問在可穿戴設備普及之前,智能手機仍然是最為便捷的可通信計算機。本系統對于公寓等居住人時常更換的住房門鎖是具有相當的意義的,可以大大削減管理成本。系統設計過程未允許直接的信息交換,而是通過先認證再通信的方式完成信息交換,并全程使用RSA算法加密信息,保證了系統的安全性。設計過程同樣兼顧了實用性和各個器件的通用性,為系統的實用化提供了有利條件。
參考文獻
[1] 郭霖.第一行代碼—Android[M].2版.北京:人民郵電出版社,2016.
[2] 眭俊華,張海盛.藍牙技術安全性解析[J].計算機應用,2002,22(10):13-14.
[3] 鄭昊,鐘志峰,郭昊,等.基于Arduino/Android的藍牙通信系統設計[J].物聯網技術,2012(5):15-34.
[4] 韋廣劍.基于Android令牌的動態密碼認證系統的研究與實現[D].武漢:武漢理工大學,2012.endprint