飞思卡尔防篡改特性MCU强劲智能电表解决方案
摘要: 窃取能源和篡改电表是一个世界性问题,这个问题会导致收入损失。消费者发现能够控制自己的电表,使之暂停计费或不被记录,改变或停止电表内的实时计时器,甚至可以做到跳过电表直接使用电能而不必付费。飞思卡尔最新于电表市场推出的MCF51EM256微控制器将几大防篡改特性集成于一个芯片,大大减少了客户的材料账单(BoM)成本,又能有效地防止篡改现象。
关键字: 窃取能源和篡改电表, MCF51EM256微控制器,
窃取能源和篡改电表是一个世界性问题,这个问题会导致收入损失。消费者发现能够控制自己的电表,使之暂停计费或不被记录,改变或停止电表内的实时计时器,甚至可以做到跳过电表直接使用电能而不必付费。飞思卡尔最新于电表市场推出的MCF51EM256微控制器将几大防篡改特性集成于一个芯片,大大减少了客户的材料账单(BoM)成本,又能有效地防止篡改现象。
简介—防篡改特性需求
着电力成本的提高,窃电行为已经成为政府机构(公共事业部门)的主要担忧,这是一个全球性的问题,尤其在印度和中国等人口众多的国家更是严重。在公共设施计量应用中,不法分子会想法设法窃取信息或是更改内部设置。这些方法中比较常见的就是对时间进行微调以欺骗系统。
配电公司可能会依据每天的时段、最大需求和负荷等因素实行错峰电价,这就需要一个实时计时器(RTC)以提供准确的时间参考。某些不法分子就会篡改计时器或操纵时间欺骗系统,以便改变计费结果,如将PM改为AM,这样一来,因为在更改后的时段内采用非高峰负荷电价,所以电表固件会收取更少的费用。实时计时器(RTC)通常依靠一个32.768 kHz的外部晶体振荡器,而不法分子则会改变这个RTC晶体以减缓震荡达到少计数的目的,从而会使测量和计费也和实际耗电有所不同。
这些收入损失中的大部分都可以通过安装电子电表来解决,因为它们可以探测到篡改行为从而保证正确的计费,这不同于电子机械电表。另外,这些电表会采用AMR或智能电网等先进的计量技术连接,公共事业公司便可以受益于自动获悉任何远程发生的篡改行为。
关于MCF51EM256
MCF51EM256基于ColdFire V1的微控制器,具有256K闪存、四个高精度16位的SAR ADC,可以在所有相位同时测量电流和电压,以及中性电流。ADC由内部可编程延迟模块自动激发,以对电流和电压作出精确、同相的读数。微控制器包括一个精确的1.2v输出电压基准,内部ADC和如增益放大器等外部组件可以利用它来进行精准的测量。微控制器包括一个独立的RTC(iRTC),同时钟一样,它有自己的电源域,因此和其它系统组件是分开的。大多数的防篡改特性都在iRTC中实施。MCF51EM256还包括一个LCD驱动模块、一系列如 IIC、SCI、SPI、可编程比较器和AMR SPI/SCI模块等通信外围设备。
MCF51EM256的防篡改特性
带有独立电源域的RTC
当主供电可用时,iRTC在主供电(VDD)上全时运行,当主电源发生故障时,会自动切换至电池供电(VBAT)。此行为过程如图1所示。
图1— 独立RTC
iRTC可以检测出主供电电压(VDD)在特定阈值的下降,如在此阈值以下,就会自动转至电池供电。在此阈值以下时,只有RTC和振荡器会保持工作,而其它的微控制器都会关闭。
这就使所有相关逻辑可以在断电时与篡改探测(稍后会讲到)一起工作,除非电池移除或电能耗尽。
电池移除或电力故障下的保护
篡改系统的一般方法就是在干线电源不可用时移除电池。这就使得黑客可以有操纵系统的时间,之后再将电池装回好像什么都没发生过一样。iRTC的独立性包括其重置、时钟和电源。独立的电源在设备断电时移除后,如果再连接电池,iRTC就会被重置,然后默认被篡改的状态。
值得注意的事,iRTC相对于SoC POR来说有一个单独的“上电复位(POR)”。iRTC POR只有在当主供电和电池电源都移除,然后其中一个被重新连接时才发挥效用。iRTC有检测移除电池的功能,并能内部生成一个篡改干扰CPU。在最初的计量校准阶段,这种篡改可以被忽略,因为此时系统处于分析模式。
检测系统的外部篡改
电表也会面对来自真实世界的几种攻击。这包括系统箱体的损坏,某种信号的更改等。iRTC会得到片下防篡改开关的支持,它可通过MCU上的一个专门防篡改引脚进行连接,如图2所示,因此可监视和检测出这些侵入。这些抗篡改开关需要全时被监控,所以它们需要用电池(RTC)来供电。
这些防篡改开关更易产生噪音,且易引起错误的篡改条件。iRTC会过滤掉这些噪音以防错误的触发行为。
篡改事件是影响CPU的原因之一。篡改事件的固件会采取必要的行为,如擦除所有安全信息、生成系统重置、在EEPROM或电池备份寄存器中储存篡改事件,最后清除中断标志。CPU对一个篡改事件的响应通常都是因应用而不同的。
图2 –外部篡改探测
值得注意的是,一旦篡改中断产生,除非主供电(VDD)和电池电源(VBAT)都移除,否是它是不会被清除的。当电源重新连接,篡改会处于默认状态,只有在CPU内使用密码才可对其进行重置。而在电表中,这个过程一般都在电表校准时完成。
除此之外,固件可以通过使用ADC内部温度传感器来实施篡改检测。例如,当温度超出一个特定运行范围或是温度有迅速的变化(当被冻住或同焊接装置接触时),固件就会在存储器中记录这样一个行为,然后在读数时(AMR或手工读数)报告该篡改,并且点亮篡改LED灯。
篡改事件时间戳
iRTC可以检测到以下篡改事件:
当系统运行时移除电池(即VDD开启)
当系统关闭时移除电池(如,VDD关闭。POR自动检测)
如上所述外部篡改事件(如防篡改开关或标志的打开)
当有篡改事件被检测出来后,iRTC会在寄存器中记录日期(年/月/日)和时间(小时/分钟/秒)。在一个电能表应用中,这会让授权读取数据的人了解(通过固件)自电表安装以来,其受攻击的时间和受攻击次数。而配电公司也会就此依据向消费者开出账单或执行罚款。另外,AMR还可在篡改事件发生后就能立刻发出提醒。
iRTC补偿
iRTC包括一个专用的振荡器,它依靠一个外部晶体作为其运行计时的时钟源。这个晶体的特性会依压力、电压、温度或一定化学物质而改变,这会改变晶体特性,这也会让时钟变快或变慢。iRTC会就时钟产生的不精准作出纠正,继续在iRTC计数器中生成精确的时间,以保持时间的精确。如果晶体走的过快,iRTC就会去除一定的脉冲计数,反之,如果时钟走得慢,它就会加上一些脉冲,纠正就是这样完成的。iRT可以纠正时钟的不精确,从低至0.119 ppm到高至3906ppm1。
电表开发者可以使用ADC内部温度传感器,并在系统内存中保留晶体的温度概况,以决定所需校准的尺度。iRTC校准总是在被称为“纠正间隔”的特殊间隔完成,而被加或去掉的脉冲数量被称为“纠正值”。固件必须决定这两个值,并将其编程至iRTC寄存器中以执行纠正行为。
举个例子,如果温度的变化导致32.768 kHz晶体频率减缓,如图3所示,那么iRTC就会减缓计数,1Hz时钟的周期就会增加。为将计秒时钟(或1Hz时钟)带至正确数值,iRTC则会于特殊纠正间隔内减少时钟脉冲。
图3 – iRTC时钟补偿
同样道理,当晶体频率走高,iRTC就可以编程增加必要的震荡器时钟数量以保持正确的时间。
如果纠正需要在可接受范围外执行,那么固件会显示篡改信号或是晶体失败。
防止恶意代码更改RTC注册设置
所有的iRTC注册以及备份存储都由一个写入保护机制来保护,这样任何来自恶意或失控代码的写入都不能更改iRTC寄存器的设置,除非它通过一个预先规定的解锁序列。
图4显示了iRTC寄存器上的写入保护。这一寄存器在POR上前15秒是未上锁的,然后自动上锁。在15秒之后如果想对它进行编程,就必须有一个特殊的序列写入控制寄存器,该程序只能是有效/安全的程序。一旦解锁,寄存器也会在开锁2秒后自动上锁CPU可以在这两次失败前选择锁定寄存器。
图4 –写入保护序列
这一写入序列额外的好处就是保护寄存器免受ESD或外部噪音的干扰,而这些干扰可以触发行为改变寄存器设置。由于任何寄存器的写入都必须经历一个固定的序列,所以ESD或噪音要摧毁寄存器是几乎不可能的。
低电压时防止寄存器崩溃
黑客或许会想要降低电压以写入RTC寄存器,从而改变设置或更改数值(因为数字逻辑在低电压状态下也许不会工作),这样也会带来时间上的错误。iRTC可以检测出电压的下降在某一特定阈值以下,所有RTC寄存器写入入口都会自动关闭,直到电压回到正常运行水平。CPU在这一事件中也会中断。
强大单向计数器的单调计数
iRTC还整合了一个单向或单调计数器,当写入条件为true时,CPU的写入周期就会增加。这是一个32位计数器,可以用来保持电能脉冲的数目,如采用kWh计算,它就是终端客户的计量单位。
单调计数器对付篡改的能力非常强大,因为计数器只在POR上清除,除非电表重置,否则是不可能被重新加载的。在它上面的每一次写入都会使值增加,因此恶意代码是不会对其数值有所减少的。作为RTC寄存器空间的一部分,它还使其免受误写入的困扰,正如在前面所介绍的一样。
强大的固件代码更新
MCF512EM256提供高效和远程的代码替换,如需要,还可选择返回旧代码。微控制器中有两块128kB的闪存,顺序排列。每一组阵列都有单独绘制的闪存寄存器。基于iRTC内部的控制位,这两组阵列的地址可以交换。这就使得用户可以在第一个闪存阵列中执行任务时又能更新第二个闪存阵列中的固件。所有的更新都可以在微控制器运行期间发生。这就让公共事业公司可以远程更新代码而无需进行电能估算。例如,如果一家电力公司想要更新LCD软件,更新的软件在未保护的情况下下载到了未使用的闪存阵列中(Block 1)。而在闪存阵列(Block 0)上保护还是启用的,即代码执行地。在更新后,被更新阵列(Block 1)的保护重新启用,而iRTC内的控制位会指出闪存阵列(Block 1)拥有更新过的代码。旧的代码或被擦除或是作为回退选项。系统重置会致使最新更新过的代码被执行。在这种情况下,重置是不被推荐的,而核心代码必须出现在两种阵列中,并获得块保护。核心代码不会被远程更改,且需要进入后台调试模式。
图5 – 固件在MCF51EM256中升级
图5展示了这一更新过程的高水准运行(更多详情请参阅MCF51EM256参考手册2)
自动读表(AMR)
AMR技术指的是电表使用有线或无线网络设置对数据自动收集并与通信中心通信的能力。AMR技术在世界上得到广泛应用,包括Radio Frequency (RF), ZigBee 协议、数据调制解调器 (通过标准电话网络) 和电力线通信(PLC)。它一些通信可能包括通过一个“电子读数器”设备的光学端口读取数据。后者可能会基于串行端口(RS-485)或是红外线路。
有了AMR技术的协助,任何登录MCF51EM256存储器的篡改事件都会通过AMR网络提交给变电站。MCF51EM256通过专用SPI/SCI可用引脚来实现AMR的运行。
安全运行失败时的多重时钟来源
MCU可以由三种独立的时钟源来计时,如图6所示的32.768 kHz iRTC晶体, 外部1-16 MHz晶体, 或是内部32 kHz振荡器。在时钟故障的情况下,计算机正确操作(COP)会同内部独立时钟协作,这有可能自动改变时钟源并自动保持正常运行。振荡器会有失灵的时候,如焊点失效、篡改短路晶体等,在以上这些情况下,系统有可能就会死机。但是COP则会继续以其独立时钟运行并就超时做出重置。系统可以选择改变时钟源,如在重置后的重启过程中转至内部时钟源。
尽管内部振荡器的精确度会降低,但是精确度降低比无法测量要好。任何时钟失败都会在读表时(AMR或手动)报告出来。同时也会产生篡改日志,并点亮篡改LED提示灯。
图6 –为失败安全运行准备的多重时钟来源图6 –为失败安全运行准备的多重时钟来源
总结
在智能电网中,能源表产品都可与能源公司进行双向沟通,而且远程接入并控制这些设备也成为了可能。随着人力监测/控制的(电力公司方)减少,这些设备的抗篡改性也变得最为重要,设备也应能感知消费者的信息。MCF51EM256微控制器是一个有效的解决方案,不管今天还是未来都可以满足智能电表的需求。
MCF51EM256非常适合电表应用,尤其是单相和多相电表,对联网的和非联网的同样适用。所有以上提到的特色都基于MCF51EM256被应用到了多相电表参考设计中。
暂无评论