,,,,
(1.上海大學(xué) 機電工程與自動化學(xué)院,上海 200000;2.上海大學(xué) 微電子研究與開發(fā)中心,上海 200000)
水質(zhì)監(jiān)測是水產(chǎn)養(yǎng)殖的基本工作,水質(zhì)的好壞直接關(guān)系到了水產(chǎn)品的產(chǎn)量及品質(zhì)[1]。傳統(tǒng)水質(zhì)檢測的方法主要是依靠人工操作配合儀表和經(jīng)驗進行檢測,不但花費大量精力和時間,而且存在監(jiān)測周期長,監(jiān)測范圍有限等缺點。采用現(xiàn)場總線技術(shù)的水質(zhì)在線監(jiān)測系統(tǒng)擁有實時性好、監(jiān)測范圍廣等特點,但也存在布線困難、維護拓展不方便、線路易受腐蝕等問題[2]。
近年來,無線傳感器網(wǎng)絡(luò)(Wireless Sensor Network,簡稱WSN)逐漸受到人們重視,WSN是一種綜合了傳感器技術(shù)、信息處理技術(shù)和無線通信等技術(shù)的新型信息技術(shù),傳感器節(jié)點分撒在目標(biāo)監(jiān)測區(qū)域后,通過自組織方式形成網(wǎng)絡(luò)[3]。無線傳感器網(wǎng)絡(luò)在軍事、醫(yī)療、工農(nóng)業(yè)、環(huán)境監(jiān)測等方面有著廣泛的應(yīng)用前景[4]。
隨著云端服務(wù)步入互聯(lián)網(wǎng)市場,云端的安全問題逐漸暴露出來[5]。與傳統(tǒng)單機存儲方式不同,在云端服務(wù)中,用戶對自己的數(shù)據(jù)的存儲位置和狀態(tài)一無所知,如果沒有對數(shù)據(jù)進行保護,就有可能被盜竊或者篡改,加密是保證數(shù)據(jù)安全性的一種有效手段,但是因為數(shù)據(jù)庫自身的特性,傳統(tǒng)的加密手段(如AES)會制約數(shù)據(jù)庫的性能,浪費云計算的高性能優(yōu)勢。而同態(tài)加密[6]能在保證數(shù)據(jù)保密性的同時使加密后的數(shù)據(jù)仍能夠進行計算。
本文利用ZigBee通信技術(shù)組建無線傳感器網(wǎng)絡(luò),實現(xiàn)對養(yǎng)殖水域中溶解氧含量、pH值、溫度等水質(zhì)參數(shù)的實時采集,無線傳輸和遠(yuǎn)程監(jiān)測功能。并針對云端數(shù)據(jù)存儲中用戶數(shù)據(jù)的安全性問題,利用同態(tài)加密算法對用戶隱私進行加密,在保障數(shù)據(jù)安全性的前提下又不破壞云計算的能力。
基于無線傳感器網(wǎng)絡(luò)的水質(zhì)監(jiān)測系統(tǒng)主要由ZigBee無線傳感器網(wǎng)絡(luò)、主控制器、云端數(shù)據(jù)庫組成,如圖1所示。
圖1 系統(tǒng)設(shè)計框圖
無線傳感器網(wǎng)絡(luò)負(fù)責(zé)水質(zhì)數(shù)據(jù)的采集,處理和無線傳輸?shù)裙ぷ?,采用混合網(wǎng)拓?fù)浣Y(jié)構(gòu),使用ZigBee協(xié)議進行數(shù)據(jù)傳輸。無線傳感器網(wǎng)絡(luò)主要由終端節(jié)點、路由節(jié)點和中心節(jié)點組成,終端節(jié)點負(fù)責(zé)采集節(jié)點附近水域的溶解氧含量、pH值、溫度等水質(zhì)數(shù)據(jù),路由節(jié)點是即能采集水質(zhì)數(shù)據(jù),又能進行數(shù)據(jù)中繼路由的節(jié)點,采集到的水質(zhì)數(shù)據(jù)最終匯聚到中心節(jié)點。中心節(jié)點將傳感器網(wǎng)絡(luò)上傳的數(shù)據(jù)進行融合后發(fā)送給主控制器進行實時顯示,同時上傳云端存儲備份。中心節(jié)點采用SZ11-03ZigBee+GPRS網(wǎng)關(guān),此網(wǎng)關(guān)能同時使用ZigBee和GPRS通信,保證了中心節(jié)點能夠同時與傳感器網(wǎng)絡(luò)和云端進行數(shù)據(jù)通信。工作人員可以通過主控制器串口屏幕查看實時的水質(zhì)監(jiān)測數(shù)據(jù),同時當(dāng)工作人員的位置發(fā)生移動時,也能使用安卓手機從云數(shù)據(jù)庫查看水質(zhì)數(shù)據(jù)。
終端節(jié)點硬件結(jié)構(gòu)如圖2所示,主要由傳感器模塊、微處理器(MCU)模塊、ZigBee通信模塊、電源模塊組成。由于無線傳感器節(jié)點采用電池供電,需要保證較長的工作壽命,因此傳感器節(jié)點的MCU采用功耗低,穩(wěn)定性高的PIC18F67K22。在無線傳輸模塊選擇上采用順舟科技生產(chǎn)的SZ05模塊,該模塊是基于ZigBee技術(shù)片上解決方案CC2630芯片所開發(fā)的,擁有功耗低、抗干擾能力強、組網(wǎng)靈活、網(wǎng)絡(luò)容量大等特點,該通信模塊與MCU通過UART進行數(shù)據(jù)傳輸。傳感器模塊由水質(zhì)傳感器,信號調(diào)理電路和AD轉(zhuǎn)換器組成。水質(zhì)傳感器分別測量節(jié)點附近水域中溶解氧含量、pH值和溫度等參數(shù)。
路由節(jié)點即能進行水質(zhì)參數(shù)采集又能進行數(shù)據(jù)中繼路由,因此路由節(jié)點的硬件結(jié)構(gòu)設(shè)計與終端節(jié)點一樣。
圖2 終端節(jié)點硬件結(jié)構(gòu)圖
2.2.1 溶解氧信號調(diào)理電路
溶解氧傳感器選用極譜式溶解氧電流傳感器[7],傳感器由陰陽兩極構(gòu)成,兩極之間用電解液填充,頂端覆蓋以聚四氟乙烯薄膜。當(dāng)給陰陽兩極之間施加以685 mV的極化電壓后,滲透過薄膜的氧分子在電極上產(chǎn)生氧化還原反應(yīng),從而產(chǎn)生擴散電流,其信號調(diào)理電路如圖3所示。
圖3 溶解氧信號調(diào)理電路
左邊電路用以產(chǎn)生-685 mV極化電壓,第一級為電壓跟隨器,2.5 V輸入由高精度電源穩(wěn)壓器產(chǎn)生,經(jīng)第二級反相后得到-685 mV。右邊第一級將電流信號I轉(zhuǎn)換為電壓信號,第二級放大電壓信號,輸出電壓VOUTO:
(1)
2.2.2 pH信號調(diào)理電路
本設(shè)計采用電位法測量溶液pH值,玻璃電極做指示電極,甘汞電極或銀電極做參比電極[8],其測量原理是當(dāng)被測溶液的氫離子濃度發(fā)生變化時,指示電極和參比電極之間的電動勢發(fā)生變化。當(dāng)電位為0 V時,表示溶液為中性,即pH=7,由于溶液中的pH值分布在0~14之間,所以輸出信號為雙極性模擬信號,電壓范圍大約在-500~500 mV。pH信號調(diào)理電路如圖4所示,電壓信號分別加到U1、U2的同相端,U1和U2為第一級電路,U3為第二級電路,這兩級均為差分式電路。R2,R3,R4為第一級電路引入電壓串聯(lián)負(fù)反饋,根據(jù)“虛斷”和“虛短”特征,流過R2,R3,R4的電流相等,因此有:
(2)
第三級U3構(gòu)成減法電路:
(3)
第四級最終輸出為:
(4)
至此雙極性電壓被調(diào)節(jié)到適合A/D轉(zhuǎn)換的范圍內(nèi)。由最終輸出公式可知此電路只對輸入信號的差進行有效放大,而當(dāng)輸入端出現(xiàn)共模信號時,電壓uo3=0。因此,該放大電路具有很高的共模抑制比,能提高信噪比,增強抗干擾能力,使得測量數(shù)值更加精確。
2.2.3 溫度傳感器測量電路
溫度傳感器選用pt1000鉑電阻溫度傳感器,金屬鉑的電阻值隨溫度變化而變化,并且具有很好的重現(xiàn)性和穩(wěn)定性,因此應(yīng)用范圍非常廣泛,常見于醫(yī)療、電機、工業(yè)、溫度計算、阻值計算等高精溫度設(shè)備的應(yīng)用。按IEC751國際標(biāo)準(zhǔn),pt1000在0℃時的標(biāo)準(zhǔn)電阻值為1000 Ω,電阻變化率為0.3851 Ω/℃。為了提高測量精度,pt1000測量電路常采用三線制接法,如圖5所示。
圖4 PH信號調(diào)理電路 圖5 pt1000測量電路
該電路測量原理是非平衡電橋[9],鉑電阻作為電橋的一個橋臂電阻,將一根導(dǎo)線接到電橋的電源端,其余兩根分別接到鉑電阻所在的橋臂及與其相鄰的橋臂上,要求從鉑電阻引出的三根導(dǎo)線截面積和長度相同,設(shè)從鉑電阻引出的導(dǎo)線電阻為r。假設(shè)0℃時鉑電阻電阻值為Rt,且橋路平衡,Vin+=Vin-,則:
(5)
當(dāng)R1=R2時,Rt=R3,此時導(dǎo)線電阻r對測量結(jié)果的影響降至最低。Vin+=Vin-接至A/D轉(zhuǎn)換器的模擬量差分輸入端,其電壓差值為:
(6)
當(dāng)溫度升高,鉑電阻阻值Rt→Rt+ΔR時:
(7)
傳感器節(jié)點主要負(fù)責(zé)水質(zhì)數(shù)據(jù)的采集和無線通信功能,其軟件流程如圖6。節(jié)點上電后首先進入初始化程序,完成配置和入網(wǎng)工作后進入低功耗休眠狀態(tài),當(dāng)有喚醒事件時,MCU被喚醒并開始工作。當(dāng)MCU內(nèi)部看門狗定時器溢出時,節(jié)點退出休眠模式,進行溶解氧含量、PH值和水溫參數(shù)的采集和發(fā)送;當(dāng)無線模塊監(jiān)聽到路由信息時,產(chǎn)生中斷喚醒節(jié)點進入數(shù)據(jù)路由轉(zhuǎn)發(fā)的流程。
圖6 傳感器節(jié)點流程圖
主控制器其功能主要是通過與串口屏幕的連接,將中心節(jié)點接收到的數(shù)據(jù)進行顯示,并能控制養(yǎng)殖池中增氧機和拋食機的工作狀態(tài),由處理器模塊、無線通信模塊、串口屏模塊、電源模塊等組成。其硬件結(jié)構(gòu)如圖7所示。MCU選用PIC18F67J94,無源晶振為16 MHz,利用MCU內(nèi)部鎖相環(huán)電路超頻至64 MHz,為系統(tǒng)提供更高的時鐘信號,以獲得更快的運行速度。MCU的工作電壓為3.3 V,設(shè)計中采用BA33BC0FP穩(wěn)壓器提供穩(wěn)定的3.3 V電壓輸出。配合PIC kit3調(diào)試器,可以將程序通過PGD,PGC串口直接燒寫到芯片內(nèi)部。為了盡可能多地存儲水質(zhì)數(shù)據(jù),增加了一塊FM25CL64B鐵電存儲器,容量為64K,數(shù)據(jù)以一個字節(jié)為單位存儲,它與MCU通過SPI接口進行數(shù)據(jù)交互。鐵電存儲器與傳統(tǒng)的EEPROM器件相比有更長的擦寫壽命和更低的功耗,適合用于本設(shè)計中需要長期實時監(jiān)測
圖7 主控制器硬件結(jié)構(gòu)
的水產(chǎn)養(yǎng)殖池。本系統(tǒng)所采用的串口屏顯示器為上海久??萍嫉腏N08OUT-800600RB3I,采用全雙工異步串口與外部設(shè)備進行通信,接口電平為RS232電平,數(shù)據(jù)通信時利用SP3232E轉(zhuǎn)換成TTL電平,軟件使用直接變量驅(qū)動方式,所有的顯示和操作都是基于預(yù)先配置好的變量配置文件來工作的,簡化了軟件架構(gòu),降低了二次開發(fā)難度。
中心節(jié)點完成WSN的組網(wǎng)并將采集到的數(shù)據(jù)傳送給主控制器,同時主控制器也是人機交互的平臺,完成水質(zhì)參數(shù)的實時顯示、讀取云端數(shù)據(jù)顯示歷史曲線等功能。其軟件設(shè)計如圖8所示。
圖8 主控制器軟件框圖
設(shè)計安卓端app的主要目的是當(dāng)養(yǎng)殖人員不在主控制器附近時,能夠通過手機從云端數(shù)據(jù)庫中讀取實時水質(zhì)數(shù)據(jù)。開發(fā)工具eclipse,編程語言JAVA,首先需要完成界面的布局設(shè)計,代碼編程時利用JTDS/JDBC中的Connection接口創(chuàng)建手機端與遠(yuǎn)程數(shù)據(jù)庫的連接,再利用Statement接口在已經(jīng)建立連接的基礎(chǔ)上向數(shù)據(jù)庫發(fā)送SQL語句完成對數(shù)據(jù)庫的操作,其界面如圖9、10所示。
圖9 app服務(wù)器設(shè)置界面 圖10 app水質(zhì)數(shù)據(jù)讀取界面
系統(tǒng)測試過程中有5個傳感器節(jié)點,經(jīng)自組織方式形成通信網(wǎng)絡(luò),水質(zhì)數(shù)據(jù)匯聚到中心節(jié)點,由串口屏顯示數(shù)據(jù)。節(jié)點對同一水域測量5次,測量間隔為20分鐘,取其平均值,結(jié)果如表1所示。實驗結(jié)果表明系統(tǒng)能夠?qū)崟r測量水質(zhì)參數(shù),并且穩(wěn)定性和測量精度都較高。
表1 監(jiān)測結(jié)果
水產(chǎn)養(yǎng)殖涉及經(jīng)濟利益,不同水質(zhì)狀況下魚類的生長速度不同,用戶不會希望自己的養(yǎng)殖數(shù)據(jù)泄露。在本設(shè)計中,水質(zhì)數(shù)據(jù)都存儲在云端數(shù)據(jù)庫中,但在云端中,數(shù)據(jù)提供者和云服務(wù)提供者這兩個角色是分離的[10],云服務(wù)提供者由商業(yè)機構(gòu)承擔(dān),這些商業(yè)機構(gòu)對于水產(chǎn)養(yǎng)殖戶來說是不可信的,如果用戶把數(shù)據(jù)以明文形式存儲在云端,那么云服務(wù)商就能利用這些數(shù)據(jù)為自己牟利,如果用戶用傳統(tǒng)加密方式將數(shù)據(jù)加密后以密文形式存儲在云端,那么云端僅僅是提供了傳輸、存儲功能,用戶無法利用云計算的高計算性能優(yōu)勢。而同態(tài)加密提供了一種對加密數(shù)據(jù)進行處理的功能,其定義[11]如下:
設(shè)E(K,m)表示用加密算法E和密鑰K對m進行加密,F(xiàn)表示某種運算,若對于加密算法E和運算F,存在運算G使得:
E(K,F(m1,m2,…,mn)=
G(K,F(E(m1),E(m2),…,E(mn)))
(8)
就稱加密E對于運算F具有同態(tài)性。若用Dk表示解密算法,加法同態(tài)性和乘法同態(tài)性可以分別表示為:
由此可見同態(tài)加密能保證云端對密文進行計算操作后解密的結(jié)果與用戶直接對明文進行計算操作的結(jié)果是一樣的。
本文所使用的整數(shù)環(huán)上的同態(tài)加密過程描述如下:
1)密鑰生成:隨機選取兩個大素數(shù)P和Q(長度大于512位),計算N=PQ,并選取一個隨機數(shù)R;
2)加密:將明文M按固定長度L(L
3)解密:將密文進行分組C=c1,c2,…,cn,對每一組密文使用密鑰P計算mi=cimodP,連接明文分組得到完整明文消息M=m1,m2,…,mn。
上述加密算法同時具有加法同態(tài)性和乘法同態(tài)性,已在文獻[12]中證明?,F(xiàn)利用大數(shù)運算庫Tommath完成對同態(tài)加密算法的本地編程測試。測試環(huán)境為個人PC端;WIN10系統(tǒng);VisualStudio2013平臺;C語言編程,加密和解密程序流程如圖11所示,圖中(a)為加密流程圖,(b)為解密流程圖。
圖11 加密和解密流程圖
首先,用戶讀取本地明文文件,利用文件指針先得到明文的長度,并根據(jù)需要的分組長度L對明文進行分組,再將分組字符串轉(zhuǎn)換為二進制寫進mp_int類型的大數(shù),然后使用密鑰P、Q、R對其進行加密操作。
當(dāng)用戶從服務(wù)器上獲得云計算的密文后根據(jù)密文之間的分隔標(biāo)記進行分組,再將字符串轉(zhuǎn)換成二進制,利用密鑰P進行解密計算,獲得明文的二進制串后再轉(zhuǎn)換成字符串,結(jié)果如圖12~15所示。
圖12 加密算法控制臺程序運行時的圖像
圖13 需要加密的明文
圖14 加密后的密文
圖15 密文解密后的結(jié)果
由結(jié)果中可以看出,明文中包含了漢字、數(shù)字、符號等字符,解密結(jié)果與明文完全一致。加密算法的安全性是基于分解難題的,攻擊者想要破解大數(shù)N只能通過窮舉法,而N的位數(shù)為512~1 024 bit,這將花費攻擊者大量的時間。因此本文應(yīng)用的同態(tài)加密算法能在不破壞云計算可行性的前提下保護用戶的隱私。但是該加密算法容易受到選擇明文攻擊[13],因此可以采用合適的云端數(shù)據(jù)訪問控制機制[14-15]來避免遭到選擇明文攻擊。
本文利用ZigBee構(gòu)建無線傳感器網(wǎng)絡(luò),完成對水產(chǎn)養(yǎng)殖池的水質(zhì)監(jiān)測系統(tǒng)設(shè)計。該系統(tǒng)中,傳感器節(jié)點負(fù)責(zé)采集溶解氧含量,PH值,水溫等水質(zhì)數(shù)據(jù),中心節(jié)點收集各節(jié)點的監(jiān)測數(shù)據(jù)并進行融合,通過RS232串口與主控制器進行數(shù)據(jù)傳輸,并通過GPRS將數(shù)據(jù)上傳至云端保存。主控制器配合串口屏幕完成水質(zhì)數(shù)據(jù)的實時監(jiān)測,設(shè)計了安卓手機端app,保證用戶能隨時隨地了解水質(zhì)情況。通過該系統(tǒng)監(jiān)測養(yǎng)殖池塘的水質(zhì)能有效減少養(yǎng)殖人員的工作量,提高養(yǎng)殖效率。
本文針對云端的數(shù)據(jù)安全性進行研究,利用同態(tài)加密算法保護用戶隱私,減少數(shù)據(jù)泄露所造成的經(jīng)濟損失,為了能夠進一步提高云端安全性,下一步將結(jié)合訪問控制機制與同態(tài)加密算法進行探索。