Soartan-3A/3AN/3A DSP FPGA应用中的高级安全机制
发布时间:2008/9/19 0:00:00 访问次数:692
本节探讨spartan3a/3ani3adsp应用中如下更高级的安全机制技术。
(1) 主动防御(jtag边界扫描)。
(2) 比特流验证(循环冗余校验crc)。
(3) 高级数据操作。
1.主动防御
一个普遍的问题是任何带有jtag接口的器件都易受反向工程的攻击,通过采用边界扫描链,jtag也可以用于对系统、器件、p或标准产品进行反向工程,这需要攻击者拥有充足的资金、渊博的知识和熟练的技术,以及相应的设各与时间。一些公司或竞争对手都在试图了解一个产品如何工作,并且将很有可能试图降低成本或增加功能。本节讨论将不同特性整合到设计中来检测和防止jtag反向工程的方法。
jtag边界扫描起初是为协助测试和调试pcb上的i/0连接功能雨设计的,后来用于将逻辑整合到芯片内部。在使用intest命令和边界扫描功能时可以将数据移动到模块或ic中,然后用时钟记录ic来读回结果数据,该操作可以为技术娴熟的用户提供ic或模块中的架构或逻辑。如图1所示,这也是一种对设计或系统进行反向工程的方法,因此未授权使用jtag端口对于有些用户及其产品的安全来说是一个隐患。
图1 标准边界扫描链
spartan-3 a/3an/3 a dsp器件是jtag兼容型的,允许配置和读回fpga,jtag兼容性也意味着jtag引脚无法被禁止。但是通过采用边界扫描模块,设计者可以进行安全设计,以检测和阻止未授权即使用jtag端口。
(1) 边界扫描模块
bscan ̄spartan3a宏模块如图2所示,它允许设计者获取边界扫描信号。通过对该模块进行简单的例化,设计者就可以从fpga内部监控jtag引脚上的活动。
图2 bscan spartan3a宏模块
以下代码为bscan_spartan3a所例化的结果:
(2) 边界扫描模块如何提高安全性
如前所述,边界扫描模块可以为从内部监控jtag引脚的活动提供条件,如果检测到端口上的活动,则可以设计逻辑来完全擦除fpga配置或绕过/阻止选定的功能。icap可以用于擦除spartan-3 a/3 an/3a dsp器件的配置。
图3所示为绕过关键逻辑和功能的实例,该设计将旁路mux整合到由检测逻辑输出控制的关键输入功能中。在正常操作过程中,信号进入逻辑。当检测到jtag活动时信号旁路被断开,并通过逻辑设置一个值,从而使intest输出对于反向工程内部逻辑来说完全无用。
图3 用户定义边界扫描
在图4中,检测逻辑可以和门电路一样简单,或者应用可能需要更为复杂的逻辑。
图4 检测逻辑
(3) jtag现场更新和安全诊断
在多数情况下,一旦系统或器件部署完毕并开始运转,jtag接口就不能被访问或使用。但是总有例外的情况,例如,当系统在现场更新或诊断时就需要jtag端口。如果为了保护器件免受通过jtag端口进行的未授权访问而实现了检测安全性,就会阻止授权访问。设计可通过多种方式实现,为此可设计检测逻辑。它只会激活intest测试指令,而使jtag在所有其他模式中都能正常操作,如bypass、idcode、usercode和extest,从而使通过现场访问jtag端口进行更新和诊断变得很简单。
对于更为复杂的安全性,检测逻辑可以设计用来监控特定的访问路线或代码序列以允许访问jtag正常操作模式。当现场工作组需要访问intest指令以对系统功能进行内部测试和验证时,这是很有用的。这样可以释放jtag指令,直至诊断测试和升级完成。升级完成后,重启升级后的fpga就可以将检测逻辑复位。对于只进行诊断的系统,可以发布一个代码序列,以重新开始进行检测逻辑监控。
两种方法都能保证完成现场服务任务,而不会发生通过jtag端口危及安全的情况。如果检测到的序列不正确,就可以用icap来复位(擦除)。
(4) 主动防御逻辑资源要求
spartan-3系列器件具有很多内置于芯片中的嵌入式特性和功能,jtag状态机和到icap的接口逻辑包含在这些嵌入式功能中。bscan ̄spartan3a模块不需要逻辑资源,因为该功能是嵌入式的。但是连至例化的jtag模块的用户逻辑会消耗逻辑和互连资源,该逻辑可以是一个逻辑单元也可以是数十个逻辑单元,这取决于用户逻辑/功能的复杂度。
(5) 主动
本节探讨spartan3a/3ani3adsp应用中如下更高级的安全机制技术。
(1) 主动防御(jtag边界扫描)。
(2) 比特流验证(循环冗余校验crc)。
(3) 高级数据操作。
1.主动防御
一个普遍的问题是任何带有jtag接口的器件都易受反向工程的攻击,通过采用边界扫描链,jtag也可以用于对系统、器件、p或标准产品进行反向工程,这需要攻击者拥有充足的资金、渊博的知识和熟练的技术,以及相应的设各与时间。一些公司或竞争对手都在试图了解一个产品如何工作,并且将很有可能试图降低成本或增加功能。本节讨论将不同特性整合到设计中来检测和防止jtag反向工程的方法。
jtag边界扫描起初是为协助测试和调试pcb上的i/0连接功能雨设计的,后来用于将逻辑整合到芯片内部。在使用intest命令和边界扫描功能时可以将数据移动到模块或ic中,然后用时钟记录ic来读回结果数据,该操作可以为技术娴熟的用户提供ic或模块中的架构或逻辑。如图1所示,这也是一种对设计或系统进行反向工程的方法,因此未授权使用jtag端口对于有些用户及其产品的安全来说是一个隐患。
图1 标准边界扫描链
spartan-3 a/3an/3 a dsp器件是jtag兼容型的,允许配置和读回fpga,jtag兼容性也意味着jtag引脚无法被禁止。但是通过采用边界扫描模块,设计者可以进行安全设计,以检测和阻止未授权即使用jtag端口。
(1) 边界扫描模块
bscan ̄spartan3a宏模块如图2所示,它允许设计者获取边界扫描信号。通过对该模块进行简单的例化,设计者就可以从fpga内部监控jtag引脚上的活动。
图2 bscan spartan3a宏模块
以下代码为bscan_spartan3a所例化的结果:
(2) 边界扫描模块如何提高安全性
如前所述,边界扫描模块可以为从内部监控jtag引脚的活动提供条件,如果检测到端口上的活动,则可以设计逻辑来完全擦除fpga配置或绕过/阻止选定的功能。icap可以用于擦除spartan-3 a/3 an/3a dsp器件的配置。
图3所示为绕过关键逻辑和功能的实例,该设计将旁路mux整合到由检测逻辑输出控制的关键输入功能中。在正常操作过程中,信号进入逻辑。当检测到jtag活动时信号旁路被断开,并通过逻辑设置一个值,从而使intest输出对于反向工程内部逻辑来说完全无用。
图3 用户定义边界扫描
在图4中,检测逻辑可以和门电路一样简单,或者应用可能需要更为复杂的逻辑。
图4 检测逻辑
(3) jtag现场更新和安全诊断
在多数情况下,一旦系统或器件部署完毕并开始运转,jtag接口就不能被访问或使用。但是总有例外的情况,例如,当系统在现场更新或诊断时就需要jtag端口。如果为了保护器件免受通过jtag端口进行的未授权访问而实现了检测安全性,就会阻止授权访问。设计可通过多种方式实现,为此可设计检测逻辑。它只会激活intest测试指令,而使jtag在所有其他模式中都能正常操作,如bypass、idcode、usercode和extest,从而使通过现场访问jtag端口进行更新和诊断变得很简单。
对于更为复杂的安全性,检测逻辑可以设计用来监控特定的访问路线或代码序列以允许访问jtag正常操作模式。当现场工作组需要访问intest指令以对系统功能进行内部测试和验证时,这是很有用的。这样可以释放jtag指令,直至诊断测试和升级完成。升级完成后,重启升级后的fpga就可以将检测逻辑复位。对于只进行诊断的系统,可以发布一个代码序列,以重新开始进行检测逻辑监控。
两种方法都能保证完成现场服务任务,而不会发生通过jtag端口危及安全的情况。如果检测到的序列不正确,就可以用icap来复位(擦除)。
(4) 主动防御逻辑资源要求
spartan-3系列器件具有很多内置于芯片中的嵌入式特性和功能,jtag状态机和到icap的接口逻辑包含在这些嵌入式功能中。bscan ̄spartan3a模块不需要逻辑资源,因为该功能是嵌入式的。但是连至例化的jtag模块的用户逻辑会消耗逻辑和互连资源,该逻辑可以是一个逻辑单元也可以是数十个逻辑单元,这取决于用户逻辑/功能的复杂度。
(5) 主动