專利名稱:一種電網(wǎng)加密機共享訪問的系統(tǒng)及參數(shù)更新方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種遠(yuǎn)程訪問技術(shù),更具體地說,涉及一種基于Remoting軟件構(gòu)架的電網(wǎng)加密機共享訪問的系統(tǒng),以及基于Remoting軟件構(gòu)架的電網(wǎng)加密機共享訪問的系統(tǒng)更新智能電表參數(shù)的方法。
背景技術(shù):
現(xiàn)有的智能電表遠(yuǎn)程集抄系統(tǒng)是單一的抄表系統(tǒng),該系統(tǒng)包括應(yīng)用系統(tǒng)服務(wù)器、與服務(wù)器連接的多個集中器,與集中器連接的多個采集器,每個采集器下又都連有電表。采集器將電表的數(shù)據(jù)采集完成后傳送到集中器,然后再由集中器將信息傳送到應(yīng)用服務(wù)器 中,從而完成遠(yuǎn)程的集抄系統(tǒng)功能。但是采集器和電表之間使用底頻窄帶通訊,連接線路雖然到了電表,但是無法提供寬帶網(wǎng)絡(luò)接口,從而用戶無法享用寬帶服務(wù)。為了解決上述問題,中國發(fā)明專利ZL200710036998. O公開了一種用于寬帶網(wǎng)絡(luò)通信的遠(yuǎn)程智能電力抄表系統(tǒng),將電力線高速寬帶通訊系統(tǒng)和遠(yuǎn)程集抄系統(tǒng)整合在一起,同時實現(xiàn)上網(wǎng)和電表集抄兩個功能。其技術(shù)方案為本發(fā)明使用電力線寬帶數(shù)據(jù)通訊集中器替代遠(yuǎn)程集抄系統(tǒng)中的集中器和采集器,將電表的信息采集通訊方式整合到電力線通訊方式中,采用一根通訊線路實現(xiàn)電力線上網(wǎng)通訊和電表遠(yuǎn)程數(shù)據(jù)采集。隨著對數(shù)據(jù)安全的要求的提升與智能電網(wǎng)的發(fā)展,構(gòu)架了以加密機、前置機、客戶端、智能電表組成的智能電網(wǎng)網(wǎng)絡(luò),其數(shù)據(jù)安全性進(jìn)一步得到保障。但上述專利所公開的技術(shù)方案已滿足不了當(dāng)下智能電網(wǎng)的要求。而且,目前加密機訪問只能實現(xiàn)單機交互,本地加載加密機動態(tài)鏈接庫單機調(diào)用訪問。由于國家電網(wǎng)的資源龐大,目前已經(jīng)出現(xiàn)加密機嚴(yán)重缺少的情況,如果不能有效地將資源共享,會造成巨大的成本浪費。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種采用Remoting技術(shù)調(diào)用遠(yuǎn)程對像接口的方法,實現(xiàn)中國電科院加密機的共享使用,把與加密機通信交互的動態(tài)鏈接庫封裝成遠(yuǎn)程對像接口的方式對外提供,做成加密機前置機服務(wù)程序,各國網(wǎng)費控智能電表編程抄讀客戶端可遠(yuǎn)程調(diào)用共享訪問,與加密機進(jìn)行通信,同時前置機可監(jiān)視各客戶端的登錄情況及與加密機的交互情況。本發(fā)明的技術(shù)方案如下一種基于Remot ing軟件構(gòu)架的電網(wǎng)加密機共享訪問的系統(tǒng),包括前置機、加密機、客戶端、智能電表,前置機與加密機相連,與加密機進(jìn)行通信,并與客戶端交互,完成智能電表身份安全認(rèn)證過程;客戶端與智能電表相連,對智能電表進(jìn)行在線抄讀、編程;前置機與客戶端之間通過Remoting軟件構(gòu)架調(diào)用遠(yuǎn)程對象接口,進(jìn)行加密機共享使用。作為優(yōu)選,把與加密機通信交互的動態(tài)鏈接庫封裝成遠(yuǎn)程對象接口,作為加密機的服務(wù)程序;客戶端遠(yuǎn)程連接前置機,并通過Remoting技術(shù)調(diào)用遠(yuǎn)程對象接口,與加密機進(jìn)行通信。作為優(yōu)選,在前置機上定義加密機遠(yuǎn)程接口成員、實現(xiàn)遠(yuǎn)程接口成員。作為優(yōu)選,在客戶端上注冊通道,實現(xiàn)客戶端與前置機服務(wù)不同應(yīng)用程序域的相互通信;注冊遠(yuǎn)程前置機服務(wù)對象,獲取遠(yuǎn)程接口成員對象;調(diào)用遠(yuǎn)程對象接口成員方法,實現(xiàn)加密機的訪問。作為優(yōu)選,創(chuàng)建包括客戶端信息及遠(yuǎn)程接口操作信息的數(shù)據(jù)結(jié)構(gòu)類,用于客戶端調(diào)用遠(yuǎn)程對像接口時傳入客戶端信息。作為優(yōu)選,前置機實時展示各客戶端與加密機交互信息。作為優(yōu)選,創(chuàng)建遠(yuǎn)程對象接口類,定義了遠(yuǎn)程對像必須實現(xiàn)的成員,公布登錄退出前置機、加密機通信的遠(yuǎn)程對象公共方法,接口只定義成員,不含實現(xiàn)代碼。
作為優(yōu)選,創(chuàng)建加密機DLL函數(shù)導(dǎo)出聲明類,從非托管的加密機動態(tài)鏈接庫DLL中導(dǎo)出加密機功能函數(shù)的調(diào)用信息、加密機通信函數(shù)引入口。作為優(yōu)選,創(chuàng)建遠(yuǎn)程對象接口實現(xiàn)類,實現(xiàn)跨應(yīng)用程序域邊界被遠(yuǎn)程引用,是上述遠(yuǎn)程對象接口類成員的具體實現(xiàn)方法內(nèi)容。作為優(yōu)選,把與加密機操作通信部分的代碼定義為互斥段,對加密機進(jìn)行共享訪問的所有客戶端在同一時刻只允許一個客戶端調(diào)用同一個函數(shù),其他的客戶端等待進(jìn)入。一種基于Remoting軟件構(gòu)架的電網(wǎng)加密機共享訪問的系統(tǒng)更新智能電表參數(shù)的方法,客戶端先進(jìn)行身份安全認(rèn)證,認(rèn)證通過后,以明文+MAC的方式進(jìn)行數(shù)據(jù)的傳輸和修改,客戶端所有與加密機交互操作都是通過共享訪問前置機調(diào)用遠(yuǎn)程對象接口的方式完成,具體步驟如下I)身份安全認(rèn)證1.1)在客戶端取第一隨機數(shù)傳入分散因子;前置機發(fā)送分散因子至加密機;加密機把第一隨機數(shù)加密成第一密文;1. 2)加密機輸出第一隨機數(shù)、第一密文至前置機,前置機將第一隨機數(shù)、第一密文返回至客戶端;1. 3)客戶端將前置機返回的第一隨機數(shù)和第一密文及客戶端的分散因子按預(yù)設(shè)的身份認(rèn)證指令格式發(fā)送至智能電表,智能電表內(nèi)置的ESAM模塊把第一隨機數(shù)加密成第二密文,比較第一密文與第二密文,如果第一密文與第二密文相等則身份安全認(rèn)證成功,否則,身份安全認(rèn)證失?。?)參數(shù)更新2.1)身份安全認(rèn)證成功后,取第二隨機數(shù),與智能電表內(nèi)置的ESAM模塊的ESAM序列號一起發(fā)送至客戶端;2. 2)客戶端將智能電表返回的第二隨機數(shù)、ESAM序列號和客戶端的分散因子、電表數(shù)據(jù)傳至前置機,前置機將第二隨機數(shù)、分散因子、ESAM序列號和電表數(shù)據(jù)發(fā)送至加密機;2. 3)加密機對第二隨機數(shù)、分散因子、ESAM序列號和電表數(shù)據(jù)進(jìn)行MAC加密計算,輸出帶MAC數(shù)據(jù)包;2. 4)加密機將帶MAC數(shù)據(jù)包返回至前置機,前置機將帶MAC數(shù)據(jù)包發(fā)送至客戶端,客戶端將帶MAC數(shù)據(jù)包發(fā)送至智能電表;
2. 5)智能電表收到帶MAC數(shù)據(jù)包后,對數(shù)據(jù)進(jìn)行更新。作為優(yōu)選,預(yù)設(shè)的身份認(rèn)證指令格式遵從DL/T 645—2007協(xié)議的幀格式。作為優(yōu)選,所述的分散因子載于身份認(rèn)證指令的數(shù)據(jù)域,依次為2字節(jié)固定字節(jié)、6字節(jié)智能電表的表號。本發(fā)明的有益效果如下采用Remoting遠(yuǎn)程調(diào)用接口的方式來實現(xiàn)加密機的共享訪問1、能讓我們進(jìn)行分布式開發(fā);2、Tcp通道的Remoting速度非??欤?
3、雖然是遠(yuǎn)程的,但是非常接近于本地調(diào)用對象;4、可以做到保持對象的狀態(tài);5、沒有應(yīng)用程序限制,可以是控制臺,winform, iis, windows服務(wù)承載遠(yuǎn)程對象;6、多個客戶端同時與同一臺加密機通信,具有實時性;7、前置機能監(jiān)視各客戶端登錄情況及與加密機交互情況;8、將中國電院科在國家電網(wǎng)建設(shè)中提供的資源最大化,有助于資源共享,可供國家電網(wǎng)電量信息采集系統(tǒng)安全加密數(shù)據(jù)交互處理使用,為國網(wǎng)產(chǎn)品廠家節(jié)省生產(chǎn)成本,使國網(wǎng)表生產(chǎn)擺脫了加密機缺少的困境,操作方便,有利于公司生產(chǎn)運作,也便于公司資產(chǎn)管理。
圖1是本發(fā)明所述的系統(tǒng)的連接示意圖;圖2是本發(fā)明所述的方法的流程圖;圖3是身份認(rèn)證指令的幀結(jié)構(gòu)示意圖;圖中I是前置機,2是加密機,3是客戶端,4是智能電表,5是防火墻,6是RS485/RS232轉(zhuǎn)換器。
具體實施例方式以下結(jié)合附圖及實施例對本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)說明?!N基于Remoting軟件構(gòu)架的電網(wǎng)加密機2共享訪問的系統(tǒng),包括前置機1、加密機2、客戶端3、智能電表4,前置機I與加密機2相連,與加密機2進(jìn)行通信,并與客戶端3交互,完成智能電表4安全認(rèn)證過程;客戶端3與智能電表4相連,對智能電表4進(jìn)行在線抄讀、編程;前置機I與客戶端3之間通過Remoting軟件構(gòu)架調(diào)用遠(yuǎn)程對象接口,進(jìn)行加密機2共享使用。把與加密機2通信交互的動態(tài)鏈接庫封裝成遠(yuǎn)程對象接口,作為加密機2前置機I的服務(wù)程序;客戶端3遠(yuǎn)程連接前置機1,并通過Remoting技術(shù)調(diào)用遠(yuǎn)程對象接口,與加密機2進(jìn)行通信。在前置機I上定義加密機2遠(yuǎn)程接口成員、實現(xiàn)遠(yuǎn)程接口成員。在客戶端3上注冊通道,實現(xiàn)客戶端3與前置機I服務(wù)不同應(yīng)用程序域的相互通信;注冊遠(yuǎn)程前置機I服務(wù)對象,獲取遠(yuǎn)程接口成員對象;調(diào)用遠(yuǎn)程對象接口成員方法,實現(xiàn)加密機2的訪問。
創(chuàng)建包括客戶端3信息的數(shù)據(jù)結(jié)構(gòu)類,用于客戶端3調(diào)用遠(yuǎn)程對像接口時傳入客戶端3信息。前置機I實時展示各客戶端3與加密機2交互信息。創(chuàng)建遠(yuǎn)程對象接口類,定義了遠(yuǎn)程對像必須實現(xiàn)的成員,公布登錄退出前置機1、加密機2通信的遠(yuǎn)程對象公共方法,接口只定義成員,不含實現(xiàn)代碼。創(chuàng)建ExternDllClass. cs類,從非托管的加密機2動態(tài)鏈接庫DLL中導(dǎo)出加密機2功能函數(shù)的調(diào)用信息、加密機2通信函數(shù)引入口。創(chuàng)建CommDataArrangeRemote. cs類,實現(xiàn)跨應(yīng)用程序域邊界被遠(yuǎn)程引用,是上述遠(yuǎn)程對象接口類成員的具體實現(xiàn)方法內(nèi)容。把與加密機2操作通信部分的代碼定義為互斥段,對加密機2進(jìn)行共享訪問的所有客戶端3在同一時刻只允許一個客戶端3調(diào)用同一個函數(shù),其他的客戶端3等待進(jìn)入。
一種基于Remoting軟件構(gòu)架的電網(wǎng)加密機2共享訪問的系統(tǒng)更新智能電表4參數(shù)的方法,客戶端3先進(jìn)行身份安全認(rèn)證,認(rèn)證通過后,以明文+MAC的方式進(jìn)行數(shù)據(jù)的傳輸和修改,客戶端3所有與加密機2交互操作都是通過共享訪問前置機I調(diào)用遠(yuǎn)程對象接口的方式完成,其具體步驟如下I)身份安全認(rèn)證1.1)在客戶端3取第一隨機數(shù)傳入分散因子;前置機I發(fā)送分散因子至加密機2 ;加密機2把第一隨機數(shù)加密成第一密文;1.2)加密機2輸出第一隨機數(shù)、第一密文至前置機1,前置機I將第一隨機數(shù)、第一密文返回至客戶端3 ;1. 3)客戶端3將前置機I返回的第一隨機數(shù)和第一密文及客戶端3的分散因子(分散因子=2字節(jié)固定字節(jié)00H+6字節(jié)智能電表4表號)按預(yù)設(shè)的身份認(rèn)證指令格式(身份認(rèn)證指令格式遵從DL/T 645—2007協(xié)議的幀格式)發(fā)送至智能電表4,智能電表4內(nèi)置的ESAM模塊把第一隨機數(shù)加密成第二密文,比較第一密文與第二密文,如果第一密文與第二密文相等則身份安全認(rèn)證成功,否則,身份安全認(rèn)證失敗;2)參數(shù)更新2.1)身份安全認(rèn)證成功后,取第二隨機數(shù),與智能電表4內(nèi)置的ESAM模塊的ESAM序列號一起發(fā)送至客戶端3;2. 2)客戶端3將智能電表4返回的第二隨機數(shù)、ESAM序列號和客戶端3的分散因子、電表數(shù)據(jù)傳至前置機1,前置機I將第二隨機數(shù)、分散因子、ESAM序列號和電表數(shù)據(jù)發(fā)送至加密機2 ;2. 3)加密機2對第二隨機數(shù)、分散因子、ESAM序列號和電表數(shù)據(jù)進(jìn)行MAC加密計算,輸出帶MAC數(shù)據(jù)包;2. 4)加密機2將帶MAC數(shù)據(jù)包返回至前置機1,前置機I將帶MAC數(shù)據(jù)包發(fā)送至客戶端3,客戶端3將將帶MAC數(shù)據(jù)包發(fā)送至智能電表4 ;2. 5)智能電表4收到帶MAC數(shù)據(jù)包后,對數(shù)據(jù)進(jìn)行更新。實施例如圖1所示,所述系統(tǒng)的總體架構(gòu)由前置機1、防火墻5、加密機2、國網(wǎng)費控智能電表4編程抄讀客戶端3、國網(wǎng)費控智能電表4組成,客戶端3與智能電表4通過RS485/RS232轉(zhuǎn)換器6連接。
前置機1:負(fù)責(zé)與國網(wǎng)加密機2進(jìn)行通訊的前置設(shè)備,并能與客戶端3交互完成國網(wǎng)費控智能電表4安全認(rèn)證過程的設(shè)備。加密機2 :能夠獨立完成加/解密和密鑰管理功能的設(shè)備??蛻舳? :能夠?qū)W(wǎng)費控智能電表4進(jìn)行RS485通道在線抄讀、編程。智能電表4 :內(nèi)置ESAM模塊,具有安全存儲、數(shù)據(jù)加/解密、雙向身份認(rèn)證、存取權(quán)限控制、線路加密傳輸?shù)劝踩刂乒δ艿挠嬃吭O(shè)備。RS485/RS232轉(zhuǎn)換器6 :串口數(shù)據(jù)轉(zhuǎn)換裝置。如圖2所示的具體步驟如下I)身份安全認(rèn)證
1.1)在客戶端3調(diào)用遠(yuǎn)程對象接口方法“獲取隨機數(shù)函數(shù)”獲取第一隨機數(shù)傳入8字節(jié)分散因子(=2字節(jié)00H+6字節(jié)表號),前置機I調(diào)用加密機2動態(tài)鏈接庫中的身份認(rèn)證函數(shù)發(fā)送8字節(jié)分散因子至加密機2,加密機2把第一隨機數(shù)加密第一密文;1. 2)加密機2輸出8字節(jié)第一隨機數(shù)、8字節(jié)第一密文至前置機1,前置機I將第一隨機數(shù)、第一密文返回至客戶端3 ;1. 3)客戶端3將前置機I返回的8字節(jié)第一隨機數(shù)、8字節(jié)第一密文及客戶端3的分散因子(=2字節(jié)00H+6字節(jié)表號)按身份認(rèn)證指令格式發(fā)送至智能電表4,ESAM把第一隨機數(shù)加密成第二密文,比較第一密文與第二密文,如果第一密文與第二密文相等則身份安全認(rèn)證成功,否則,身份安全認(rèn)證失??;2)參數(shù)更新2.1)身份安全認(rèn)證成功后,取4字節(jié)第二隨機數(shù),與智能電表4內(nèi)置的ESAM模塊的8字節(jié)ESAM序列號一起發(fā)送至客戶端3 ;2. 2)客戶端3調(diào)用遠(yuǎn)程對象接口方法“明文+MAC參數(shù)更新函數(shù)”將4字節(jié)第二隨機數(shù)、8字節(jié)ESAM序列號和電表明文更新數(shù)據(jù)傳至前置機1,前置機I調(diào)用加密機2動態(tài)鏈接庫DLL中的“明文+MAC參數(shù)更新函數(shù)”將4字節(jié)第二隨機數(shù)、8字節(jié)分散因子、8字節(jié)ESAM序列號和數(shù)據(jù)明文發(fā)送至加密機2 ;2. 3)加密機2對第二隨機數(shù)、分散因子、ESAM序列號和電表數(shù)據(jù)進(jìn)行MAC加密計算,輸出帶MAC數(shù)據(jù)包;2. 4)加密機2將帶MAC數(shù)據(jù)包返回至前置機1,前置機I將帶MAC數(shù)據(jù)包發(fā)送至客戶端3,客戶端3將帶MAC數(shù)據(jù)包發(fā)送至智能電表4 ;2. 5)智能電表4收到帶MAC數(shù)據(jù)包后,對數(shù)據(jù)進(jìn)行更新;2. 6)向客戶端3反饋更新結(jié)果成功或失敗。如圖3所示,身份認(rèn)證指令格式遵從DL/T 645—2007協(xié)議的幀格式,依次包括幀起始符、地址域、幀起始符、控制碼、數(shù)據(jù)長度、數(shù)據(jù)域、校驗碼、結(jié)束符。其中,幀起始符的值為68H,用于標(biāo)識一幀信息的開始;地址域為6字節(jié)構(gòu)成,標(biāo)識出了智能電表表號,每個智能電表的表號是唯一的;在DL/T 645—2007協(xié)議中,將控制碼定義為03H,標(biāo)識了當(dāng)前幀為身份認(rèn)證的請求幀;身份認(rèn)證請求幀中,數(shù)據(jù)長度=04H (數(shù)據(jù)標(biāo)識)+04H (操作者代碼)+m(數(shù)據(jù)長度);數(shù)據(jù)域為DI0DI1DI2DI3+C0C1C2C3+DATA, DI0DI1DI2DI3 為數(shù)據(jù)標(biāo)識,C0C1C2C3 為操作者代碼,由客戶端傳入,DATA包括8字節(jié)第一密文+8字節(jié)第一隨機數(shù)+8字節(jié)分散因子;校驗碼為從第一個幀起始符開始到校驗碼之前的所有各字節(jié)的模256的和,即各字節(jié)二進(jìn)制算術(shù)和,不計超過256的溢出值結(jié)束符的值為16H,用于標(biāo)識一巾貞信息的結(jié)束。軟件實現(xiàn)方法I)定義加密機遠(yuǎn)程接口成員。2).實現(xiàn)遠(yuǎn)程接口成員。3).獲取遠(yuǎn)程接口對像,調(diào)用遠(yuǎn)程接口。
其中1、2點在前置機實現(xiàn),3在客戶端實現(xiàn),具體步驟如下1.服務(wù)端(前置機)1.1.新建 IArtRdRemoteOb ject 項目程序集名稱為ARTRD_FEP. RDPLC,默認(rèn)命名空間為ARTRD_FEP. RDPLC。1.1.1.在 IArtRdRemoteObject 項目中創(chuàng)建 DataStructure. cs 數(shù)據(jù)結(jié)構(gòu)類說明本數(shù)據(jù)結(jié)構(gòu)類的定義是為了客戶端調(diào)用遠(yuǎn)程對像接口時傳入客戶端信息,定義包含計算機名稱、IP地址、操作標(biāo)識、交互時間、操作信息,前置機實時展示各客戶端與加密機交互信息。代碼實現(xiàn)上創(chuàng)建加密機通信事件參數(shù)結(jié)構(gòu)類包括對類進(jìn)行序列化(從一個應(yīng)用程序域傳遞到另一個應(yīng)用程序域需要類序列化);定義計算機名稱、IP地址、操作標(biāo)識、交互時間、數(shù)據(jù)標(biāo)識、加密機通信結(jié)果信息。1.1. 2.在 IArtRdRemoteObject 項目中創(chuàng)建 IArtRdRemoteObject 接口類說明IArtRdRemoteObject接口類定義了遠(yuǎn)程對像必須實現(xiàn)的成員,公布登錄退出前置機及和加密機通信的遠(yuǎn)程對像公共方法,接口只定義成員,不含實現(xiàn)代碼,其各成員具體實現(xiàn)內(nèi)容見1. 2. 2。代碼實現(xiàn)上包括公布登錄遠(yuǎn)程前置機并獲取目前支持的最大通道、退出遠(yuǎn)程前置機、取加密機隨機數(shù)I函數(shù)、明文+MAC參數(shù)更新函數(shù)、第一套費率文件、第二套費率文件、PA=98H密文+MAC參數(shù)更新函數(shù)、控制命令、充值函數(shù)、密鑰更新函數(shù)、檢查MAC函數(shù)等函數(shù)。1. 2.新建 ArtRdRemoteOb ject 項目1. 2.1.在 ArtRdRemoteObject 項目中創(chuàng)建 ExternDllClass. cs 類說明本類主要是應(yīng)用C# 中 System. Runtime.1nteropServices. DllImport 從非托管的加密機動態(tài)鏈接庫DLL中導(dǎo)出加密機功能函數(shù)的必要調(diào)用信息,加密機通信函數(shù)引入口,其中DllImport中設(shè)置一個參數(shù)為中國電科院提供的國網(wǎng)加密機主站接口 DLL動態(tài)
鏈接庫。代碼實現(xiàn)上包括公布國網(wǎng)加密機主站接口 DLL動態(tài)鏈接庫導(dǎo)入聲明(包括名稱身份認(rèn)證函數(shù),功能身份認(rèn)證取隨機數(shù)和密文;控制命令函數(shù),功能控制命令;名稱3.充值函數(shù),功能:錢包充值;明文+MAC參數(shù)更新函數(shù),功能B月文+MAC參數(shù)更新函數(shù);密文+MAC參數(shù)更新函數(shù),功能密文+MAC更新參數(shù),密鑰更新函數(shù),功能更新密鑰;校驗MAC函數(shù),功能校驗MAC ;費率文件I更新函數(shù),功能更新參數(shù);費率文件2更新函數(shù),功能更新參數(shù)。);
國網(wǎng)加密機主站接口 DLL動態(tài)鏈接庫調(diào)用返回結(jié)果提示(包括身份認(rèn)證函數(shù);控制命令函數(shù);充值函數(shù);參數(shù)更新函數(shù);密文+MAC參數(shù)更新函數(shù);密鑰更新函數(shù);費率文件I更新函數(shù);費率文件2更新函數(shù);校驗MAC函數(shù))。1. 2. 2.在 ArtRdRemoteObject 項目中創(chuàng)建 CommDataArrangeRemote. cs 類說明CommDataArrangeRemote類繼承了 MarshalByRefObject 對像基類,實現(xiàn)跨應(yīng)用程序域邊界被遠(yuǎn)程引用,是上述1. 1.2.1ArtRdRemoteObject接口類成員的具體實現(xiàn)方法內(nèi)容。這里注意的是加密機的共享訪問會存在著多個客戶端同一時刻調(diào)用同一個函數(shù),這樣就有可能會出現(xiàn)數(shù)據(jù)交錯,導(dǎo)致身份認(rèn)證失敗操作不成功,在本實施中,本發(fā)明使用了 C#提供的lock鎖,把與加密機操作通信部分的代碼定義為互斥段,即同一時刻只允許一個客戶端調(diào)用,其他的客戶端等待進(jìn)入,這樣一來就解決了同時訪問的問題。代碼實現(xiàn)上包括
定義事件(用于監(jiān)視各客戶端登錄情況及加密機交互情況,包括客戶端登錄前置機事件定義、客戶端退出前置機事件定義、加密機交互情況事件定義);公布登錄遠(yuǎn)程前置機并獲取目前支持的最大通道(包括客戶端名稱、客戶端IP地址、有事件訂閱、傳遞客戶端登錄信息給前置機事件訂閱者,前置機顯示客戶端登錄信息、異常提示);公布退出遠(yuǎn)程前置機(包括主站斷開提示事件(客戶端名稱、客戶端IP地址、有事件訂閱、傳遞退出的客戶端信息給前置機事件訂閱者,前置機顯示退出的客戶端信息)、異常提示);定義取加密機隨機數(shù)I函數(shù)(包括通信事件參數(shù)(包括客戶端Id、客戶端Ip、登錄時間、數(shù)據(jù)標(biāo)識、加密機通信信息)、輸入?yún)?shù)(8字節(jié)分散因子,16進(jìn)制字符串)、輸出參數(shù)(字符型,8字節(jié)隨機數(shù)+8字節(jié))、結(jié)果提示(成功;200,連接加密機失敗;201,取隨機數(shù)I失??;202,取隨機數(shù)2失??;203,密鑰分散失?。?04,數(shù)據(jù)加密失??;205,取密文失敗)。);公布取加密機隨機數(shù)I函數(shù)(包括輸出結(jié)果值定義、輸出參數(shù)初始化、lock互斥段代碼、身份認(rèn)證獲取隨機數(shù)、有事件訂閱、操作類型與操作結(jié)果信息、傳遞客戶端信息給事件訂閱者、異常提示);定義明文+MAC參數(shù)更新函數(shù)(包括通信事件參數(shù)(客戶端Id、客戶端Ip、登錄時間、數(shù)據(jù)標(biāo)識、加密機通信信息)、輸入?yún)?shù)(4字節(jié)隨機數(shù);8字節(jié)分散因子;更新指令10位(04d682+起始+LC) ;LC=明文數(shù)據(jù)長度+4 ;其他為參數(shù)明文;)、返回參數(shù)明文和MAC、結(jié)果提示(0,成功;200,連接加密機失?。?01,寫卡失??;202,讀卡失?。?03,計算MAC失敗)。);公布明文+MAC參數(shù)更新函數(shù)(輸出結(jié)果值定義、輸出參數(shù)初始化、lock互斥段代碼、明文+MAC參數(shù)更新、有事件訂閱、操作類型與操作結(jié)果信息、傳遞客戶端信息給事件訂閱者、異常提示);定義第一套費率文件(包括第一套費率文件更新函數(shù)(通信事件參數(shù)(客戶端Id、客戶端Ip、登錄時間、數(shù)據(jù)標(biāo)識、加密機通信信息)、輸入?yún)?shù)(隨機數(shù)8位;分散因子16位;更新指令10位(04d683+起始+LC) ;LC=明文數(shù)據(jù)長度+4 ;其他為參數(shù)明文;)、返回參數(shù)明文和MAC、結(jié)果提示(0,成功;200,連接加密機失?。?01,寫卡失?。?02,讀卡失?。?03,計算MAC失敗)。);
公布第一套費率文件(包括輸出結(jié)果值定義、輸出參數(shù)初始化、lock互斥段代碼明文+MAC參數(shù)更新、操作類型與操作結(jié)果信息、傳遞客戶端信息給事件訂閱者、異常提示);定義第二套費率文件(包括第一套費率文件更新函數(shù)(通信事件參數(shù)(客戶端Id、客戶端Ip、登錄時間、數(shù)據(jù)標(biāo)識、加密機通信信息)、輸入?yún)?shù)(隨機數(shù)8位;分散因子16位;更新指令10位(04d684+起始+LC) ;LC=明文數(shù)據(jù)長度+4 ;其他為參數(shù)明文;)、返回參數(shù)明文和MAC、結(jié)果提示(0,成功;200,連接加密機失??;201,寫卡失?。?02,讀卡失敗;203,計算MAC失敗)。);公布第二套費率文件(包括輸出結(jié)果值定義、輸出參數(shù)初始化、lock互斥段代碼明文+MAC參數(shù)更新、操作類型與操作結(jié)果信息、傳遞客戶端信息給事件訂閱者、異常提示);
定義PA=98H密文+ MAC(包括通信事件參數(shù)(客戶端Id、客戶端Ip、登錄時間、數(shù)據(jù)標(biāo)識、加密機通信信息)、輸入?yún)?shù)(4字節(jié)隨機數(shù);8字節(jié)分散因子;更新指令10位(04d6+文件標(biāo)識+00+LC),此處LC長度為下發(fā)密文數(shù)據(jù)+MAC的長度,其他為參數(shù)明文)、輸入?yún)?shù)(8字節(jié)ESAM序列號)、返回參數(shù)密文和MAC (智能電表接收密文+MAC后,用04d6+文件標(biāo)識+00+LC+密文+MAC更新ESAM文件,然后明文讀取數(shù)據(jù),該文件第一個字節(jié)為明文數(shù)據(jù)的長度(HEX),可以根據(jù)該長度取所解密后的明文)、結(jié)果提示(0,成功;200,連接加密機失敗;201,寫卡失敗;202,讀卡失敗;203,計算MAC失敗)。);公布PA=98H密文+ MAC (包括輸出結(jié)果值定義、輸出參數(shù)初始化、lock互斥段代碼、密文+MAC參數(shù)更新、有事件訂閱、操作類型與操作結(jié)果信息、傳遞客戶端信息給事件訂閱者、異常提示);定義控制命令(包括通信事件參數(shù)(客戶端Id、客戶端Ip、登錄時間、數(shù)據(jù)標(biāo)識、加密機通信信息)、輸入?yún)?shù)(字符型,4字節(jié)隨機數(shù)+8字節(jié)分散因子+8字節(jié)ESAM序列號+數(shù)據(jù)明文、字符型,20字節(jié)密文)、結(jié)果提示(成功;200,連接加密機失??;201,寫卡失??;202,讀卡失敗;203,計算密文失敗)。);公布控制命令(包括輸出結(jié)果值定義、輸出參數(shù)初始化、lock互斥段代碼、密文+MAC參數(shù)更新、有事件訂閱、操作類型與操作結(jié)果信息、傳遞客戶端信息給事件訂閱者、異常提示);定義充值函數(shù)(包括通信事件參數(shù)(客戶端Id、客戶端Ip、登錄時間、數(shù)據(jù)標(biāo)識、加密機通信信息)、輸入?yún)?shù)(字符型4字節(jié)隨機數(shù);8字節(jié)分散因子;電量和次數(shù),8字節(jié);首次充值時,6字節(jié)戶號)、返回電量(次數(shù)和4字節(jié)MAC)、結(jié)果提示(O,成功;200,連接加密機失敗;201,寫卡失?。?02,讀卡失??;203,計算MAC失敗)。);公布充值函數(shù)(包括輸出結(jié)果值定義、輸出參數(shù)初始化、lock互斥段代碼、密文+MAC參數(shù)更新、有事件訂閱、操作類型與操作結(jié)果信息、傳遞客戶端信息給事件訂閱者、異常提不);定義密鑰更新函數(shù)(包括類型參數(shù)(整型,kid=l,身份認(rèn)證密鑰;kid=2,控制命令密鑰;Kid=3,參數(shù)更新密鑰)、輸入?yún)?shù)(字符型,8字節(jié)分散因子+8字節(jié)ESAM序列號+4字節(jié)隨機數(shù)+4字節(jié)數(shù)據(jù)明文)、輸出參數(shù)(返回32字節(jié)密文+4字節(jié)密鑰信息+4字節(jié)MAC)、結(jié)果提示(成功;200,連接加密機失??;201,寫卡失??;202,讀卡失敗;203,計算MAC失敗)。);公布密鑰更新函數(shù)(包括輸出結(jié)果值定義、輸出參數(shù)初始化、lock互斥段代碼、密文+MAC參數(shù)更新、有事件訂閱、操作類型與操作結(jié)果信息、傳遞客戶端信息給事件訂閱者、異常提示);定義校驗MAC函數(shù)(包括通信事件參數(shù)(客戶端Id、客戶端Ip、登錄時間、數(shù)據(jù)標(biāo)識、加密機通信信息)、輸入?yún)?shù)(4字節(jié)隨機數(shù)+8字節(jié)分散因子+5字節(jié)指令(04d68600+LC) +數(shù)據(jù)明文+4字節(jié)MAC,LC=明文長度+OxOC ;結(jié)果提示(0,成功;其他MAC錯)。);公布校驗MAC函數(shù)(包括輸出結(jié)果值定義、輸出參數(shù)初始化、lock互斥段代碼、密文+MAC參數(shù)更新、有事件訂閱、操作類型與操作結(jié)果信息、傳遞客戶端信息給事件訂閱者、異常提示);創(chuàng)建通道事件參數(shù)類(包括客戶端名稱、客戶端IP地址)。2.客戶端
2.1.客戶端遠(yuǎn)程連接前置機訪問加密機步聚2.1.1.注冊通道,實現(xiàn)客戶端與前置機服務(wù)不同應(yīng)用程序域的相互通信。2.1. 2.注冊遠(yuǎn)程前置機服務(wù)對象,獲取遠(yuǎn)程接口成員對像。2.1. 3.調(diào)用遠(yuǎn)程對像接口成員方法,實現(xiàn)加密機的訪問。2. 2.代碼實現(xiàn)包括2. 2.1.全局變量類全局成員聲明,包括前置機遠(yuǎn)程對象、前置機是否注冊成功、TCP通道、HTTP通道、客戶端IP地址、客戶端名稱、應(yīng)用程序?qū)嵗?. 2. 2.命名空間引用包括提供各種各樣支持COM interop及平臺調(diào)用服務(wù)的成員、遠(yuǎn)程對像接口程序集引用上述1.1。2. 2. 3.注冊遠(yuǎn)程前置機服務(wù)對象注冊對象,包括獲取本地計算機名稱、獲取本地計算機IP地址、注冊通道(TCP通道/HTTP通道)、注冊前置機遠(yuǎn)程服務(wù)對象、結(jié)果提示、異常提示;其中,定義獲取客戶端名稱,包括執(zhí)行查詢并返回結(jié)果集、取得計算機名稱;定義獲取本地IP地址,包括返回本地標(biāo)準(zhǔn)主機名、返回給定主機名的信息hostent結(jié)構(gòu)指針、取得IP地址;注冊通道,包括定義端口號、注銷TCP通道、注銷HTTP通道、注冊TCP通道、注冊HTTP通道;注冊前置機遠(yuǎn)程服務(wù)對象,包括注冊前置機所在的計算機IP地址與端口、獲取前置機遠(yuǎn)程對象參數(shù)I為遠(yuǎn)程對象的類型,參數(shù)2為服務(wù)器端的URL、登錄前置機、異常時前置機連接標(biāo)識(false :連接失敗)、異常時遠(yuǎn)程對像NULL、拋出異常。2. 2. 4.調(diào)用遠(yuǎn)程對像接口方法,實現(xiàn)加密機的訪問創(chuàng)建實例化加密機通信事件參數(shù)結(jié)構(gòu)類、獲取客戶端名稱、客戶端IP地址、通信時間、取隨機數(shù)I。上述實施例僅是用來說明本發(fā)明,而并非用作對本發(fā)明的限定。只要是依據(jù)本發(fā)明的技術(shù)實質(zhì),對上述實施例進(jìn)行變化、變型等都將落在本發(fā)明的權(quán)利要求的范圍內(nèi)。
權(quán)利要求
1.一種基于Remoting軟件構(gòu)架的電網(wǎng)加密機共享訪問的系統(tǒng),包括前置機、加密機、客戶端、智能電表,其特征在于,前置機與加密機相連,與加密機進(jìn)行通信,并與客戶端交互,完成智能電表安全認(rèn)證過程;客戶端與智能電表相連,對智能電表進(jìn)行在線抄讀、編程;前置機與客戶端之間通過Remoting軟件構(gòu)架調(diào)用遠(yuǎn)程對象接口,進(jìn)行加密機共享使用。
2.根據(jù)權(quán)利要求1所述的基于Remoting軟件構(gòu)架的電網(wǎng)加密機共享訪問的系統(tǒng),其特征在于,把與加密機通信交互的動態(tài)鏈接庫封裝成遠(yuǎn)程對象接口,作為加密機的服務(wù)程序;客戶端遠(yuǎn)程連接前置機,并通過Remoting技術(shù)調(diào)用遠(yuǎn)程對象接口,與加密機進(jìn)行通信。
3.根據(jù)權(quán)利要求2所述的基于Remoting軟件構(gòu)架的電網(wǎng)加密機共享訪問的系統(tǒng),其特征在于,在前置機上定義加密機遠(yuǎn)程接口成員、實現(xiàn)遠(yuǎn)程接口成員。
4.根據(jù)權(quán)利要求2所述的基于Remoting軟件構(gòu)架的電網(wǎng)加密機共享訪問的系統(tǒng),其特征在于,在客戶端上注冊通道,實現(xiàn)客戶端與前置機服務(wù)不同應(yīng)用程序域的相互通信;注冊遠(yuǎn)程前置機服務(wù)對象,獲取遠(yuǎn)程接口成員對象;調(diào)用遠(yuǎn)程對象接口成員方法,實現(xiàn)加密機的訪問。
5.根據(jù)權(quán)利要求3所述的基于Remoting軟件構(gòu)架的電網(wǎng)加密機共享訪問的系統(tǒng),其特征在于,創(chuàng)建包括客戶端信息及遠(yuǎn)程接口操作信息的數(shù)據(jù)結(jié)構(gòu)類,用于客戶端調(diào)用遠(yuǎn)程對像接口時傳入客戶端信息。
6.根據(jù)權(quán)利要求5所述的基于Remoting軟件構(gòu)架的電網(wǎng)加密機共享訪問的系統(tǒng),其特征在于,前置機實時展示各客戶端與加密機交互信息。
7.根據(jù)權(quán)利要求5所述的基于Remoting軟件構(gòu)架的電網(wǎng)加密機共享訪問的系統(tǒng),其特征在于,創(chuàng)建遠(yuǎn)程對象接口類,定義了遠(yuǎn)程對像必須實現(xiàn)的成員,公布登錄退出前置機、力口密機通信的遠(yuǎn)程對象公共方法,接口只定義成員,不含實現(xiàn)代碼。
8.根據(jù)權(quán)利要求7所述的基于Remoting軟件構(gòu)架的電網(wǎng)加密機共享訪問的系統(tǒng),其特征在于,創(chuàng)建創(chuàng)建加密機DLL函數(shù)導(dǎo)出聲明類,從非托管的加密機動態(tài)鏈接庫DLL中導(dǎo)出加密機功能函數(shù)的調(diào)用信息、加密機通信函數(shù)引入口。
9.根據(jù)權(quán)利要求8所述的基于Remoting軟件構(gòu)架的電網(wǎng)加密機共享訪問的系統(tǒng),其特征在于,創(chuàng)建遠(yuǎn)程對象接口實現(xiàn)類,實現(xiàn)跨應(yīng)用程序域邊界被遠(yuǎn)程引用,是上述遠(yuǎn)程對象接口類成員的具體實現(xiàn)方法內(nèi)容。
10.根據(jù)權(quán)利要求9所述的基于Remoting軟件構(gòu)架的電網(wǎng)加密機共享訪問的系統(tǒng),其特征在于,把與加密機操作通信部分的代碼定義為互斥段,對加密機進(jìn)行共享訪問的所有客戶端在同一時刻只允許一個客戶端調(diào)用同一個函數(shù),其他的客戶端等待進(jìn)入。
11.一種基于Remoting軟件構(gòu)架的電網(wǎng)加密機共享訪問的系統(tǒng)更新智能電表參數(shù)的方法,其特征在于,客戶端先進(jìn)行身份安全認(rèn)證,認(rèn)證通過后,以明文+MAC的方式進(jìn)行數(shù)據(jù)的傳輸和修改,客戶端所有與加密機交互操作都是通過共享訪問前置機調(diào)用遠(yuǎn)程對象接口的方式完成,具體步驟如下 O身份安全認(rèn)證 .1.1)在客戶端取第一隨機數(shù)傳入分散因子;前置機發(fā)送分散因子至加密機;加密機把第一隨機數(shù)加密成第一密文;1.2)加密機輸出第一隨機數(shù)、第一密文至前置機,前置機將第一隨機數(shù)、第一密文返回至客戶端;· 1.3)客戶端將前置機返回的第一隨機數(shù)和第一密文及客戶端的分散因子按預(yù)設(shè)的身份認(rèn)證指令格式發(fā)送至智能電表,智能電表內(nèi)置的ESAM模塊把第一隨機數(shù)加密成第二密文,比較第一密文與第二密文,如果第一密文與第二密文相等則身份安全認(rèn)證成功,否則,身份安全認(rèn)證失??; 2)參數(shù)更新 ·2.1)身份安全認(rèn)證成功后,取第二隨機數(shù),與智能電表內(nèi)置的ESAM模塊的ESAM序列號一起發(fā)送至客戶端; ·2.2)客戶端將智能電表返回的第二隨機數(shù)、ESAM序列號和客戶端的分散因子、電表數(shù)據(jù)傳至前置機,前置機將第二隨機數(shù)、分散因子、ESAM序列號和電表數(shù)據(jù)發(fā)送至加密機; · 2.3)加密機對第二隨機數(shù)、分散因子、ESAM序列號和電表數(shù)據(jù)進(jìn)行MAC加密計算,輸出帶MAC數(shù)據(jù)包; · 2.4)加密機將帶MAC數(shù)據(jù)包返回至前置機,前置機將帶MAC數(shù)據(jù)包發(fā)送至客戶端,客戶端將將帶MAC數(shù)據(jù)包發(fā)送至智能電表; ·2.5)智能電表收到帶MAC數(shù)據(jù)包后,對數(shù)據(jù)進(jìn)行更新。
12.根據(jù)權(quán)利要求11所述的方法,其特征在于,預(yù)設(shè)的身份認(rèn)證指令格式遵從DL/T645—2007協(xié)議的幀格式。
13.根據(jù)權(quán)利要求11所述的方法,其特征在于,所述的分散因子載于身份認(rèn)證指令的數(shù)據(jù)域,依次為2字節(jié)固定字節(jié)、6字節(jié)智能電表的表號。
全文摘要
本發(fā)明涉及一種基于Remoting軟件構(gòu)架的電網(wǎng)加密機共享訪問的系統(tǒng),以及基于Remoting軟件構(gòu)架的電網(wǎng)加密機共享訪問的系統(tǒng)更新智能電表參數(shù)的方法。所述的系統(tǒng)包括前置機、加密機、客戶端、智能電表,前置機與加密機相連,與加密機進(jìn)行通信,并與客戶端交互,完成智能電表身份安全認(rèn)證過程;客戶端與智能電表相連,對智能電表進(jìn)行在線抄讀、編程;前置機與客戶端之間通過Remoting軟件構(gòu)架調(diào)用遠(yuǎn)程對象接口,進(jìn)行加密機共享使用。將中國電院科在國家電網(wǎng)建設(shè)中提供的資源最大化、資源共享;供電網(wǎng)電量信息采集系統(tǒng)安全加密數(shù)據(jù)交互處理使用,使國網(wǎng)表生產(chǎn)擺脫加密機缺少的困境,操作方便,利于生產(chǎn)運作,便于資產(chǎn)管理。
文檔編號H04L29/08GK103001952SQ20121046500
公開日2013年3月27日 申請日期2012年11月16日 優(yōu)先權(quán)日2012年11月16日
發(fā)明者程福利, 徐越, 許良剛, 林冬武 申請人:漳州科能電器有限公司