【安全硬件】Chap.2 如何破译一个CMOS门级电路;传播延迟、动态功耗、静态功耗可能泄露电路的构造以及输入密钥;非侵入式攻击 Non-Invasive Attacks

  • 前言
  • CMOS电路结构可能存在安全隐患,可能泄露秘密
  • 1. 传输延迟可能泄露电路的输入密码
    • 1.1 传播延迟Propagation Delay
    • 1.2 Elmore delay估算电路的传播延迟
      • Elmore delay表达式中的0.69是怎么来的呢?
    • 1.3 通过传播延迟破译NAND门的输入密码
      • 计算传播延迟
      • 对比输入密码
  • 2. 动态功耗可能泄露电路的输入密码
    • 正在处理的数据与消耗的动态功率
  • 3. 静态功耗可能泄露电路的构造和当前输入
    • 动态功耗与静态功耗的测量
    • Input pattern effects on power consumption
  • 扩展:物理攻击Physical Attacks
    • 非侵入式攻击 Non-Invasive Attacks
    • 侵入式攻击 Invasive Attacks

前言

  请思考一个芯片的特征,比如芯片的面积和重量、功耗、运行频率、延迟、吞吐量等,这些都与芯片内部的电路设计有关。而包括大部分数字、模拟和混合信号的 IC 芯片都是使用 CMOS 技术制造的,作为一名学生学习半导体技术也是从CMOS开始入手的。为了引导芯片设计工程师深入了解硬件层面的安全,本文简述了安全硬件和CMOS技术之间的关系。

CMOS电路结构可能存在安全隐患,可能泄露秘密

  在芯片硬件层面的安全性上,由于芯片是在硅上实施的,攻击者经常使用物理攻击手段,即利用片上系统 (SoC) 的物理属性(例如时序或电压)来提取信息或诱发不良行为。如果硅基层出现故障,导致敏感数据泄露或被轻易访问,整个系统的安全性就会受到威胁。
Physical Security Solutions

1. 传输延迟可能泄露电路的输入密码

  特定单元的传播延迟取决于其输入模型,通过测量传播延迟,攻击者可以找到电路系统的输入密码
  在不同的输入下,同一个CMOS电路上的晶体管的开关数量和位置不一样,导致电路信号从输入到输出的路径上延迟时间不一样,故推断出Delay is dependent on the pattern of inputs.
以CMOS反相器举例:

  • 输入1时,处于下拉网络PDN的PMOS导通,实际上要经过等效电阻Rp和负载电容CL;
  • 输入0时,处于上拉网络PUN的NMOS导通,实际上要经过等效电阻Rn和负载电容CL。
图1 CMOS反相器 图2 输入1和0时的传播路径1

  如果黑客攻击者只知道这是一个反相器,但不知道这部分电路正确的启动密码是多少?输入密码是1还是0?

  • 在不影响电路工作的状态下,可以偷偷在电路上接一个“秒表”,依次尝试输入0和1,确认当输出正确的时候此反相器的传播延迟,就可以找到正确密码了。
  • 很科学神奇的破译方式~

invertor delay
CLoad,Cint,Cext,Cwire

1.1 传播延迟Propagation Delay

  检测输入和输出信号,两者的50%点的差称为传播延迟,代表了输入传播到输出延迟的时间。

1.2 Elmore delay估算电路的传播延迟

  • Elmore delay的意义:Elmore delay formula provides a closed form expression to calculate the propagation delay, wherein each transistor is modelled as an effective resistor。

  • Elmore delay的定义:

    Elmore延迟是电子系统中通过RC网络的延迟的简单近似。对于树状结构网络,求出每个段的延迟,即R乘以下游C。对从根到接收器的延迟求和。

  • Elmore delay的计算:

    模型可以看作是找到每段的延迟,即R与下游电容的乘积,然后取各延迟之和。

  1. tpHLt_{pHL}tpHL​:输入从高到低转换的 Elmore 延迟;tpHL=0.69(Rn+CL)t_{pHL}=0.69(R_n+C_L)tpHL​=0.69(Rn​+CL​)。

  2. tpLHt_{pLH}tpLH​:输入从低到高转换的 Elmore 延迟;tpLH=0.69(Rp+CL)t_{pLH}=0.69(R_p+C_L)tpLH​=0.69(Rp​+CL​)。

  3. tpt_{p}tp​ :平均传播延迟;tp=tpHL+tpLH2t_{p}=\frac{t_{pHL}+t_{pLH}}{2}tp​=2tpHL​+tpLH​​。

WIKI - Elmore delay

Elmore delay如何计算

Elmore delay表达式中的0.69是怎么来的呢?

  由v(t)=1−e−tRCv(t)=1-e^{-\frac{t}{RC}}v(t)=1−e−RCt​,可以推出t=ln(2)∗RCt=ln(2)*RCt=ln(2)∗RC,其中ln(2)≈0.69ln(2) \approx 0.69ln(2)≈0.69

