,,,,
(1.上海大學 機電工程與自動化學院,上海 200000;2.上海大學 微電子研究與開發中心,上海 200000)
水質監測是水產養殖的基本工作,水質的好壞直接關系到了水產品的產量及品質[1]。傳統水質檢測的方法主要是依靠人工操作配合儀表和經驗進行檢測,不但花費大量精力和時間,而且存在監測周期長,監測范圍有限等缺點。采用現場總線技術的水質在線監測系統擁有實時性好、監測范圍廣等特點,但也存在布線困難、維護拓展不方便、線路易受腐蝕等問題[2]。
近年來,無線傳感器網絡(Wireless Sensor Network,簡稱WSN)逐漸受到人們重視,WSN是一種綜合了傳感器技術、信息處理技術和無線通信等技術的新型信息技術,傳感器節點分撒在目標監測區域后,通過自組織方式形成網絡[3]。無線傳感器網絡在軍事、醫療、工農業、環境監測等方面有著廣泛的應用前景[4]。
隨著云端服務步入互聯網市場,云端的安全問題逐漸暴露出來[5]。與傳統單機存儲方式不同,在云端服務中,用戶對自己的數據的存儲位置和狀態一無所知,如果沒有對數據進行保護,就有可能被盜竊或者篡改,加密是保證數據安全性的一種有效手段,但是因為數據庫自身的特性,傳統的加密手段(如AES)會制約數據庫的性能,浪費云計算的高性能優勢。而同態加密[6]能在保證數據保密性的同時使加密后的數據仍能夠進行計算。
本文利用ZigBee通信技術組建無線傳感器網絡,實現對養殖水域中溶解氧含量、pH值、溫度等水質參數的實時采集,無線傳輸和遠程監測功能。并針對云端數據存儲中用戶數據的安全性問題,利用同態加密算法對用戶隱私進行加密,在保障數據安全性的前提下又不破壞云計算的能力。
基于無線傳感器網絡的水質監測系統主要由ZigBee無線傳感器網絡、主控制器、云端數據庫組成,如圖1所示。


圖1 系統設計框圖
無線傳感器網絡負責水質數據的采集,處理和無線傳輸等工作,采用混合網拓撲結構,使用ZigBee協議進行數據傳輸。無線傳感器網絡主要由終端節點、路由節點和中心節點組成,終端節點負責采集節點附近水域的溶解氧含量、pH值、溫度等水質數據,路由節點是即能采集水質數據,又能進行數據中繼路由的節點,采集到的水質數據最終匯聚到中心節點。中心節點將傳感器網絡上傳的數據進行融合后發送給主控制器進行實時顯示,同時上傳云端存儲備份。中心節點采用SZ11-03ZigBee+GPRS網關,此網關能同時使用ZigBee和GPRS通信,保證了中心節點能夠同時與傳感器網絡和云端進行數據通信。工作人員可以通過主控制器串口屏幕查看實時的水質監測數據,同時當工作人員的位置發生移動時,也能使用安卓手機從云數據庫查看水質數據。
終端節點硬件結構如圖2所示,主要由傳感器模塊、微處理器(MCU)模塊、ZigBee通信模塊、電源模塊組成。由于無線傳感器節點采用電池供電,需要保證較長的工作壽命,因此傳感器節點的MCU采用功耗低,穩定性高的PIC18F67K22。在無線傳輸模塊選擇上采用順舟科技生產的SZ05模塊,該模塊是基于ZigBee技術片上解決方案CC2630芯片所開發的,擁有功耗低、抗干擾能力強、組網靈活、網絡容量大等特點,該通信模塊與MCU通過UART進行數據傳輸。傳感器模塊由水質傳感器,信號調理電路和AD轉換器組成。水質傳感器分別測量節點附近水域中溶解氧含量、pH值和溫度等參數。
路由節點即能進行水質參數采集又能進行數據中繼路由,因此路由節點的硬件結構設計與終端節點一樣。

圖2 終端節點硬件結構圖
2.2.1 溶解氧信號調理電路
溶解氧傳感器選用極譜式溶解氧電流傳感器[7],傳感器由陰陽兩極構成,兩極之間用電解液填充,頂端覆蓋以聚四氟乙烯薄膜。當給陰陽兩極之間施加以685 mV的極化電壓后,滲透過薄膜的氧分子在電極上產生氧化還原反應,從而產生擴散電流,其信號調理電路如圖3所示。

