隐藏模拟与数字资源及其互联方式
目前我们已经讨论了系统固件部分的IP保护问题。一些OEM厂商为了防止竞争对手读取部件编号,会在PCB板上涂焦油或环氧树脂。对于大批量系统还可以在IC器件上印刷定制部件编号。定制部件编号同样可以使实际部件编号难以识别。然而,这些方法都无法做到万无一失。竞争对手可以跟踪各种连接,观察各种引脚上的信号,并找出设计中所使用的部件,而且找到各种模块在PCB板上的连接方式也并非难事。因此,隐藏各种外设及其互连方式的唯一办法就是使用物理隐藏。例如,如果所有连接都能隐藏到单个芯片内部,那么要弄懂信号链并确定系统使用的外设就变得更加困难。将各种外设集成到单个芯片中有助于隐藏硬件相关信息,考虑到这一事实,因此在防止受逆向工程攻击时,片上系统(SoC)器件应该是最佳选择。然而,有些SoC的专用引脚存在逆向工程漏洞,例如当器件为外设提供专用引脚时,就很容易判断出所使用的外设类型。因此,那些具有灵活布线功能、可以让任意外设连接任意引脚的SoC能够更好地防止受逆向工程攻击。
图3(a)、3(b)和3(c)分别给出了电动自行车控制系统的三个高端实现实例(为了简便,只给出了比较抽象的方框图,并未包含PCB上的各种其它组件)。这些实现方案包括:
· 使用焊接在印刷威廉希尔官方网站
板上的各个模块
· 使用带专用外设引脚的SoC
· 使用带灵活I/O布线功能的SoC
图3(a):基于单个组件的实现方案
图3(b):带专用外设引脚的SoC
图3(c):采用带灵活I/O布线功能的SoC
如果让工程师对以不同方式实现同一系统的这三种PCB板进行逆向工程设计,哪种更容易被还原工程?答案很明显应该是图3(a)中的实现方案,因为一切都清晰暴露在PCB板上。要对3(b)中的方案进行反逆向工程设计就需要更长的时间,但仍可获得基本的实现方法。那么图3(c)方案会怎样?可以说很难甚至不可能摸清这种实现方案,因为它更像是一个只有输出和输出的黑盒子。工程师根本无法找到该系统中实现的模拟信号链,因为SoC可以让所有外设连接任何一个引脚,而且这些外设在内部的互连无需借助任何物理引脚。此外,由于可编程逻辑没有使用专用引脚,因此无法找到保护逻辑。
对这种方案进行逆向工程设计的唯一可能方法是读取决定外设与引脚连接的寄存器。但是竞争对手必须首先解决闪存读取这个难题。如果有人能破解闪存的安全机制,或者系统设计人员忘了设置必要的闪存保护功能,那么如果外设与大部分MCU一样有固定地址,这种情况下信号链才可能被破解。
赛普拉斯半导体公司的PSoC 1器件在这方面能提供最佳的安全功能。这些器件采用通用模拟和数字模块以及可编程布线方式。同一通用模块可实现任意外设。例如,可编程模拟模块可用于实现可编程增益放大器 (PGA)、模数转换器(ADC)、比较器、滤波器甚至电容式感应模块。可编程数字模块可配置成定时器、计数器、UART、PRS生成器或SPI。这些模块都可以连接到任意引脚。这一切都由一些寄存器位来确定。这些寄存器值存储在闪存中并在启动过程中加载。寄存器值在闪存中的存储位置并不固定,而是由程序来决定。系统设计人员可在编译过程中改变寄存器值的存储位置。此外,还可以在运行过程中修改这些寄存器值,以便重新配置模块从而实现不同外设。例如,在启动阶段配置成可编程增益放大器的模块可重新配置成比较器或ADC。因此,几乎不可能对包含这类器件的设计中的硬件资源进行逆向工程设计。
如今的产品要想取得成功必须面对逆向工程设计这一残酷现实,为此应在系统中添加IP安全功能用以避免IP遭到未授权访问。其中很重要的一点就是要隐藏硬件与固件实现方案,从而实现最高安全等级。不同的MCU制造商提供不同的方法来防止闪存遭到非法读/写,因此选择系统器件之前必须评估该产品的安全技术与效果。采用可编程资源和可编程布线技术的SoC对系统中所有底层实现方案都进行了抽象化,留给竞争对手的只是一个无法实现逆向工程的黑盒子。
隐藏模拟与数字资源及其互联方式
目前我们已经讨论了系统固件部分的IP保护问题。一些OEM厂商为了防止竞争对手读取部件编号,会在PCB板上涂焦油或环氧树脂。对于大批量系统还可以在IC器件上印刷定制部件编号。定制部件编号同样可以使实际部件编号难以识别。然而,这些方法都无法做到万无一失。竞争对手可以跟踪各种连接,观察各种引脚上的信号,并找出设计中所使用的部件,而且找到各种模块在PCB板上的连接方式也并非难事。因此,隐藏各种外设及其互连方式的唯一办法就是使用物理隐藏。例如,如果所有连接都能隐藏到单个芯片内部,那么要弄懂信号链并确定系统使用的外设就变得更加困难。将各种外设集成到单个芯片中有助于隐藏硬件相关信息,考虑到这一事实,因此在防止受逆向工程攻击时,片上系统(SoC)器件应该是最佳选择。然而,有些SoC的专用引脚存在逆向工程漏洞,例如当器件为外设提供专用引脚时,就很容易判断出所使用的外设类型。因此,那些具有灵活布线功能、可以让任意外设连接任意引脚的SoC能够更好地防止受逆向工程攻击。
图3(a)、3(b)和3(c)分别给出了电动自行车控制系统的三个高端实现实例(为了简便,只给出了比较抽象的方框图,并未包含PCB上的各种其它组件)。这些实现方案包括:
· 使用焊接在印刷威廉希尔官方网站
板上的各个模块
· 使用带专用外设引脚的SoC
· 使用带灵活I/O布线功能的SoC
图3(a):基于单个组件的实现方案
图3(b):带专用外设引脚的SoC
图3(c):采用带灵活I/O布线功能的SoC
如果让工程师对以不同方式实现同一系统的这三种PCB板进行逆向工程设计,哪种更容易被还原工程?答案很明显应该是图3(a)中的实现方案,因为一切都清晰暴露在PCB板上。要对3(b)中的方案进行反逆向工程设计就需要更长的时间,但仍可获得基本的实现方法。那么图3(c)方案会怎样?可以说很难甚至不可能摸清这种实现方案,因为它更像是一个只有输出和输出的黑盒子。工程师根本无法找到该系统中实现的模拟信号链,因为SoC可以让所有外设连接任何一个引脚,而且这些外设在内部的互连无需借助任何物理引脚。此外,由于可编程逻辑没有使用专用引脚,因此无法找到保护逻辑。
对这种方案进行逆向工程设计的唯一可能方法是读取决定外设与引脚连接的寄存器。但是竞争对手必须首先解决闪存读取这个难题。如果有人能破解闪存的安全机制,或者系统设计人员忘了设置必要的闪存保护功能,那么如果外设与大部分MCU一样有固定地址,这种情况下信号链才可能被破解。
赛普拉斯半导体公司的PSoC 1器件在这方面能提供最佳的安全功能。这些器件采用通用模拟和数字模块以及可编程布线方式。同一通用模块可实现任意外设。例如,可编程模拟模块可用于实现可编程增益放大器 (PGA)、模数转换器(ADC)、比较器、滤波器甚至电容式感应模块。可编程数字模块可配置成定时器、计数器、UART、PRS生成器或SPI。这些模块都可以连接到任意引脚。这一切都由一些寄存器位来确定。这些寄存器值存储在闪存中并在启动过程中加载。寄存器值在闪存中的存储位置并不固定,而是由程序来决定。系统设计人员可在编译过程中改变寄存器值的存储位置。此外,还可以在运行过程中修改这些寄存器值,以便重新配置模块从而实现不同外设。例如,在启动阶段配置成可编程增益放大器的模块可重新配置成比较器或ADC。因此,几乎不可能对包含这类器件的设计中的硬件资源进行逆向工程设计。
如今的产品要想取得成功必须面对逆向工程设计这一残酷现实,为此应在系统中添加IP安全功能用以避免IP遭到未授权访问。其中很重要的一点就是要隐藏硬件与固件实现方案,从而实现最高安全等级。不同的MCU制造商提供不同的方法来防止闪存遭到非法读/写,因此选择系统器件之前必须评估该产品的安全技术与效果。采用可编程资源和可编程布线技术的SoC对系统中所有底层实现方案都进行了抽象化,留给竞争对手的只是一个无法实现逆向工程的黑盒子。
举报