经常有人问小编,NXP的xxx芯片是否具有物理攻击防护功能?
回答这个问题之前,我们先来了解下具体的针对芯片的物理攻击以及防护,再来回答xxx芯片是否具有物理攻击防护功能,以及是否有了物理攻击防护功能后芯片就不可破解呢。
攻击芯片的目的都是为了获取芯片内部的程序或数据,本文以MCU为对象进行一些讨论。
1,针对芯片的物理攻击物理攻击是指,攻击者通过物理手段(一般会借助相关的仪器仪表等)对芯片的物理特征进行窥探(如电压、时钟、能量辐射等),以及破坏行为(如对芯片的剖片、物理克隆等),从而达到获取内部程序或数据的目的。
基于芯片被攻击后是否被破坏,物理攻击可分为三种类型:侵入式攻击、半侵入式攻击和非侵入式攻击。
侵入式攻击
这种攻击需要通过开盖、解剖等直接访问芯片内部,可用探针检测并修改的攻击手段。攻击可以是可逆的,也可以是不可逆的。
显然,不可逆转的攻击是对晶圆的彻底破坏。正常情况下,芯片在受到攻击后会被损坏。侵入式攻击需要昂贵的设备、渊博的知识,有时还需要大量的时间,当然这种攻击的费用一般也特别大。
半侵入式攻击
通常情况下,攻击者需要接近芯片表面,但不需要与内部电路建立接触。实施这种攻击的花费主要取决于与芯片的交互方式。也需要攻击者具有专业的的特殊技能。
非侵入式攻击
攻击者需要通过测量或干扰芯片的电压、电流、时钟,或通过输入-输出接口等进行交互。攻击者还可向系统注入某种信号,导致系统故障。
一般情况下,这样的攻击不会损坏设备,也不会留下任何被攻击的证据。相对来说,这种方法成本较低。
众所周知,侧信道攻击(SCA: Side-channel attack)就属于非侵入式攻击。我们重点来看几种典型的非侵入式击方式:Glitch攻击、时序攻击(Timing attack)、功耗攻击(Power attack)、故障攻击(Fault attack)。其中,时序攻击和功耗攻击是典型的侧信道攻击方法。
Glitch攻击是指在芯片的电源或者信号线上叠加毛刺信号,或者外加电磁脉冲,使芯片的内部电路工作异常。比如在电源上加毛刺信号,使CPU在读取Flash的时候发生错误,从而使读出的值发生变化。
时序攻击是基于测量一个执行单元所需的时间,从而获得有用信息。这些信息可以导致密钥的泄露。许多加密算法为了减少或消除数据依赖的时序信息,在一个实现中,每调用一个子程序总是返回固定时间,其中这个固定时间是所有可能输入的情况的最大返回时间。在这样的情况下,算法的时序不会随着输入信息的不同而轻易泄漏。
功耗攻击一般分为两种:简单功耗攻击(SPA: simple power analysis)和差分功耗攻击(DPA: differential power analysis)。
通过对芯片电路功耗的分析,从而达到攻击及非侵入性地从设备中提取加密密钥和其他机密信息。SPA是在密码或者别的安全相关操作时直接观察芯片的功耗随时间的变化,下图是通过SPA对某芯片的RSA算法进行攻击得到的密钥。
DPA是更有效的技术,破解者不需要知道密码算法是如何执行的。它使用静态分析和已知密码运算的大量功耗迹线来获取隐藏信息,用统计方法鉴别功耗的微小区别,可用来恢复密钥中的单个位信息,比SPA具有更高的攻击性。
故障攻击是攻击者使相关芯片产生故障,或通过发生的自然故障,或通过应用各种类型的辐射来研究密码和提取密钥。
以上我们简单的介绍了下物理攻击的种类,下面来介绍LPC55Sxx具有哪些物理防护功能。
LPC55Sxx是基于Arm Cortex-M33的嵌入式微控制器,具有TrustZone功能,芯片内部集成了HASH/AES/RSA/ECC等硬件加速器。
LPC55Sxx具有多种物理攻击防护功能,见下表。
物理攻击类型 |
LPC55Sxx的物理攻击防护 |
|
非侵入攻击 |
Glitch攻击 |
BoD检测电源毛刺攻击 |
时序攻击 |
安全启动代码(secure boot)中添加随机延时 |
|
故障攻击 |
Pole/anti-pole checks |
|
侵入攻击 |
SRAM PUF PRINCE |
BoD检测电源毛刺攻击
LPC55Sxx的低电压检测(BoD)功能可以检测芯片内部DCDC的前端输入电压毛刺,当BoD检测到电源毛刺时,将会产生芯片复位,从而使Glitch攻击失败。
安全启动代码(secure boot)中添加随机延时
使能了secure boot的情况下,secure boot在启动的时候会检测image文件的有效和合法性,这个过程会涉及到加解密及证书的认证,在不同的子程序中添加随机延时,可有效的防止时序攻击。
Pole/anti-pole checks
LPC55Sxx的关键控制信号至少有2位,2b‘01为禁用状态,2b‘10为启用状态,因此物理攻击(电源或电磁或故障)必须将这些位翻转到相反的方向。在AMBA总线的关键控制信号就使用了此方法,一旦这两位的配置极性错误将会产生安全中断,这种方法是一种低成本的检测故障攻击方法。此外,一些关键信息的配置有两个相同的寄存器需要配置,比如调试接口的使能就需要按顺序配置DEBUG_FEATURES和DEBUG_FEATURES_DP寄存器。
SRAM PUF
SRAM PUF在不存储密钥的情况下提供了安全的密钥存储。PUF可以通过SRAM生成数字指纹(digital fingerprint)。不直接存储密钥,而是生成密钥代码,该代码与数字指纹相结合,用于恢复真正的密钥,此密钥可直接用于AES/PRINCE加密引擎或供软件使用。因此通过解剖芯片等手段并不能真正的得到密钥。
PRINCE
LPC55Sxx设备支持使用PRINCE加密引擎对片上Flash进行实时加密和解密。与AES相比,PRINCE速度更快,因为它可以在不增加额外延迟的情况下解密和加密数据。LPC55Sxx支持加密后的image文件保存在Flash中,执行的时候使用PRINCE进行实时解密,如果不通过PRINCE对Flash进行读取到的是密文,用户是无法解密,这样很好的防止了侵入式攻击。
以上介绍了芯片物理攻击的常用方法,以及LPC55Sxx的物理攻击防护。
现在让我们再回头看看文章开头提到的问题。NXP的很多MCU都具有防护物理攻击的能力(包括LPC55Sxx、RT600等), 芯片的物理攻击防护能力是系统攻击防护的最后一道防线,系统设计时可合理地利用这些防护功能。
最后,物理攻击防护只是系统安全防护的一个方面,还需要结合其它方面的安全防护,共同构建系统级的全方位安全防护,才能更好的抵抗攻击。
1.IEEE对华为说不,然后。。。
2.别人聊FPGA,咱们来说说FPGA+!
3.错过现场“μC/OS-III高阶培训”的朋友不用遗憾,网课来啦!
4.华为突遭 Google 釜底抽薪,国产自研操作系统生态恐不可承其重!
5.ARM到底是一家什么样的公司?
6.手机46岁了,史上最全手机简史,简到崩溃!
免责声明:本文系网络转载,版权归原作者所有。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容。