MCU在几乎所有可以想象的应用中都被用作主要控制元素。它们的强大功能和灵活性使它们成为大多数设计核心的首选组件。由于确保您的设计不易被复制,反向设计或篡改非常重要,现代MCU现在提供了一些保护您设计的不同选项;为了确定哪种方法最适合给定的设计,对功能和权衡的理解非常重要。本文将回顾一些常见的设计保护方法,例如使您的MCU无法从外部读取世界,使用片上功能来验证要执行的代码是否未经修改,并使用外部组件提供更高级的安全功能。还将描述用于篡改检测的机载技术和可能应用的可能的“惩罚”。
保护您的设计
您可能没有太多考虑复制您的设计是多么容易,但是工程师们有经验的设计盗窃会告诉你,一旦它发生了,你永远不希望它再次发生!例如,如果您的MCU设计的片上代码可以由竞争对手,甚至是不道德的合同制造商读出,您的整个设计可以轻松复制和转售 - 或者使用不同的品牌或甚至使用您的品牌在黑市上。超出产品容量的流行设计对于这种类型的处理已经成熟,如果卖家无法从您那里获得产品,他们可能会进入黑市以满足他们的客户需求。
同样脆弱的是隐藏在其中的实际设计或算法MCU代码的核心。也许您有一种创新的方法来分析传感器数据,从而大大减少所需的功率或处理时间。您是否希望竞争对手能够复制您的代码并对您的算法进行反向工程?甚至有一些软件工具可以采用二进制并重新生成合理的“C”代码,这样算法细节甚至更容易破译。即使是像车载测试例程那样平凡的事情可能需要花费数月才能做到正确 - 您是否希望竞争对手能够快速获得与基础架构相关的代码,从而大幅降低开发成本,从而不公平地削减市场赢得业务的价格?
保护的另一个方面与硬件认证有关。通常,设计将允许外围设备或附加卡,因此可以升级或增强基础设计。如果设计不包含某些检测附加模块硬件授权的功能,则其他供应商可以创建成本较低的模块来竞争附加业务。打印机墨盒可能是最熟悉的硬件认证应用程序,以确保您购买制造商的品牌墨盒。通常打印机以折扣价出售,并且墨盒价格被夸大以覆盖打印机使用寿命期间的折扣。竞争对手可以以较低的价格出售墨盒,因为它不需要收回打印机折扣,并且仍能获得健康的利润。
因此,现在应该清楚的是,在许多情况下,能够保护您的硬件免受复制,逆向工程和伪造是很重要的。此外,如果没有安全的硬件作为起点,就不可能创建连接家庭等应用所需的各种安全设备(图1)。
图1:安全设备的常见示例在连通的家中。 (德州仪器公司提供)
随着时间的推移,一些技术不断发展,其中许多技术使用标准化的安全算法来保护和验证存储在MCU内部或MCU外围存储器中的代码。让我们看看一些最常见的保护技术和安全标准以及它们的用途。然后,我们将能够查看支持这些标准的各种MCU和外设,并可用于保护您的设计。
保护技术和通用安全标准
保护硬件不受复制的最常见技术可能是以一次性可编程(OTP)模式对MCU进行编程,其中无法从器件外部访问编程数据。必须关闭JTAG和调试工具,以便使用调试“后门”无法访问数据。但现代设计发现OTP方法非常有限,因为调试在故障分析和现场测试期间是一个有用的功能。 OTP方法消除的另一个重要功能是片上MCU代码的远程更新,用于升级,错误修复以及改善操作完整性或服务质量所需的其他类似更改。理想情况下,我们希望保护我们的代码免受逆向工程和复制,但仍然能够轻松地进行更新和更改。
某些MCU提供了一种访问片上存储器的安全方法。德州仪器(TI)及其MSP430FR MCU系列提供了一种通过密码保护JTAG端口的方法,或通过编程片上禁用熔丝特征来完全禁用它。禁用JTAG时,只允许使用密码通过引导加载程序访问设备。提供错误的密码可能会导致整个代码存储区被大量擦除。
TI还提供了一种在MSP430FR存储空间内创建安全区和非安全区的方法。通过将安全代码存储在第一个上电周期后映射到引导代码区的特殊存储区中,可以封装安全代码(通过IP封装或IPE)。 JTAG,BSL甚至系统内读取都无法访问IPE区域,因此它在设备的生命周期内保持安全。但是,安全区域内的代码可以访问安全区域内的数据,因此安全算法和密钥可以在安全区域内共存。
保护IP所需的最常见安全算法用于加密和/或解密安全数据或验证数据,以证明它来自已知且受信任的来源。 MCU可以提供专用硬件来实现通用的行业标准,而Microchip PIC32MZ MCU系列就是这样的一个例子。 PIC32MZ器件包括一个硬件加密引擎,可实现常见的批量加密解密“密码”,如AES,DES和Triple DES。这些功能用于通过使用密钥加密来保护安全数据,以便只有“知道”密钥的进程才能解密数据。身份验证由SHA-1,SHA-256,MD-5,AES-GCM和HMAC提供 - 所有这些都在硬件中实现。加密引擎硬件架构和最终性能(输入时钟的Mbps/MHz和100 MHz时钟的Mbps)如图2所示。性能值远远优于软件实现,并表明如果大量数据需要经常处理(可能在高速数据传输期间)或在时间关键事件期间(例如在启动过程中),使用硬件加密引擎对满足系统要求至关重要。
图2:Microchip PIC32MZ MCU加密引擎和性能指标。 (由Microchip提供)
双核MCU
在更复杂的系统中实现安全性的另一种方法是使用双核MCU。其中一个MCU内核可专用于实现安全功能,而另一个内核可用于更标准的操作。恩智浦半导体LPC4370双核MCU(图3)有两个CPU内核,一个是ARM Cortex-M4,另一个是ARM Cortex-M0。 Cortex-M4内核可用于应用程序的“繁重”部分,而Cortex-M0内核可用于实现安全相关功能和通用外设功能 - 可能管理以太网和USB端口,配置各种端口,以及管理任何片外资源。
图3:恩智浦LPC43xx双核MCU可用于保护您的设计。 (由恩智浦提供)
对于更高级的安全设计,LPC43Sxx设备上提供的可选AES加密和解密引擎可用于加速标准加密功能,如AES,CMAC和随机数生成。 AES密钥可以安全地存储在片上一次性可编程(OTP)存储器中,并可选择加密以提供额外保护。 AES硬件甚至可用于实现安全引导功能(确保引导代码未被篡改 - 黑客用来攻击嵌入式系统安全性的常见目标)来加密图像以进一步保护设计IP。
安全外围设备
如果您想通过一些额外的安全功能扩充现有MCU,您可以添加安全外设以获得所需的安全功能。例如,Atmel ATSHA204A设备提供防篡改的安全密钥存储和身份验证。片上4.5 Kb的EEPROM安全存储器可用于存储多个密钥,执行读写操作以管理密码或机密数据。可以组织,配置和锁定内存以防止更改。每个设备都有一个唯一的72位序列号,并支持常见的加密算法(带有消息验证码和基于哈希的消息验证码选项的SHA-256)和高质量的随机数发生器。 I²C接口使设备可以轻松连接到标准MCU。 ATSHA204A通常用于与主机MCU的质询和响应事务,如下面的图4所示。
图4:使用Atmel ATSHA204验证和保护设计的IP。 (由Atmel提供)
ATSHA204使用存储的密钥和消息认证码(MAC)命令处理MCU质询,以创建发送回主机的响应。主机可以通过执行相同的MAC命令来验证响应是否正确。事务的观察者永远不会看到密钥,因此实际上不可能确定复制设计或确定存储在ATSHA204中的任何秘密信息所需的密钥。 ATSHA204可用于防止复制设计,通过在执行前验证固件或介质(例如安全启动)来保护固件或介质,存储和管理主机MCU用于安全通信,存储密钥配置,校准或消耗的会话密钥数据,或用于验证用户密码。 Atmel还为工程师提供ATSHA204的加密认证产品培训模块。总之,当使用现代MCU和各种支持设备可用的高级安全功能时,现在可以保护您的设计免受逆向工程和黑客攻击。随着针对嵌入式系统的基于网络的攻击的发生持续增长,保护网络嵌入式系统尤其重要。
全部0条评论
快来发表一下你的评论吧 !