圖3 溶解氧信號調理電路
左邊電路用以產生-685 mV極化電壓,第一級為電壓跟隨器,2.5 V輸入由高精度電源穩壓器產生,經第二級反相后得到-685 mV。右邊第一級將電流信號I轉換為電壓信號,第二級放大電壓信號,輸出電壓VOUTO:
(1)
2.2.2 pH信號調理電路
本設計采用電位法測量溶液pH值,玻璃電極做指示電極,甘汞電極或銀電極做參比電極[8],其測量原理是當被測溶液的氫離子濃度發生變化時,指示電極和參比電極之間的電動勢發生變化。當電位為0 V時,表示溶液為中性,即pH=7,由于溶液中的pH值分布在0~14之間,所以輸出信號為雙極性模擬信號,電壓范圍大約在-500~500 mV。pH信號調理電路如圖4所示,電壓信號分別加到U1、U2的同相端,U1和U2為第一級電路,U3為第二級電路,這兩級均為差分式電路。R2,R3,R4為第一級電路引入電壓串聯負反饋,根據“虛斷”和“虛短”特征,流過R2,R3,R4的電流相等,因此有:
(2)
第三級U3構成減法電路:
(3)
第四級最終輸出為:
(4)
至此雙極性電壓被調節到適合A/D轉換的范圍內。由最終輸出公式可知此電路只對輸入信號的差進行有效放大,而當輸入端出現共模信號時,電壓uo3=0。因此,該放大電路具有很高的共模抑制比,能提高信噪比,增強抗干擾能力,使得測量數值更加精確。
2.2.3 溫度傳感器測量電路
溫度傳感器選用pt1000鉑電阻溫度傳感器,金屬鉑的電阻值隨溫度變化而變化,并且具有很好的重現性和穩定性,因此應用范圍非常廣泛,常見于醫療、電機、工業、溫度計算、阻值計算等高精溫度設備的應用。按IEC751國際標準,pt1000在0℃時的標準電阻值為1000 Ω,電阻變化率為0.3851 Ω/℃。為了提高測量精度,pt1000測量電路常采用三線制接法,如圖5所示。

圖4 PH信號調理電路 圖5 pt1000測量電路
該電路測量原理是非平衡電橋[9],鉑電阻作為電橋的一個橋臂電阻,將一根導線接到電橋的電源端,其余兩根分別接到鉑電阻所在的橋臂及與其相鄰的橋臂上,要求從鉑電阻引出的三根導線截面積和長度相同,設從鉑電阻引出的導線電阻為r。假設0℃時鉑電阻電阻值為Rt,且橋路平衡,Vin+=Vin-,則:
(5)
當R1=R2時,Rt=R3,此時導線電阻r對測量結果的影響降至最低。Vin+=Vin-接至A/D轉換器的模擬量差分輸入端,其電壓差值為:
(6)
當溫度升高,鉑電阻阻值Rt→Rt+ΔR時:
(7)
傳感器節點主要負責水質數據的采集和無線通信功能,其軟件流程如圖6。節點上電后首先進入初始化程序,完成配置和入網工作后進入低功耗休眠狀態,當有喚醒事件時,MCU被喚醒并開始工作。當MCU內部看門狗定時器溢出時,節點退出休眠模式,進行溶解氧含量、PH值和水溫參數的采集和發送;當無線模塊監聽到路由信息時,產生中斷喚醒節點進入數據路由轉發的流程。

圖6 傳感器節點流程圖
主控制器其功能主要是通過與串口屏幕的連接,將中心節點接收到的數據進行顯示,并能控制養殖池中增氧機和拋食機的工作狀態,由處理器模塊、無線通信模塊、串口屏模塊、電源模塊等組成。其硬件結構如圖7所示。MCU選用PIC18F67J94,無源晶振為16 MHz,利用MCU內部鎖相環電路超頻至64 MHz,為系統提供更高的時鐘信號,以獲得更快的運行速度。MCU的工作電壓為3.3 V,設計中采用BA33BC0FP穩壓器提供穩定的3.3 V電壓輸出。配合PIC kit3調試器,可以將程序通過PGD,PGC串口直接燒寫到芯片內部。為了盡可能多地存儲水質數據,增加了一塊FM25CL64B鐵電存儲器,容量為64K,數據以一個字節為單位存儲,它與MCU通過SPI接口進行數據交互。鐵電存儲器與傳統的EEPROM器件相比有更長的擦寫壽命和更低的功耗,適合用于本設計中需要長期實時監測

圖7 主控制器硬件結構
的水產養殖池。本系統所采用的串口屏顯示器為上海久牛科技的JN08OUT-800600RB3I,采用全雙工異步串口與外部設備進行通信,接口電平為RS232電平,數據通信時利用SP3232E轉換成TTL電平,軟件使用直接變量驅動方式,所有的顯示和操作都是基于預先配置好的變量配置文件來工作的,簡化了軟件架構,降低了二次開發難度。
中心節點完成WSN的組網并將采集到的數據傳送給主控制器,同時主控制器也是人機交互的平臺,完成水質參數的實時顯示、讀取云端數據顯示歷史曲線等功能。其軟件設計如圖8所示。

