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