摘 要: 為了解決管理系統中數據的安全傳輸問題和系統故障時自動應對問題,提出了一種基于CC2430單片機和WiFi的電氣設備監控系統。描述了系統的總體設計,針對系統中數據安全的問題,主要闡述了系統中保障數據安全可靠性的設計,為實現數據的安全傳輸設計了適合本系統的通信協議并對數據進行了加密,對突發情況下的數據保護措施,分別論述了節點與服務器發生狀況時的應對措施。通過實驗表明,系統在數據傳輸和工作穩定性方面有了顯著提升,保障了系統工作的高效性與可靠性。
關鍵詞: 監測;數據安全;異常處理
0 引言
隨著我國經濟實力的增長和科學技術的進步,越來越多的智能化、自動化設備走進人們的生活,為人們服務,走進企業工廠,為企業節省人力,提高產能,創造更大的效益。設備雖然智能,但是還是不能完全脫離人的控制,當設備運行出現問題時需要人為的干涉,同時某些設備的運行信息有助于更高效利用這些設備。為此,設計了這套基于單片機采集和WiFi傳輸的電氣設備無線監控系統,用于對這些設備的工作狀態進行實時監測,記錄設備的開關機狀態,可控制繼電器使設備斷電,以避免造成不必要的損失。該系統能否正確幫助操作人員對設備進行操作和分析,信息傳輸的安全與可靠起到了至關重要的作用。本文主要介紹了系統設計中數據安全的問題,將從數據傳輸過程中的安全設計和數據安全措施兩方面進行闡述。
1 系統總體設計方案
本監控系統由單片機監控模塊、WiFi傳輸模塊、監測網站三部分組成。監控系統的整體結構如圖1所示。
該系統以CC2430單片機和WiFi模塊為基礎[1],以ASP.NET設計監控網站,SQL Server 2005作為服務器數據庫,所完成的主要功能是實現設備工作狀態的遠程監測。單片機監控模塊可以檢測到設備的運行、關閉等狀態,并記錄各狀態發生改變的時刻。檢測到的設備狀態信息以及相應的設備編號將通過WiFi模塊實時傳送到服務器數據庫并在監測網站的網頁上顯示。當服務器停止工作時,單片機將繼續存儲收集來的信息于Flash存儲器中,當服務器恢復工作時自動向單片機存儲器調取數據并存儲于數據庫。本文還設計了符合系統的通信協議,應用了數據加密技術保證數據的準確性和安全性。
2 SQL Server 2005數據庫庫表
數據庫的設計對于整個系統而言起著不可替代的作用,完善的數據庫結構可以讓整個數據存儲脈絡清晰,不至于引起不必要的混亂。本系統的數據庫表分為三個:用戶信息表,節點信息存儲表,控制命令表。
2.1 用戶信息表
用戶信息表是與用戶登錄相關的表,登錄頁面與用戶信息表相關聯。當用戶登錄時,通過SQL語句、數據庫搜索引擎在數據庫中搜索與注冊用戶信息相符的信息,如果信息相符,返回相應的數據,然后再根據權限登錄到不同的頁面;如果是管理員則登錄管理員界面,可以向各節點發送命令。如果沒有相應的數據信息,將不能登錄。用戶信息表包括:用戶名、用戶密碼、用戶權限和用戶郵箱。用戶信息表如表1所示。
2.2 節點信息存儲表
節點信息存儲表是系統中最關鍵的一張表,它記錄了所有設備的所有開關機信息和狀態信息,是為管理員有效管理設備提供重要參考的一張表。系統各個節點一直檢測設備的狀態,當設備狀態發生改變時,將發送信息到服務器,網站接收各個節點傳送過來的信息并根據不同的數據類型存儲于表中。節點信息存儲表字段包括:設備號、事件時間、設備狀態。節點信息存儲表如表2所示。
2.3 控制命令表
管理員要想控制各個節點需要在監測網站上輸入控制命令,而控制命令不能由網站直接發送到節點,首先要將控制命令存儲到數據庫再由數據發送應用程序至節點。將控制命令保存到數據庫同時也是歷史信息的保存,對于系統運行的分析將提供一定的信息資源參考。控制命令表字段包括:設備號和控制命令。控制命令表如表3所示。
3 數據安全問題設計
3.1 通信協議的制定
在該系統中信息的安全可靠決定了對設備的控制和使用效率的分析,只有在數據信息正確的基礎上才能實現整個系統的功能。所以本文將重點介紹系統設計中的數據安全措施。數據安全不僅是數據庫中數據的安全,還要保證節點傳送來的數據是準確可靠的[3],因此本文制定了適合本系統的通信協議,分為采集數據格式和命令消息格式,下面將分別對其進行闡述。
3.1.1 采集數據格式
為了能夠將終端節點采集到的信息有效準確地傳送給服務器,需要定義采集數據格式如表4所示。
開始標志:接收方判斷一個消息開始的表示,為了避免引起混亂,必須不同于其他信息,在這里設置為AAFF。
設備號:各節點設備的編號,用來知道是哪個設備采集來的數據。
數據長度:在本設計中,一般情況下要傳送的數據信息的長度是固定的。
數據類型:01表示狀態改變時間;02表示設備狀態。
數據:采集的設備狀態和狀態發生時的時間。
停止位:數據包結束標識符。
3.1.2 命令信息格式
命令信息格式如表5所示
起始位:設置為AAEE。
設備號:接受節點的編號。如果設備號為EE,則表示該命令需要廣播給網絡中的所有節點;如果設備號是E1,則表示該命令需要廣播至一組的路由節點;如果設備號為E2,則表示該命令需要廣播至二組的所有節點;如果是E3,則表示該命令需要廣播至三組的路由節點;如果是某個節點的編號,則該命令只針對這個節點。
數據長度:命令幀的數據長度也是固定的。
命令標識符:用來區分各種不同的命令,如表6表示。
結束標識符:AA99
通信模式采取了實時上報和應答相結合的模式。實時上報模式,就是每個節點的狀態在發生改變時數據會及時發送到服務器數據庫,這樣就保證了監測網站可以準確地把握每個節點的當前工作狀態,進而可以準確的進行控制。命令-應答模式,是用戶根據需要,對節點發出命令,節點收到命令后,根據命令內容作相應的處理。命令-應答模式是一個雙向的數據通信系統,其具體步驟如下所示:
(1)用戶發送命令給目標節點。
(2)目標節點解讀命令,執行命令。如果目標節點收到未定義的命令,則認為是無效的數據包,目標節點會通知用戶信息無效;如果目標節點處理命令信息失敗,則協調器發送失敗的應答信息,用戶需要重新發送命令。
(3)完成。
3.2 節點及服務器異常處理
3.2.1 節點異常處理
在網絡運行中,節點可能會由于硬件問題或者遭受碰撞攻擊等,導致喪失工作能力。用戶可以通過預設的命令,在網絡中進行廣播,節點收到信息后進行回復,當有節點沒有回復的時候再進行通信,如果三次都沒有回復,則認為該節點出現了故障,需要從網絡中移除或維修。
3.2.2 服務器異常處理
理論上,服務器應該是24小時工作,但是很難保證不會有意外情況的發生,如斷電、數據庫維護等都會使服務器暫時停止工作。由于各節點采用的是實時上報模式,所以服務器停止工作時各節點的數據將不能發送到服務器數據庫。如果節點單片機不先將信息進行存儲將導致數據的丟失。
在單片機檢測模塊本文設計采用了16 MB內存的Flash存儲器用于對采集的信息進行存儲,Flash存儲器掉電后不會自動擦除數據,所以能保障數據在故障時的安全。當節點采集到數據時將試圖發送到服務器數據庫,如果數據發送成功,則服務器方面將把信息存儲在網絡數據庫,同時,單片機將發送成功的數據保存在Flash存儲器中;如果數據發送失敗,則在數據包加一個標識位1,并將該條信息保存至Flash存儲器中。單片機定期遍歷Flash存儲器中的數據,將標識位為1的信息重新發送,發送成功后取消標識位存儲于Flash存儲器中,發送失敗則等待下次發送。
由于Flash存儲器的內存有限,所以不能把所有的數據全部都存儲于Flash存儲器中,本文設計定期擦除Flash存儲器中的已經發送成功的數據,未發送成功的數據將繼續保留,直至發送成功。如圖2所示。
為了確保沒有數據的丟失,從檢測網站可以任意調取各個節點任何時間段的信息,管理員可以在網站管理界面輸入想要的時間段數據至某一個或幾個節點,節點接收到命令后從Flash存儲器中調取相應信息發送至服務器。這樣直接從Flash存儲器調取數據將比從數據庫中調取信息更加準確可靠。
3.3 數據加密
本系統中所采用的CC2430硬件支持128 bit的AES加密算法,它包含一個AES協處理器,通過AES協處理器完成數據的加密和解密操作,減輕了內置CPU的負擔。在Z—Stack協議棧中,這個加密算法默認是關閉的,使用時需要開啟這個功能:首先將f8wConfig配置文件中的DSECURE值設置為1,這是一個總按鈕;然后將ZGlobal.c中的zgPreConfigKeys值由FALSE改為TRUE;最后在函數nwk-global.c中設置一個128 bit的密鑰。啟動數據加密功能,發送數據的節點將明文經過AES-128加密算法加密后,使其變成密文傳送出去。接收節點在接收到復雜的密文后,使用相同的秘鑰和AES-128解密算法,將其還原為明文,保證了數據在傳輸過程中的安全。加密流程如圖3所示。
4 實驗結果
本實驗以河北大學物理學院實驗設備作為實驗對象,對不同實驗室的不同設備進行編號,同時進行監測。實驗表明該系統能夠對多個設備的運行狀態進行監測,并且該系統具有良好的穩定性,數據信息可以安全可靠地傳輸到服務器,同時進行了服務器停止工作實驗,當恢復工作時可以將關閉時間的節點信息調出。
5 結論
本文首先介紹了檢測系統的總體設計,之后從通信協議的制定、節點和服務器異常的處理、傳輸數據的加密及存儲過程的設計四方面闡述了系統對數據安全方面的設計。通過實驗檢測,本文的設計可以使系統在數據安全方面得到很大的改善,確實保障了數據的全面與可靠,可以為管理人員提供更有效更可靠的數據作為管理依據。
參考文獻
[1] 蔡紹濱.無線傳感器網絡關鍵技術的研究與應用[M].哈爾濱:哈爾濱工業大學出版社,2011.
[2] 高品均,何光新.數據庫安全與保密[J].電子計算機,1996(1):33-36.
[3] 劉怡.數據庫安全與安全數據庫管理系統設計[J].網絡安全技術與應用,2001(1):28-30.
[4] 劉啟原,劉怡.數據庫與信息系統的安全(第1版)[M].北京:科學技術出版社,2000.
[5] 張躍廷,許文武,王小科.C#數據庫系統開發完全手冊[M].北京:人民郵電出版社,2006.