1.3 通过传播延迟破译NAND门的输入密码

  记住:Delay is dependent on the pattern of inputs.
  NAND2电路 AB‾\overline{AB}AB,上面是PUN,上拉用的是PMOS管。下面是PDN,下拉用的是NMOS管:

  • 输入AB是11的时候NMOS导通,PMOS不导通,OUT接到了GND,电路输出电压0,
  • 输入AB是00的时候PMOS导通,NMOS不导通,OUT接到了VDD,电路输出电压1。

计算传播延迟

  对于这个NAND2的CMOS电路:

  • 当输入A、B都由1变为0时,传播延迟为0.69(Rp2)CL0.69({\frac{R_p}{2})}C_L0.69(2Rp​​)CL​

  • 当只有一个输入A或B由1变为0时,传播延迟为0.69RpCL0.69{R_p}C_L0.69Rp​CL​

  • 当输入A、B都由0变为1时,传播延迟为0.69(2Rn)CL0.69({2}{R_n})C_L0.69(2Rn​)CL​

  • 当只有一个输入A或B由0变为1时电路一直都是输出1,传播延迟和A、B都为1时的表现一样。

  • 当AB从11变到00的时候(inputs go low),输出最终会变成1。上电的过程会经历给CLOAD充电,和PMOS上的等效电阻RPMOS,因为上半部分PUN是并联的,所以电阻要除以2。反之,当AB从00变到11,一样的解释,PDN是串联的,电阻要乘以2。

对比输入密码

输入A 输入B 输出Y 传播延迟
0 0 1 PD-1 (ns)
0 1 1 PD-2 (ns)
1 0 1 PD-2 (ns)
1 1 0 PD-3 (ns)

  Congrats! You can guess what input is appiled to the CMOS logic gate, by measuring effectively the propagation delay.
  指定单元的传播延迟取决于其输入信号类型,因此,黑客只要能发现输入密码和硬件芯片上的传播延迟之间的相关性,可以推测出电路的输入密码是多少。

2. 动态功耗可能泄露电路的输入密码

功率分析-wiki
  CMOS电路处理不同信息的功耗不同,CMOS电路的动态功耗与输入信号保持相关。攻击者研究加密硬件设备的功耗,可以了解有关正在处理的数据的部分信息。
Hardware Security Challenges Beyond CMOS: Attacks and Remedies

Gate-Level Hardware Countermeasure Comparison against Power Analysis Attacks

正在处理的数据与消耗的动态功率

  CMOS电路正在处理的数据与消耗的功率之间的关系,是由输入信号的变化导致的。

其中 0→0、0→1、1→0 和 1→1 转换具有不同的功耗值

3. 静态功耗可能泄露电路的构造和当前输入

Power Balanced Circuits for Leakage-Power-Attacks Resilient Design
现代CMOS技术中静态功耗的持续上升导致了对密码系统的一类新型安全攻击的产生。后者利用泄漏电流与输入模式之间的相关性来推断密钥;它被称为漏功率分析(LPA)。

动态功耗与静态功耗的测量

Input pattern effects on power consumption

  • 找静态功耗与输入不同信息之间的关联,可以尝试解开密钥,从而通过破译硬件的方式猜出安全芯片的密码。

  • 由上图可以看到CMOS构造的不同输入情况下的不同门的静态功耗/泄露功耗不同。
  • 如果我是攻击者,我可以很容易地拿一个"万用表"通过测量静态功耗地方法猜到这个电路的类型是什么,以及当前的输入是什么

ps,使用功率平衡(m-of-n)逻辑设计方法是一个很有前途的解决方案,可以规避泄露电流的黑客探测方法。

Leakage Power

扩展:物理攻击Physical Attacks

非侵入式攻击 Non-Invasive Attacks

  非侵入式攻击可以采取多种不同的形式。一些攻击涉及扰动技术(导致硅的意外行为),其他攻击则采用侧信道攻击 (SCA) 的形式,旨在泄露秘密信息(例如,加密密钥)。

  SCA 涉及观察行为,例如操作时间、功耗或电磁辐射。设备所有者很难检测和响应这种攻击(例如,撤销泄露的密钥)。最重要的是,非侵入式攻击的实施成本通常非常低,而且可扩展性很强,可能会危及整个系统的安全性。

侵入式攻击 Invasive Attacks

  侵入式攻击从移除芯片封装开始。芯片打开后,可以进行微扰攻击,也可以进行探测或修改攻击(通过蚀刻、钻孔或激光切割至少部分钝化层)。

  过去,侵入性攻击通常意味着大量投资——它们需要数天或数周时间,在拥有高素质专家的专业实验室中进行。如今,租用一些设备使这种攻击更容易获得。

