RTC-TAMPER

发布于:2022-11-09 ⋅ 阅读:(9) ⋅ 点赞:(0) ⋅ 评论:(0)

在学习STM32-RTC时,对入侵检测功能有很多不解;最大的困惑就是,这个东西有什么用?

故作了以下笔记,欢迎指正:

入侵检测描述:当TAMPER引脚上的信号从0 变成1 或者从1 变成0( 取决于备份控制寄存器BKP_CR 的TPAL位) ,会产生一个侵入检测事件。侵入检测事件将所有数据备份寄存器内容清除。

 根据上面的描述,个人进行了以下的应用场景猜想:

想1:将程序关键变量X=Y保存到数据备份寄存器;开机后,读数据备份寄存器的值,如果X==Y则进入主功能;当竞争对手对产品进行拆解时,产生一个入侵检测事件,数据备份寄存器丢失(X!=Y),产品无法使用。不过直接应用产品风险过大;一般应用,入侵事件生成中断,停止模式/待机模式唤醒,再进行入侵事件处理。

想2:与猜想1一样,存储重要信息的功能;比如存储机器的质保资格;拆机产生侵入检测事件,数据备份寄存器丢失,质保资格失效。

想3:实现数据备份寄存器复位。类比电脑的CMOS;数据备份寄存器存储系统的重要参数,决定系统能否正常工作;入侵检测事件的加入;可以在用户自行修改了系统启动参数时(如window升级失败后),通过触发入侵检测事件,让数据备份寄存器恢复为出厂设置。

为了验证以上的猜想,故作了资料搜集的工作,得到了一些比较有用的结论。

这是一个例子:电力和能源计量,配电公司可能会根据一天中的时间、最大需求、负载等有不同的计费费率,从而使实时时钟 (RTC) 成为电子电表提供时间参考的重要组成部分。黑客可能会篡改时钟或操纵时间来欺骗系统并以不同的方式充电,例如,将下午1点更改深夜1点,以便在此期间的非峰值负载而降低计量固件的收费。黑客可以更改RTC晶体,以减少RTC通常依赖于32.768 kHz外部晶体振荡器。这在测量和计费中引入了不准确。

那么,为防止黑客对电子电表的这种窃取行为;可以怎么做呢?

①可以增加检测功能,如在智能电表的外壳上增加TAMPER引脚检测功能,当外壳被打开时就可以生成一个入侵检测信号,以下是IAmAProgrammer的防拆机电路设计的回答:

②当外壳被打开,检测到入侵信号时,系统可以执行事先设定好的程序,去选择对入侵(攻击)的处理。 

当然这种简单的入侵处理是存在缺陷的,随着时间的推移,这些开关往往会被氧化,当发生篡改时,这些开关由于氧化而保持原有的状态,因此可能永远不会向系统指示篡改事件。

当然,有更高级的入侵检测处理,那就是主动篡改检测,感兴趣的小伙伴,可以看看这篇文章:防篡改实时时钟:确保您的嵌入式系统安全 - EDNicon-default.png?t=M85Bhttps://www.edn.com/anti-tamper-real-time-clock-rtc-make-your-embedded-system-secure/

到这里,应该有人会对为什么入侵事件产生后要清除备份数据寄存器的设计产生困惑。重要的数据一般也不会存放在备份数据寄存器中,有掉电风险且备份寄存器本身容量也有限。往往也会将重要数据存放在掉电也不受影响的flash、EEPROM中。所以擦除的本身意义是什么?对此,我也困惑,硬是作了以下的猜测,欢迎讨论、指正:

清除备份数据寄存器的设计现在看来是可有可无的,但是在早期的背景中,存储是昂贵的,还是会将系统重要的配置信息存放在后备寄存器中,从而正确驱动系统或恢复系统。而当黑客攻击时,之所以要清除是防止黑客拿到系统配置的信息(管理权)从而为所欲为控制整个系统,故将系统配置的信息(管理权)清除。抱歉,这是我猜的!!!

总结:入侵检测就是检测设备是否受到黑客攻击的手段,为防范黑客攻击设备窃取或盗用设备,故需要入侵检测。TAMPER引脚加入为篡改事件保护电路设计提供基础。当检测到入侵时,触发篡改事件中断,cpu再去选择擦除任何安全信息,生成系统复位,将篡改事件存储在EEPROM或电池备份寄存器中,最后清除中断标志。CPU对篡改事件的响应通常是特定于应用程序的。需要注意的是,一旦产生篡改信号,除非主电源(VDD)和电池电源(VBAT)都被移除,否则不应清除该信号。当电源重新连接时,篡改应该是默认条件,并且只能通过处理器中的代码重置。例如,在电表中,这通常在电表校准期间完成。