本發(fā)明涉及電能表領(lǐng)域,特別涉及一種電能表數(shù)據(jù)處理方法。
背景技術(shù):
1、根據(jù)智能電能表信息交換安全認(rèn)證技術(shù)規(guī)范要求,智能電能表的剩余金額、購電次數(shù)等關(guān)鍵數(shù)據(jù)應(yīng)保存在esam安全模塊中。而esam安全模塊之外的存儲(chǔ)介質(zhì)并不像esam安全模塊具有加密功能,因此存儲(chǔ)在電能表esam安全模塊之外的存儲(chǔ)介質(zhì)中的數(shù)據(jù)存在被篡改的風(fēng)險(xiǎn)。
2、對(duì)此,專利文獻(xiàn)1中披露了一種解決方案,電能表將完整的同一份數(shù)據(jù)分別存儲(chǔ)在電能表主控芯片的內(nèi)部存儲(chǔ)器和電能表主控芯片的外部存儲(chǔ)器中,以便在電能表掉電之后再重新上電時(shí),通過驗(yàn)證內(nèi)部存儲(chǔ)器和外部存儲(chǔ)器上的兩份數(shù)據(jù)是否一致,從而可以判斷電能表的數(shù)據(jù)在斷掉之后是否被篡改過,確保需要使用的數(shù)據(jù)是未被篡改過的。
3、然而,專利文獻(xiàn)1中的方案仍然存在以下不足:
4、由于電能表上的數(shù)據(jù)被完整的存儲(chǔ)在電能表主控芯片的外部存儲(chǔ)器中,導(dǎo)致一份完整的數(shù)據(jù)容易被惡意竊取,例如,將電能表的固件文件完整地存儲(chǔ)在電能表主控芯片的外部存儲(chǔ)器中,雖然在被篡改之后能夠被發(fā)現(xiàn),但是容易被惡意竊取到完整的電能表固件文件。
5、專利文獻(xiàn)1,專利名稱,一種電能表的數(shù)據(jù)處理方法、裝置、存儲(chǔ)介質(zhì)及電能表;公開號(hào),cn112306410a;公開日,2021-02-02。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的目的在于至少解決現(xiàn)有技術(shù)中存在的技術(shù)問題之一,提供一種電能表數(shù)據(jù)處理方法,能夠?qū)⒁环萃暾墓碳指顬槎喾莶⒎謩e存儲(chǔ)在電能表主控芯片的內(nèi)部存儲(chǔ)器和電能表主控芯片的外部存儲(chǔ)器中,提升惡意竊取電能表完整固件文件的難度。
2、為了實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明提供如下技術(shù)方案:
3、一種電能表數(shù)據(jù)處理方法,所述方法包括:
4、電能表在第一時(shí)間節(jié)點(diǎn)接收服務(wù)器發(fā)送的當(dāng)前版本更新文件;
5、電能表將當(dāng)前版本更新文件進(jìn)行分割,得到多份子文件;其中,所述更新文件包括電能表的固件或電能表的參數(shù);
6、電能表將所述多份子文件分成兩部分后,并將兩部分分別存儲(chǔ)在電能表主控芯片的內(nèi)部存儲(chǔ)器和電能表主控芯片的外部存儲(chǔ)器中;
7、電能表在第二時(shí)間節(jié)點(diǎn)接收服務(wù)器發(fā)送的新版本更新文件對(duì)應(yīng)的補(bǔ)丁包,并基于所述多份子文件與接收到的新版本更新文件對(duì)應(yīng)的補(bǔ)丁包生成新版本更新文件;其中,所述第二時(shí)間節(jié)點(diǎn)為預(yù)設(shè)的更新時(shí)間節(jié)點(diǎn),第二時(shí)間節(jié)點(diǎn)晚于第一時(shí)間節(jié)點(diǎn)。
8、作為進(jìn)一步改進(jìn),所述電能表將當(dāng)前版本更新文件進(jìn)行分割,得到多份子文件,具體包括:
9、電能表接收服務(wù)器發(fā)送的分割節(jié)點(diǎn)序列;其中,所述分割節(jié)點(diǎn)序列中的每個(gè)分割節(jié)點(diǎn)都分別表示當(dāng)前版本更新文件中的一個(gè)字節(jié)偏移量,p是分割節(jié)點(diǎn)在分割節(jié)點(diǎn)序列中的序列號(hào),p為正整數(shù);
10、電能表將所述當(dāng)前版本更新文件中從字節(jié)偏移量為到字節(jié)偏移量為對(duì)應(yīng)的數(shù)據(jù)分割出來得到所述多份子文件中的第n份子文件;其中,表示第n份子文件的起始位置在當(dāng)前版本更新文件中所對(duì)應(yīng)的字節(jié)偏移量,=;表示第n份子文件的末尾位置在當(dāng)前版本更新文件中所對(duì)應(yīng)的字節(jié)偏移量,=;n為正整數(shù),m為非負(fù)整數(shù)。
11、作為進(jìn)一步改進(jìn),所述方法還包括:
12、電能表在第一時(shí)間節(jié)點(diǎn)還接收服務(wù)器發(fā)送的分割節(jié)點(diǎn)序列。
13、作為進(jìn)一步改進(jìn),所述分割節(jié)點(diǎn)序列是由服務(wù)器通過以下步驟生成的:
14、獲取當(dāng)前版本更新文件和新版本更新文件;
15、對(duì)所述當(dāng)前版本更新文件和所述新版本更新文件執(zhí)行bsdiff算法的diff過程,以生成所述補(bǔ)丁包;其中,所述補(bǔ)丁包中包括控制信息,所述控制信息中記錄有diff過程中生成的各diff數(shù)據(jù)塊在所述當(dāng)前版本更新文件中的字節(jié)偏移量;
16、將所述字節(jié)偏移量按照被記錄的順序進(jìn)行排列得到所述分割節(jié)點(diǎn)序列。
17、作為進(jìn)一步改進(jìn),所述電能表將所述多份子文件分成兩部分后,并將兩部分分別存儲(chǔ)在電能表主控芯片的內(nèi)部存儲(chǔ)器和電能表主控芯片的外部存儲(chǔ)器中,具體包括:
18、電能表將所述多份子文件分成兩部分;其中,所述兩部分包括第一部分和第二部分;
19、電能表計(jì)算所述第一部分和所述第二部分的數(shù)據(jù)量之比作為內(nèi)外實(shí)際占比;
20、電能表調(diào)整所述第一部分和所述第二部分的不同組合方式,得到不同的內(nèi)外實(shí)際占比;其中,不同組合方式是指由不同的子文件構(gòu)成第一部分和第二部分;
21、電能表獲取主控芯片的內(nèi)部存儲(chǔ)器到第一剩余空間容量和外部存儲(chǔ)器的第二剩余空間容量;
22、電能表計(jì)算所述第一剩余空間容量與所述第二剩余空間容量之比作為內(nèi)外參考占比;
23、當(dāng)所述內(nèi)外實(shí)際占比與所述內(nèi)外參考占比的差值最小時(shí),電能表將該組合方式下的所述第一部分存儲(chǔ)在電能表主控芯片的內(nèi)部存儲(chǔ)器中,將該組合方式下的所述第二部分存儲(chǔ)在電能表主控芯片的外部存儲(chǔ)器中。
24、作為進(jìn)一步改進(jìn),所述第一部分僅包括所述多份子文件中的第n份子文件;
25、并且在將所述當(dāng)前版本更新文件中從字節(jié)偏移量為到字節(jié)偏移量為對(duì)應(yīng)的數(shù)據(jù)分割出來得到所述多份子文件中的第n份子文件的過程中,通過公式選擇分割節(jié)點(diǎn)序列中的和兩個(gè)分割節(jié)點(diǎn);
26、其中,f為當(dāng)前版本更新文件的總字節(jié)數(shù),w為內(nèi)外參考占比,θ為預(yù)設(shè)的占比誤差閾值。
27、作為進(jìn)一步改進(jìn),所述多份子文件中的第n份子文件的內(nèi)容還包括和;
28、所述基于所述多份子文件與接收到的新版本更新文件對(duì)應(yīng)的補(bǔ)丁包生成新版本更新文件,具體包括:
29、執(zhí)行bsdiff算法的patch過程并將一份目標(biāo)子文件讀取到運(yùn)行內(nèi)存中;其中,所述目標(biāo)子文件為所述多份子文件中的一份;
30、在patch過程中,直接從被讀取到運(yùn)行內(nèi)存中的所述目標(biāo)子文件中獲取與diff數(shù)據(jù)塊對(duì)應(yīng)的數(shù)據(jù)。
31、作為進(jìn)一步改進(jìn),所述方法還包括:
32、在patch過程中,檢測(cè)到diff數(shù)據(jù)塊所對(duì)應(yīng)的控制信息中的字節(jié)偏移量大于作為當(dāng)前目標(biāo)子文件的第n份子文件對(duì)應(yīng)的時(shí),則將第n+1份子文件作為新的目標(biāo)子文件讀取到運(yùn)行內(nèi)存中并釋放目標(biāo)子文件對(duì)應(yīng)的運(yùn)行內(nèi)存。
33、作為進(jìn)一步改進(jìn),通過以下步驟實(shí)現(xiàn)從作為當(dāng)前目標(biāo)子文件的第n份子文件中獲取與字節(jié)偏移量為k的diff數(shù)據(jù)塊對(duì)應(yīng)的數(shù)據(jù):
34、計(jì)算k-,得到局部字節(jié)偏移量;其中,k為非負(fù)整數(shù);
35、以所述局部字節(jié)偏移量作為起始地址,獲取第n份子文件中與diff數(shù)據(jù)塊的字節(jié)數(shù)對(duì)應(yīng)的數(shù)據(jù)。
36、作為進(jìn)一步改進(jìn),所述方法還包括:
37、第一份子文件存儲(chǔ)在內(nèi)部存儲(chǔ)器上預(yù)先指定的文件路徑中并且第一份子文件的文件名記錄了第二份子文件所在的文件路徑;
38、第二份子文件存儲(chǔ)在外部存儲(chǔ)器上并且第二份子文件的文件名記錄了第三份子文件所在的文件路徑;
39、第三份子文件存儲(chǔ)在內(nèi)部存儲(chǔ)器上并且第三份子文件的文件名記錄了第四份子文件所在的文件路徑;
40、以此類推,相鄰的第j份子文件和第j+1份子文件分別存儲(chǔ)在內(nèi)部存儲(chǔ)器和外部存儲(chǔ)器上,并且第j份子文件的文件名記錄了第j+1份子文件所在的文件路徑;其中,j為大于1的正整數(shù)。
41、有益效果:1.相較于現(xiàn)有技術(shù)將完整的文件存儲(chǔ)在電能表主控芯片的外部存儲(chǔ)器中,容易被惡意竊取完整的文件。本技術(shù)中,將當(dāng)前版本固件在分割成多份子文件后,這些子文件被分成兩部分并分別存儲(chǔ)在電能表主控芯片的內(nèi)部存儲(chǔ)器和電能表主控芯片的外部存儲(chǔ)器中;即使電能表主控芯片的外部存儲(chǔ)器中的子文件被惡意盜竊,盜竊者也無法獲取完整的固件文件,提升惡意竊取電能表完整固件文件的難度。
42、2.在對(duì)電能表進(jìn)行增量更新時(shí),先在第一時(shí)間節(jié)點(diǎn)將文件體積大的當(dāng)前版本更新文件先發(fā)送到電能表并分割為多份分別存儲(chǔ)到電能表的內(nèi)部和外部存儲(chǔ)器中,而在能夠進(jìn)行更新的第二時(shí)間節(jié)點(diǎn)才接收用于生成新版本更新文件的補(bǔ)丁包。如此,由于當(dāng)前版本更新文件被分割為多份并分別存儲(chǔ)內(nèi)部和外部存儲(chǔ)器中,不容易被惡意完整竊取。進(jìn)一步的,由于僅在電能表能夠進(jìn)行更新的第二時(shí)間節(jié)點(diǎn)才接收補(bǔ)丁包,補(bǔ)丁包體積很小一般為10kb左右,能夠很快傳輸完成,并且通過控制電能表僅在能夠更新時(shí)才接收補(bǔ)丁,對(duì)補(bǔ)丁文件存在電能表上的時(shí)間進(jìn)行了嚴(yán)格的時(shí)間窗口管理,并且在生成新版本更新文件后將補(bǔ)丁以及當(dāng)前版本更新文件對(duì)應(yīng)的各子文件進(jìn)行刪除,進(jìn)一步提升了惡意竊取者能夠同時(shí)獲取補(bǔ)丁包和當(dāng)前版本更新文件的難度。
43、本發(fā)明的附加方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發(fā)明的實(shí)踐了解到。