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