一種基于lfsr的101規(guī)約控制指令安全通信方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,尤其是一種基于LFSR的101規(guī)約控制指令安全通信方法。
【背景技術(shù)】
[0002] 線性反饋移位寄存器(linear feedback shift register,LFSR)是指,給定前一 狀態(tài)的輸出,將該輸出的線性函數(shù)再用作輸入的移位寄存器。其中,異或運(yùn)算是LFSR最常見 的單比特線性函數(shù):對寄存器的某些位進(jìn)行異或操作后作為輸入,再對寄存器中的各比特 進(jìn)行整體移位。
[0003] 101規(guī)約是配電網(wǎng)絡(luò)通信的協(xié)議,可以實(shí)現(xiàn)與電力設(shè)備的遠(yuǎn)程通信及遠(yuǎn)動(dòng)控制。 101規(guī)約是IEC870-5-101的簡稱,其配套標(biāo)準(zhǔn)的名稱是L/T 634.5101-2002。該規(guī)約規(guī)定了 兩種數(shù)據(jù)幀格式,一種固定長數(shù)據(jù)幀,另外一種是可變長數(shù)據(jù)幀。
[0004] 其中,固定長數(shù)據(jù)幀格式如下:
[0005] 啟動(dòng)字符(10H)
[0006] 控制域(C)
[0007] 鏈路地址域(A)
[0008] 幀校驗(yàn)和(CS)
[0009] 結(jié)束字符(16H)
[0010] 而可變長數(shù)據(jù)幀格式如下:
[0011] 啟動(dòng)字符(68H)
[0012] 長度(L)
[0013] 長度重復(fù)(L)
[0014] 啟動(dòng)字符(68H)
[0015] 控制域(C)
[0016] 鏈路地址域(A)
[0017]鏈路用戶數(shù)據(jù)(可變長度,記為UsrData)
[0018] 幀校驗(yàn)和(CS)
[0019] 結(jié)束字符(16H)
[0020] 其中,可變幀主要用于傳輸數(shù)據(jù)(例如總召喚,時(shí)間同步信息和遙控命令等);固定 幀主要用于確認(rèn)報(bào)文或詢問報(bào)文(例如鏈路狀態(tài)確認(rèn),鏈路復(fù)位,一級(jí)數(shù)據(jù)和二級(jí)數(shù)據(jù)等)。 顯然,101規(guī)約的控制指令是通過可變長數(shù)據(jù)幀傳遞的。
[0021] 然而,101規(guī)約本身沒有提供安全機(jī)制,控制指令都是明文的方式進(jìn)行傳輸?shù)?,?收方不能判斷該指令是否來自合法的執(zhí)行者,也不可以溯源,存在較大的安全隱患。
【發(fā)明內(nèi)容】
[0022]本發(fā)明的目的在于:提供一種安全隱患小的,基于LFSR的101規(guī)約控制指令安全通 ?目方法。
[0023]本發(fā)明所采取的技術(shù)方案是:
[0024] 一種基于LFSR的101規(guī)約控制指令安全通信方法,包括:
[0025] S1、采用101規(guī)約的可變長數(shù)據(jù)幀對LFSR進(jìn)行初始化和同步,以同步發(fā)送方和接收 方的密鑰流;
[0026] S2、發(fā)送方采用當(dāng)前LFSR的狀態(tài)值作為流密鑰加密可變長數(shù)據(jù)幀的鏈路用戶數(shù) 據(jù),然后將加密后的數(shù)據(jù)幀發(fā)送給接收方并使LFSR步進(jìn)一次;
[0027] S3、接收方接收到加密后的數(shù)據(jù)幀后,對所接收的數(shù)據(jù)幀中的鏈路用戶數(shù)據(jù)采用 當(dāng)前的LFSR的狀態(tài)值作為流密鑰進(jìn)行解密,然后再使接收方的LFSR步進(jìn)一次;
[0028] S4、接收方根據(jù)解密出的鏈路用戶數(shù)據(jù),判斷所接收的控制指令是否為合法的101 規(guī)約控制指令,然后根據(jù)判斷的結(jié)果進(jìn)行安全通信。
[0029]進(jìn)一步,所述步驟S1,其包括:
[0030] S11、發(fā)送方向接收方發(fā)送請求序列Req| |Randl,其中,Req為指定字節(jié)數(shù)目和指定 內(nèi)容的連接請求,I I為信息連接符,Randl為發(fā)送方產(chǎn)生的隨機(jī)數(shù);
[0031] S12、接收方在接收到請求序列后,計(jì)算接收方LFSR的第一狀態(tài)值statusl = LFSR (m,Randl | | Rand2),然后將序列statusl | | Rand2返回給發(fā)送方,其中,Rand2為接收方產(chǎn)生 的隨機(jī)數(shù),m為接收方的控制參數(shù),LFSR(m,Randl | |Rand2)為接收方LFSR在控制參數(shù)m的控 制作用下進(jìn)行線性反饋移位的結(jié)果;
[0032] S13、發(fā)送方接收到序列statusl | | Rand2后,根據(jù)Rand2、已有的Randl和發(fā)送方的 控制參數(shù)m'計(jì)算驗(yàn)證發(fā)送方的第一狀態(tài)值statusl' =LFSR(m',Randl | | Rand2)是否與接收 方的statusl相同,若是,則計(jì)算發(fā)送方LFSR的第二狀態(tài)值status2 = LFSR(m',statusl '), 并發(fā)送給接收方;反之,則終止安全通信過程,其中,LFSR(m',Randl| |Rand2)和LFSR(m', statusl')均為發(fā)送方LFSR在控制參數(shù)m'的控制作用下進(jìn)行線性反饋移位的結(jié)果,m' =m; [0033] S14、接收方接收到status2后,根據(jù)接收方的控制參數(shù)m和已有的statusl計(jì)算驗(yàn) 證接收方LFSR的第二狀態(tài)值status2' =LFSR(m,statusl)是否與發(fā)送方的status2相同,若 是,則將驗(yàn)證成功的消息Auth_Res返回給發(fā)送方,并讓接收方的LFSR步進(jìn)一次,進(jìn)入 status3 = LFSR(m,status2)狀態(tài),反之,則終止安全通信過程;
[0034] S15、發(fā)送方接收到消息Auth_Res后,讓發(fā)送方的LFSR步進(jìn)一次,也進(jìn)入status3狀 ??τ 〇
[0035]進(jìn)一步,所述步驟S2,其包括:
[0036] S21、若可變長數(shù)據(jù)幀的鏈路用戶數(shù)據(jù)UsrData的長度大于當(dāng)前LFSR的長度,則采 用當(dāng)前LFSR步進(jìn)至少一次后的新狀態(tài)值來加密UsrData超出當(dāng)前LFSR長度的部分,UsrData 的余下部分則采用當(dāng)前LFSR的狀態(tài)值作為流密鑰進(jìn)行加密;若UsrData的長度小于等于 LFSR的長度,則采用當(dāng)前LFSR的狀態(tài)值作為流密鑰加密UsrData,并將當(dāng)前LFSR的狀態(tài)值中 超出UsrData長度的部分舍去;
[0037] S22、發(fā)送方按101規(guī)約將加密后的UsrData密文填充進(jìn)數(shù)據(jù)幀后發(fā)給接收方,并使 發(fā)送方的LFSR步進(jìn)一次。
[0038]進(jìn)一步,所述步驟S21其具體為:
[0039]若可變長數(shù)據(jù)幀的鏈路用戶數(shù)據(jù)UsrData的長度η與當(dāng)前LFSR的長度L滿足0<n < L,則加密后的UsrData密文c_UsrData的表達(dá)式為:
[0040]
[00411若可變長數(shù)據(jù)幀的鏈路用戶數(shù)據(jù)UsrData的長度η與當(dāng)前LFSR的長度L滿足L<n < 2L,則加密后的UsrData密文c_UsrData的表達(dá)式為:
[0042]
[0043]其中,lfsr為當(dāng)前LFSR的狀態(tài)值,di為第i比特鏈路用戶數(shù)據(jù)UsrData的值;li為第 i比特lfsr的狀態(tài)值,l'i為h步進(jìn)一次后的新狀態(tài)值。
[0044]進(jìn)一步,所述步驟S3,其包括:
[0045] S31、接收方從接收到的數(shù)據(jù)幀中區(qū)分出非UsrData部分以及UsrData部分;
[0046] S32、接收方對接收到的數(shù)據(jù)幀中的非UsrData部分按照101規(guī)約的解密方式進(jìn)行 處理,而對接收到的數(shù)據(jù)幀中的UsrData部分采用接收方當(dāng)前LFSR的狀態(tài)值作為流密鑰進(jìn) 行解密;
[0047] S33、使接收方的LFSR步進(jìn)一次。
[0048]進(jìn)一步,所述步驟S32中對UsrData采用接收方當(dāng)前LFSR的狀態(tài)值作為流密鑰進(jìn)行 解密這一步驟,其具體為:
[0049]對UsrData采用接收方當(dāng)前LFSR的狀態(tài)值作為流密鑰進(jìn)行解密,若當(dāng)前LFSR的長 度不夠,則用當(dāng)前LFSR步進(jìn)至少一次后的新狀態(tài)值解密UsrData中超出LFSR長度的部分,所 述解密出的鏈路用戶數(shù)據(jù)的計(jì)算公式為:(li 。
[0050]進(jìn)一步,所述步驟S4,其具體為:
[0051]接收方根據(jù)解密出的鏈路用戶數(shù)據(jù),判斷所接收的控制指令是否為合法的101規(guī) 約控制指令,若是,則執(zhí)行該控制指令;反之,則拒絕執(zhí)行該控制指令,并按照101規(guī)約反饋 給發(fā)送方。
[0052 ]進(jìn)一步,所述控制參數(shù)m '和m均是指LFSR參與反饋的抽頭情況和一次性連續(xù)移動(dòng) 的位數(shù)。
[0053]本發(fā)明的有益效果是:增設(shè)了采用101規(guī)約的可變長數(shù)據(jù)幀對LFSR進(jìn)行初始化和 同步的步驟,在通信開始前就同步了密鑰流,有效防止了控制指令被仿冒,更加安全;采用 可變長數(shù)據(jù)幀的鏈路用戶數(shù)據(jù)和LFSR來實(shí)現(xiàn)101規(guī)約控制指令的安全傳遞,并能判斷接收 方接收的控制指令是否來自合法的執(zhí)行者,有效降低了 101規(guī)約控制指令的安全隱患。
【附圖說明】
[0054]圖1為本發(fā)明一種基于LFSR的101規(guī)約控制指令安全通信方法的整體流程圖;
[0055]圖2為本發(fā)明步驟S1的流程示意圖。
【具體實(shí)施方式】
[0056] 參照圖1,一種基于LFSR的101規(guī)約控制指令安全通信方法,包括:
[0057] S1、采用101規(guī)約的可變長數(shù)據(jù)幀對LFSR進(jìn)行初始化和同步,以同步發(fā)送方和接收 方的密鑰流;
[0058] S2、發(fā)送方采用當(dāng)前LFSR的狀態(tài)值作為流密鑰加密可變長數(shù)據(jù)幀的鏈路用戶數(shù) 據(jù),然后將加密后的數(shù)據(jù)幀發(fā)送給接收方并使LFSR步進(jìn)一次;
[0059] S3、接收方接收到加密后的數(shù)據(jù)幀后,對所接收的數(shù)據(jù)幀中的鏈路用戶數(shù)據(jù)采用 當(dāng)前的LFSR的狀態(tài)值作為流密鑰進(jìn)行解密,然后再使接收方的LFSR步進(jìn)一次;
[0060] S4、接收方根據(jù)解密出的鏈路用戶數(shù)據(jù),判斷所接收的控制指令是否為合法的101 規(guī)約控制指令,然后根據(jù)判斷的結(jié)果進(jìn)行安全通信。
[0061] 參照圖2,進(jìn)一步作為優(yōu)選的實(shí)施方式,所述步驟S1,其包括:
[0062] S11、發(fā)送方向接收方發(fā)送請求序列Req| |Randl,其中,Req為指定字節(jié)數(shù)目和指定 內(nèi)容的連接請求,I I為信息連接符,Randl為發(fā)送方產(chǎn)生的隨機(jī)數(shù);
[0063] S12、接收方在接收到請求序列后,計(jì)算接收方LFSR的第一狀態(tài)值statusl = LFSR (m,Randl | | Rand2),然后將序列statusl | | Rand2返回給發(fā)送方,其中,Rand2為接收方產(chǎn)生 的