(南京曉莊學院 信息工程學院,南京 211171)
隨著國民經(jīng)濟的迅速猛發(fā)展,電力負荷急劇增長,特別是非線性、沖擊性負荷設備的的不斷增長,導致了電網(wǎng)系統(tǒng)產(chǎn)生高次電壓和電流諧波,引起線路損耗增加,甚至損壞電氣設備, 對電網(wǎng)系統(tǒng)造成了嚴重的污染和干擾。為了對電能質(zhì)量進行有效的監(jiān)測與分析,改善電能質(zhì)量,為了給供電和用電雙方提供實時數(shù)據(jù)依據(jù),需要有一種監(jiān)測設備對電網(wǎng)質(zhì)量進行實時監(jiān)測。
電壓監(jiān)測終端是實時測量和分析電壓和電壓畸變率等電網(wǎng)質(zhì)量數(shù)據(jù)的重要設備,該設備通過GPRS接口與主站進行通訊,實現(xiàn)遠程監(jiān)測功能。但是,電壓監(jiān)測終端作為一個監(jiān)測設備,監(jiān)測內(nèi)容和電壓質(zhì)量分析功能會隨著供電部門的不斷需求而要經(jīng)常改變和調(diào)整,也就需要對電壓監(jiān)測終端中嵌入式軟件進行遠程升級[1],傳統(tǒng)的解決方法是生產(chǎn)廠家技術人員到現(xiàn)場人工重新燒寫程序,或者通過串口ISP在線編程更新程序,也有通過切換到自己的升級平臺進行遠程升級的,但升級效率低,可靠性不高,有時異常情況還需到現(xiàn)場維護,特別對大量的地域分散的設備進行升級時,工作量非常大,系統(tǒng)很難管理。釷對這一情況,需要有一個的好的升級手段和升級平臺,來提高遠程升級的效率。
從前的遠程升級,只是簡單用密碼對數(shù)據(jù)進行加密,如第三方在通訊時很容易通過監(jiān)控設備捕獲到通訊報文,進行解密,從面造成嵌入式軟件被竊取,造成大量的經(jīng)濟損失。
本文通過分析電壓監(jiān)測終端系統(tǒng)總體結(jié)構,解析了燒寫程序HEX文件,統(tǒng)一升級規(guī)范和平臺,實現(xiàn)了一種遠程在線升級的加密通訊方法DV_IAP。具有分布式斷點續(xù)傳[2]、容錯、安全認證[3]功能,大大提高了遠程升級效率和升級的安全性。
電壓監(jiān)測系統(tǒng)主要包括電壓監(jiān)測終端、前置機服務器、數(shù)據(jù)庫和WEB服務器,遠程監(jiān)測和遠程監(jiān)測應用系統(tǒng)、WEB應用終端等,組成分布式系統(tǒng)[4],如圖1所示。電壓監(jiān)測終端通過GPRS與具有固定IP地址的前置機服務器連接并實現(xiàn)數(shù)據(jù)通訊。但是,隨著電壓監(jiān)測終端連接前置機數(shù)量的增多,達到幾萬臺,就需要在系統(tǒng)中采用負載均衡[5]技術。電壓監(jiān)測終端與前置機的連接是動態(tài)的,通過任務調(diào)度[6]程序來完成。
遠程監(jiān)測與遠程升級是通過SOCKET與前置機服連接、發(fā)送和接收報文數(shù)據(jù)。DV_IAP是分布式斷點續(xù)傳和安全論證的遠程升級方法,需要升級時,只要將需要升級的電壓監(jiān)測終端CPU二制式文件(HEX文件)放入分布式系統(tǒng)中,系統(tǒng)自動將HEX文件解析,并按通訊規(guī)約打包成多幀分布發(fā)送到前置機,任務管理器進行調(diào)度再轉(zhuǎn)發(fā)給電壓監(jiān)測終端,從而實現(xiàn)遠程升級。
如圖2所示,系統(tǒng)軟件主要分為二個部分:前置機服務器和主站應用平臺,前置機服務器向上與主站平臺通訊,接收主站發(fā)過來的報文,通過規(guī)約解析后,前置機服務器向下通過通訊任務調(diào)度和通訊接口與電壓監(jiān)測終端連接。
圖2 系統(tǒng)軟件結(jié)構
由于不同廠家生產(chǎn)電壓監(jiān)測終端在同一平臺下運行,所以必須統(tǒng)一通訊規(guī)約和升級平臺,主站應用平臺在需要實現(xiàn)遠程升級功能時,首先將不同廠家的待升級文件解析[7],按照統(tǒng)一的規(guī)約通過文件分解下發(fā)模塊和遠程升級數(shù)據(jù)控制模塊發(fā)送至前置機服務器,并通過分布式斷點續(xù)傳,解決網(wǎng)絡可靠性和多終端同時升級的問題,在安全性方面通過安全論證和報文中數(shù)據(jù)校驗保證了升級文件的完整性。
主站應用平臺上可以通過界面看到數(shù)據(jù)庫中各個電壓監(jiān)測終端的升級情況,用戶可以通過訪問Webservice接口查看電壓質(zhì)量信息和電壓質(zhì)量分析結(jié)果,并能夠?qū)Ξ惓?shù)據(jù)進行分析,對日志進行管理。
遠程升級依靠標準協(xié)議《電力負荷管理系統(tǒng)數(shù)據(jù)傳輸規(guī)約》, 協(xié)議采用GB/T18657.1的6.2.4FT1.2異步傳輸[8]幀格式,規(guī)約也采用了類似“會話”的通信協(xié)議,每次由負責采集的系統(tǒng)(規(guī)約稱為“主站”),以通知指定地址碼的裝置(稱為“終端”)準備接收數(shù)據(jù),然后向其發(fā)送含有不同控制碼的數(shù)據(jù)幀,并等待從站的應答。規(guī)約指定的數(shù)據(jù)幀格式,如表1所示。
表1 幀格式
其中68H為起始字符,A為地址域,C表明消息的來源以及前后消息的關系,并控制消息的功能;L說明了數(shù)據(jù)域以雙字節(jié)為單位的長度,設定2個L進行比較,增強可靠性,而CS則是從幀起始符到校驗碼之前所有字節(jié)模256的和,保證傳輸數(shù)據(jù)的正確性。
幀格式中鏈路地址域包含行政區(qū)位碼+終端地址(電壓監(jiān)測終端地址),用于分布式發(fā)送數(shù)據(jù)和接收報的唯一標識;用戶數(shù)據(jù)包含所有用戶類型數(shù)據(jù),通過功能碼和數(shù)據(jù)單元標識來區(qū)分不同類型用戶數(shù)據(jù),如表2所示。
表2 鏈路用戶數(shù)據(jù)幀格式
在遠程升級中主要用到的應用功能碼AFN如表3所示。
表3 應用層功能碼含義
在AFN=0FH時,數(shù)據(jù)單元采用F1文件傳輸數(shù)據(jù)格式如表4所示。
表4 文件傳輸數(shù)據(jù)格式
電壓監(jiān)測終端采用ARM7的LPC2136,使用keil仿真及開發(fā)工具,生成燒寫文件HEX文件,可用記事本可打開,它的每行格式如表5所示。
表5 HEX文件格式
LEN:記錄中的數(shù)據(jù)字節(jié)數(shù)目,1個字節(jié)。
ADDR:起始地址,2個字節(jié)。
TYPE:記錄類型,1個字節(jié),04指HEX文件開始,00指HEX文件數(shù)據(jù)記錄,01指HEX文件結(jié)束。
DATA:HEX文件數(shù)據(jù),LEN個字節(jié)。
CS:是此行記錄的校驗和,1個字節(jié)。
例如:一個HEX文件
:020000040000FA
:1020000018F09FE518F09FE518F09FE510F09FE5A8
:102010000CF09FE5846FA0B80CF09FE50CF09FE5F5
:102020002C21000034200000382000009420000003
:0CBF90000000000040000040EC1F00001A
:00000001FF
(1)文件頭。
:020000040000FA
02:是記錄中的數(shù)據(jù)字節(jié)數(shù)目。
0000:這個域總是0000。
04:是記錄類型,指文件開始。
0000:是該段的地址。
FA:是效驗和。
(2)文件數(shù)據(jù)。
:1020000018F09FE518F09FE518F09FE510F09FE5A8
10:是此行記錄數(shù)據(jù)的字節(jié)數(shù)目。
2000:是數(shù)據(jù)在內(nèi)存(將要燒寫的eprom地址)中的起始地址。
00:記錄類型00,指是一條數(shù)據(jù)記錄。
18F0-9FE5:是HEX文件數(shù)據(jù)。
A8:是此行記錄的效驗和。
(3)文件尾。
:00000001FF
00:是記錄中的數(shù)據(jù)字節(jié)數(shù)目。
0000:這個域總是0000。
01:記錄類型01,指文件結(jié)束。
FF:是效驗和。
燒寫到電壓監(jiān)測終端的程序,合并了二個程序:boot.hex和main.hex。boot.hex是啟動程序,編譯時開始地址從0x0開始,主要功能是:上電時看啟動標志位(4個字節(jié)),如全是0xAA,則進入主程序main.hex,如如全是0x55,則將通過GPRS傳來的新的main.hex程序覆蓋從前的main.hex。
main.hex是主程序,是待升級的程序,編譯時開始地址從0x2000開始(假如不需要升級功能,開始地址從是0x0開始,不需要boot.hex),主要實現(xiàn)電壓監(jiān)測終端的功能,按照2.2的文件格式合并二個HEX文件boot.hex和main.hex成一個文件dy-main.hex,合并如下:
boot頭
boot體 地址從0開始
main體 地址從0x2000開始
main尾
dy-main.hex是具有IAP功能的電壓監(jiān)測終端程序,要事先燒寫到LPC2136中,遠程升級其實是將main.hex通過主站傳過來進行升級。
1)文件的傳輸。
(1)主站按照2.3讀取main.hex,讀取到總行數(shù)RowNum,計算總報文數(shù)TotalNum,16行打成一包。
(2)將每行數(shù)據(jù)ASC碼字符轉(zhuǎn)換成轉(zhuǎn)成十六進制碼,一包16行,按表格5的格式,文件數(shù)據(jù)存放16行數(shù)據(jù),共16*16=256字節(jié),最后一行可能不足256字節(jié)。
(3)按2.1文件通訊規(guī)約發(fā)送數(shù)據(jù)報文。
(4)最后一幀數(shù)據(jù)包后加上2個字節(jié),是整個文件數(shù)據(jù)校驗和CS。
(5)終端接收所有報文,計算所有報文數(shù)據(jù)的校驗和CS1,如果CS1等于CS1,則文件傳輸正確。
2)文件的斷點續(xù)傳
由于數(shù)據(jù)傳輸通道是無線信道,難免會有信號干擾和丟包現(xiàn)象,所有升級過程中采用斷點續(xù)傳流程,如圖3所示。
圖3 文件傳輸和斷點續(xù)傳流程圖
實現(xiàn)過程:傳輸一個文件共有n個報文,報文從S1-Sn,報文傳送標志從F1-Fn,初始標志Fi=0(i=1,n);升級平臺從S1開始通過GPRS啟動下發(fā)報文,下發(fā)報文Si,如接收到正確響應報文,則啟動下發(fā)下一個報文,并置標志Fi=1;如接收到錯誤響應報文或接收超時(10秒),則重新傳相同的報文,重傳最多三次后如還不能收到正確響應報文,則繼續(xù)下傳下一個報文,并置標志Fi=0;直至下發(fā)最后一個報文Sn,如接收正確響應報文后,升級平臺檢查所有報文標志Fi(i=1,n)是否為1,如Fi為0則Si是斷點。重復上述過程,進行斷點續(xù)傳,直至所有報文標志為1;最后比對一下校驗和,如正確則更新升級程序。
傳統(tǒng)的加密方法采用對稱密鑰來加密和解密數(shù)據(jù),很容易被第三方破解,采用Diffie-Hellman非對稱加密技術又稱公開密鑰加密技術,通過公開密鑰加密數(shù)據(jù), 抗攻擊能力強[9],可有效防止中間人破譯和攻擊。Diffie-Hellman加密方法DHKE基本原理和加密過程, 即:雙方約定一個整數(shù)g,一個素數(shù)N。首先,各自產(chǎn)生一個私有密鑰x和y,并計算出各自的公開密鑰X和Y,X和Y相互交換。其次,公開密鑰交換后,雙方計算出用于加密和解密的密鑰K1和K2,結(jié)果是相同的。這樣,通訊雙方通過密鑰K1和K2來加密和解密報文[10-12],從而實現(xiàn)數(shù)據(jù)的加密傳輸。
它的理論基礎是:離散對數(shù)計算的復雜性, 已知X= modN,直接求x是不可行的,例如:已知,X=146,g=15,N=197,求x=43是不可能的。
無線數(shù)據(jù)傳輸難免會有誤碼,如系統(tǒng)具有容錯性,即具有矯正誤碼能力,可提高升級效率,減少續(xù)傳頻率,而通過斐波那(Fibonacci)矩陣和Diffie-Hellman加密方法FBDH可實現(xiàn)容錯性加密,即:雙方約定:公開一個整數(shù)g,一個素數(shù)N,一個Fibonacci矩陣Fn序列n,首先,各自產(chǎn)生一個私有密鑰向量x(x1,x2,x3)和y(y1,y2,y3),并計算出各自的公開密鑰向量X和Y,雙方對X和Y進行交換。其次,公開密鑰向量交換后,雙方計算出用于加密和解密的密鑰向量K和G,結(jié)果K和G是相同的。發(fā)送方通過密鑰K加密數(shù)據(jù),并通過Fibonacci矩陣Fn變換,最終獲得加密數(shù)據(jù)向量;接收方接收數(shù)據(jù),通過Fibonacci逆矩陣變換,再經(jīng)過G解密報文,最終獲得三列原文向量;對原文三列向量進行比較,三列中有二列相等,如相同獲得原文。通過以上過程,數(shù)據(jù)獲得容錯能力,從而實現(xiàn)了數(shù)據(jù)的加密容錯傳輸。
Fibonacci數(shù)列:又稱黃金分割數(shù)列,指的是這樣一個數(shù)列:1、1、2、3、5、8、13、21、34、……在數(shù)學上,斐波納契數(shù)列以如下被以遞歸的方法定義:F(0)=1,F(xiàn)(1)=1,F(n)=F(n-1)+F(n-2)(n>=2,n∈N*),在現(xiàn)代物理、準晶體結(jié)構、化學等領域,F(xiàn)ibonacci數(shù)列都有直接的應用,為此,美國數(shù)學會從1963年起出版了以《斐波納契數(shù)列季刊》為名的一份數(shù)學雜志,用于專門刊載這方面的研究成果。Fibonacci數(shù)列是使用最為廣泛應用的數(shù)列,F(xiàn)ibonacci遞推矩陣使Fibonacci數(shù)列計算容易,使用較多的有二階Fibonacci遞推矩陣和三階Fibonacc遞推矩陣。
在FBDH中,使用三階Fibonacc遞推矩陣Fn矩陣[13]:
(1)
三階Fibonacc逆遞推矩陣Fn-1矩陣[14]:
(2)
從(1) (2)看出,利用Fibonacc矩陣和逆矩陣,一方面增強中間人解密的難度,另一方面自身加密解密計算的復雜度低。
在傳輸升級文件時,主站對數(shù)據(jù)進行加密,終端對數(shù)據(jù)進行解密。
3.3.1 加密過程
主站做下列步驟:
Step1:公開約定三個參數(shù)g,N,F(xiàn)n;
Step2:選擇自己的私有密鑰向量(x1,x2,x3),并計算:
X= (gmodN, gmodN,modN)
X作為公有密鑰向量;
Step3:選擇終端的公有密鑰:
Y=(gy1modN,gy2modN, modN)
并計算加密密鑰向量:
K=Yx=(gx1*y1modN,gx2*y2modN, modN)
K定義為 (K1,K2,K3)
Step4:想將數(shù)據(jù)M發(fā)給終端
M如有5個字節(jié),M=(m1,m2,m3,m4,m5)
計算加密矩陣:C=MT+K
Step5:選擇三階斐波納契數(shù)列的遞推矩陣F5
計算加密變換矩陣:
E=C×F5 =(E1,E2,E3)
Step6:公開將E發(fā)送給終端
3.3.2 解密過程
終端做下列步驟。
Step1:公開約定兩個參數(shù)g,N,F(xiàn)n。
Step2:選擇自己的私有密鑰向量(y1,y2,y3),并計算。
Y=(gy1modN,gy2modN, modN)
Y作為公有密鑰向量。
Step3:選擇主站的公有密鑰。
X=(gx1modN,gx2modN,modN)
并計算加密密鑰向量:
G=Yy=(gx1*y1modN,gx2*y2modN, modN)
G定義為(G1,G2,G3)
Step4:公開接收主站的數(shù)據(jù)E。
E={E1,E2,E3}
Step5:選擇三階斐波納契數(shù)列的遞推矩陣逆。
計算T=E-G=(M1,M2,M3)
Step6:終端對數(shù)據(jù)進行比較。
K=G(根據(jù)Diffie-Hellman原理)
所以:T三列是相等,即:M1=M2=M3
比較三列,如三列相等, 最后獲得M=(m1,m2,m3,m4,m5),結(jié)束。
如三列中有某一行不等,則進入容錯處理。
Step7:容錯處理。
一個數(shù)據(jù)通過密碼向量加密 后形成三個加密數(shù)據(jù),解密后也是三個數(shù)據(jù), 如發(fā)現(xiàn)三個數(shù)據(jù)不等,采用循環(huán)枚舉法,重復解密過程,直至三個數(shù)據(jù)相等,定位枚舉值,就是正確值。選中這個列值,最后獲得:M=(m1,m2,m3,m4,m5)。
主站:
約定兩個參數(shù)g=15,N=197,n=5
x=(x1,x2,x3) =(196, 46, 178)
X=(1, 53, 70)
K= (1, 105, 171)
M= (104, 101, 108, 108, 111)
終端:
約定兩個參數(shù)g=15,N=197,n=5
y=(y1,y2,y3) =(45,180,8)
Y=(148,187,16)
G=(1,105.71)
M= (104, 101, 108, 108, 111)
上述數(shù)據(jù)分析:假設在沒有干擾的情況下,主站欲將報文將M傳送到終端。首先,主站對M加密加密和變換,生成E,然后通過2.1傳輸規(guī)約斷點續(xù)傳傳輸給終端,終端對E進行解密和容錯處理還原成M。最終結(jié)果,通過此方法實現(xiàn)了終端遠程升級的容錯和安全。
本文針對電壓監(jiān)測終端遠程升級功能,采用了二種方法進行了測試,一種是傳統(tǒng)的IAP方法,另一種是采用了新的加密通訊的方法DV-IAP。測試結(jié)果比較,如表6如示。
表6 遠程升級方法測試結(jié)果比較
從測試結(jié)果可以看出,新方法電壓監(jiān)測終端DV_IAP,具有容錯加密功能。測試中,升級50臺終端只用了98分鐘,而傳統(tǒng)的電壓監(jiān)測終端IAP升級40臺終端卻用了200分鐘,DV_IAP升級效率大幅度提高,更重要的是:成功率從95%到提高達到100%,而且安全性也很好,達到遠程升級可靠安全的目標。
智能電網(wǎng)的不斷發(fā)展,使得對配電網(wǎng)遙測終端要求不斷提高,需要升級終端的功能。對面向電壓監(jiān)測終端的遠程升級加密通訊方法進行了研究與實現(xiàn),闡述了遠程升級軟件平臺、芯片HEX文件的生成、通訊規(guī)約、斷點續(xù)傳,重點研究了組合Fibonacci矩陣和Diffie-Hellman技術的加密通訊方法。應用結(jié)果表明,系統(tǒng)不僅實現(xiàn)了文件遠程升級功能,而且解決了在傳輸過程中的保密性和容錯性,具備了矯正誤碼的能力和防止中間人破解的能力,提高了電壓監(jiān)測系統(tǒng)的可靠性與安全性。此外,本文所采用的DV_IAP升級方法對其他嵌入式系統(tǒng)遠程升級有一定的借鑒和參考作用。