一種智能電表系統安全監控信息處理方法
【專利摘要】本發明公開一種智能電表系統安全監控信息處理方法,它是一種適用于AMI系統的密鑰管理方法。本發明基于密鑰圖構建密鑰管理框架,采用層次化密鑰架構,能同時適應AMI雙向通信以及三種傳輸方式的密鑰管理需求;考慮智能電表的計算與存儲能力,采用對稱密鑰加密算法以及單向函數,減少了密鑰及其相關數據的計算與存儲開銷;釆用了基于量測數據與單向函數的密鑰協商更新策略,減少了網間密鑰分發開銷,并降低了分發消息被截獲的風險。經過安全性分析以及算法性能分析,所提出的密鑰管理方法符合AMI系統安全需求及系統特性。
【專利說明】一種智能電表系統安全監控信息處理方法
【技術領域】
[0001]本發明涉及智能電網中的高級量測體系中有關于監控信息傳輸安全的處理方法。【背景技術】
[0002]由于智能電表通過廣域通信網絡連接到監測數據管理系統,難免會遇到一些常見的網絡安全威脅。并且由于所傳信息的特殊性,一旦出現網絡安全問題,將會引起停電事故、重大經濟損失等嚴重問題。AMI的信息安全需求主要包括保密性、完整性和可用性等。其中,前二者主要是通過加密和認證協議來實現。而在當今世界,信息的安全性和保密性已經轉嫁于密鑰的安全性,因此,有效的密鑰管理就成了加密與認證的基礎和焦點。由此可見,為了保障互動用電過程中的信息安全,很有必要研究適合于AMI的密鑰管理方法。
[0003]近年來,有些研究或者文獻中對AMI系統的密鑰管理問題有所涉及,但具體的、適用的密鑰管理方案卻尚未發現。在這些文獻中,有的提出了一種AMI安全通信的綜合保密性與鑒權方案,有的使用了一些諸如高級加密標準(AES)加密與公共密鑰體系(PKI)等安全機制,將兩種典型的應用協議引入到AMI用戶應用中。這些研究關注的是AMI系統應用的加密與鑒權,包括設備鑒權、數據保密性以及消息完整性。但是沒有涉及到如何有效地管理AMI大量的智能設備所使用的密鑰的問題。其中,一種密鑰管理算法假定AMI網絡是基于ad-hoc無線傳感網,在此基礎上提出了一個基于公共加密的密鑰建立與安全算法。根據智能電網在不同國家的發展情況,AMI網絡形式是多種多樣的,因此該算法的應用范圍是很有限的。有些書籍指出了密鑰管理的重要性,但沒有提出任何具體的管理方法。另外,對于有些電力控制系統,如SCADA和廣域保護網絡的安全通信,提出了一些密鑰管理方法。由于系統結構和承載業務均有很大的不同,適用于電力控制系統或其它一般IT系統的密鑰管理方法不能直接應用于AMI中。
【發明內容】
[0004]通過分析各種密鑰管理方法的原理、優缺點以及適用范圍,以及AMI的系統結構、業務類型及特征、信息安全需求,本發明總結出AMI密鑰管理方法設計的重點與難點,并相應地提出基本解決思路。根據這些思路提出一種新的、具體的密鑰管理方法,詳細闡述其密鑰管理過程,并且討論其算法性能及安全性能。
[0005]為了實現上述目的,本發明的具體技術方案如下:
[0006]一種智能電表系統安全監控信息處理方法,包括密鑰管理框架、密鑰生成策略、密鑰更新策略、密鑰分發策略,其中:
[0007]密鑰管理框架包括廣播密鑰、組密鑰、單播密鑰;基于密鑰圖結構進行構建,采用分層密鑰管理策略,在這個框架中,廣播密鑰用于廣播通信,組密鑰用于組播通信,單播密鑰用于管理側設備與用戶側的智能電表之間的單播通信;
[0008]密鑰生成策略,密鑰生成以及生成會話密鑰所需要的附加信息都將由管理側設備的專用密鑰服務器進行初始化生成,然后分發給相應的用戶側的智能電表;密鑰的生成應滿足如下要求:在安全環境中產生,防止任何形式的泄露;密鑰的長度應根據信息類型的不同而有所區別;生成的密鑰應避免弱密鑰;滿足隨機性和不可預測性;在層次化密鑰管理體制中,不同級別或不同類別的密鑰其產生機制應有所區別;
[0009]密鑰分發策略應安全地將密鑰分發給用戶,用戶密鑰以及對應的附加值將通過安全信道分發給對應的用戶,根密鑰及其對應的附加值將分發給所有的用戶,組密鑰及其相應的附加值將視用戶對電力需求響應項目的參與情況,分發給合法的用戶側的智能電表;
[0010]密鑰更新策略內容包含用戶登記信息的更新以及密鑰的更新,會話密鑰可使用一次一密的方式進行更新,也可以利用單向函數和舊密鑰進行更新;
[0011]密鑰存儲,密鑰管理方法的應用需要預先在通信雙方存儲一些相關信息,包括各種密鑰,計數器,以及附加值。
[0012]本發明具有如下優點:
[0013]1、保密性:本發明釆用對稱密鑰加密算法,能夠抵御中間人攻擊,以及內部惡意節點的攻擊。組員退出組后,不能再參與組播,新加入的組員也無法破解它加入前的組播報文,多個組員聯合起來也無法破解系統。
[0014]2、安全性:本發明經過安全性分析以及算法性能分析,所提出的密鑰管理方法符合AMI系統安全需求,并且適合AMI系統特性。
[0015]3、實時性:本發明釆用HASH函數,減少了密鑰及其相關數據的計算與存儲開銷,密鑰生成計算開銷不會給節點帶來過大的負擔,密鑰分發報文沒有過多地占用網絡帶寬,密鑰更新時要使所有組成員都能及時獲得新密鑰。
[0016]4、健壯性:本發明采用了單向函數的密鑰協商算法,當部分組員失效時,仍然能夠繼續進行安全組播。
[0017]5、可靠性:在不可靠的網絡環境中,密鑰的分發或更新也能正確實行。
【專利附圖】
【附圖說明】
[0018]圖1是本發明的密鑰管理框架圖
[0019]圖2是本發明密鑰管理框架實例圖
[0020]圖3是初始化流程圖
[0021]圖4-1是從管理端到用戶端的單播通信圖
[0022]圖4-2是從用戶端到管理端的單播通信圖
[0023]圖5是廣播通信過程圖
[0024]圖6是組播通信過程圖
[0025]圖7-1是用戶申請加入或退出用戶組時的組播通信密鑰管理過程圖
[0026]圖7-2是組播用戶密鑰及相關數據更新時的組播通信密鑰管理過程圖
【具體實施方式】
[0027]下面結合附圖圖1、2、3,圖4-1、4_2,圖5、6,圖7_1、7_2對本發明作進一步詳細說明。
[0028]一種智能電表系統安全監控信息處理方法,包括密鑰管理框架、密鑰生成策略、密鑰更新策略、密鑰分發策略、密鑰存儲,其中:[0029]密鑰管理框架包括廣播密鑰、組密鑰、單播密鑰;基于密鑰圖結構進行構建,采用分層密鑰管理策略,在這個框架中,廣播密鑰(根密鑰)用于廣播通信,組密鑰用于組播通信,單播密鑰用于管理側設備與用戶側的智能電表之間的單播通信;
[0030]密鑰生成策略,密鑰生成以及生成會話密鑰所需要的附加信息都將由管理側設備的專用密鑰服務器進行初始化生成,然后分發給相應的用戶側的智能電表;密鑰的生成應滿足如下要求:在安全環境中產生,防止任何形式的泄露;密鑰的長度應根據信息類型的不同而有所區別;生成的密鑰應避免弱密鑰;滿足隨機性和不可預測性;在層次化密鑰管理體制中,不同級別或不同類別的密鑰其產生機制應有所區別;
[0031]密鑰分發策略應安全地將密鑰分發給用戶,用戶密鑰以及對應的附加值將通過安全信道(例如利用密鑰卡)分發給對應的用戶,根密鑰及其對應的附加值將分發給所有的用戶,組密鑰及其相應的附加值將視用戶對電力需求響應項目的參與情況,分發給合法的用戶側的智能電表;
[0032]密鑰更新策略內容包含用戶登記信息的更新以及密鑰的更新,會話密鑰可使用一次一密的方式進行更新,也可以利用單向函數和舊密鑰進行更新;
[0033]密鑰存儲,密鑰管理方法的應用需要預先在通信雙方存儲一些相關信息,包括各種密鑰,計數器,以及附加值。
[0034]廣播密鑰的生成策略;
[0035]電力項目發布和電價信息這有兩種消息通過廣播傳播,廣播通信的密鑰在每次新的廣播之前都需要生成新的廣播會話密鑰以保證消息的保密性和完整性;
[0036]發送端的會話密鑰由計數器以及廣播密鑰共同生成,并利用生成的會話密鑰對所要傳送的信息進行加密并求取數字簽名;
[0037]消息傳送,將加密后的信息以及所求得的數字簽名發送給接收端;
[0038]接收端的會話密鑰生成與使用,接收端生成會話密鑰,然后利用這個密鑰驗證所接收到的數字簽名,并解密信息。
[0039]組播會話密鑰的生成策略;
[0040]組播會話密鑰的生成與使用和廣播的情況類似,主要的區別在與接收者的范圍;
[0041]用戶申請加入或退出電力項目組,當一個用戶打算加入或退出電力項目組時,它必須發出申請,申請消息需要進行加密并簽名;
[0042]管理端設備驗證用戶的請求,在接收到申請消息后,先對消息進行驗證并解密,然后確認是請求加入還是退出。這時候加入新的項目組就意味著退出原來定制的項目組;
[0043]如果有用戶加入或退出電力項目組,在組員更新之前需要生成新的組密鑰及相應的附加值,并用組播方式將新的組播密鑰和附加值發送給項目組內原有的成員,采用單播方式將組播密鑰及附加值發送給新加入項目的成員。
[0044]單播密鑰的生成策略;
[0045]單播密鑰屬于單播模式的消息類型有計量數據、加入或退出電力項目的申請以及遠程負荷控制等,這些消息的傳輸是雙向的;
[0046]單播會話密鑰由計量數據、量測日期、計數器以及用戶密鑰共同生成;然后利用生成的會話密鑰對所要傳送的信息進行加密并求取數字簽名。
[0047]廣播密鑰的更新策略;[0048]保證密鑰新鮮性,需要定期更新,例如每天或每月;使用HASH算法可以保證新舊密鑰的獨立性;
[0049]廣播會話密鑰必須在每次廣播之前進行更新;另外,由于廣播密鑰和附加值的安全更新,并且釆用HASH算法,會話密鑰的隨機性與獨立性將得以保證。
[0050]組播密鑰的更新策略;
[0051]當電力項目組員沒有變化時,電力項目組對應的組播密鑰、計數器、附加值、會話密鑰的更新策略與廣播的情況類似;
[0052]當電力項目組有用戶加入或退出時,管理端設備需要更新電力項目組對應的組播密鑰和計數值,然后將新的數據發送給所有加入該項目的用戶端設備。
[0053]單播密鑰的更新策略;
[0054]為了保持密鑰新鮮性,單播用戶密鑰需要定期進行更新,比如每天、每周等,使用HASH函數進行更新;
[0055]為了保證保密性和完整性,會話密鑰在每次新會話開始之前必須更新,更新的效果取決于單播用戶密鑰以及附加值。附加值是通過量測數據、量測日期、計數器、單播用戶密鑰計算得出,就保證了會話密鑰的隨機性。
[0056]密鑰管理框架將基于密鑰圖結構進行構建,該框架能同時支持三種傳輸模式,框架定義為KMF= {U,K,R);
[0057]U=Ku2,...,Un],是包含所有用戶端成員的非空有限集合;
[0058]K= {k0} U {k1; k2,...,kj U {gk1; gk2,...,gkj ,是包含所有密鑰的非空有限集。其中Ik1, k2,...,kj是用戶密鑰集合,{gk1; gk2,...,gkj是組用戶密鑰集合,而1?表示密鑰圖的根密鑰;
[0059]R是U與K的映射關系集合,RkCUxK稱為用戶-密鑰關系。當(u,k) e R時,表示用戶u存儲了密鑰k。
[0060]框架定義函數userset (k) = {u I (u, k) e R}。
[0061]密鑰管理框架還可以表示為:
[0062]U= {u1; U2, U3I
[0063]K= {k0} U {k1; k2, k3} U {gk1; gk2}
[0064]R= {(U1, k0),(U1, ki),(U1, gki),(u2, k0),(u2, k2),(u2, gk2),(u3, k3),(u3, gk!),(u3, gk2)}
[0065]其中參與電力項目的用戶集合可以表示為userset (gkXup u3);
[0066]在這個框架中,根密鑰1?用于廣播通信;組密鑰{gk” gk2,...,gkj用于組播通信;其他用戶密鑰{ki,k2,...Λη}用于管理端設備與用戶端設備之間的單播通信。
[0067]單播密鑰通信管理:
[0068]單播模式的消息類型有:計量數據,加入或退出電力項目的申請以及遠程負荷控制等。這些消息的傳輸是雙向的,從管理端傳送給用戶端或者從用戶端傳送給管理端;在傳輸過程中,必須保證消息的保密性和完整性;為此,會話密鑰必須在每次新會話之前進行更新;具體的單播通信密鑰管理包含以下三步:
[0069]步驟一、發送端的會話密鑰生成與使用:
[0070]U。(或 Ui):S1.1Ci=H (HMACki (Mi ? CDate) ? Counti)[0071]SUski=HQii^Ci)
[0072]S1.3EData=Eski (Data)
[0073]S1.4Signt=HMACski (EData)
[0074]首先先生成會話密鑰;如步驟S1.1和S1.2所示,會話密鑰Ski由計量數據Mi,量測日期⑶ate,計數器Counti以及用戶密鑰Ici共同生成;然后在S1.3和S1.4中利用生成的會話密鑰對所要傳送的信息進行加密并求取數字簽名;
[0075]步驟二、消息傳送:
[0076]U0(Ui) Ui (u0): (EData I Signt)
[0077]將加密后的信息以及所求得的數字簽名發送給接收端;
[0078]步驟三、接收端的會話密鑰生成與使用:
[0079]Ui (或 U。):S3.1Ci=H(HMACki (Mi ? CDate) ? Counti)
[0080]S3.28^=Η(^ ? Ci)
[0081 ] S3.3Signr=HMACski (EData)
[0082]IF Signt=Signr
[0083]S3.4Data=DEski (EData)
[0084]END IF`
[0085]接收端也能獲得生成會話密鑰所需的數據;S3.1和S3.2生成會話密鑰,然后利用這個密鑰,驗證所接收到的數字簽名,并解密信息;
[0086]步驟四、單播密鑰更新策略;
[0087]Iii更新周期為特定周期,更新策略為Iii=H(Iii)
[0088]Counti更新周期為每次會話之前,更新策略為Counti=Count^l
[0089]Ci更新周期為每次會話之前,更新策略為Ci=HOMACki (Mi ? CDate) ? Counti)
[0090]Ski更新周期為每次會話之前,更新策略為Ski=HQii ? Ci)
[0091]為了保持密鑰新鮮性,用戶密鑰h需要定期進行更新,比如每天、每周;使用HASH函數進行更新不僅能夠避免過多的網絡分發開銷,還能夠保證密鑰的獨立性;
[0092]為了保證保密性和完整性,會話密鑰在每次新會話開始之前必須更新;在這種更新策略中,更新的效果取決于用戶密鑰匕以及附加值Ci ;因此對于通信雙方來說,如何獲取附加值Ci是非常重要的;首先,量測數據Mi容易在智能電表與MDMS中獲得;但是在無人在家的情況下,前后幾天的量測數據將保持不變;因此我們用量測日期CDate加以處理來增加密鑰的新鮮性;其次,Mi與⑶ate容易由猜測獲得,因此我們利用安全的Ici通過HMACki (Mi ? CDate)處理,就保證了會話密鑰的隨機性;第三,由于一天內將會有多條信息進行通信,可用計數器CountiW以區別,發完一條信息后Counti自動加I。
[0093]廣播通信密鑰管理有兩種消息是通過廣播傳播的,分別是電力項目發布和電價信息;廣播通信的密鑰管理與單播的密鑰管理類似;每次新的廣播之前都需要生成新的廣播會話密鑰以保證消息的保密性和完整性;具體的密鑰管理流程;
[0094]步驟一、發送端的會話密鑰生成與使用;
[0095]U0:S1.1C0=H(Count0)
[0096]S1.2sk0=H(k0 ? C0)
[0097]S1.3EData=Esk0 (Data)[0098]S1.4Signt=HMACsk0 (EData)
[0099]首先先生成會話密鑰。如步驟S1.1和S1.2所示,會話密鑰Skci由計數器Count。以及根密鑰1?共同生成;接著在S1.3和S1.4中利用生成的會話密鑰對所要傳送的信息進行加密并求取數字簽名;
[0100]步驟二、消息傳送;
[0101]U。— Iu1, U2,..., un}: (EDataI I Signt)
[0102]將加密后的信息以及所求得的數字簽名發送給接收端;
[0103]步驟三、接收端的會話密鑰生成與使用;
[0104]Ui (i=l, 2,...,n):S3.1C0=H(Count0)
[0105]S3.2sk0=H (k0 ? C0)
[0106]IF Signt=Signr
[0107]S3.4Data=DEsk0 (EData)
[0108]END IF
[0109]接收端生成會話密鑰,然后利用這個密鑰驗證所接收到的數字簽名,并解密信息;
[0110]步驟四、廣播密鑰更新策略;
[0111]1?更新周期為特定周期,更新策略為kfHCO ;
[0112]Countci更新周期為每次會話之前,更新策略為Countci=Countci+1 ;
[0113]C0更新周期為每次會話之前,更新策略為Cci=H(Countci);
[0114]Sktl更新周期為每次會話之前,更新策略為Sktl=HQitl ? C0);
[0115]保證密鑰新鮮性,需要定期更新kQ,例如每天或每月,使用HASH算法可以保證新舊密鑰的獨立性;
[0116]廣播會話密鑰在每次廣播之前進行更新;另外,由于1?和Ctl的安全更新,并且釆用了 HASH算法,會話密鑰的隨機性與獨立性將得以保證。
[0117]組播通信密鑰管理在AMI的所有信息類型中,電價信息以及遠方負荷控制信號可能會以組播的形式傳輸;由于申請加入每個電力項目組的用戶不是固定的,需要每隔一段時間(如每天或者每周)來更新項目組成員,更新周期視實際的電力系統情況進行確定;由此,組播通信的密鑰管理可以分為兩部分:一部分與廣播通信類似,每次會話之前先生成新的組播會話密鑰;另一部分,由于會有用戶加入或退出電力項目組,因此需要更新組密鑰及其相關的附加值;
[0118]組播會話密鑰的生成與使用和廣播的情況類似,主要的區別在與接收者的范圍,其通信步驟過程如下:
[0119]步驟1、發送端(Utl)會話密鑰的生成及使用;
[0120]S1.1GCj=H(GCountj)
[0121]S1.2gskj=H(gkj ? GCj)
[0122]S1.3EData=EgskJ (Data)
[0123]S1.4Signt=HMACgskJ (EData) [0124]先生成組會話密鑰;在S1.1和S1.2中,組會話密鑰gskj由組密鑰gkj和附加值GCountj生成;接著在S1.3和S1.4中利用該會話密鑰加密信息并求取數字簽名;[0125]步驟2、消息傳送;
[0126]u。— {uj: (EData I Signt), Ui e userset (gskj)
[0127]加密信息以及數字簽名通過網絡傳送給第j個電力項目組成員;
[0128]步驟3、接收端(UpUi e userset (gskj))的組播會話密鑰生成與使用;
[0129]S3.1GCj=H(GCountj)
[0130]SSJgSkj=H(Skj^GCj)
[0131 ]S3.3Signr=HMACgskJ (EData)
[0132]IF Signt=Signr
[0133]S3.4Data=DEgskJ (EData)
[0134]END IF
[0135]組播會話密鑰gskj在S3.1和S3.2中生成;然后利用該密鑰驗證數字簽名,并解密信息;
[0136]步驟4、有用戶加入或退出時的密鑰生成與更新;
[0137]當一個用戶打算加入或退出電力項目組時,它必須向發出申請;申請過程是以單播通信的形式完成的,當該申請獲得通過后,就需要對組用戶密鑰進行更新;
[0138](I)用戶Ui (i e [I, η])申請加入或退出電力項目j ;
[0139]S1.1Ci=H (HMACki (Mi ? CDate) ? Counti)
[0140]SUski=HQii^Ci)
[0141]S1.3EData=Eski (request」.)或 EData=Eski (request0Utj)
[0142]S1.4Signt=HMACskt (EData)
[0143]申請消息需要進行加密并簽名;
[0144]⑵申請消息在網間傳送;
[0145]U0 — U0: (EData | Signt)
[0146]通過網絡傳送給U。
[0147]⑶U。驗證用戶的請求;
[0148]S3.1Ci=H (HMACki (Mi ? CDate) ? Counti)
[0149]S3.28^=Η(^ ? Ci)
[0150]S3.3Signr=HMACski (EData)
[0151]IF Signt=Signr
[0152]S3.4requestinj 或 Tequesttju1J=DEki (EData)
[0153]END IF
[0154]在接收到由Uj發來的申請消息后,先對消息進行驗證并解密,然后確認是請求加入還是退出電力項目j ;兩個電力項目有可能是沖突的,這時候加入新的項目組就意味著退出原來定制的項目;
[0155]⑷U。回復用戶的請求;
[0156]S4.1Ci=H (HMACki (Mi ? CDate) ? Counti)
[0157]S4.2ski=H(ki ? Ci)
[0158]IF步驟3驗 證成功
[0159]S4.5EData=Eski (response+)[0160]OTHERWISE
[0161]S4.6EData=Eski (response-)
[0162]END IF
[0163]S4.7Signt=HMACski (EData)
[0164]uQ需要通知申請者申請成功或失敗;
[0165](5)回復消息在網間傳送;
[0166]U0 Ui: (EData | | Signt)
[0167]將回復消息傳送給Ui。
[0168](6)用戶Ui確認回復消息;
[0169]S6.1Ci=H (HMACki (Mi ? CData) ? Counti)
[0170]S6.28^=Η(^ ? Ci)
[0171 ]S6.3Signr=HMACski (EData)
[0172]IF Signt=Signr THEN DO
[0173]S6.4Data=DEski (EData)
[0174]END IF
[0175]用戶接收并確認是否成功加入或退出所申請的電力項目;
[0176](7) U0生成新的組密鑰和附加信息;
[0177]S7.1GCountj=Random (b)
[0178]S7.2gkj=Kgen (Ib)
[0179]如果有用戶加入或退出電力項目組,在組員更新之前需要生成新的組密鑰及相應的附加值;
[0180](8) U0將新的組密鑰及附加值發送給組j內原有的所有成員之前的準備;
[0181]S8.1GCj=H(GCountj)
[0182]S8.2gskj=H(gkj ? GCj)
[0183]S8.3EData=Egskj (GCOuntj, gkj)
[0184]S8.4Signt=HMACgskJ (EData)
[0185](9)應用組播方式將新的組密鑰gkj和附加值GCOuntj發送給項目組j內原有的成員;
[0186]U0 Ui (remaining users): (EData Signt)
[0187](10) U0將新的組密鑰及附加值發送給組j內新加入的成員之前的準備;
[0188]S10.1Ci=H (HMACki (Mi ? CDate) ? Counti)
[0189]S10.Sski=HQii ? Ci)
[0190]S10.3EData Egskj (GCountj, gkj)
[0191]S10.4Signt=HMACgkJ (EData)
[0192](11)采用單播方式將gkj及GCountj發送給新加入項目組j的成員;
[0193]U0 Ui (new users): (EData Signt)
[0194]步驟5、組播密鑰更新策略;
[0195]⑴當電力項目組員沒有變化時,gkj、GCountj> GC」、gsk」的更新策略與廣播的情況類似;[0196]gkj更新周期為特定周期,更新策略為gkj=H(gkj)
[0197]GCountj更新周期為每次會話之前,更新策略為GCountj=GCountj+l
[0198]GCj更新周期為每次會話之前,更新策略為GCj=H(GCountj)
[0199]gskj更新周期為每次會話之前,更新策略為gskj=H(skj ? GCj)
[0200]⑵當電力項目組有用戶加入或退出時,U0需要更新gkj和GCountj,然后將新的數據發送給所有加入該項目的用戶;
[0201]gkj更新周期為特定周期,更新策略為gkj=Kgen(lb);
[0202]GCountj更新周期為特定周期,更新策略為GCountj=Random (b)。
[0203]基本符號及定義:
[0204]η:用戶終端數量,
[0205]m:電力項目數,
[0206]Ui =AMI中的第i個用戶。其中Utl表示管理端設備,其余的表示用戶端設備,
[0207]ki =Ui的用戶密鑰,
[0208]Sk1:第i個電力項目對應的組密鑰,
[0209]Sk1:會話密鑰。i=0時表示廣播會話,其余表示單播會話,
[0210]gskj:第i個電力項目用戶組內組播通信所用會話密鑰,
[0211]C1:附加值,用于生成Ski,
[0212]GC1:附加值,用于生成gski;
[0213]Counti =Ui對應的計數器,用于生成Ci,
[0214]GCount1:第i個電力項目用戶組所對應的計數器,用于生成GCi,
[0215]Data:待加密的信息,
[0216]EData:已加密信息,
[0217]Mi =Ui在前一天所用的電量數據,是一個定長的二進制數據,
[0218]CDate =Mi的采集日期,
[0219]Signt:發送端對加密信息所做的簽名,
[0220]Signr:接收端對加密信息所做的簽名,
[0221]Projectj:第j個電力項目,
[0222]requestinj:加入第j個電力項目的申請,
[0223]request0Utj:退出第j個電力項目的申請,
[0224]response+:管理端設備回復,表示申請成功,
[0225]response-:管理端設備回復,表示申請失敗,
[0226]Kgen(Ib):一個安全的b比特長密鑰生成算法,
[0227]Random(b):一個b比特隨機數生成函數,
[0228]Ek(Data):采用密鑰k的對稱密鑰加密算法,
[0229]DEk(EData):采用密鑰k的對稱密鑰解密算法,
[0230]k Θ c:k 與 c 異或,
[0231]k||c:k 與 c 級聯,
[0232]HMACk(C)哈希函數。該函數具有良好的單向性,即只給定H(X)時,無法計算出X,
[0233]HMACk(C):—個基于密鑰k的鑒權函數,[0234]如圖1和圖2所示,本發明針對安全監控信息處理方法主要是對通信密鑰的管理。智能電表監控系統主要分3級,管理級、組管理級、用戶級。每一級對應的密鑰和管理方法也不相同,圖中根密鑰1?用于廣播通信;組密鑰{gbgb..^gkJ用于組播通信;其他用戶密鑰{ki,k2,...Λη}用于管理端設備與用戶端設備之間的單播通信。在不同層次下使用不同的密鑰和管理方法,使系統更加安全,運行效率更高。
[0235]圖3是初始化流程圖,首先是初始化密鑰的生成,生成公式為:
[0236]Iii=Kgen(Ib), i=0, I, 2,..., η ;
[0237]gki=Kgen(lb), j=l, 2,..., m ;
[0238]Counti=Random(b), i=0, I, 2,...,η ;
[0239]GCountj=Random (b), j=0, I, 2,..., m ; [0240]生成每個用戶端設備及每個電力項目組對應的b比特密鑰。其次是初始化密鑰及附加值的分發,公式為:
[0241]U0 — {u” U2,..., un}: (ki; gkj, Counti, GCountj), i=0, I, 2,..., η ;j=0, I, 2, -",m;用戶密鑰{k1; k2,...,、}以及對應的附加值 ICount1, Count2,…,CountJ將通過安全信道(例如利用密鑰卡)分發給對應的用戶IUpU2,...,1!η}。另外根密鑰kQ及其對應的附加值Countci將分發給所有的用戶。組密鑰Igkpgk2,..., gkj及其相應的附加值(GCount1, GCount2,…,GCountmI將視用戶對電力項目的參與情況,分發給合法的用戶端設備。
[0242]圖4-1與圖4-2是單播通信過程圖,首先先生成會話密鑰,如步驟SI所示,會話密鑰Sktl由計數器Countci以及根密鑰1?共同生成。接著在SI中利用生成的會話密鑰對所要傳送的信息進行加密并求取數字簽名。其次將加密后的信息以及所求得的數字簽名發送給接收端,如步驟S2所示。最后接收端生成會話密鑰,然后利用這個密鑰驗證所接收到的數字簽名,并解密信息,如步驟S3所示。
[0243]圖5是廣播通信過程圖,首先先生成會話密鑰,如步驟SI所示,會話密鑰Sktl由計數器Countci以及根密鑰1?共同生成。接著利用生成的會話密鑰對所要傳送的信息進行加密并求取數字簽名。其次將加密后的信息以及所求得的數字簽名發送給接收端,如步驟S2所示。最后接收端生成會話密鑰,然后利用這個密鑰驗證所接收到的數字簽名,并解密信息,如步驟S3所示。
[0244]圖6是組播通信過程圖,首先生成組會話密鑰,在SI中,組會話密鑰gskj由組密鑰gkj和附加值GCounh生成,接著在利用該會話密鑰加密信息并求取數字簽名。其次加密信息以及數字簽名通過網絡傳送給第j個電力項目組成員,如步驟S2所示。最后組播會話密鑰gskj在S3中生成。然后利用該密鑰驗證數字簽名,并解密信息。
[0245]圖7-1與圖7-2是組播通信密鑰管理過程圖,首先如步驟SI所示,用戶UiQ e [I, η])申請加入或退出電力項目j申請消息需要進行加密并簽名。步驟S2,申請消息在網間傳送,通過網絡傳送給IV步驟S3,Utl在接收到由Uj發來的申請消息后,先對消息進行驗證并解密,然后確認是請求加入還是退出電力項目j。步驟S4為Utl回復用戶的請求,Utl需要通知申請者申請成功或失敗。步驟S5為Utl回復消息在網間傳送,Utl將回復消息傳送給W。步驟6為用戶Ui確認回復消息,用戶接收并確認是否成功加入或退出所申請的電力項目。步驟7為Utl生成新的組密鑰和附加信息,如果有用戶加入或退出電力項目組,在組員更新之前需要生成新的組密鑰及相應的附加值。步驟8為Utl將新的組密鑰及附加值發送給組j內原有的所有成員之前的準備。步驟9為Utl用組播方式將新的組密鑰gh和附加值GCOuntj發送給項目組j內原有的成員。步驟10為Utl將新的組密鑰及附加值發送給組j內新加入的成員之前的準備。步驟11為Utl采用單播方式將gkj及GCountj發送給新加入項目組j的成員。
【權利要求】
1.一種智能電表系統安全監控信息處理方法,其特征在于:包括密鑰管理框架、密鑰生成策略、密鑰更新策略、密鑰分發策略,其中: 密鑰管理框架包括廣播密鑰、組密鑰、單播密鑰;基于密鑰圖結構進行構建,采用分層密鑰管理策略,在這個框架中,廣播密鑰用于廣播通信,組密鑰用于組播通信,單播密鑰用于管理側設備與用戶側的智能電表之間的單播通信; 密鑰生成策略,密鑰生成以及生成會話密鑰所需要的附加信息都將由管理側設備的專用密鑰服務器進行初始化生成,然后分發給相應的用戶側的智能電表;密鑰的生成應滿足如下要求:在安全環境中產生,防止任何形式的泄露;密鑰的長度應根據信息類型的不同而有所區別;生成的密鑰應避免弱密鑰;滿足隨機性和不可預測性;在層次化密鑰管理體制中,不同級別或不同類別的密鑰其產生機制應有所區別; 密鑰分發策略應安全地將密鑰分發給用戶,用戶密鑰以及對應的附加值將通過安全信道分發給對應的用戶,根密鑰及其對應的附加值將分發給所有的用戶,組密鑰及其相應的附加值將視用戶對電力需求響應項目的參與情況,分發給合法的用戶側的智能電表; 密鑰更新策略內容包含用戶登記信息的更新以及密鑰的更新,會話密鑰可使用一次一密的方式進行更新,也可以利用單向函數和舊密鑰進行更新; 密鑰存儲,密鑰管理方法的應用需要預先在通信雙方存儲一些相關信息,包括各種密鑰,計數器,以及附加值。
2.按照權利要求1所述的智能電表系統安全監控信息處理方法,其特征在于: 廣播密鑰的生成策略; 電力項目發布和電價信息這有兩種消息通過廣播傳播,廣播通信的密鑰在每次新的廣播之前都需要生成新的廣播會話密鑰以保證消息的保密性和完整性; 發送端的會話密鑰由計數器以及廣播密鑰共同生成,并利用生成的會話密鑰對所要傳送的信息進行加密并求取數字簽名; 消息傳送,將加密后的信息以及所求得的數字簽名發送給接收端; 接收端的會話密鑰生成與使用,接收端生成會話密鑰,然后利用這個密鑰驗證所接收到的數字簽名,并解密信息; 組播會話密鑰的生成策略; 組播會話密鑰的生成與使用和廣播的情況類似,主要的區別在與接收者的范圍; 用戶申請加入或退出電力項目組,當一個用戶打算加入或退出電力項目組時,它必須發出申請,申請消息需要進行加密并簽名; 管理端設備驗證用戶的請求,在接收到申請消息后,先對消息進行驗證并解密,然后確認是請求加入還是退出;這時候加入新的項目組就意味著退出原來定制的項目組; 如果有用戶加入或退出電力項目組,在組員更新之前需要生成新的組密鑰及相應的附加值,并用組播方式將新的組播密鑰和附加值發送給項目組內原有的成員,采用單播方式將組播密鑰及附加值發送給新加入項目的成員; 單播密鑰的生成策略; 單播密鑰屬于單播模式的消息類型有 計量數據、加入或退出電力項目的申請以及遠程負荷控制,這些消息的傳輸是雙向的; 單播會話密鑰由計量數據、量測日期、計數器以及用戶密鑰共同生成;然后利用生成的會話密鑰對所要傳送的信息進行加密并求取數字簽名。
3.按照權利要求1所述的智能電表系統安全監控信息處理方法,其特征在于: 廣播密鑰的更新策略; 保證密鑰新鮮性,需要定期更新,例如每天或每月;使用HASH算法可以保證新舊密鑰的獨立性; 廣播會話密鑰必須在每次廣播之前進行更新;另外,由于廣播密鑰和附加值的安全更新,并且釆用HASH算法,會話密鑰的隨機性與獨立性將得以保證; 組播密鑰的更新策略; 當電力項目組員沒有變化時,電力項目組對應的組播密鑰、計數器、附加值、會話密鑰的更新策略與廣播的情況類似; 當電力項目組有用戶加入或退出時,管理端設備需要更新電力項目組對應的組播密鑰和計數值,然后將新的數據發送給所有加入該項目的用戶端設備; 單播密鑰的更新策略; 為了保持密鑰新鮮性,單播用戶密鑰需要定期進行更新,如每天、每周,使用HASH函數進行更新; 為了保證保密性 和完整性,會話密鑰在每次新會話開始之前必須更新,更新的效果取決于單播用戶密鑰以及附加值;附加值是通過量測數據、量測日期、計數器、單播用戶密鑰計算得出,就保證了會話密鑰的隨機性。
4.按照權利要求1所述的智能電表系統安全監控信息處理方法,其特征在于: 密鑰管理框架將基于密鑰圖結構進行構建,框架定義為KMF={U,K, R); U=Iu11U2,...,un],是包含所有用戶端成員的非空有限集合; K= {k0} U {k1; k2,..*,kn} U {gk1; gk2,...,gkj ,是包含所有密鑰的非空有限集;其中...,kn}是用戶密鑰集合,{gk1; gk2,...,gkj是組用戶密鑰集合,而1?表示密鑰圖的根密鑰; R是U與K的映射關系集合,RkCIJxK稱為用戶-密鑰關系;當(u,k) eR時,表示用戶u存儲了密鑰k;
框架定義函數 userset(k) = {u| (u, k) e R}; 密鑰管理框架還可以表示為:
U= Iu1, U2, U3I
K= {k0} U {ki, k2, k3} U {gk”gk2}
R= {(U1, k0),(U1, ki),(u” gki),(u2, k0),(u2, k2),(u2, gk2),(u3, k3),(u3, gk!),(u3, gk2)} 其中參與電力項目的用戶集合可以表示為Usersei^gk1) = (11” U3); 在這個框架中,根密鑰1?用于廣播通信;組密鑰Igkpgk2,..^gkJ用于組播通信;其他用戶密鑰{ki,k2,...Λη}用于管理端設備與用戶端設備之間的單播通信。
5.按照權利要求1所述的智能電表系統安全監控信息處理方法,其特征在于: 單播密鑰通信管理: 單播模式的消息類型有:計量數據,加入或退出電力項目的申請以及遠程負荷控制;這些消息的傳輸是雙向的,從管理端傳送給用戶端或者從用戶端傳送給管理端;在傳輸過程中,必須保證消息的保密性和完整性;為此,會話密鑰必須在每次新會話之前進行更新;具體的單播通信密鑰管理包含以下三步: 步驟一、發送端的會話密鑰生成與使用:
U0 (或 Ui):S1.1Ci=H(HMACki (Mi ? CDate) ? Counti)
S1.Sski=HQii ? Ci)
S1.3EData=Eski (Data)
S1.4Signt=HMACski (EData) 首先先生成會話密鑰;如步驟S1.1和S1.2所示,會話密鑰Ski由計量數據Mi,量測日期⑶ate,計數器Counti以及用戶密鑰Ici共同生成;然后在S1.3和S1.4中利用生成的會話密鑰對所要傳送的信息進行加密并求取數字簽名; 步驟二、消息傳送:
U0(Ui) — Ui(Uci): (EData I Signt) 將加密后的信息以及所求得的數字簽名發送給接收端; 步驟三、接收端的會話密鑰生成與使用;
Ui (或 U。):S3.1Ci=H(HMACki (Mi ? CDate) ? Counti)
S3.Sski=HQii ? Ci)
S3.3Signr=HMACski (EData)
IF Signt=Signr
S3.4Data=DEski (EData)
END IF 接收端也能獲得生成會話密鑰所需的數據;S3.1和S3.2生成會話密鑰,然后利用這個密鑰,驗證所接收到的數字簽名,并解密信息; 步驟四、單播密鑰更新策略; kj更新周期為特定周期,更新策略為Ici=H(Iii) Counti更新周期為每次會話之前,更新策略為Counti=Count^l Ci更新周期為每次會話之前,更新策略為Ci=H (HMACki (Mi ? CDate) ? Counti) Ski更新周期為每次會話之前,更新策略為Ski=HQii ? Ci) 為了保持密鑰新鮮性,用戶密鑰h需要定期進行更新,比如每天、每周;使用HASH函數進行更新不僅能夠避免過多的網絡分發開銷,還能夠保證密鑰的獨立性; 為了保證保密性和完整性,會話密鑰在每次新會話開始之前必須更新;在這種更新策略中,更新的效果取決于用戶密鑰匕以及附加值Ci ;因此對于通信雙方來說,如何獲取附加值Ci是非常重要的;首先,量測數據Mi容易在智能電表與MDMS中獲得;但是在無人在家的情況下,前后幾天的量測數據將保持不變;因此我們用量測日期CDate加以處理來增加密鑰的新鮮性;其次,Mi與CDate容易由猜測獲得,因此我們利用安全的Ici通過HMACki (Mi ? CDate)處理,就保證了會話密鑰的隨機性;第三,由于一天內將會有多條信息進行通信,可用計數器CountiW以區別,發完一條信息后Counti自動加I。
6.按照權利要求1所述的智能電表系統安全監控信息處理方法,其特征在于: 廣播通信密鑰管理有兩種消息是通過廣播傳播的,分別是電力項目發布和電價信息;廣播通信的密鑰管理與單播的密鑰管理類似;每次新的廣播之前都需要生成新的廣播會話密鑰以保證消息的保密性和完整性;具體的密鑰管理流程;步驟一、發送端的會話密鑰生成與使用;
U0:S1.1C0=H(Count0)
S1.2sk0=H(k0 ? C0)
S1.3EData=Esk0 (Data)
S1.4Signt=HMACsk0 (EData) 首先先生成會話密鑰;如步驟S1.1和S1.2所示,會話密鑰Sktl由計數器Countci以及根密鑰1?共同生成;接著在S1.3和S1.4中利用生成的會話密鑰對所要傳送的信息進行加密并求取數字簽名; 步驟二、消息傳送;
U0 — Iu11U2,..., un}: (EData| I Signt) 將加密后的信息以及所求得的數字簽名發送給接收端; 步驟三、接收端的會話密鑰生成與使用;
Ui (i=l, 2,...,n):S3.1C0=H(Count0)
S3.2sk0 =H (k0 ? C0)
IF Signt=Signr
S3.4Data=DEsk0 (EData)
END IF 接收端生成會話密鑰,然后利用這個密鑰驗證所接收到的數字簽名,并解密信息; 步驟四、廣播密鑰更新策略; 1?更新周期為特定周期,更新策略為kfHCO ; Count0更新周期為每次會話之前,更新策略為Countci=Countci+1 ; C。更新周期為每次會話之前,更新策略為Cci=H(Countci); Sktl更新周期為每次會話之前,更新策略為Sktl=HQitl ? C0); 保證密鑰新鮮性,需要定期更新kQ,例如每天或每月,使用HASH算法可以保證新舊密鑰的獨立性; 廣播會話密鑰在每次廣播之前進行更新;另外,由于h和Ctl的安全更新,并且釆用了HASH算法,會話密鑰的隨機性與獨立性將得以保證。
7.按照權利要求1所述的智能電表系統安全監控信息處理方法,其特征在于: 組播通信密鑰管理在AMI的所有信息類型中,電價信息以及遠方負荷控制信號可能會以組播的形式傳輸;由于申請加入每個電力項目組的用戶不是固定的,需要每隔一段設定時間來更新項目組成員,更新周期視實際的電力系統情況進行確定;由此,組播通信的密鑰管理可以分為兩部分:一部分與廣播通信類似,每次會話之前先生成新的組播會話密鑰;另一部分,由于會有用戶加入或退出電力項目組,因此需要更新組密鑰及其相關的附加值; 組播會話密鑰的生成與使用和廣播的情況類似,主要的區別在與接收者的范圍,其通信步驟過程如下: 步驟1、發送端(Utl)會話密鑰的生成及使用;
S1.1GCj=H(GCountj)
S1.2gskj=H(gkj ? GCj)S1.3EData=EgskJ (Data)
S1.4Signt=HMACgskJ (EData) 先生成組會話密鑰;在S1.1和S1.2中,組會話密鑰gskj由組密鑰gkj和附加值GCountj生成;接著在S1.3和S1.4中利用該會話密鑰加密信息并求取數字簽名; 步驟2、消息傳送;
U0 — {uj: (EData I Signt), Ui e userset (gskj) 加密信息以及數字簽名通過網絡傳送給第j個電力項目組成員; 步驟3、接收端(UpUi e userset (gskj))的組播會話密鑰生成與使用;
S3.1GCj=H(GCountj)
S3.2gskj=H(skj ? GCj)
S3.3Signr=HMACgskJ (EData)
IF Signt=Signr
S3.4Data=DEgskJ (EData)
END IF 組播會話密鑰gskj在S3.1和S3.2中生成;然后利用該密鑰驗證數字簽名,并解密信息; 步驟4、有用戶加入或退出時的密鑰生成與更新; 當一個用戶打算加入或退出電力項目組時,它必須向發出申請;申請過程是以單播通信的形式完成的,當該申請獲得通過后,就需要對組用戶密鑰進行更新; ⑴用戶UiQ e [I, η])申請加入或退出電力項目j ;
S1.1Ci=H (HMACki (Mi ? CDate) ? Counti)
S1.Sski=HQii ? Ci)
S1.3EData=Eski (requestmj)或 EData=Eski (request0Ut j)
S1.4Signt=HMACskt (EData) 申請消息需要進行加密并簽名; ⑵申請消息在網間傳送;
U0 — U0: (EData | | Signt) 通過網絡傳送給U。 ⑶U0驗證用戶的請求;
S3.1Ci=H (HMACki (Mi ? CDate) ? Counti)
S3.Sski=HQii ? Ci)
S3.3Signr=HMACski (EData)
IF Signt=Signr
S3.4requestinj 或 request0Ut j=DEki (EData)
END IF 在接收到由發來的申請消息后,先對消息進行驗證并解密,然后確認是請求加入還是退出電力項目j ;兩個電力項目有可能是沖突的,這時候加入新的項目組就意味著退出原來定制的項目; (4)U0回復用戶的請求;S4.1Ci=H (HMACki (Mi ? CDate) ? Counti)
S4.Sski=HQii ? Ci) IF步驟3驗證成功
S4.5EData=Eski (response+)
OTHERWISE
S4.6EData=Eski (response-)
END IF
S4.7Signt=HMACski (EData) U0需要通知申請者申請成功或失敗; (5)回復消息在網間傳送;
U0 — U1: (EData | | Signt) 將回復消息傳送給ui; (6)用戶Ui確認回復消息;
S6.1Ci=H (HMACki (Mi ? CData) ? Counti)
S6.Sski=HQii ? Ci)
S6.3Signr=HMACski (EData)
IF Signt=Signr THEN DO
S6.4Data=DEski (EData)
END IF 用戶接收并確認是否成功加入或退出所申請的電力項目; (7)U0生成新的組密鑰和附加信息;
S7.1GCountj=Random (b);
S7.2gkj=Kgen(lb); 如果有用戶加入或退出電力項目組,在組員更新之前需要生成新的組密鑰及相應的附加值; ⑶Utl將新的組密鑰及附加值發送給組j內原有的所有成員之前的準備;
S8.1GCj=H(GCountj);
S8.2gSkj=H(gkj ? GCj);
S8.3EData=EgskJ (GCOuntj, gkj);
S8.4Signt=HMACgskJ (EData); ⑶應用組播方式將新的組密鑰gkj和附加值GCOuntj發送給項目組j內原有的成員; U0 Ui (remaining users): (EData Signt) (10)Utl將新的組密鑰及附加值發送給組j內新加入的成員之前的準備;
S10.1Ci=H (HMACki (Mi ? CDate) ? Counti);
S10.Sski=HQii ? Ci);
S10.3EData Egskj (GCountj, gkj);
S10.4Signt=HMACgkJ (EData); (11)采用單播方式將gkj及GCountj發送給新加入項目組j的成員;
U0 Ui (new users): (EData Signt)步驟5、組播密鑰更新策略; ⑴當電力項目組員沒有變化時,gkj、GCountj、GCj、gskj的更新策略與廣播的情況類似; gkj更新周期為特定周期,更新策略為gkj=H(gkj); GCountj更新周期為每次會話之前,更新策略為GCountj=GCountj+l ; GCj更新周期為每次會話之前,更新策略為GCfH(GCountj); gskj更新周 期為每次會話之前,更新策略為gskj=H(skj ? GCj); ⑵當電力項目組有用戶加入或退出時,U0需要更新gkj和GCountj,然后將新的數據發送給所有加入該項目的用戶; gkj更新周期為特定周期,更新策略為gkj=Kgen(lb); GCountj更新周期為特定周期,更新策略為GCountj=Random(b)。
【文檔編號】H04L9/08GK103763094SQ201410003716
【公開日】2014年4月30日 申請日期:2014年1月3日 優先權日:2014年1月3日
【發明者】康凱, 于惠宣, 魏劍嵬, 楊祖業, 李世興 申請人:沈陽中科博微自動化技術有限公司