本發(fā)明涉及數(shù)據(jù)防篡改,更具體地說,本發(fā)明涉及基于區(qū)塊鏈的物聯(lián)網(wǎng)表計量數(shù)據(jù)防篡改系統(tǒng)及方法。
背景技術(shù):
1、公開號為cn115378642a的中國專利申請公開了基于區(qū)塊鏈的電力計量數(shù)據(jù)源防篡改驗證系統(tǒng)及方法;通過數(shù)據(jù)接口獲取用采系統(tǒng)中的電力計量數(shù)據(jù)及其加密后的哈希字符串;基于哈希字符串和區(qū)塊鏈共識認(rèn)證機(jī)制對電力計量數(shù)據(jù)進(jìn)行認(rèn)證;響應(yīng)于電力計量數(shù)據(jù)認(rèn)證通過的信號,在應(yīng)用區(qū)塊鏈上進(jìn)行上鏈分布式存證,否則不作處理;對已上鏈分布式存證的電力計量數(shù)據(jù)進(jìn)行反篡改驗證;響應(yīng)于電力計量數(shù)據(jù)反篡改驗證未通過的信號,發(fā)出所述電力計量數(shù)據(jù)被篡改的告警信息,否則不作處理。該發(fā)明通過電力計量數(shù)據(jù)加密后的哈希字符串,對電力計量數(shù)據(jù)進(jìn)行上鏈認(rèn)證和已上鏈反篡改驗證,防止電表采集的用電數(shù)據(jù)被篡改的風(fēng)險,提升了電力計量數(shù)據(jù)的可信性和防篡改性,能夠適應(yīng)未來電力市場的深化發(fā)展需要。
2、上述方法雖能滿足大部分場景,但對上述方法以及現(xiàn)有技術(shù)進(jìn)行研究和實際應(yīng)用發(fā)現(xiàn),上述方法以及現(xiàn)有技術(shù)至少存在以下部分缺陷:
3、傳統(tǒng)電力計量表的防篡改技術(shù)也可能存在僅針對單一攻擊維度的情況,比如側(cè)重于防止數(shù)據(jù)在傳輸過程中的篡改,而忽視了對計量設(shè)備本身受到物理攻擊的防護(hù),或者僅在硬件層面做了防拆設(shè)計,對軟件層面的網(wǎng)絡(luò)攻擊防范不足。
4、鑒于此,本發(fā)明提出基于區(qū)塊鏈的物聯(lián)網(wǎng)表計量數(shù)據(jù)防篡改系統(tǒng)及方法以解決上述問題。
技術(shù)實現(xiàn)思路
1、為了克服現(xiàn)有技術(shù)的上述缺陷,為實現(xiàn)上述目的,本發(fā)明提供如下技術(shù)方案:
2、基于區(qū)塊鏈的物聯(lián)網(wǎng)表計量數(shù)據(jù)防篡改方法,包括如下步驟:
3、采集燃?xì)鈹?shù)據(jù)和水表數(shù)據(jù);燃?xì)鈹?shù)據(jù)包括燃?xì)饬髁亢腿細(xì)獍踩珨?shù)據(jù);水表數(shù)據(jù)包括水流量和水安全數(shù)據(jù);
4、對燃?xì)鈹?shù)據(jù)和水表數(shù)據(jù)分別進(jìn)行動態(tài)加密,獲得燃?xì)饷芪臄?shù)據(jù)和水表密文數(shù)據(jù);燃?xì)饷芪臄?shù)據(jù)包括燃?xì)饬髁棵芪暮腿細(xì)獍踩芪?;水表密文?shù)據(jù)包括水流量密文和水安全密文;
5、按類別分別對燃?xì)饷芪臄?shù)據(jù)和水表密文數(shù)據(jù)進(jìn)行分類,基于輕量級共識機(jī)制對燃?xì)饷芪臄?shù)據(jù)和水表密文數(shù)據(jù)分別進(jìn)行驗證,將驗證通過的燃?xì)饷芪臄?shù)據(jù)和水表密文數(shù)據(jù)按照類別寫入?yún)^(qū)塊鏈的對應(yīng)鏈上;
6、區(qū)塊鏈對燃?xì)獍踩芪倪M(jìn)行解密檢測,當(dāng)檢測到燃?xì)獍踩珨?shù)據(jù)不為0時,驅(qū)動燃?xì)獗淼闹悄芎霞s進(jìn)行攻擊響應(yīng);區(qū)塊鏈對水表安全密文進(jìn)行解密檢測,當(dāng)檢測到水安全數(shù)據(jù)不為0時,驅(qū)動水表的智能合約進(jìn)行攻擊響應(yīng);
7、按照預(yù)設(shè)更新時間對動態(tài)加密過程中的密鑰進(jìn)行動態(tài)更新,并聯(lián)動燃?xì)獍踩珨?shù)據(jù)和水安全數(shù)據(jù)對密鑰進(jìn)行動態(tài)更新;
8、對燃?xì)鈹?shù)據(jù)和水表數(shù)據(jù)的傳輸全過程進(jìn)行攻擊溯源,并對攻擊溯源結(jié)果進(jìn)行上報。
9、進(jìn)一步地,獲得燃?xì)饬髁棵芪牡姆椒òǎ?/p>
10、基于sm2橢圓曲線方程對燃?xì)饬髁窟M(jìn)行加密;獲取sm2橢圓曲線上的一個基點的階;從中隨機(jī)選取用戶a的私鑰,獲得用戶a對應(yīng)的公鑰;從中隨機(jī)選取用戶b的私鑰,獲得用戶b對應(yīng)的公鑰;
11、用戶a和用戶b獲取當(dāng)前的時間戳,用戶a隨機(jī)選取隨機(jī)數(shù),計算用戶a的臨時公鑰;對時間戳進(jìn)行哈希運算獲得時間哈希值,將用戶a的臨時公鑰與時間哈希值進(jìn)行拼接,再進(jìn)行哈希運算,得到用戶a的哈希值;并將用戶a的臨時公鑰和用戶a的哈希值發(fā)送給用戶b;
12、用戶b隨機(jī)選取隨機(jī)數(shù),計算用戶b的臨時公鑰,并將用戶b的臨時公鑰發(fā)送給用戶a;將用戶b的臨時公鑰與時間哈希值進(jìn)行拼接,再進(jìn)行哈希運算,得到用戶b的哈希值;并將用戶b的臨時公鑰和用戶b的哈希值發(fā)送給用戶a;
13、用戶a根據(jù)用戶a的私鑰、用戶b的公鑰和臨時公鑰計算中間點;
14、用戶b根據(jù)用戶b的私鑰、用戶a的公鑰和臨時公鑰計算中間點;根據(jù)橢圓曲線的性質(zhì)得到;
15、用戶a和用戶b均將中間點坐標(biāo)與接收到的對方的哈希值進(jìn)行拼接;
16、使用哈希函數(shù)對拼接結(jié)果進(jìn)行處理,獲得會話密鑰;
17、選取隨機(jī)數(shù),計算臨時公鑰;獲得第一密文;計算對應(yīng)的中間點;生成密鑰;
18、用生成的密鑰與會話密鑰進(jìn)行組合,得到最終加密密鑰;
19、對燃?xì)饬髁亢妥罱K加密密鑰進(jìn)行異或運算,獲得第二密文;計算獲得第三密文;將第一密文、第二密文和第三密文進(jìn)行拼接獲得燃?xì)饬髁棵芪摹?/p>
20、進(jìn)一步地,獲得水流量密文的方法包括:
21、選擇兩個大素數(shù)和,且;
22、計算和的乘積、和的最小公倍數(shù);
23、根據(jù)和生成公鑰和私鑰,其中,為滿足約束條件的公鑰參數(shù),為滿足約束條件的私鑰參數(shù);為公鑰參數(shù);為最小公倍數(shù);
24、將水表數(shù)據(jù)與時間戳進(jìn)行拼接獲得更新的水表數(shù)據(jù);
25、使用公鑰對更新的水表數(shù)據(jù)進(jìn)行加密獲得水流量密文。
26、進(jìn)一步地,燃?xì)獍踩珨?shù)據(jù)包括燃?xì)獗硗獠康拇艌龈蓴_數(shù)據(jù)和非法拆卸數(shù)據(jù),獲得磁場干擾數(shù)據(jù)的方法包括:
27、通過在燃?xì)獗韮?nèi)集成磁場強(qiáng)度傳感器采集獲得燃?xì)獗硗獠康沫h(huán)境磁場強(qiáng)度,將采集的環(huán)境磁場強(qiáng)度與預(yù)設(shè)環(huán)境磁場強(qiáng)度閾值進(jìn)行比較,當(dāng)環(huán)境磁場強(qiáng)度高于預(yù)設(shè)環(huán)境磁場強(qiáng)度閾值時,判斷存在外部磁場干擾,獲得值為1的磁場干擾數(shù)據(jù),否則獲得值為0的磁場干擾數(shù)據(jù);
28、獲得非法拆卸數(shù)據(jù)的方法包括:
29、通過壓力開關(guān)采集燃?xì)獗硗鈿な艿椒欠ú鹦兜臓顟B(tài)數(shù)據(jù),當(dāng)燃?xì)獗硗鈿な艿椒欠ú鹦稌r,狀態(tài)數(shù)據(jù)為1,否則為0,將狀態(tài)數(shù)據(jù)作為非法拆卸數(shù)據(jù);
30、獲得水安全數(shù)據(jù)的方法包括:
31、將正常供水方向設(shè)置為正方向,非供水方向設(shè)置為反方向,通過無磁轉(zhuǎn)盤旋轉(zhuǎn)方向獲得水流方向,當(dāng)水流方向為正方向時,將水流流向數(shù)據(jù)置1,否則將水流流向數(shù)據(jù)置0,將水流流向數(shù)據(jù)作為水安全數(shù)據(jù)。
32、進(jìn)一步地,驅(qū)動燃?xì)獗淼闹悄芎霞s進(jìn)行攻擊響應(yīng)的方法包括:
33、步驟1、凍結(jié)對應(yīng)的用戶賬戶并暫停充值功能;
34、步驟2、結(jié)合燃?xì)饬髁俊r間戳和操作者id生成物理篡改證據(jù)包,存儲至ipfs并返回內(nèi)容標(biāo)識符至區(qū)塊鏈;
35、步驟3、觸發(fā)邊緣計算節(jié)點啟動備用通信通道;
36、驅(qū)動水表的智能合約進(jìn)行攻擊響應(yīng)的方法包括:
37、步驟a、向水務(wù)管理平臺發(fā)送要求現(xiàn)場檢查的工單;
38、步驟b、若在預(yù)設(shè)等待時間內(nèi)未收到人工確認(rèn)信號,則標(biāo)記對應(yīng)的水表為高風(fēng)險設(shè)備。
39、進(jìn)一步地,基于輕量級共識機(jī)制對燃?xì)饷芪臄?shù)據(jù)進(jìn)行驗證的方法包括:
40、由節(jié)點申請注冊,由個驗證節(jié)點組成驗證聯(lián)盟;驗證聯(lián)盟中每個節(jié)點具有唯一身份id和驗證節(jié)點的權(quán)限,且各節(jié)點的公鑰和身份id記錄在區(qū)塊鏈中;
41、由燃?xì)饨灰椎膮⑴c方創(chuàng)建一筆交易,并將創(chuàng)建的交易的參與方記為交易發(fā)起方;
42、交易發(fā)起方使用自己的私鑰對交易進(jìn)行簽名,再將簽名后的交易廣播到區(qū)塊鏈網(wǎng)絡(luò)中;
43、驗證聯(lián)盟中的每個節(jié)點接收到廣播的簽名后的交易后,使用交易發(fā)起方的公鑰對交易的簽名進(jìn)行驗證,當(dāng)每個節(jié)點都完成對交易的驗證后,將所有節(jié)點的驗證結(jié)果廣播到區(qū)塊鏈網(wǎng)絡(luò)中;
44、收集所有節(jié)點的驗證結(jié)果,統(tǒng)計通過驗證的節(jié)點數(shù)量,與預(yù)設(shè)節(jié)點數(shù)量閾值進(jìn)行比較,當(dāng)通過驗證的節(jié)點數(shù)量超出預(yù)設(shè)節(jié)點數(shù)量閾值時,將交易標(biāo)記為已確認(rèn),否則將交易標(biāo)記為未通過。
45、進(jìn)一步地,基于輕量級共識機(jī)制對水表密文數(shù)據(jù)進(jìn)行驗證的方法包括:
46、由水表數(shù)據(jù)傳輸鏈路組成由u個共識節(jié)點參與共識的分布式網(wǎng)絡(luò),預(yù)設(shè)主共識節(jié)點,為每個共識節(jié)點初始化歷史行為評估值和投票權(quán)重;
47、共識節(jié)點采集水表密文數(shù)據(jù),并按照預(yù)設(shè)采集時間間隔將水表密文數(shù)據(jù)發(fā)送給其他共識節(jié)點進(jìn)行共識;
48、在每次共識過程中,其他共識節(jié)點對共識節(jié)點的行為進(jìn)行監(jiān)測;
49、根據(jù)監(jiān)測結(jié)果,對共識節(jié)點的歷史行為評估值進(jìn)行更新;
50、根據(jù)更新后的共識節(jié)點的歷史行為評估值,使用權(quán)重調(diào)整函數(shù)計算共識節(jié)點的投票權(quán)重;
51、主共識節(jié)點收到客戶端的請求后,為請求分配一個序列號,并廣播預(yù)準(zhǔn)備消息給其他共識節(jié)點,預(yù)準(zhǔn)備消息包括序列號、請求的內(nèi)容、請求的提出者和對應(yīng)的水表密文數(shù)據(jù),其他共識節(jié)點接收到預(yù)準(zhǔn)備消息后,檢測自身的投票權(quán)重是否高于預(yù)設(shè)權(quán)重閾值,若高于預(yù)設(shè)權(quán)重閾值,則參與共識過程,否則不參與;
52、若共識節(jié)點參與共識過程,廣播準(zhǔn)備消息給其他共識節(jié)點;準(zhǔn)備消息包括序列號、請求的內(nèi)容和共識節(jié)點的標(biāo)識;
53、共識節(jié)點收集其他共識節(jié)點的準(zhǔn)備消息,當(dāng)收集到的準(zhǔn)備消息的投票權(quán)重總和超過預(yù)設(shè)閾值時,共識節(jié)點進(jìn)入下一個階段;
54、共識節(jié)點廣播提交消息給其他共識節(jié)點,提交消息包括投票權(quán)重總和、序列號、請求的內(nèi)容和共識節(jié)點的標(biāo)識;
55、當(dāng)收集到的提交消息的投票權(quán)重總和超過預(yù)設(shè)提交閾值時,共識節(jié)點執(zhí)行請求并返回結(jié)果給客戶端。
56、進(jìn)一步地,對動態(tài)加密過程中的密鑰進(jìn)行動態(tài)更新的方法包括:
57、通過預(yù)言機(jī)獲取全球統(tǒng)一時間戳,根據(jù)密鑰輪換周期獲得密鑰對應(yīng)的過期時間;
58、智能合約每間隔預(yù)設(shè)時間檢查密鑰的有效期,密鑰的有效期為當(dāng)前時間加上密鑰輪換周期,當(dāng)檢查當(dāng)前時間到達(dá)或超過密鑰的過期時間時,自動對密鑰進(jìn)行更新;
59、通過動態(tài)加密的方法結(jié)合當(dāng)前時間對應(yīng)的時間戳生成新的密鑰;并將新的密鑰存入?yún)^(qū)塊鏈,將原有密鑰標(biāo)記為無效;
60、通過區(qū)塊鏈?zhǔn)录罩居涗浰忻荑€更新記錄;
61、將新的密鑰加密后存儲至ipfs中,并將存儲地址寫入?yún)^(qū)塊鏈。
62、進(jìn)一步地,聯(lián)動燃?xì)獍踩珨?shù)據(jù)和水安全數(shù)據(jù)對密鑰進(jìn)行動態(tài)更新的方法包括:
63、檢測磁場干擾數(shù)據(jù)、非法拆卸數(shù)據(jù)和水流流向數(shù)據(jù),當(dāng)檢查到磁場干擾數(shù)據(jù)或非法拆卸數(shù)據(jù)的數(shù)值不為0時,撤銷對應(yīng)的燃?xì)獗碓诋?dāng)前時間對應(yīng)的所有密鑰,并根據(jù)當(dāng)前時間對燃?xì)獗淼拿荑€進(jìn)行動態(tài)更新;當(dāng)檢查到水流流向數(shù)據(jù)的數(shù)值不為0時,撤銷對應(yīng)的水表在當(dāng)前時間對應(yīng)的所有密鑰,并根據(jù)當(dāng)前時間對水表的密鑰進(jìn)行動態(tài)更新。
64、進(jìn)一步地,對燃?xì)鈹?shù)據(jù)的傳輸全過程進(jìn)行攻擊溯源的方法包括:
65、建立燃?xì)鈹?shù)據(jù)的溯源五元組,溯源五元組包括:設(shè)備、操作者、傳感器狀態(tài)、地理位置、時間戳;當(dāng)檢測到燃?xì)獗硎艿焦魰r,通過區(qū)塊鏈瀏覽器結(jié)合溯源五元組對攻擊進(jìn)行溯源。
66、進(jìn)一步地,對水表數(shù)據(jù)的傳輸全過程進(jìn)行攻擊溯源的方法包括:
67、使用哈希函數(shù)對水流量數(shù)據(jù)進(jìn)行哈希運算,得到一個固定長度的數(shù)據(jù)哈希值;
68、將水流量數(shù)據(jù)和相關(guān)的驗證邏輯轉(zhuǎn)化為預(yù)設(shè)零知識證明方案的電路形式;
69、證明者根據(jù)預(yù)設(shè)零知識證明方案的參數(shù)和電路,利用預(yù)設(shè)零知識證明方案中的零知識證明算法生成零知識證明;
70、驗證者從證明者處接收零知識證明和數(shù)據(jù)哈希值;
71、驗證者使用接收到的信息和零知識證明算法的驗證程序,對零知識證明進(jìn)行驗證;驗證者通過數(shù)據(jù)哈希值驗證數(shù)據(jù)的一致性;
72、根據(jù)零知識證明的驗證結(jié)果和數(shù)據(jù)一致性的驗證結(jié)果,驗證者做出最終決策。
73、基于區(qū)塊鏈的物聯(lián)網(wǎng)表計量數(shù)據(jù)防篡改系統(tǒng),用于實施所述基于區(qū)塊鏈的物聯(lián)網(wǎng)表計量數(shù)據(jù)防篡改方法,包括:
74、數(shù)據(jù)采集模塊:采集燃?xì)鈹?shù)據(jù)和水表數(shù)據(jù);燃?xì)鈹?shù)據(jù)包括燃?xì)饬髁亢腿細(xì)獍踩珨?shù)據(jù);水表數(shù)據(jù)包括水流量和水安全數(shù)據(jù);
75、數(shù)據(jù)加密模塊:對燃?xì)鈹?shù)據(jù)和水表數(shù)據(jù)分別進(jìn)行動態(tài)加密,獲得燃?xì)饷芪臄?shù)據(jù)和水表密文數(shù)據(jù);燃?xì)饷芪臄?shù)據(jù)包括燃?xì)饬髁棵芪暮腿細(xì)獍踩芪?;水表密文?shù)據(jù)包括水流量密文和水安全密文;
76、驗證上鏈模塊:按類別分別對燃?xì)饷芪臄?shù)據(jù)和水表密文數(shù)據(jù)進(jìn)行分類,基于輕量級共識機(jī)制對燃?xì)饷芪臄?shù)據(jù)和水表密文數(shù)據(jù)分別進(jìn)行驗證,將驗證通過的燃?xì)饷芪臄?shù)據(jù)和水表密文數(shù)據(jù)按照類別寫入?yún)^(qū)塊鏈的對應(yīng)鏈上;
77、攻擊響應(yīng)模塊:區(qū)塊鏈對燃?xì)獍踩芪倪M(jìn)行解密檢測,當(dāng)檢測到燃?xì)獍踩珨?shù)據(jù)不為0時,驅(qū)動燃?xì)獗淼闹悄芎霞s進(jìn)行攻擊響應(yīng);區(qū)塊鏈對水表安全密文進(jìn)行解密檢測,當(dāng)檢測到水安全數(shù)據(jù)不為0時,驅(qū)動水表的智能合約進(jìn)行攻擊響應(yīng);
78、密鑰更新模塊:按照預(yù)設(shè)更新時間對動態(tài)加密過程中的密鑰進(jìn)行動態(tài)更新,并聯(lián)動燃?xì)獍踩珨?shù)據(jù)和水安全數(shù)據(jù)對密鑰進(jìn)行動態(tài)更新;
79、攻擊溯源模塊:對燃?xì)鈹?shù)據(jù)和水表數(shù)據(jù)的傳輸全過程進(jìn)行攻擊溯源,并對攻擊溯源結(jié)果進(jìn)行上報。
80、本發(fā)明基于區(qū)塊鏈的物聯(lián)網(wǎng)表計量數(shù)據(jù)防篡改系統(tǒng)及方法的技術(shù)效果和優(yōu)點:
81、本發(fā)明基于區(qū)塊鏈的物聯(lián)網(wǎng)表計量數(shù)據(jù)防篡改系統(tǒng)及方法通過物聯(lián)網(wǎng)傳感器實時監(jiān)測燃?xì)獗淼奈锢憝h(huán)境和網(wǎng)絡(luò)狀態(tài),結(jié)合區(qū)塊鏈的非對稱加密、共識機(jī)制和分布式存儲,構(gòu)建了覆蓋物理攻擊與網(wǎng)絡(luò)攻擊的多維防護(hù)體系;傳感器實時采集設(shè)備狀態(tài)數(shù)據(jù)并觸發(fā)預(yù)警,區(qū)塊鏈將數(shù)據(jù)哈希值、時間戳及設(shè)備狀態(tài)上鏈固化,確保數(shù)據(jù)從采集到存儲的全鏈路不可篡改;同時,智能合約自動驗證數(shù)據(jù)一致性,對異常行為觸發(fā)自動化響應(yīng),并將攻擊事件哈希值同步上鏈存證,形成閉環(huán)防御,解決了傳統(tǒng)單一維度防護(hù)的局限,還通過區(qū)塊鏈的透明性和傳感器的實時感知能力,實現(xiàn)了燃?xì)鈹?shù)據(jù)的真實性保障、攻擊行為可追溯性及系統(tǒng)的自修復(fù)能力,顯著提升了物聯(lián)網(wǎng)表計量數(shù)據(jù)的安全性與可靠性。