前言
传统基于穷举或纯数学理论层面的分析,对于现代高强度加密算法而言,算力有限导致无法实现穷举,算法的复杂性也无法通过数学工具直接破解,根据近代物理学发展出来的理论,电子设备依赖外部电源提供动力,设备在运行过程中会消耗能量,同时会跟外界环境存在声、光、电、磁等物理交互现象产生,设备本身也可能存在设计薄弱点,通过这些物理泄露或人为进行物理层的修改获取数据,然后运用各类数学工具和模型实现破解。
然而在做物理攻击时,往往需要昂贵的设备,并要具备数学、物理学、微电子学、半导体学、密码学、化学等等多学科的交叉理论知识,因此其技术门槛和攻击成本都很高,目前在刚刚结束的 Blackhat 2018 上,展台上展示了多款 ChipWhisperer 硬件工具,作为亲民型的物理攻击平台,获得了一致的好评。
(图片来源 Newae 官方)
ChipWhisperer Lite 版官方商店售价 $250 ,不管是实验学习,还是实战入门,都是极具性价比的,本文主要介绍主流的一些物理攻击手段,以及对 ChipWhisperer 的初步认知,后续将会据此从理论、原理、实验以及实战等角度详细介绍该平台。
物理攻击
真正的安全研究不能凌驾于真实的攻防场景,对于物联网安全而言,其核心目标是真实物理世界中的各种硬件设备,真实的攻击场景往往发生在直接针对硬件设备的攻击,因此物联网安全的基石在于物理层的安全,而针对物联网物理攻击手段,是当前物联网面临的最大安全风险之一。
物理攻击就是直接攻击设备本身和运行过程中的物理泄露,根据攻击过程和手段可以分为非侵入攻击、半侵入式攻击和侵入式攻击。ChipWhisperer 平台主要用做非侵入式攻击,包括侧信道和故障注入攻击等。
传统密码分析学认为一个密码算法在数学上安全就绝对安全,这一思想被Kelsey等学者在1998年提出的侧信道攻击(Side-channel Attacks,SCA)理论所打破。侧信道攻击与传统密码分析不同,侧信道攻击利用功耗、电磁辐射等方式所泄露的能量信息与内部运算操作数之间的相关性,通过对所泄露的信息与已知输入或输出数据之间的关系作理论分析,选择合适的攻击方案,获得与安全算法有关的关键信息。目前侧信道理论发展越发迅速,从最初的简单功耗分析(SPA),到多阶功耗分析(CPA),碰撞攻击、模板攻击、电磁功耗分析以及基于人工智能和机器学习的侧信道分析方式,侧信道攻击方式也推陈出新,从传统的直接能量采集发展到非接触式采集、远距离采集、行为侧信道等等。
利用麦克风进行声波侧信道
利用软件无线电实施非接触电磁侧信道
故障攻击就是在设备执行加密过程中,引入一些外部因素使得加密的一些运算操作出现错误,从而泄露出跟密钥相关的信息的一种攻击。一些基本的假设:设定的攻击目标是中间状态值; 故障注入引起的中间状态值的变化;攻击者可以使用一些特定算法(故障分析)来从错误/正确密文对中获得密钥。
使用故障的不同场景: 利用故障来绕过一些安全机制(口令检测,文件访问权限,安全启动链);产生错误的密文或者签名(故障分析);组合攻击(故障+旁路)。
非侵入式电磁注入
半侵入式光子故障注入
侵入式故障注入
ChipWhisperer
简介
本系列使用的版本是 CW1173 ChipWhisperer-Lite ,搭载 SAKURA-G 实验板,配合一块 CW303 XMEGA 作为目标测试板。
CW1173 是基于FPGA实现的硬件,软件端基于 python,具有丰富的扩展接口和官方提供的各类 API 供开发调用,硬件通过自带的 OpenADC 模块可以实现波形的捕获,不需要额外的示波器。
板上自带有波形采集端口(MeaSure)和毛刺输出(Glitch)端口,并自带 MOSFET 管进行功率放大。
并提供多种接口触发设置,基本满足一般的攻击需求。
能量攻击
芯片物理结构为许多CMOS电路组合而成,CMOS 电路根据输入的不同电信号动态改变输出状态,实现0或1的表示,完成相应的运算,而不同的运算指令就是通过 CMOS 组合电路完成的,但 CMOS电路根据不同的输入和输出,其消耗的能量是不同的,例如汇编指令 ADD 和 MOV ,消耗的能量是不同的,同样的指令操作数不同,消耗的能量也是不同的,例如 MOV 1 和 MOV 2其能量消耗就是不同的,能量攻击就是利用芯片在执行不同的指令时,消耗能量不同的原理,实现秘钥破解。
常用的能量攻击方式就是在芯片的电源输入端(VCC)或接地端(GND)串联一个1到50欧姆的电阻,然后用示波器不断采集电阻两端的电压变化,形成波形图,根据欧姆定律,电压的变化等同于功耗的变化,因此在波形图中可以观察到芯片在执行不同加密运算时的功耗变化。
CW1173 提供能量波形采集端口,通过连接 板上的 MeaSure SMA 接口,就可以对能量波形进行采集,在利用chipwhisperer 开源软件就可以进行分析,可以实现简单能量分析、CPA攻击、模板攻击等。
通过 cpa 攻击 AES 加密算法获取密钥
毛刺攻击
ChipWhisperer 提供对时钟、电压毛刺的自动化攻击功能,类似于 web 渗透工具 Burpsuite ,可以对毛刺的宽度、偏移、位置等等参数进行 fuzz ,通过连接板上的 Glitch SMA 接口,就可以输出毛刺,然后通过串口、web 等获取结果,判断毛刺是否注入成功。
时钟毛刺攻击是针对微控制器需要外部时钟晶振提供时钟信号,通过在原本的时钟信号上造成一个干扰,通过多路时钟信号的叠加产生时钟毛刺,也可以通过自定义的时钟选择器产生,CW1173 提供高达 300MHZ 的时钟周期控制,时钟是芯片执行指令的动力来源,通过时钟毛刺可以跳过某些关键逻辑判断,或输出错误数据。
通过 CW1173 时钟毛刺攻击跳过密码验证
电压毛刺是对芯片电源进行干扰造成故障,在一个很短的时间内,使电压迅速下降,造成芯片瞬间掉电,然后迅速恢复正常,确保芯片继续正常工作,可以实现如对加密算法中某些轮运算过程的干扰,造成错误输出,或跳过某些设备中的关键逻辑判断等等 。
对嵌入式设备的电压毛刺攻击
更多
随着物理攻击理论和技术的进步,针对硬件芯片的防护手段也随之提高,芯片物理层的攻防一直在不断角力 ,现实环境中,能量采集会受到各种噪声因素的干扰,硬件厂商也会主动实施一些针对物理攻击的防护,单纯依靠 ChipWhisperer 平台难以实现真实场景的攻击,因此还需要结合电磁、声波、红外、光子等多重信息,以及对硬件进行修改,多重故障注入,引入智能分析模型等等组合手段,今后会进一步介绍一些基于 ChipWhisperer 的高级攻击方式和实战分析方法。
参考
- ChipWhisperer 官网 wiki https://wiki.newae.com/Main_Page
- 开源项目 https://github.com/newaetech/chipwhisperer
- ChipSHOUTER 电磁故障平台 https://github.com/newaetech/ChipSHOUTER
- USB 附加模块 https://github.com/scanlime/facewhisperer
- 深度学习侧信道攻击 https://www.riscure.com/publication/lowering-bar-deep-learning-side-channel-analysis/
- 使用毛刺攻击提取汽车 ECU 固件 https://www.riscure.com/publication/fault-injection-automotive-diagnostic-protocols/
- 《物联网安全百科》 https://iot-security.wiki