竊取能源和篡改電表是一個(gè)世界性問(wèn)題,這個(gè)問(wèn)題會(huì)導(dǎo)致收入損失。消費(fèi)者發(fā)現(xiàn)能夠控制自己的電表,使之暫停計(jì)費(fèi)或不被記錄,改變或停止電表內(nèi)的實(shí)時(shí)計(jì)時(shí)器,甚至可以做到跳過(guò)電表直接使用電能而不必付費(fèi)。飛思卡爾最新于電表市場(chǎng)推出的MCF51EM256微控制器將幾大防篡改特性集成于一個(gè)芯片,大大減少了客戶的材料賬單(BoM)成本,又能有效地防止篡改現(xiàn)象。
簡(jiǎn)介—防篡改特性需求
著電力成本的提高,竊電行為已經(jīng)成為政府機(jī)構(gòu)(公共事業(yè)部門)的主要擔(dān)憂,這是一個(gè)全球性的問(wèn)題,尤其在印度和中國(guó)等人口眾多的國(guó)家更是嚴(yán)重。在公共設(shè)施計(jì)量應(yīng)用中,不法分子會(huì)想法設(shè)法竊取信息或是更改內(nèi)部設(shè)置。這些方法中比較常見(jiàn)的就是對(duì)時(shí)間進(jìn)行微調(diào)以欺騙系統(tǒng)。
配電公司可能會(huì)依據(jù)每天的時(shí)段、最大需求和負(fù)荷等因素實(shí)行錯(cuò)峰電價(jià),這就需要一個(gè)實(shí)時(shí)計(jì)時(shí)器(RTC)以提供準(zhǔn)確的時(shí)間參考。某些不法分子就會(huì)篡改計(jì)時(shí)器或操縱時(shí)間欺騙系統(tǒng),以便改變計(jì)費(fèi)結(jié)果,如將PM改為AM,這樣一來(lái),因?yàn)樵诟暮蟮臅r(shí)段內(nèi)采用非高峰負(fù)荷電價(jià),所以電表固件會(huì)收取更少的費(fèi)用。實(shí)時(shí)計(jì)時(shí)器(RTC)通常依靠一個(gè)32.768 kHz的外部晶體振蕩器,而不法分子則會(huì)改變這個(gè)RTC晶體以減緩震蕩達(dá)到少計(jì)數(shù)的目的,從而會(huì)使測(cè)量和計(jì)費(fèi)也和實(shí)際耗電有所不同。
這些收入損失中的大部分都可以通過(guò)安裝電子電表來(lái)解決,因?yàn)樗鼈兛梢蕴綔y(cè)到篡改行為從而保證正確的計(jì)費(fèi),這不同于電子機(jī)械電表。另外,這些電表會(huì)采用AMR或智能電網(wǎng)等先進(jìn)的計(jì)量技術(shù)連接,公共事業(yè)公司便可以受益于自動(dòng)獲悉任何遠(yuǎn)程發(fā)生的篡改行為。
關(guān)于MCF51EM256
MCF51EM256基于ColdFire V1的微控制器,具有256K閃存、四個(gè)高精度16位的SAR ADC,可以在所有相位同時(shí)測(cè)量電流和電壓,以及中性電流。ADC由內(nèi)部可編程延遲模塊自動(dòng)激發(fā),以對(duì)電流和電壓作出精確、同相的讀數(shù)。微控制器包括一個(gè)精確的1.2v輸出電壓基準(zhǔn),內(nèi)部ADC和如增益放大器等外部組件可以利用它來(lái)進(jìn)行精準(zhǔn)的測(cè)量。微控制器包括一個(gè)獨(dú)立的RTC(iRTC),同時(shí)鐘一樣,它有自己的電源域,因此和其它系統(tǒng)組件是分開(kāi)的。大多數(shù)的防篡改特性都在iRTC中實(shí)施。MCF51EM256還包括一個(gè)LCD驅(qū)動(dòng)模塊、一系列如 IIC、SCI、SPI、可編程比較器和AMR SPI/SCI模塊等通信外圍設(shè)備。
MCF51EM256的防篡改特性
帶有獨(dú)立電源域的RTC
當(dāng)主供電可用時(shí),iRTC在主供電(VDD)上全時(shí)運(yùn)行,當(dāng)主電源發(fā)生故障時(shí),會(huì)自動(dòng)切換至電池供電(VBAT)。此行為過(guò)程如圖1所示。
圖1— 獨(dú)立RTC
iRTC可以檢測(cè)出主供電電壓(VDD)在特定閾值的下降,如在此閾值以下,就會(huì)自動(dòng)轉(zhuǎn)至電池供電。在此閾值以下時(shí),只有RTC和振蕩器會(huì)保持工作,而其它的微控制器都會(huì)關(guān)閉。
這就使所有相關(guān)邏輯可以在斷電時(shí)與篡改探測(cè)(稍后會(huì)講到)一起工作,除非電池移除或電能耗盡。
電池移除或電力故障下的保護(hù)
篡改系統(tǒng)的一般方法就是在干線電源不可用時(shí)移除電池。這就使得黑客可以有操縱系統(tǒng)的時(shí)間,之后再將電池裝回好像什么都沒(méi)發(fā)生過(guò)一樣。iRTC的獨(dú)立性包括其重置、時(shí)鐘和電源。獨(dú)立的電源在設(shè)備斷電時(shí)移除后,如果再連接電池,iRTC就會(huì)被重置,然后默認(rèn)被篡改的狀態(tài)。
值得注意的事,iRTC相對(duì)于SoC POR來(lái)說(shuō)有一個(gè)單獨(dú)的“上電復(fù)位(POR)”。iRTC POR只有在當(dāng)主供電和電池電源都移除,然后其中一個(gè)被重新連接時(shí)才發(fā)揮效用。iRTC有檢測(cè)移除電池的功能,并能內(nèi)部生成一個(gè)篡改干擾CPU。在最初的計(jì)量校準(zhǔn)階段,這種篡改可以被忽略,因?yàn)榇藭r(shí)系統(tǒng)處于分析模式。
檢測(cè)系統(tǒng)的外部篡改
電表也會(huì)面對(duì)來(lái)自真實(shí)世界的幾種攻擊。這包括系統(tǒng)箱體的損壞,某種信號(hào)的更改等。iRTC會(huì)得到片下防篡改開(kāi)關(guān)的支持,它可通過(guò)MCU上的一個(gè)專門防篡改引腳進(jìn)行連接,如圖2所示,因此可監(jiān)視和檢測(cè)出這些侵入。這些抗篡改開(kāi)關(guān)需要全時(shí)被監(jiān)控,所以它們需要用電池(RTC)來(lái)供電。
這些防篡改開(kāi)關(guān)更易產(chǎn)生噪音,且易引起錯(cuò)誤的篡改條件。iRTC會(huì)過(guò)濾掉這些噪音以防錯(cuò)誤的觸發(fā)行為。
篡改事件是影響CPU的原因之一。篡改事件的固件會(huì)采取必要的行為,如擦除所有安全信息、生成系統(tǒng)重置、在EEPROM或電池備份寄存器中儲(chǔ)存篡改事件,最后清除中斷標(biāo)志。CPU對(duì)一個(gè)篡改事件的響應(yīng)通常都是因應(yīng)用而不同的。
圖2 –外部篡改探測(cè)
值得注意的是,一旦篡改中斷產(chǎn)生,除非主供電(VDD)和電池電源(VBAT)都移除,否是它是不會(huì)被清除的。當(dāng)電源重新連接,篡改會(huì)處于默認(rèn)狀態(tài),只有在CPU內(nèi)使用密碼才可對(duì)其進(jìn)行重置。而在電表中,這個(gè)過(guò)程一般都在電表校準(zhǔn)時(shí)完成。
除此之外,固件可以通過(guò)使用ADC內(nèi)部溫度傳感器來(lái)實(shí)施篡改檢測(cè)。例如,當(dāng)溫度超出一個(gè)特定運(yùn)行范圍或是溫度有迅速的變化(當(dāng)被凍住或同焊接裝置接觸時(shí)),固件就會(huì)在存儲(chǔ)器中記錄這樣一個(gè)行為,然后在讀數(shù)時(shí)(AMR或手工讀數(shù))報(bào)告該篡改,并且點(diǎn)亮篡改LED燈。
篡改事件時(shí)間戳
iRTC可以檢測(cè)到以下篡改事件:
?當(dāng)系統(tǒng)運(yùn)行時(shí)移除電池(即VDD開(kāi)啟)
?當(dāng)系統(tǒng)關(guān)閉時(shí)移除電池(如,VDD關(guān)閉。POR自動(dòng)檢測(cè))
?如上所述外部篡改事件(如防篡改開(kāi)關(guān)或標(biāo)志的打開(kāi))
當(dāng)有篡改事件被檢測(cè)出來(lái)后,iRTC會(huì)在寄存器中記錄日期(年/月/日)和時(shí)間(小時(shí)/分鐘/秒)。在一個(gè)電能表應(yīng)用中,這會(huì)讓授權(quán)讀取數(shù)據(jù)的人了解(通過(guò)固件)自電表安裝以來(lái),其受攻擊的時(shí)間和受攻擊次數(shù)。而配電公司也會(huì)就此依據(jù)向消費(fèi)者開(kāi)出賬單或執(zhí)行罰款。另外,AMR還可在篡改事件發(fā)生后就能立刻發(fā)出提醒。
iRTC補(bǔ)償
iRTC包括一個(gè)專用的振蕩器,它依靠一個(gè)外部晶體作為其運(yùn)行計(jì)時(shí)的時(shí)鐘源。這個(gè)晶體的特性會(huì)依壓力、電壓、溫度或一定化學(xué)物質(zhì)而改變,這會(huì)改變晶體特性,這也會(huì)讓時(shí)鐘變快或變慢。iRTC會(huì)就時(shí)鐘產(chǎn)生的不精準(zhǔn)作出糾正,繼續(xù)在iRTC計(jì)數(shù)器中生成精確的時(shí)間,以保持時(shí)間的精確。如果晶體走的過(guò)快,iRTC就會(huì)去除一定的脈沖計(jì)數(shù),反之,如果時(shí)鐘走得慢,它就會(huì)加上一些脈沖,糾正就是這樣完成的。iRT可以糾正時(shí)鐘的不精確,從低至0.119 ppm到高至3906ppm1。
電表開(kāi)發(fā)者可以使用ADC內(nèi)部溫度傳感器,并在系統(tǒng)內(nèi)存中保留晶體的溫度概況,以決定所需校準(zhǔn)的尺度。iRTC校準(zhǔn)總是在被稱為“糾正間隔”的特殊間隔完成,而被加或去掉的脈沖數(shù)量被稱為“糾正值”。固件必須決定這兩個(gè)值,并將其編程至iRTC寄存器中以執(zhí)行糾正行為。
舉個(gè)例子,如果溫度的變化導(dǎo)致32.768 kHz晶體頻率減緩,如圖3所示,那么iRTC就會(huì)減緩計(jì)數(shù),1Hz時(shí)鐘的周期就會(huì)增加。為將計(jì)秒時(shí)鐘(或1Hz時(shí)鐘)帶至正確數(shù)值,iRTC則會(huì)于特殊糾正間隔內(nèi)減少時(shí)鐘脈沖。
圖3 – iRTC時(shí)鐘補(bǔ)償
同樣道理,當(dāng)晶體頻率走高,iRTC就可以編程增加必要的震蕩器時(shí)鐘數(shù)量以保持正確的時(shí)間。
如果糾正需要在可接受范圍外執(zhí)行,那么固件會(huì)顯示篡改信號(hào)或是晶體失敗。
防止惡意代碼更改RTC注冊(cè)設(shè)置
所有的iRTC注冊(cè)以及備份存儲(chǔ)都由一個(gè)寫入保護(hù)機(jī)制來(lái)保護(hù),這樣任何來(lái)自惡意或失控代碼的寫入都不能更改iRTC寄存器的設(shè)置,除非它通過(guò)一個(gè)預(yù)先規(guī)定的解鎖序列。
圖4顯示了iRTC寄存器上的寫入保護(hù)。這一寄存器在POR上前15秒是未上鎖的,然后自動(dòng)上鎖。在15秒之后如果想對(duì)它進(jìn)行編程,就必須有一個(gè)特殊的序列寫入控制寄存器,該程序只能是有效/安全的程序。一旦解鎖,寄存器也會(huì)在開(kāi)鎖2秒后自動(dòng)上鎖CPU可以在這兩次失敗前選擇鎖定寄存器。
圖4 –寫入保護(hù)序列
這一寫入序列額外的好處就是保護(hù)寄存器免受ESD或外部噪音的干擾,而這些干擾可以觸發(fā)行為改變寄存器設(shè)置。由于任何寄存器的寫入都必須經(jīng)歷一個(gè)固定的序列,所以ESD或噪音要摧毀寄存器是幾乎不可能的。
低電壓時(shí)防止寄存器崩潰
黑客或許會(huì)想要降低電壓以寫入RTC寄存器,從而改變?cè)O(shè)置或更改數(shù)值(因?yàn)閿?shù)字邏輯在低電壓狀態(tài)下也許不會(huì)工作),這樣也會(huì)帶來(lái)時(shí)間上的錯(cuò)誤。iRTC可以檢測(cè)出電壓的下降在某一特定閾值以下,所有RTC寄存器寫入入口都會(huì)自動(dòng)關(guān)閉,直到電壓回到正常運(yùn)行水平。CPU在這一事件中也會(huì)中斷。
強(qiáng)大單向計(jì)數(shù)器的單調(diào)計(jì)數(shù)
iRTC還整合了一個(gè)單向或單調(diào)計(jì)數(shù)器,當(dāng)寫入條件為true時(shí),CPU的寫入周期就會(huì)增加。這是一個(gè)32位計(jì)數(shù)器,可以用來(lái)保持電能脈沖的數(shù)目,如采用kWh計(jì)算,它就是終端客戶的計(jì)量單位。
單調(diào)計(jì)數(shù)器對(duì)付篡改的能力非常強(qiáng)大,因?yàn)橛?jì)數(shù)器只在POR上清除,除非電表重置,否則是不可能被重新加載的。在它上面的每一次寫入都會(huì)使值增加,因此惡意代碼是不會(huì)對(duì)其數(shù)值有所減少的。作為RTC寄存器空間的一部分,它還使其免受誤寫入的困擾,正如在前面所介紹的一樣。
強(qiáng)大的固件代碼更新
MCF512EM256提供高效和遠(yuǎn)程的代碼替換,如需要,還可選擇返回舊代碼。微控制器中有兩塊128kB的閃存,順序排列。每一組陣列都有單獨(dú)繪制的閃存寄存器。基于iRTC內(nèi)部的控制位,這兩組陣列的地址可以交換。這就使得用戶可以在第一個(gè)閃存陣列中執(zhí)行任務(wù)時(shí)又能更新第二個(gè)閃存陣列中的固件。所有的更新都可以在微控制器運(yùn)行期間發(fā)生。這就讓公共事業(yè)公司可以遠(yuǎn)程更新代碼而無(wú)需進(jìn)行電能估算。例如,如果一家電力公司想要更新LCD軟件,更新的軟件在未保護(hù)的情況下下載到了未使用的閃存陣列中(Block 1)。而在閃存陣列(Block 0)上保護(hù)還是啟用的,即代碼執(zhí)行地。在更新后,被更新陣列(Block 1)的保護(hù)重新啟用,而iRTC內(nèi)的控制位會(huì)指出閃存陣列(Block 1)擁有更新過(guò)的代碼。舊的代碼或被擦除或是作為回退選項(xiàng)。系統(tǒng)重置會(huì)致使最新更新過(guò)的代碼被執(zhí)行。在這種情況下,重置是不被推薦的,而核心代碼必須出現(xiàn)在兩種陣列中,并獲得塊保護(hù)。核心代碼不會(huì)被遠(yuǎn)程更改,且需要進(jìn)入后臺(tái)調(diào)試模式。
圖5 – 固件在MCF51EM256中升級(jí)
圖5展示了這一更新過(guò)程的高水準(zhǔn)運(yùn)行(更多詳情請(qǐng)參閱MCF51EM256參考手冊(cè)2)
自動(dòng)讀表(AMR)
AMR技術(shù)指的是電表使用有線或無(wú)線網(wǎng)絡(luò)設(shè)置對(duì)數(shù)據(jù)自動(dòng)收集并與通信中心通信的能力。AMR技術(shù)在世界上得到廣泛應(yīng)用,包括Radio Frequency (RF), ZigBee? 協(xié)議、數(shù)據(jù)調(diào)制解調(diào)器 (通過(guò)標(biāo)準(zhǔn)電話網(wǎng)絡(luò)) 和電力線通信(PLC)。它一些通信可能包括通過(guò)一個(gè)“電子讀數(shù)器”設(shè)備的光學(xué)端口讀取數(shù)據(jù)。后者可能會(huì)基于串行端口(RS-485)或是紅外線路。
有了AMR技術(shù)的協(xié)助,任何登錄MCF51EM256存儲(chǔ)器的篡改事件都會(huì)通過(guò)AMR網(wǎng)絡(luò)提交給變電站。MCF51EM256通過(guò)專用SPI/SCI可用引腳來(lái)實(shí)現(xiàn)AMR的運(yùn)行。
安全運(yùn)行失敗時(shí)的多重時(shí)鐘來(lái)源
MCU可以由三種獨(dú)立的時(shí)鐘源來(lái)計(jì)時(shí),如圖6所示的32.768 kHz iRTC晶體, 外部1-16 MHz晶體, 或是內(nèi)部32 kHz振蕩器。在時(shí)鐘故障的情況下,計(jì)算機(jī)正確操作(COP)會(huì)同內(nèi)部獨(dú)立時(shí)鐘協(xié)作,這有可能自動(dòng)改變時(shí)鐘源并自動(dòng)保持正常運(yùn)行。振蕩器會(huì)有失靈的時(shí)候,如焊點(diǎn)失效、篡改短路晶體等,在以上這些情況下,系統(tǒng)有可能就會(huì)死機(jī)。但是COP則會(huì)繼續(xù)以其獨(dú)立時(shí)鐘運(yùn)行并就超時(shí)做出重置。系統(tǒng)可以選擇改變時(shí)鐘源,如在重置后的重啟過(guò)程中轉(zhuǎn)至內(nèi)部時(shí)鐘源。
盡管內(nèi)部振蕩器的精確度會(huì)降低,但是精確度降低比無(wú)法測(cè)量要好。任何時(shí)鐘失敗都會(huì)在讀表時(shí)(AMR或手動(dòng))報(bào)告出來(lái)。同時(shí)也會(huì)產(chǎn)生篡改日志,并點(diǎn)亮篡改LED提示燈。
圖6 –為失敗安全運(yùn)行準(zhǔn)備的多重時(shí)鐘來(lái)源圖6 –為失敗安全運(yùn)行準(zhǔn)備的多重時(shí)鐘來(lái)源
總結(jié)
在智能電網(wǎng)中,能源表產(chǎn)品都可與能源公司進(jìn)行雙向溝通,而且遠(yuǎn)程接入并控制這些設(shè)備也成為了可能。隨著人力監(jiān)測(cè)/控制的(電力公司方)減少,這些設(shè)備的抗篡改性也變得最為重要,設(shè)備也應(yīng)能感知消費(fèi)者的信息。MCF51EM256微控制器是一個(gè)有效的解決方案,不管今天還是未來(lái)都可以滿足智能電表的需求。
MCF51EM256非常適合電表應(yīng)用,尤其是單相和多相電表,對(duì)聯(lián)網(wǎng)的和非聯(lián)網(wǎng)的同樣適用。所有以上提到的特色都基于MCF51EM256被應(yīng)用到了多相電表參考設(shè)計(jì)中。
評(píng)論
查看更多