本發(fā)明涉及通信加密技術(shù)領(lǐng)域,尤其涉及一種智能電能表通信加密算法。
背景技術(shù):
信息技術(shù)推動了電力信息化建設(shè)的發(fā)展,智能電網(wǎng)作為當(dāng)下的一種現(xiàn)代電網(wǎng),它將信息流、業(yè)務(wù)流、電力流高度融合于一體,已經(jīng)成為世界各國發(fā)展的新趨勢、新潮流。智能電能表作為智能電網(wǎng)的關(guān)鍵部分,它能夠及時反映最新的電力市場信息—電價(jià)、供應(yīng)的電量和需求的電量。而電能表作為一個計(jì)量產(chǎn)品,其相關(guān)數(shù)據(jù)的安全傳輸和存儲是電能表眾多功能中的核心基礎(chǔ),只有確保數(shù)據(jù)的安全通訊才能使智能電網(wǎng)更加安全和可靠。
國內(nèi)對智能電網(wǎng)安全性的研究也緊跟著國際的發(fā)展步伐,從一開始就高度關(guān)注iec61850在電網(wǎng)和變電站系統(tǒng)中的應(yīng)用,并在智能電網(wǎng)技術(shù)研究中取得了顯著成果。目前智能電能表通信大多采用gcm算法進(jìn)行加密,gcm是建立在128bits分組密鑰基礎(chǔ)上的一種高速認(rèn)證加密算法,采用aes(高級加密標(biāo)準(zhǔn))的ctr(計(jì)數(shù)器)模式進(jìn)行加密和定義在gf(伽羅華域)上的ghash(伽羅華散列)函數(shù)進(jìn)行認(rèn)證。gcm包含一種適用于ieeec802.1ae協(xié)議的gcm高速硬件結(jié)構(gòu),可以同時處理多組數(shù)據(jù),算法吞吐率達(dá)到162.56gbit/s。gcm算法包括gcm模式(加密認(rèn)證模式)、gmac模式(認(rèn)證模式)和null模式(非加密非認(rèn)證模式),智能電能表傳輸報(bào)文使用gcm算法的三種模式實(shí)施安全加密,在提高傳輸效率的同時大大提升了傳輸安全性。
但是,gcm算法較復(fù)雜,通過gcm算法對智能電能表傳輸報(bào)文進(jìn)行加密時耗時較長,還有g(shù)cm高速硬件成本較高。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種智能電能表通信加密算法,以解決目前gcm加密算法計(jì)算復(fù)雜,耗時較長的問題。
本發(fā)明提供了一種智能電能表通信加密算法,所述算法包括:
將原始數(shù)據(jù)安全散列成256bits的消息摘要;
將所述消息摘要的前20bits作為提取密鑰的編號,生成密鑰數(shù)據(jù);
將所述密鑰數(shù)據(jù)擴(kuò)展生成16個子密鑰;
根據(jù)所述子密鑰對64bits明文進(jìn)行加密,得到64bits密文。
可選的,所述將原始數(shù)據(jù)安全散列成256bits的消息摘要,具體包括:
將原始數(shù)據(jù)劃分成多個數(shù)據(jù)塊,每個數(shù)據(jù)塊的大小均為512bits,原始數(shù)據(jù)y用劃分后的數(shù)據(jù)塊表示為y=n1//n2//...nt;
分別對32bits的寄存器h0、h1、h2、h3、h4、h5、h6、h7進(jìn)行初始化;
分別對初始化的32bits寄存器進(jìn)行賦值,令a=h0,b=h1,c=h2,d=h3,e=h4,f=h5,g=h6,h=h7;
分別對32bits寄存器再次進(jìn)行賦值,令h=g,g=f,f=e,e=d+t1,d=c,c=b,b=a,a=t1+t2;
分別對32bits寄存器再次進(jìn)行賦值,令h0=a+h0,h1=b+h1,h2=c+h2,h3=d+h3,h4=e+h4,h5=f+h5,h6=g+h6,h7=h+h7;
最后輸出h0//h1//h2//h3//h4//h5//h6//h7,得到256bits的消息摘要。
可選的,所述將所述密鑰數(shù)據(jù)擴(kuò)展生成16個子密鑰,具體包括:
將所述密鑰數(shù)據(jù)分成均等的a0,b0兩部分;
對a0,b0分別進(jìn)行迭代循環(huán)移位,分別得到ai,bi,其中,1≤i≤16;
分別對ai,bi進(jìn)行壓縮置換,得到48bits的子密鑰ki,其中,1≤i≤16。
可選的,所述根據(jù)所述子密鑰對64bits明文進(jìn)行加密,得到64bits密文,具體包括:
待加密的64bits數(shù)據(jù)經(jīng)過64*64的數(shù)據(jù)塊按位重新組合,輸出重新組合后的64bits數(shù)據(jù),并將其均分為{l0,r0}兩部分;
采用子密鑰ai,bi分別對{l0,r0}進(jìn)行加密,得到{l16,r16};
對{l16,r16}進(jìn)行初始置換的逆變換,得到64bits密文。
可選的,所述得到64bits密文后,之后包括:
向通信接收端發(fā)送認(rèn)證消息,獲取所述通信接收端的認(rèn)證反饋消息;
對所述認(rèn)證反饋消息進(jìn)行解密;
當(dāng)解密后的認(rèn)證反饋消息與所述認(rèn)證消息一致時,建立安全通信。
可選的,所述向通信接收端發(fā)送認(rèn)證消息,具體包括:
將原始數(shù)據(jù)消息t進(jìn)行安全散列,生成消息摘要sac;
取所述消息摘要sac前20bits作為密鑰編號,提取密鑰數(shù)據(jù);
采用所述密鑰數(shù)據(jù)對所述原始數(shù)據(jù)消息t進(jìn)行加密,得到消息認(rèn)證碼mac;
將所述消息摘要sac與消息認(rèn)證碼mac填充至安全報(bào)文的擴(kuò)展字段,獲得認(rèn)證消息,并將所述認(rèn)證消息發(fā)送至通信接收端。
可選的,所述對所述認(rèn)證反饋消息進(jìn)行解密,具體包括:
所述通信接收端接收所述認(rèn)證消息,對所述消息摘要sac進(jìn)行安全散列;
取安全散列后數(shù)據(jù)的前20bits作為密鑰編號,提取密鑰;
采用所述密鑰對所述消息認(rèn)證碼mac進(jìn)行解密,得到數(shù)據(jù)消息t’;
對所述數(shù)據(jù)消息t’進(jìn)行安全散列,得到消息摘要sac’。
可選的,所述當(dāng)解密后的認(rèn)證反饋消息與所述認(rèn)證消息一致時,建立安全通信,具體包括:
當(dāng)所述消息摘要sac’與消息摘要sac相同時,表明認(rèn)證成功,建立安全通信。
本發(fā)明提供的技術(shù)方案可以包括以下有益效果:
本發(fā)明提供的智能電能表通信加密算法包括:將原始數(shù)據(jù)安全散列成256bits的消息摘要,將消息摘要的前20bits作為提取密鑰的編號,生成密鑰數(shù)據(jù),將密鑰數(shù)據(jù)擴(kuò)展成16個子密鑰,根據(jù)子密鑰對64bits明文進(jìn)行加密,得到64bits密文。本申請?zhí)峁┑募用芩惴軌虺浞譂M足報(bào)文傳輸在安全性、可靠性和實(shí)時性上的要求,既可方便管理、提高互操作性,又能實(shí)現(xiàn)智能電能表報(bào)文的安全傳輸。還有本申請利用散列消息摘要的前20bits作為提取密鑰的編號,能夠降低密鑰的管理和分配難度,提高加密算法的安全系數(shù)。
應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本發(fā)明。
附圖說明
為了更清楚地說明本發(fā)明的技術(shù)方案,下面將對實(shí)施例中所需要使用的附圖作簡單地介紹,顯而易見地,對于本領(lǐng)域普通技術(shù)人員而言,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例提供的一種智能電能表通信加密算法的流程示意圖;
圖2為本發(fā)明實(shí)施例提供的一種智能電能表通信加密算法中寄存器kt產(chǎn)生流程圖;
圖3為本發(fā)明實(shí)施例提供的一種智能電能表通信加密算法中s300的詳細(xì)流程示意圖;
圖4為本發(fā)明實(shí)施例提供的一種智能電能表通信加密算法中s400的詳細(xì)流程示意圖;
圖5為本發(fā)明實(shí)施例提供的一種智能電能表通信加密算法的認(rèn)證方法原理圖
圖6為本發(fā)明實(shí)施例提供的一種智能電能表通信加密算法的認(rèn)證方法流程示意圖;
圖7為本發(fā)明實(shí)施例提供的一種智能電能表通信加密算法的認(rèn)證方法中s500的詳細(xì)流程示意圖;
圖8為基于gcm算法的報(bào)文幀模型的結(jié)構(gòu)圖;
圖9為本發(fā)明實(shí)施例提供的一種智能電能表通信加密算法的認(rèn)證方法中s600的詳細(xì)流程示意圖。
具體實(shí)施方式
智能電能表是智能變電站關(guān)鍵技術(shù)之一,由測量單元、數(shù)據(jù)處理單元、通信單元等組成,具有電能量計(jì)量、數(shù)據(jù)處理、實(shí)時監(jiān)測、自動控制、信息交互等功能。目前智能電能表按用戶類型可分為單相表和三相表;按繳費(fèi)方式的不同,可分為本地表和遠(yuǎn)程表。單相表,顧名思義,就是普通用戶所使用的220v電所用來計(jì)量的電能表;三相表,即工業(yè)上所使用的380v電所用來計(jì)量的電能表;本地表,即在用戶方,可使用ic卡繳費(fèi)的電能表;遠(yuǎn)程表,此種表一般不安裝在用戶范圍,用戶需去供電局繳費(fèi)。
隨著iec61850標(biāo)準(zhǔn)的引入,解決了智能電能表之間互操作性一系列問題,但使用大量的現(xiàn)代新網(wǎng)絡(luò)技術(shù),給整個信息可靠性和安全性帶來巨大的風(fēng)險(xiǎn)。
參見圖1,為本發(fā)明實(shí)施例提供的智能電能表通信加密算法的流程圖。
s100:將原始數(shù)據(jù)安全散列成256bits的消息摘要。
具體地,將任意的輸入數(shù)據(jù)信息長度在小于264二進(jìn)制位的情況下,將數(shù)據(jù)散列成256bits的消息摘要,實(shí)現(xiàn)過程具體如下:
s101:將原始數(shù)據(jù)劃分成多個數(shù)據(jù)塊,每個數(shù)據(jù)塊的大小均為512bits,原始數(shù)據(jù)y用劃分后的數(shù)據(jù)塊表示為y=n1//n2//...nt。
具體地,將原始數(shù)據(jù)消息劃分成多個數(shù)據(jù)塊,每個數(shù)據(jù)塊的大小都是512bits,若最后一個數(shù)據(jù)塊不足512bits,則需要對該塊進(jìn)行消息填充,原始數(shù)據(jù)消息y用劃分后的數(shù)據(jù)塊表示為y=n1//n2//...nt。
s102:分別對32bits的寄存器h0、h1、h2、h3、h4、h5、h6、h7進(jìn)行初始化.
s103:分別對初始化的32bits寄存器進(jìn)行賦值,令a=h0,b=h1,c=h2,d=h3,e=h4,f=h5,g=h6,h=h7。
s104:分別對32bits寄存器再次進(jìn)行賦值,令h=g,g=f,f=e,e=d+t1,d=c,c=b,b=a,a=t1+t2。
具體地,t1和t2分別根據(jù)公式(1)和公式(2)得到,分別是:
其中,式(1)中的kt的獲得方式如下:
將每塊512bits的數(shù)據(jù)塊nj存入64個32bits的寄存器kt里,其中,t由0到63。而
kt具體產(chǎn)生的過程如圖2所示:
其中,
s105:分別對32bits寄存器再次進(jìn)行賦值,令h0=a+h0,h1=b+h1,h2=c+h2,h3=d+h3,h4=e+h4,h5=f+h5,h6=g+h6,h7=h+h7。
s106:最后輸出h0//h1//h2//h3//h4//h5//h6//h7,得到256bits的消息摘要。
s200:將所述消息摘要的前20bits作為提取密鑰的編號,生成密鑰數(shù)據(jù)。
具體地,密鑰采用將密鑰分配和動態(tài)管理機(jī)制結(jié)合產(chǎn)生,采用主頻為125mhz的hp9000/887服務(wù)器對含有104萬多個密鑰的密鑰池進(jìn)行編號,利用消息摘要的前20bits作為提取密鑰的編號,這樣可以降低密鑰的管理和分配難度,也提高了本申請所述加密算法的安全系數(shù)。
s300:將所述密鑰數(shù)據(jù)擴(kuò)展生成16個子密鑰。
具體地,密鑰一般為64bits,實(shí)際上只用到56bits,第8、16、24、32、40、48、56、64bits是校驗(yàn)位。擴(kuò)展生成子密鑰的方法如圖3所示。
s301:將所述密鑰數(shù)據(jù)分成均等的a0,b0兩部分。
具體地,將56bits輸入密鑰分成均等的a0,b0兩部分,每部分為28bits,按一定的規(guī)律把64bits輸入密鑰的位置填入a0,b0相應(yīng)的位置。如按表1規(guī)律進(jìn)行:
表1
s302:對a0,b0分別進(jìn)行迭代循環(huán)移位,分別得到ai,bi,其中,1≤i≤16。
具體地,a0,b0作為迭代的起始密鑰,進(jìn)行16次迭代,每次迭代都按一定規(guī)律循環(huán)左移。例如在第1次迭代時密鑰循環(huán)左移1位,第3次迭代時密鑰循環(huán)左移2位,如表2所示規(guī)律進(jìn)行:
表2
s303:分別對ai,bi進(jìn)行壓縮置換,得到48bits的子密鑰ki,其中,1≤i≤16。
具體地,每次迭代后生成的兩個28bits密鑰按照一定規(guī)律填入相應(yīng)位置進(jìn)行一個56*48壓縮置換,生成一個48bits的子密鑰ki。經(jīng)過16次迭代后,最終形成16個子密鑰。
s400:根據(jù)所述子密鑰對64bits明文進(jìn)行加密,得到64bits密文。
具體地,根據(jù)s300得到的16個不同的子密鑰對64bits明文進(jìn)行加密,得到64bits密文,具體步驟如圖4所示:
s401:64bits明文經(jīng)過64*64的數(shù)據(jù)塊按位重新組合,輸出重新組合后的64bits明文,并將其均分為{l0,r0}兩部分。
具體地,以64bits為分組對數(shù)據(jù)進(jìn)行加密,64bits一組的明文從算法的一端輸入,64bits的密文從另一端輸出,本申請?zhí)峁┑募用芩惴ㄊ且粋€對稱算法,加密和解密用的是同一個算法。
64bits明文經(jīng)過64*64(輸入為64bits,輸出也為64bits)的數(shù)據(jù)塊按位重新組合,并把輸出分為{l0,r0}兩部分,每部分各長32bits。按位重新組合規(guī)律可采用表3的規(guī)律進(jìn)行。
表3
s402:采用子密鑰ai,bi分別對{l0,r0}進(jìn)行加密,得到{l16,r16}。
具體地,{l0,r0}經(jīng)過子密鑰a1,b1加密變換得到新的64bits數(shù)據(jù){l1,r1},稱為第一圈運(yùn)算;再對{l1,r1}經(jīng)過子密鑰a2,b2加密變換得到{l2,r2},重復(fù)操作一直到{l16,r16},共16圈。
s403:對{l16,r16}進(jìn)行初始置換的逆變換,得到64bits密文。
通過加密算法對明文進(jìn)行加密,但是進(jìn)行安全通信前需要對其進(jìn)行認(rèn)證,只有認(rèn)證成功才能進(jìn)行安全通信,認(rèn)證原理如圖5所示。
認(rèn)證方法流程如圖6所示。
s500:向通信接收端發(fā)送認(rèn)證消息,獲取所述通信接收端的認(rèn)證反饋消息。
具體地,對加密算法進(jìn)行認(rèn)證時,需要進(jìn)行雙側(cè)認(rèn)證,即智能電能表sm1向智能電能表sm2認(rèn)證,認(rèn)證成功后,智能電能表sm2向智能電能表sm1認(rèn)證,當(dāng)雙側(cè)均認(rèn)證成功后,才可以建立安全通信。
以智能電能表sm1向智能電能表sm2認(rèn)證為例,發(fā)送認(rèn)證消息的具體步驟如圖7所示:
s501:將原始數(shù)據(jù)消息t進(jìn)行安全散列,生成消息摘要sac。
s502:取所述消息摘要sac前20bits作為密鑰編號,提取密鑰數(shù)據(jù)。
s503:采用所述密鑰數(shù)據(jù)對所述原始數(shù)據(jù)消息t進(jìn)行加密,得到消息認(rèn)證碼mac。
s504:將所述消息摘要sac與消息認(rèn)證碼mac填充至安全報(bào)文的擴(kuò)展字段,獲得認(rèn)證消息,并將所述認(rèn)證消息發(fā)送至通信接收端。
具體地,iec61850標(biāo)準(zhǔn)規(guī)定了goose,smv,mms這3種報(bào)文的格式,并提出采用虛擬局域網(wǎng)(vlan)技術(shù)和優(yōu)先級技術(shù)來優(yōu)化網(wǎng)絡(luò)。iec62351標(biāo)準(zhǔn)對goose報(bào)文進(jìn)行了擴(kuò)展,充分使用了2個reservedfield(保留字段)以及增加的extension(擴(kuò)展)字段,該標(biāo)準(zhǔn)推薦采用消息認(rèn)證碼(mac)的方式來保證報(bào)文的完整性,但沒有具體提出采用何種認(rèn)證方案。根據(jù)建議,在20個字節(jié)的擴(kuò)展字段中定義了2個字段:序列號(sn)字段、mac字段。前者占4個字節(jié),主要對應(yīng)goose數(shù)據(jù)中的seqnum,以方便gcm計(jì)算,后者為16個字節(jié)的驗(yàn)證碼,因?yàn)?6個字節(jié)的mac能夠提供最好的安全性。報(bào)文格式如下表所示,其中tpi表示傳送編程接口;tci表示終端控制接口;apdu表示應(yīng)用協(xié)議數(shù)據(jù)單元。
基于gcm算法的擴(kuò)展報(bào)文格式
在iec61850標(biāo)準(zhǔn)擴(kuò)展報(bào)文格式優(yōu)點(diǎn)的基礎(chǔ)上,設(shè)計(jì)了適合gcm算法處理的報(bào)文模型,如圖8所示。通過重新定義了保留字段1,把保留字段1分為a、b兩個部分,每個部分占一個字節(jié)。a表示擴(kuò)展字段長度,b表示加密模式,通過兩者不同的組合定義來確定報(bào)文是否需要加密和采用何種加密模式。
模型規(guī)定當(dāng)a=0時,b為任意值時,表示報(bào)文為原始報(bào)文,即不需要進(jìn)行任何加密認(rèn)證措施,以明文方式進(jìn)行發(fā)送,選擇gcm算法的null模式:當(dāng)a=20,表示此報(bào)文為擴(kuò)展報(bào)文,且擴(kuò)展字段大小為20個字節(jié),此時定義b=0表示擴(kuò)展報(bào)文選擇gcm認(rèn)證模式,定義b=255表示擴(kuò)展報(bào)文選擇gcm加密認(rèn)證模式,0<b<255為預(yù)留字段。這樣的定義使得智能電能表方便對不同報(bào)文進(jìn)行分類處理,提高其靈活性。
對于智能電能表(smartmeter,簡稱sm)sm1,將長度為1224bits的原始數(shù)據(jù)消息t1進(jìn)行安全散列計(jì)算,得到消息摘要sac1,取消息摘要sac1前20bits作為密鑰的編號,提取密鑰數(shù)據(jù);利用提取的密鑰數(shù)據(jù)對原始數(shù)據(jù)消息t1進(jìn)行des數(shù)據(jù)加密,得到消息認(rèn)證碼mac1;然后將生成的消息摘要sac1與消息認(rèn)證碼mac1填充到安全報(bào)文的擴(kuò)展字段,再將安全報(bào)文傳送給智能電能表sm2。
s600:對所述認(rèn)證反饋消息進(jìn)行解密。
具體地,如圖9所示,對認(rèn)證反饋消息進(jìn)行解密的詳細(xì)步驟如下:
s601:所述通信接收端接收所述認(rèn)證消息,對所述消息摘要sac進(jìn)行安全散列。
s602:取安全散列后數(shù)據(jù)的前20bits作為密鑰編號,提取密鑰。
s603:采用所述密鑰對所述消息認(rèn)證碼mac進(jìn)行解密,得到數(shù)據(jù)消息t’。
s604:對所述數(shù)據(jù)消息t’進(jìn)行安全散列,得到消息摘要sac’。
具體地,智能電能表sm2接收到認(rèn)證消息后,先對消息摘要sac1進(jìn)行安全散列,取其前20bits提取密鑰;再利用密鑰對消息認(rèn)證碼mac1進(jìn)行解密,得到原始數(shù)據(jù)消息t1,對其進(jìn)行安全散列計(jì)算,得到消息摘要sac2。
s700:當(dāng)解密后的認(rèn)證反饋消息與所述認(rèn)證消息一致時,建立安全通信。
具體地,比較消息摘要sac與解密后的消息摘要sac2,若兩者相同,則認(rèn)為此次智能電能表sm1的認(rèn)證成功,能確信是sm1發(fā)送的數(shù)據(jù)報(bào)文,并且數(shù)據(jù)完整未修改。
同理,再由智能電能表sm2向智能電能表sm1發(fā)送安全,讓智能電能表sm1進(jìn)行驗(yàn)證,證明智能電能表sm2認(rèn)證成功,能確信是sm2發(fā)送的數(shù)據(jù)報(bào)文,并且數(shù)據(jù)完整未修改。
當(dāng)兩者都認(rèn)證成功,則可以進(jìn)行安全通信,接下來時間即為此次安全認(rèn)證內(nèi)的安全通信時段,可以發(fā)送goose跳閘命令和合閘命令(goose命令是iec61850標(biāo)準(zhǔn)規(guī)定的命令,是最后一步),在這個安全通信時段里發(fā)送goose報(bào)文會非常安全,從而保證了消息的機(jī)密性和完整性。
從上述實(shí)施例可以看出,本發(fā)明實(shí)施例針對智能電能表的特殊安全需求,設(shè)計(jì)了一種加密算法來實(shí)現(xiàn)報(bào)文安全傳輸?shù)膶?shí)現(xiàn)方式,并證明了其能夠充分滿足報(bào)文傳輸在安全性、可靠性和實(shí)時性上的要求,既可方便管理、提高互操作性,又能實(shí)現(xiàn)智能電能表報(bào)文的安全傳輸。還有本發(fā)明實(shí)施例提供的加密算法計(jì)算簡便,耗時較少。
本領(lǐng)域技術(shù)人員在考慮說明書及實(shí)踐這里發(fā)明的公開后,將容易想到本發(fā)明的其它實(shí)施方案。本申請旨在涵蓋本發(fā)明的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本發(fā)明的一般性原理并包括本發(fā)明未公開的本技術(shù)領(lǐng)域中的公知常識或慣用技術(shù)手段。說明書和實(shí)施例僅被視為示例性的,本發(fā)明的真正范圍和精神由下面的權(quán)利要求指出。
以上所述的本發(fā)明實(shí)施方式并不構(gòu)成對本發(fā)明保護(hù)范圍的限定。