【安全硬件】Chap.2 如何破译一个CMOS门级电路;传播延迟、动态功耗、静态功耗可能泄露电路的构造以及输入密钥;非侵入式攻击 Non-Invasive Attacks相关推荐

  1. 【安全硬件】Chap.3 如何插入一个硬件木马到芯片的组合逻辑电路的漏洞里?不影响正常电路的功能的情况下进行硬件的逻辑加密

    [安全硬件]Chap.3 如何插入一个硬件木马到芯片的组合逻辑电路的漏洞里?如何进行硬件的逻辑加密在不影响正常电路的功能的情况下 1. 组合逻辑电路的漏洞 组合逻辑电路中的硬件木马-举例 Fault ...

  2. 硬件基础知识---如何设计一个三极管放大电路

    硬件基础知识---如何设计一个三极管放大电路 设计步骤 1) 分析设计要求 电压增益可以用于计算电压放大倍数:最大输出电压可以用于设置电源电压 输出功率可以用于计算发射极电流:在选择晶体管时需要注意频 ...

  3. 你的孤独,正在撑起一个万亿级市场

    导读:一人食.一人游.克隆猫--你的孤独正在撑起一个万亿级市场. 作者:苏琦 编辑:魏佳 来源:燃财经(ID:rancaijing) "不到十二点叫的外卖,两点半才吃上,我太难了." ...

  4. 物联网前景可期 将会是下一个万亿级的通信业务

    近年来,随着芯片.传感器等硬件价格的不断下降,通信网络.云计算和智能处理技术的革新和进步,物联网迎来了快速发展期.据预测,到2020年,世界上物物互联的业务,跟人与人通信的业务相比将达到30比1,物联 ...

  5. 一个CMM2.5级程序员的岁月随想

    一个CMM2.5级程序员的岁月随想 作者:zb++ 2006.11-2008.5 目录 一个CMM2.5级程序员的岁月随想... 1 作者:zb++. 1 目录... 2 1     引子... 3 ...

  6. 编写一个C程序,实现以下功能:动态申请长度为5的整数空间数组,用户输入5个整数;动态扩展数组空间为8,用户另外输入3个整数,最后输出扩展后的全部数组元素。

    DGUT最简单的题.没有之一,只要面向GOOGLE和百度编程就行. 在GOOGLE查询malloc和realloc. malloc:动态申请内存. realloc:动态更改(扩展)内存 代码如下 #d ...

  7. 给一个正在运行的Docker容器动态添加Volume

    给一个正在运行的Docker容器动态添加Volume 本文转自:http://dockone.io/article/149 [编者的话]之前有人问我Docker容器启动之后还能否再挂载卷,考虑到mnt ...

  8. (1)定义一个抽象类Weapon,该抽象类有两个抽象方法attack(),move() 这两个方法分别表示武器的攻击方式和移动方式。 (2)定义3个类:Tank,Fl

    代码 /*第一题:(1)定义一个抽象类Weapon,该抽象类有两个抽象方法attack(),move()这两个方法分别表示武器的攻击方式和移动方式.(2)定义3个类:Tank,Flighter,War ...

  9. c语言中整数和实数能比较大小吗,c语言中,输入一个数字,怎么判断那个数字是整数还是实数,代码如下,输入实数后出现了死循环...

    c语言中,输入一个数字,怎么判断那个数字是整数还是实数,代码如下,输入实数后出现了死循环 int main(void) { SEQLIST a; int b;//用于保存输入选择的数字 a.len=0 ...

最新文章

  1. usaco Job Processing(mark)
  2. Flutter Web 应用程序的 URL 中删除前导`#`
  3. 规律的更新状态是一个好习惯
  4. Laravel 指定日志生成目录
  5. O2O概念实践案例: Giftly改变送礼方式
  6. php将变量转成字符串类型
  7. 洛谷P2073 送花 [2017年6月计划 线段树01]
  8. Sublime Text 无法安装插件
  9. 14.6.4 Configuring the Memory Allocator for InnoDB 配置InnoDB 内存分配器
  10. 实战篇-六十六行完成简洁的Rss输出类
  11. 基于xml的c语言项目,Spring基于XML装配Bean
  12. php的jquery ajax请求,jquery ajax请求
  13. linux开发板推荐
  14. 微服务项目之电商4.0技术架构图
  15. Stripies POJ 1862
  16. vivo手机怎么安装Android10,vivo X20手机怎么装卡 vivo X20安装手机卡步骤介绍
  17. 切片函数python_python切片操作
  18. js使用tween动画(Tween.js)
  19. 网络计算机不能打印,如果共享打印机后局域网计算机无法打印,该怎么办?
  20. 使用C#压缩/解压缩7-zip文件

热门文章

  1. 心理统计学 笔记 (三) 概率分布
  2. access突然需要登录_Access学生登录窗体问题
  3. 游戏开发面试答案篇(一)-- C++篇​
  4. 在OpenCV里实现导向滤波
  5. 如何实现多个云模型生成在同一张云图
  6. BGP协议原理(一)BGP协议基本概念:BGP作用与特点、BGP邻居关系建立与配置
  7. 判断字符串是否含有emoji表情或者颜文字(非键盘可输入的特殊字符)
  8. Apache Ranger 是什么?
  9. 编写高质量代码python_编写高质量代码:改善Python程序的91个建议
  10. Tor移动端打开以后该干什么?