昨天的浅析安全启动(Secure Boot)看了吗?其中有个glitch 的概念很有意思,于是找资料简单学习一下glitch 。
文章的内容包含:
对了!最近期待我出学习路线和荐书留言我都有看到,等我找个时间好好认真整理一下发出来与大家交流一下。
Have Nice Day!
撩一把SI. 数字电路中的串扰,是个庞大艰深的话题,Signal Integrity (SI) 分析是STA 中重要且复杂的部分。数字电路是01 的世界,用『攻受』来理解数字电路的串扰很合适。
在数字电路中,任何两条相邻的线之间都可能『私通』,私通的通道是『耦合电容』。如果用基佬世界的『攻受』来对应,那任何一条net 都是0.5 只要『时间窗口』对,都进可攻退可受,如东方不败一般,
通常,在STA 中将被分析的net 称为"victim" 此处对应为"受",把跟被分析net 私通的所有其他net 称为"Attacker/ Aggressor"此处对应为"攻"。
不是有了私通通道,攻就可以攻击到受,还需要看:
理想数字电路跟理想世界一样,只有纯粹的01 要消除一切0.5. 但串扰不同于基佬,基佬可以使世界变得更美好,串扰却总是具有破坏性。串扰的破坏性根据『受』所处的『动静』状态体现于两方面:
攻受的翻转方向是随机的,在当前STA 分析中,保险起见,对于同一条net 如果是计算early delay 则认为攻受同向,如果是计算late delay 则认为攻受异向。
体现『受』静止时,『攻』对其进行的骚扰,这个骚扰**如果严重会引起逻辑功能失效。**根据『受』所处的电平不同,『攻』对其造成的影响可被分为如下四类:
Delta Delay 跟Glitch 是对串扰的两种表征,都属于STA 范畴,分析时大部分计算过程一致,只是最后衡量的方式不同。
Glitch 在数字电路实现中,
这种Glitch (下文称为逻辑glitch)是由于组合逻辑单元输入信号到达时间不同而产生的虚假翻转,这些翻转不是逻辑运算所需要的。
理想情况,在每个时钟周期内,组合逻辑的输出信号最多翻转一次,但实际中,组合逻辑的输出信号在每个时钟周期内都不止翻转一次,这些不必要的翻会导致额外的功耗,这类功耗就是所谓的『Glitch power』, 据统计在16nm 以下的工艺中,Glitch power 占总动态功耗的20%~30% 是非常可观的;
而且这些无效翻转,会导致意外峰值电流,这些峰值电流发生在很短的时间内会导致很大的IR-Drop, 从而影响电路的性能和可靠性。
逻辑 Glitch 因为有百害而无一利,所以一直是研究热点,到目前为止C 家综合工具跟P&R 工具在读入activity 文件做Dynamic power 优化时都会尽量去优化Glitch power, 但到目前为止也没有什么办法完全消除Glitch power. 一些文献里提出了若干方法,有兴趣的可以自行查阅:
解决峰值瞬态IR-Drop 最常用的方法是在芯片中撒入去耦电容 ( Decap cell ), 这些Decap 充当局部电荷储存器,从而减少峰值IR-Drop 对临近电路的影响。
然而,从90nm 开始,Decap cell 会造成显著的栅极隧穿漏电流,对于90nm 之后的工艺由于栅氧进一步变薄,Decap cell 造成的栅极隧穿漏电流会更大,至于Decap 对FinFet 工艺的作用与影响,待老驴研读后再搬来,
黑客利用Glitch来触发特定的响应或攻击:
案例:Glitching the Switch
NVIDIA Tegra X1芯片的bootROM攻击是一个非常经典的Glitch攻击例子,它利用了bootROM作为整个信任链的根基,拥有最高的执行权限的特点。
在NVIDIA Tegra X1芯片中,bootROM是固化在芯片内部的,它是设备的第一个加载程序,负责启动和验证其他程序。由于bootROM的特殊地位,它拥有最高的执行权限,任何在它之后加载的程序都必须信任它。
Nintendo Switch 使用的是 NVIDIA 的 Tegra X1 芯片,这款芯片的 bootROM 是不可读的,原理是在 bootROM 即将跳转到 FSBL 的时候,会通过一个专门的寄存器,改变 bootROM 的可读区间,使得大部分的 bootROM 代码变得不可读。这个不论是开发设备还是消费产品都是如此。
所以他们攻击 bootROM 的第一步就是要 dump 出来 bootROM 的代码。他们用了一种 Glitching 的手段来做到这一步。
Glitching 的硬件原理在前面有详细介绍,简单来说就是通过在非常精确的时间点,执行微秒级的电压骤变使得 bootROM 在写那个可视性寄存器的时候出现错误,导致 bootROM 没有被不可视化,进而他们可以在一块开发板上用自己写的 FSBL 读取 bootROM 代码。
拿到 bootROM 之后他们根据芯片的数据手册和自己的实验,分析出各种寄存器的用途,然后对 bootROM 的 USB 层进行逆向分析。最后他们发现了在一个叫做 RCM 的 USB 模式下,可以通过栈溢出拿到 bootROM 的执行权限。
拿到 bootROM 权限之后,他们就可以禁用掉 FSBL 的签名验证,相似的,Secure Boot 接下来的所有环节的签名验证都可以被禁用掉,那基本上就是想干什么都可以了。
一旦攻击者成功地获取了bootROM的代码或绕过了它的保护措施,他们就可以进一步攻击整个系统。通过获取敏感信息、控制设备或进行其他恶意操作,攻击者可以造成严重的安全威胁和损失。
http://article.sapub.org/10.5923.s.msse.201302.04.html
【1】T.Raja, V.D.Agarwal “Variable input delay CMOS logic for low power design”, IEEE Trans. Circuits syst.,vol.-17,no.10,October 2009.
【2】K. Roy and S. C. Prasad, Low-Power CMOS VLSI Circuit Design. New York: Wiley, 2000.
【3】V. D. Agrawal, “Low power design by hazard filtering,” in Proc. 10th Int. Conf. VLSI Des., Jan. 1997, pp. 193–197.
【4】M. Berkelaar and E. T. A. F. Jacobs, “Gate sizing using a statistical delay model,” in Proc. Des. Autom. Test Eur. Conf., Paris, France, Mar. 2000, pp. 283–290.
【5】V. Sundararajan, S. Sapatnekar, and K. Parhi, “Fast and exact transistor sizing based on iterative relaxation,” IEEE Trans. Comput.-Aided Des. Circuits Syst., vol. 21, no. 5, pp. 568–581, May 2002.
【6】T. Raja, “A reduced constraint set linear program for low-power design of digital circuits,”M.S. thesis, Dept. ECE, Rutgers Univ., Piscataway, NJ, 2002.
【7】T. Raja, V. D. Agrawal, and M. L. Bushnell, “Minimum dynamic power CMOS circuit design by a reduced constraint set linear program,” in Proc. 16th Int. Conf. VLSI Des., Jan. 2003, pp. 527–532.
【8】R. Fourer, D. M. Gay, and B. M. Kernighan, AMPL:A Modeling Language for Mathematical Programming. South San Francisco, California: The Scientific Press, 1993.