圖8 主控制器軟件框圖
設計安卓端app的主要目的是當養殖人員不在主控制器附近時,能夠通過手機從云端數據庫中讀取實時水質數據。開發工具eclipse,編程語言JAVA,首先需要完成界面的布局設計,代碼編程時利用JTDS/JDBC中的Connection接口創建手機端與遠程數據庫的連接,再利用Statement接口在已經建立連接的基礎上向數據庫發送SQL語句完成對數據庫的操作,其界面如圖9、10所示。


圖9 app服務器設置界面 圖10 app水質數據讀取界面
系統測試過程中有5個傳感器節點,經自組織方式形成通信網絡,水質數據匯聚到中心節點,由串口屏顯示數據。節點對同一水域測量5次,測量間隔為20分鐘,取其平均值,結果如表1所示。實驗結果表明系統能夠實時測量水質參數,并且穩定性和測量精度都較高。

表1 監測結果
水產養殖涉及經濟利益,不同水質狀況下魚類的生長速度不同,用戶不會希望自己的養殖數據泄露。在本設計中,水質數據都存儲在云端數據庫中,但在云端中,數據提供者和云服務提供者這兩個角色是分離的[10],云服務提供者由商業機構承擔,這些商業機構對于水產養殖戶來說是不可信的,如果用戶把數據以明文形式存儲在云端,那么云服務商就能利用這些數據為自己牟利,如果用戶用傳統加密方式將數據加密后以密文形式存儲在云端,那么云端僅僅是提供了傳輸、存儲功能,用戶無法利用云計算的高計算性能優勢。而同態加密提供了一種對加密數據進行處理的功能,其定義[11]如下:
設E(K,m)表示用加密算法E和密鑰K對m進行加密,F表示某種運算,若對于加密算法E和運算F,存在運算G使得:
E(K,F(m1,m2,…,mn)=
G(K,F(E(m1),E(m2),…,E(mn)))
(8)
就稱加密E對于運算F具有同態性。若用Dk表示解密算法,加法同態性和乘法同態性可以分別表示為:
由此可見同態加密能保證云端對密文進行計算操作后解密的結果與用戶直接對明文進行計算操作的結果是一樣的。
本文所使用的整數環上的同態加密過程描述如下:
1)密鑰生成:隨機選取兩個大素數P和Q(長度大于512位),計算N=PQ,并選取一個隨機數R;
2)加密:將明文M按固定長度L(L
3)解密:將密文進行分組C=c1,c2,…,cn,對每一組密文使用密鑰P計算mi=cimodP,連接明文分組得到完整明文消息M=m1,m2,…,mn。
上述加密算法同時具有加法同態性和乘法同態性,已在文獻[12]中證明。現利用大數運算庫Tommath完成對同態加密算法的本地編程測試。測試環境為個人PC端;WIN10系統;VisualStudio2013平臺;C語言編程,加密和解密程序流程如圖11所示,圖中(a)為加密流程圖,(b)為解密流程圖。

圖11 加密和解密流程圖
首先,用戶讀取本地明文文件,利用文件指針先得到明文的長度,并根據需要的分組長度L對明文進行分組,再將分組字符串轉換為二進制寫進mp_int類型的大數,然后使用密鑰P、Q、R對其進行加密操作。
當用戶從服務器上獲得云計算的密文后根據密文之間的分隔標記進行分組,再將字符串轉換成二進制,利用密鑰P進行解密計算,獲得明文的二進制串后再轉換成字符串,結果如圖12~15所示。

圖12 加密算法控制臺程序運行時的圖像

圖13 需要加密的明文

圖14 加密后的密文

圖15 密文解密后的結果
由結果中可以看出,明文中包含了漢字、數字、符號等字符,解密結果與明文完全一致。加密算法的安全性是基于分解難題的,攻擊者想要破解大數N只能通過窮舉法,而N的位數為512~1 024 bit,這將花費攻擊者大量的時間。因此本文應用的同態加密算法能在不破壞云計算可行性的前提下保護用戶的隱私。但是該加密算法容易受到選擇明文攻擊[13],因此可以采用合適的云端數據訪問控制機制[14-15]來避免遭到選擇明文攻擊。
本文利用ZigBee構建無線傳感器網絡,完成對水產養殖池的水質監測系統設計。該系統中,傳感器節點負責采集溶解氧含量,PH值,水溫等水質數據,中心節點收集各節點的監測數據并進行融合,通過RS232串口與主控制器進行數據傳輸,并通過GPRS將數據上傳至云端保存。主控制器配合串口屏幕完成水質數據的實時監測,設計了安卓手機端app,保證用戶能隨時隨地了解水質情況。通過該系統監測養殖池塘的水質能有效減少養殖人員的工作量,提高養殖效率。
本文針對云端的數據安全性進行研究,利用同態加密算法保護用戶隱私,減少數據泄露所造成的經濟損失,為了能夠進一步提高云端安全性,下一步將結合訪問控制機制與同態加密算法進行探索。