覃勇鋮 何鳳英
(云南工商學(xué)院 云南省昆明市 650000)
隨著教育的普及,在校學(xué)生人數(shù)劇增,學(xué)校宿舍管理成為一個(gè)突出的難題。傳統(tǒng)人為手工式操作,效率偏低。因此如何應(yīng)用互聯(lián)網(wǎng)信息化技術(shù),實(shí)現(xiàn)學(xué)生宿舍的高效率安全性管理,尤其是智能化查寢技術(shù)方案的探索與研究一直是近幾年各單位研究的主要課題之一。目前市面上比較流行的查寢技術(shù)方案主要有以下幾種:基于IC智能卡、指紋識(shí)別、人臉識(shí)別考勤機(jī)技術(shù);基于RFID射頻識(shí)別技術(shù);基于二維碼+GPS定位技術(shù);基于手機(jī)人臉識(shí)別的生物特征+GPS定位技術(shù)等。本文通過(guò)研究分析基于以上技術(shù)的查寢方案,設(shè)計(jì)出一種基于 iBeacon技術(shù)+DPoS共識(shí)機(jī)制的多重認(rèn)證查寢方案,極大提高了宿舍管理的效率和便捷性,實(shí)現(xiàn)讓家長(zhǎng)放心的安全校園服務(wù)。
IC卡也稱(chēng)智能卡(Smart Card),它是一個(gè)將微電子芯片嵌入符合ISO 7816標(biāo)準(zhǔn)的卡中做成的卡片。IC卡具有體積小便于攜帶、可靠性高、成本低等特點(diǎn),但是IC卡的缺點(diǎn)是不能防代簽征。雖然指紋識(shí)別和人臉識(shí)別考勤機(jī)在很大程度上能有效防代簽,但是缺點(diǎn)是對(duì)于大體量的人群識(shí)別速度較慢。另外,對(duì)于學(xué)校來(lái)說(shuō),宿舍數(shù)量多,導(dǎo)致考勤機(jī)和卡片的需求量增多,從而增加了成本,部署較困難。
RFID無(wú)線(xiàn)電射頻識(shí)別是一種非接觸式的自動(dòng)識(shí)別技術(shù),識(shí)別工作無(wú)需人工干預(yù),具有讀取距離大、可以同時(shí)對(duì)多個(gè)物體進(jìn)行識(shí)讀等優(yōu)點(diǎn),不像考勤機(jī)只能一個(gè)一個(gè)刷卡[1]。因而識(shí)別速度快,不需要到指定地點(diǎn)刷卡,但是讀卡器需要布線(xiàn),實(shí)施復(fù)雜,部署成本較高,移動(dòng)性較差,不能防代簽安全性不能保證。
二維碼是一個(gè)近幾年來(lái)移動(dòng)設(shè)備上超流行的一種編碼方式?;诙S碼的查寢方案部署簡(jiǎn)單,成本低,但是需要多處張貼,存在代簽或遠(yuǎn)程簽到等問(wèn)題。雖然可以結(jié)合GPS定位,但GPS定位本身可以更改的問(wèn)題,安全性無(wú)法保證。
手機(jī)已經(jīng)成為現(xiàn)代生活必不可少的一個(gè)重要工具,當(dāng)代大學(xué)生已實(shí)現(xiàn)了人手一部手機(jī)。通過(guò)手機(jī)拍照識(shí)別人臉,再經(jīng)過(guò)人工智能算法分析宿舍環(huán)境[2],可以在一定程度上防代簽,并且不需要額外的硬件設(shè)備投入,能有效降低成本。但也有弊端,如光線(xiàn)差或宿舍停電熄燈導(dǎo)致人臉無(wú)法識(shí)別或識(shí)別有誤無(wú)法簽到;有些同學(xué)不喜歡拍照或隱私問(wèn)題;宿舍環(huán)境可以PS作弊;GPS定位可以更改等問(wèn)題。
通過(guò)以上四種方案的分析發(fā)現(xiàn),目前流行的方案要么不可信要么重量,設(shè)計(jì)一款既輕量又可信的查寢系統(tǒng)是本文的目標(biāo)。
首先是輕量。滿(mǎn)足輕量的特性是借助于學(xué)生已有的設(shè)備如手機(jī),不部署或最少量部署硬件設(shè)備。
其次是可信任。查寢系統(tǒng)要滿(mǎn)足兩個(gè)關(guān)鍵特性,才能確保簽到數(shù)據(jù)的可信任。第一、簽到介質(zhì)(如卡片、手機(jī)、電腦等)是否在現(xiàn)場(chǎng);第二、是否本人使用簽到介質(zhì)[3]。
上文介紹的四種考勤方案中,第一種和第二種比較重量,需要復(fù)雜的硬件部署,建設(shè)成本較高;第三種和第四種,雖然成本較低,但信任度不足。因此本文提出并設(shè)計(jì)了一種基于 iBeacon技術(shù)+DPoS共識(shí)機(jī)制的查寢方案,既滿(mǎn)足輕量又滿(mǎn)足可信任。
3.1.1 iBeacon簡(jiǎn)介
iBeacon是蘋(píng)果在2013年WWDC上推出的一項(xiàng)基于藍(lán)牙4.0低功耗藍(lán)牙(Bluetooth LE,簡(jiǎn)稱(chēng)BLE)的精準(zhǔn)微定位技術(shù)。OS7與Android4.3及其以上版本支持iBeacon技術(shù)。通常分為兩種類(lèi)型的設(shè)備:一種是Peripheral devices(外圍設(shè)備),一種是Central devices(中心設(shè)備)。外圍設(shè)備通常是小型的,低功耗的,資源有限的設(shè)備(如手環(huán)),作為基站時(shí)刻廣播向外發(fā)送BLE數(shù)據(jù)包,只要在范圍內(nèi)的中心設(shè)備都可以收到該BLE廣播數(shù)據(jù)。中心設(shè)備一般具有很強(qiáng)的處理能力和極大的內(nèi)存,通常為手機(jī)或者Pad等設(shè)備,檢測(cè)接收由一個(gè)iBeacon外圍設(shè)備基站發(fā)出的藍(lán)牙信號(hào)并做出處理。與藍(lán)牙不同的是,iBeacon不需要配對(duì)和連接過(guò)程,iBeacon基站通過(guò)BLE藍(lán)牙的廣播頻道不斷向外發(fā)送位置信息,當(dāng)中心設(shè)備進(jìn)入設(shè)定區(qū)域時(shí),不需要連接就能夠接收信號(hào)。相比藍(lán)牙有更快的傳輸速度、更長(zhǎng)的傳輸距離、更精確的測(cè)距,更有體積小、耗電量小的優(yōu)勢(shì)。
iBeacon作為外圍設(shè)備廣播的數(shù)據(jù)主要包含UUID、Major、Minor、Rssi[4]。UUID即廠商識(shí)別號(hào);Major相當(dāng)于群組ID,同一個(gè)群組里的iBeacon設(shè)備有相同的Major值;Minor相當(dāng)于群組里某個(gè)iBeacon設(shè)備的ID;Rssi藍(lán)牙信標(biāo)發(fā)射的信號(hào)強(qiáng)度,用于測(cè)量中心設(shè)備(如手機(jī))與iBeacon外圍設(shè)備(基站)的距離。UUID+Major+Minor構(gòu)成了一個(gè)iBeacon外圍設(shè)備的識(shí)別號(hào),類(lèi)似IP地址。
3.1.2 RISS測(cè)距
iBeacon可通過(guò)RSSI(信號(hào)強(qiáng)度)和設(shè)備在1米時(shí)的RSSI值計(jì)算中心設(shè)備與基站的距離,通過(guò)軟件和硬件的結(jié)合,從而大大提高定位精度,從原來(lái)的幾百米、幾十米,提高到一米以?xún)?nèi)的定位精度,增強(qiáng)了室內(nèi)定位的功能。計(jì)算公式如下[5]:
d = 10 ^ (abs(RSSI) - txPower) / (10 * n)
其中,d表示計(jì)算得到的距離;RSSI表示接收信號(hào)的強(qiáng)度(負(fù)值),越接近0信號(hào)越強(qiáng),等于0時(shí)無(wú)法獲取信號(hào)強(qiáng)度;txPower發(fā)射端和接收端相隔1米時(shí)的信號(hào)強(qiáng)度的RSSI值;n表示環(huán)境衰減因子,取值依賴(lài)于環(huán)境和建筑物情況。
DPoS (Delegated Proof of Stake) 股份授權(quán)證明機(jī)制,是一種區(qū)塊鏈的共識(shí)算法。DPoS是一種基于投票選舉的共識(shí)算法,類(lèi)似股東大會(huì)。在DPoS中,股東投票給某個(gè)代理人[6],系統(tǒng)根據(jù)股東所持股權(quán)在系統(tǒng)中占比計(jì)算出票數(shù)最高的一定數(shù)量代理人,代理人按照規(guī)則負(fù)責(zé)生成區(qū)塊。通過(guò)所有股東的投票后,系統(tǒng)中的信任已經(jīng)由全體參與者集中到了少數(shù)參與者,節(jié)點(diǎn)發(fā)起交易后不用再等待相當(dāng)數(shù)量未授信任節(jié)點(diǎn)的確認(rèn),而只需要讓代理人對(duì)交易進(jìn)行驗(yàn)證,大大縮短了交易的確認(rèn)時(shí)間。
3.3.1 核心功能模塊設(shè)計(jì)
本系統(tǒng)根據(jù)不同角色,主要?jiǎng)澐譃楣芾韱T、教師、宿舍管理員、宿舍長(zhǎng)、學(xué)生等功能模塊。系統(tǒng)功能模塊如圖1所示。
圖1:系統(tǒng)功能模塊
管理員模塊。維護(hù)系統(tǒng)信息如學(xué)院、專(zhuān)業(yè)、年級(jí)、班級(jí)、學(xué)生、教師、宿舍管理員、輔導(dǎo)員、樓棟、宿舍、設(shè)備、設(shè)備分配及考勤、通知等信息。
教師模塊。維護(hù)我的班級(jí)、我的學(xué)生信息;查看/審批學(xué)生請(qǐng)假事項(xiàng);查看考勤記錄、發(fā)送消息通知等。
宿舍管理員模塊。維護(hù)我的宿舍、樓棟學(xué)生信息;發(fā)起簽到查寢;查看考勤信息、發(fā)送消息通知等。
宿舍長(zhǎng)模塊。持續(xù)發(fā)送ibeacon藍(lán)牙簽到信號(hào)等待宿舍人員簽到。
學(xué)生模塊。掃碼教師班級(jí)專(zhuān)屬二維碼加入班級(jí);掃碼管理員宿舍專(zhuān)屬二維碼加入宿舍;打開(kāi)ibeacon藍(lán)牙接收宿舍長(zhǎng)的ibeacon藍(lán)牙簽到信號(hào)進(jìn)行簽到,如有缺人查看是否請(qǐng)假,若有異常發(fā)送信息通知并后臺(tái)記錄;發(fā)起請(qǐng)假;申請(qǐng)報(bào)修;查看考勤記錄和通知等。
3.3.2 核心業(yè)務(wù)流程設(shè)計(jì)
本系統(tǒng)的核心業(yè)務(wù)是使用ibeacon藍(lán)牙信號(hào)實(shí)現(xiàn)宿舍簽到,簽到流程如圖2所示。
圖2:簽到流程圖
(1)宿舍管理員客戶(hù)端發(fā)起簽到事件,也可以定時(shí)發(fā)起簽到事件,系統(tǒng)服務(wù)端將簽到信息保存到數(shù)據(jù)庫(kù)。
(2)宿舍長(zhǎng)客戶(hù)端從服務(wù)端數(shù)據(jù)庫(kù)獲取簽到信息,然后啟動(dòng)ibeacon藍(lán)牙,將簽到信息通過(guò)藍(lán)牙信號(hào)持續(xù)廣播出去(此時(shí)ibeacon設(shè)備作為外圍設(shè)備)。
(3)學(xué)生(宿舍成員)客戶(hù)端點(diǎn)擊“戳一戳”(指紋/語(yǔ)音識(shí)別)啟動(dòng)ibeacon藍(lán)牙設(shè)備,掃描并接收宿舍長(zhǎng)廣播的藍(lán)牙簽到信號(hào)(此時(shí)ibeacon設(shè)備作為中心設(shè)備)。
(4)學(xué)生(宿舍成員)客戶(hù)端掃描到宿舍長(zhǎng)發(fā)出的藍(lán)牙簽到信號(hào)后,發(fā)送簽到信息到服務(wù)端進(jìn)行簽到。
上文討論了輕量可信任查寢方案的重要特性,本方案借助學(xué)生已有手機(jī)不額外部署硬件設(shè)備,滿(mǎn)足輕量特性。通過(guò)指紋或語(yǔ)音等生物識(shí)別,可以確保本人使用簽到介質(zhì)的特性。但本方案假設(shè)條件是宿舍長(zhǎng)具有誠(chéng)信在宿舍發(fā)起簽到,不排除宿舍長(zhǎng)和宿舍成員一同在校外簽到的情況,因而無(wú)法保證簽到介質(zhì)在現(xiàn)場(chǎng)這一重要特性,具有不可信任因素。解決此問(wèn)題方案有很多,比如學(xué)生端增加GPS定位輔助,但手機(jī)GPS定位可以通過(guò)技術(shù)篡改并不能保證簽到設(shè)備在現(xiàn)場(chǎng)。另一方案是在宿舍樓每一層部署一臺(tái)ibeacon外圍設(shè)備廣播簽到信息,由于ibeacon設(shè)備信號(hào)傳輸距離有限可以一定程度上保證學(xué)生簽到手機(jī)就在宿舍至少在宿舍樓,雖然ibeacon設(shè)備價(jià)格較便宜成本不高,但仍然需要部署設(shè)備少了輕量的特性,因此不在本文討論范圍,本文重點(diǎn)探索如何用DPoS共識(shí)機(jī)制來(lái)解決本方案現(xiàn)場(chǎng)問(wèn)題。
DPoS上文已經(jīng)介紹過(guò),其原理是各節(jié)點(diǎn)投票將權(quán)重集中到某一個(gè)受托節(jié)點(diǎn),這個(gè)受托節(jié)點(diǎn)做出的決策就具有權(quán)威和可信度。本方案選出的宿舍長(zhǎng)就是受托節(jié)點(diǎn),也就是股東,但目前這個(gè)股東是不可信的,想要這個(gè)股東可信必須增加他的權(quán)重,也就是其他節(jié)點(diǎn)投票給他,證明他就在宿舍。因此改進(jìn)方案是,宿舍長(zhǎng)打開(kāi)ibeacon藍(lán)牙每接收到其他宿舍長(zhǎng)廣播的ibeacon藍(lán)牙信號(hào),其權(quán)重即信任值加1,如果接收到的是其他宿舍的成員ibeacon信號(hào),其權(quán)重加0.5。宿舍長(zhǎng)客戶(hù)端在廣播ibeacon簽到信號(hào)的時(shí)候附加上權(quán)重值,宿舍成員客戶(hù)端接收宿舍長(zhǎng)廣播的簽到信號(hào)和權(quán)重值,如果權(quán)重值大于設(shè)定的閾值則簽到成功并且是可信任的,如果權(quán)重值小于設(shè)定的閾值雖然簽到成功,但在數(shù)據(jù)庫(kù)加以備注以便宿舍管理員或輔導(dǎo)員核查。改進(jìn)后的方案只要有一個(gè)宿舍長(zhǎng)投票證明就基本可信,因?yàn)槌莾蓚€(gè)宿舍的人在一起作弊。DPoS投票如圖3所示。3.3.3 核心架構(gòu)設(shè)計(jì)
圖3:DPoS投票圖
本系統(tǒng)面向在校學(xué)生,簽到時(shí)間通常為固定的某個(gè)時(shí)間段,因而在這個(gè)時(shí)間段的簽到活動(dòng)極易引發(fā)瞬時(shí)的高并發(fā)請(qǐng)求,從而造成服務(wù)器崩潰,因此系統(tǒng)需要對(duì)瞬時(shí)高并發(fā)請(qǐng)求進(jìn)行削峰處理,也就是對(duì)瞬時(shí)高并發(fā)請(qǐng)求進(jìn)行限制、延遲處理。本系統(tǒng)采用Redis緩存和RabbitMQ消息中間件等來(lái)實(shí)現(xiàn)高并發(fā)削峰處理。高并發(fā)削峰處理架構(gòu)如圖4所示。
圖4:高并發(fā)削峰處理架構(gòu)如圖
Redis緩存。當(dāng)宿舍管理員發(fā)起簽到的時(shí)候,學(xué)生會(huì)頻繁請(qǐng)求服務(wù)器獲取簽到信息,從而頻繁的訪問(wèn)數(shù)據(jù)庫(kù)造成數(shù)據(jù)庫(kù)讀取壓力,可以將當(dāng)次需要頻繁訪問(wèn)的簽到信息從數(shù)據(jù)庫(kù)提取出來(lái)預(yù)存到Redis緩存,避免透穿數(shù)據(jù)庫(kù);當(dāng)學(xué)生提交簽到的時(shí)候,服務(wù)器將簽到信息直接保存到數(shù)據(jù)庫(kù),造成頻繁的數(shù)據(jù)庫(kù)寫(xiě)入,可以將當(dāng)次學(xué)生提交的簽到信息緩存到Redis,然后定時(shí)一次性的將簽到信息保存到數(shù)據(jù)庫(kù)。
RabbitMQ消息中間件。RabbitMQ主要作用是對(duì)瞬時(shí)高并發(fā)請(qǐng)求進(jìn)行削峰處理。當(dāng)簽到請(qǐng)求到來(lái)時(shí),控制器的處理方法接收到該簽到請(qǐng)求后,并不直接調(diào)用Service組件的方法來(lái)處理簽到請(qǐng)求,而是簡(jiǎn)單地發(fā)送該簽到消息到RabbitMQ消息隊(duì)列。系統(tǒng)會(huì)定義一個(gè)消息消費(fèi)者,消費(fèi)者會(huì)按照自己的節(jié)奏逐條讀取RabbitMQ消息隊(duì)列中的消息,每讀取一條消息,就處理一個(gè)簽到請(qǐng)求。如此,不管來(lái)自客戶(hù)端的瞬時(shí)并發(fā)請(qǐng)求有多少,控制器的處理方法只管一股腦兒地接收這些請(qǐng)求,并按照“先來(lái)先服務(wù)”的方式將這些請(qǐng)求添加到RabbitMQ消息隊(duì)列中,然后讓消息消費(fèi)者有條不紊地逐個(gè)處理這些瞬時(shí)的高并發(fā)請(qǐng)求。
本系統(tǒng)服務(wù)端采用主流的Spring Boot框架。通過(guò)Spring MVC提供Restful API接口;Spring Security+JWT實(shí)現(xiàn)實(shí)現(xiàn)認(rèn)證和授權(quán);Redis實(shí)現(xiàn)數(shù)據(jù)緩存;RabbitMQ實(shí)現(xiàn)高并發(fā)削峰處理;Spring Data Jpa實(shí)現(xiàn)數(shù)據(jù)持久化;數(shù)據(jù)庫(kù)采用Mysql??蛻?hù)端選擇微信小程序平臺(tái)。其原因有:一無(wú)需安裝,“用完即走”,使用便捷;二跨平臺(tái),無(wú)需開(kāi)發(fā)IOS 和Android兩個(gè)版本,只需開(kāi)發(fā)維護(hù)一個(gè)微信小程序版本,節(jié)省成本。
簽到預(yù)熱,每天固定時(shí)間比如23點(diǎn)啟動(dòng)簽到任務(wù),正式開(kāi)始簽到前10分鐘,從數(shù)據(jù)庫(kù)查詢(xún)本次簽到學(xué)生集合保存到Redis緩存,當(dāng)學(xué)生簽到時(shí)直接更新Redis緩存數(shù)據(jù),避免數(shù)據(jù)穿透。實(shí)現(xiàn)技術(shù)是使用定時(shí)任務(wù)Quartz框架定義一個(gè)后臺(tái)任務(wù)Task,這個(gè)后臺(tái)Task類(lèi)實(shí)現(xiàn)Job接口的execute方法,在此方法中,查詢(xún)簽到學(xué)生信息保存到Redis。簽到開(kāi)始,控制器接收簽到請(qǐng)求,并將簽到請(qǐng)求傳遞到消息隊(duì)列,消息消費(fèi)者從消息隊(duì)列獲取簽到請(qǐng)求并處理,即更新Redis緩存。簽到結(jié)束,定時(shí)將簽到結(jié)果保存到數(shù)據(jù)庫(kù)。關(guān)鍵代碼如表1。
表1:簽到處理代碼
微信小程序提供了iBeacon相關(guān)的一系列API接口。首先,作為外圍設(shè)備。小程序作為外圍設(shè)備持續(xù)不斷的向外廣播數(shù)據(jù),這適合宿舍長(zhǎng)發(fā)送ibeacon簽到信息的場(chǎng)景。為支持小程序作為外圍設(shè)備提供的關(guān)鍵接口有wx.createBLEPeripheralServer()建立本地作為藍(lán)牙低功耗外圍設(shè)備的服務(wù)端、BLEPeripheralServer.startAdvertising(Object Object)開(kāi)始廣播本地創(chuàng)建的外圍設(shè)備等。
第1步:打開(kāi)藍(lán)牙適配器wx.openBluetoothAdapter ({mode:'peripheral',success:res => {①}});其中mode必須為peripheral表示打開(kāi)的模式為外圍設(shè)備;①處填寫(xiě)藍(lán)牙打開(kāi)成功后創(chuàng)建外圍設(shè)備的代碼。
第2步:創(chuàng)建外圍設(shè)備wx.createBLEPeripheralServer().then(res => {this.server = res.server;②;});其中res.server表示創(chuàng)建成功后的外圍設(shè)備服務(wù)端BLEPeripheralServer實(shí)例;②處填寫(xiě)外圍設(shè)備服務(wù)端創(chuàng)建成功后廣播藍(lán)牙簽到信息的代碼。
第3步:廣播藍(lán)牙信息,如表2。uuid是xxxxxxxx-xxxx- xxxx-xxxx-xxxxxxxxxxxx(8-4-4-4-12) 16字節(jié)128位的字符串,用來(lái)標(biāo)識(shí)設(shè)備ID,本系統(tǒng)設(shè)計(jì)中定義uuid為學(xué)校樓棟標(biāo)識(shí),其中,前20位數(shù)代表學(xué)校id,后12位數(shù)字代表樓棟id。Major為簽到碼(答案),Minor為權(quán)重值(投票數(shù))。
表2:外圍設(shè)備廣播信息
其次,作為中心設(shè)備。小程序作為中心設(shè)備接收廣播數(shù)據(jù),這適合宿舍成員接收ibeacon簽到信息的場(chǎng)景。作為中心設(shè)備調(diào)用的接口有wx.startBeaconDiscovery() 搜索附近的iBeacon設(shè)備,wx.onBeaconUpdate() 監(jiān)聽(tīng)Beacon設(shè)備更新事件。
(1)打開(kāi)藍(lán)牙適配器wx.openBluetoothAdapter({success:res => {①}});其中①處填寫(xiě)藍(lán)牙打開(kāi)成功后搜索ibeacon設(shè)備的代碼。
(2)搜索ibeacon設(shè)備,如表3。當(dāng)宿舍人員持有手機(jī)進(jìn)入宿舍區(qū)域打開(kāi)小程序時(shí),小程序就可通過(guò)uuid搜索宿舍長(zhǎng)的ibeacon廣播數(shù)據(jù),包含UUID、Major、Minor等,然后發(fā)送到服務(wù)端實(shí)現(xiàn)簽到。
表3:中心設(shè)備接收信息
本文提出的基于iBeacon及DPoS共識(shí)機(jī)制的多重認(rèn)證智能宿舍管理系統(tǒng)結(jié)合指紋等生物識(shí)別、實(shí)時(shí)定位技術(shù)以及物聯(lián)網(wǎng)技術(shù),極大提高了宿舍管理部門(mén)的工作效率,系統(tǒng)具有部署簡(jiǎn)單、成本低、使用便捷、通用性好、準(zhǔn)確性強(qiáng)、效率高等特點(diǎn),既輕量又可信。本系統(tǒng)充分利用現(xiàn)代化計(jì)算機(jī)技術(shù),使得宿舍管理變得更加規(guī)范化、智慧化、科學(xué)化。