硬件安全 - 从SoC设计到系统级防御
讲了一个新闻事件:2018年的Meltdown(熔断)和Spectre(幽灵)两个处理器新型漏洞被发现利用。
- 影响范围大,影响了几乎所有的Inter CPU 、AMD CPU 和主流的ARM CPU 。
- 难以修复,漏洞是由芯片底层设计的缺陷导致的,需要依赖OS级的修复程序,且修复程序本身具有诸多问题。
- 漏洞的隐蔽性强:两个漏洞的存在时间均超过20年,是“一代处理器都存在潜在的灾难性缺陷”。
本书为硬件安全入门学习材料
第一章 硬件安全概述
主要讲述计算系统概述,硬件安全和硬件信任,IC设计流程中的安全问题,硬件安全史
硬件安全的硬件专指硬件。
安全的类别:
- 硬件安全:关注硬件的攻击和保护,它是系统安全性的基础,为与之交互的系统的其他元件提供了可信基础。确保软件栈的安全可靠运行,保护存储的资产,提供相应的隔离。
- 软件安全:关注针对软件的恶意攻击,以及在潜在安全风险下确保软件可靠运行的技术。
- 网络安全:研究针对连接多个计算机的网络的攻击行为,以及在潜在攻击下的可靠性。
- 信息安全:侧重于通过防止信息的非法访问、使用、修改或销毁以确保其机密性和可用性。主要基于各种密码措施。
1.1 计算系统概述
- 计算系统是由相互连接的元件组成的系统,主要由以下部分组成:存储器、处理器、输入/输出设备。
- 计算系统分为两类:通用系统和嵌入式系统。(近年来,信息物理系统CPS和IoT兴起)
- 在计算系统中,最薄弱的环节决定了整个系统的安全性。实现整个系统的安全性需要将各个部分的特定安全方案进行集成。
1.2 计算系统的不同层次
- 信息安全:数据
- 软件安全:固件,(虚拟机),操作系统,应用
- 硬件安全:硬件
越往上层攻击影响越小,难度越小
1.2 电子硬件
层级:所有硬件 -> 印制电路板 -> 电子元件
1.3 硬件安全
针对硬件安全的研究相对较晚,因此硬件常被用作系统的信任锚(i.e.信任根)。随着电子硬件生产的新趋势,基于IP核的芯片设计、长且分散的电子元件制造分销链,导致了众多安全问题。
1.4 攻击、漏洞和对策
- 攻击向量:即攻击方法,常见硬件攻击向量有侧信道、木马、IP盗版、PCB篡改。
- 攻击面: 已知、未知和潜在漏洞的总和。硬件安全的三个主要攻击面:
- 芯片级别攻击,如伪造芯片,IP盗版
- 印制电路板级别攻击,可通过简单的光学检测(如X射线断层扫描)和信号处理来获取。
- 系统级别攻击,如攻击DFT设施和内存模块
- 安全模型:包括两部分:
- 威胁模型,指攻击的目的和机制;
- 信任模型,描述受信任方或元件。
- 漏洞:功能性漏洞(通过分析异常行为)、侧信道漏洞、测试或调试造成的漏洞、鉴权漏洞
攻击:
攻击类别 | 概述 | 攻击者 | 目标 | 存在阶段 |
---|---|---|---|---|
硬件木马攻击 | 恶意设计 修改 (在芯片或PCB中) |
不可信的生产工厂 不可信的IP供应商 不可信的CAD工具 不可信的设计设施 |
引起敌障 降低可靠性 泄露机密信息 |
设计 制造 |
IP 盗版 | 未经授权的实体侵犯 IP | 不可信的 SoC 设计者 不可信生产商 |
制作未经授权的副本 在授权之外使用 IP |
设计 制造 |
物理攻击 | 对硬件进行物理更改或修改操作条件以产生各种恶意影响 | 最终用户 具有物理访问权限的恶意用户 |
影响功能行为 泄露信息 拒绝服务 |
现场 |
Mod-chip 攻击 | 将PCB更改为绕过系统设计器施加的限制 | 最终用户 | 绕过通过PCB实的安全规则 | 现场 |
侧信道攻击 | 通过观察参数行为(即功率、时间、EM)以获取敏感信息 | 最终用户 具有物理访问权限的恶意用户 |
泄露硬件内部正在处理的机密信息 | 现场 |
基于扫描的攻击 | 利用 DFT电路促进侧信道攻击 | 最终用户 具有物理访问权限的恶意用户 |
泄露硬件内部正在处理的机密信息 | 现场 测试时间 |
微探测技术 | 用显微针头探测芯片内部导线 | 最终用户 具有物理访问权限的恶意用户 |
泄露芯片内部的秘密信息 | 现场 |
逆向工程 | 硬件设计提取过程 | 设计公司 代工厂 最终用户 |
提取硬件的设计细节 | 制造 现场 |
对策类型 | 概述 | 涉及方 | 目标 | 存在的阶段 |
---|---|---|---|---|
信任验证 | 验证设计是否存在机密性、完整性和可用性方面的潜在漏洞 | 验证工程师 | 对已知威胁提供保证 | 硅前硅后验证 |
硬件安全原语(PUF, TRNG) | 提供安全特性以支持供应链协议 | IP集成商 转销商(注册用) |
认证 密钥生成 |
整个集成电路供应链 |
硬件混淆 | 混淆原始设计、防止盗版和逆向工程 | 设计公司 集成公司 |
防止盗版 逆向工程 |
设计阶段 |
掩蔽和隐藏 | 设计防止侧信道攻击的解决方案 | 设计公司 | 通过减少泄露或添加噪声来防止侧信道攻击 | 设计阶段 |
安全架构 | 使安全解决方案设计能够防止潜在和新出现的安全漏洞 | 设计公司 IP集成商 |
使用设计时解决方案解决机密性完整性和可用性问题 | 设计阶段 |
安全验证 | 评估安全需求 | 验证和核验工程师 | 完整性、身份验证、隐私要求、访问控制策略 | 硅前硅后验证 |
1.5 硬件安全发展史
攻击史:1996年以前很少,主要做IP盗版,IC克隆;
- 1996年,时序攻击(在密码学书中称为计时攻击)出现;
- 1997年,故障注入攻击出现;
- 1999年,基于功率的侧信道分析出现;
- 2007年,硬件木马;
防御史:
- 1998年,硬件标签;
- 2000年,硬件安全基(如PUF物理不可克隆函数、TRNG真随机数生成器);
- 2014年,电子防御供应链硬件完整性计划
第一部分 电子硬件的背景知识
第二章 电子硬件概览
FET:场效应晶体管
CMOS:硅基互补金属氧化物半导体晶体管
摩尔定律已经失效,正在寻找“超越摩尔”的技术
2.1 数字逻辑
指用数字表示数字电路的信号和序列
- 二进制逻辑:正电压表示为逻辑1、高、真(true);无电压表示为逻辑0、低、假(false)
- 数字逻辑门:AND、OR、XOR、NAND、NOR、NOT
- 布尔代数
- 时序电路:现代数字逻辑电路分为组合逻辑和顺序逻辑(有存储功能)
- 时序电路元件:触发器(锁存器),D型、T型(反转)、JK型
- 计时参数:设置时间、保持时间、传输延迟
2.2 ASIC 和 FPGA
- ASIC(Application - Specific Integrated Circuit)专用集成电路,为特定用途制造的集成电路,性能高、功能复杂、功率消耗低、单元较小、单位成本低,但开发周期长、设计流复杂、初始成本高、偶发成本高,在大批量生产上具有优势
- FPGA(Field-Programmable Gate Array)现场可编程门阵列
对已制造完成的芯片进行配置的集成电路,由一组可编程的逻辑块和可重构连接器构成,是现场可编程的。逻辑块可通过重新配置连接器进行连接,配置不同的功能。其灵活、上市时间快、设计简单、可升级而不改变硬件,但功率消耗高、性能中等、单元成本高、资源浪费。在中等批量的生产上具有优势。
2.3 印制电路板PCB
PCB的设计流程:
- 元件选择
- 原理图绘图与仿真
- 电路板布局
- 原型测试和制造测试
PCB生产流程:轮廓、创建铜线路、钻孔、焊上元件、Gerber文件
2.4 嵌入式系统
基于微处理器或微控制器的系统,为特定功能而设计。微控制器是一个整体,包括CPU。其搭载的软件通常需要工作在内存较少的简单环境中。
2.5 硬件-固件-软件交互
数字逻辑,微架构,指令集架构,操作系统,汇编语言,面向问题的编程语言,面向对象的编程语言
第三章 片上系统的设计与测试
本章讲述SoC的设计流程、SoC测试验证的流程和原理。在设计VLSI(超大规模集成电路)时,会设定一个时序裕度,保证芯片的稳定运行。但IC上的门密度和设计复杂度在不断增加,在纳米尺度的制造工艺下将可能引入更多制造缺陷。因此,验证测试和制造过程的正确性变得越来越重要。
3.1 基于IP的SoC生命周期
SoC(system on chip)片上系统 是一个包含给定系统所需所有元件的集成电路,通常包括模拟、数字和混合信号IP核心。
SoC的生命周期 :
- 设计:制定设计规范,随后将所有IP内核集成,并植入DFT结构,生成网表和GDSII格式文件
- 制造:在晶圆片上进行光刻和化学处理,剔除缺陷产品
- 装配:即IC封装,装上外壳,并提供电气连接和散热的热路径,以保护芯片
- 发行:分销
- 系统集成:与多个器件一同集成为一个系统
- 退役
SoC的设计流程:
- 制订设计规范,并指定一个IP列表实现既定规范。(3PIP的购买:软IP核以HDL交付;硬IP核以GDSII交付;固定IP核使用通用库交付。
- 将所有IP集成,加入DFT结构,生成RTL描述(完整的系统级数字电路描述)和网表。
- 门级网表被转换为基于逻辑单元格和I/O几何图形的物理布局
- 进行测试,测试完毕后,发往代工厂进行制造
3.2 SoC的验证测试流程
验证阶段又称硅前验证,即在流片前确保从设计规范到网表的功能正确和正确转换的过程;测试阶段,是流片后的制造测试和生产测试的过程。
SoC的验证流程:
- 对IP进行单独验证。
- 基于接口协议,对芯片中各块接口进行验证
- 系统级验证,通过仿真软件进行硬件和软件的验证。分别进行功能验证和结构验证。
- 对IC的物理布局进行验证。验证完成。
SoC的测试流程:
- 晶圆测试,为晶圆提供电气刺激进行测试
- 识别制造缺陷或故障,使用自动测试模式生成工具ATPG
- 对芯片进行表征,找出芯片的理想工作参数
- 功能测试和结构测试
- 封装模具的老化应力测试
3.3 调试性设计
SoC调试,即硅后验证,在第一个硅制造后进行。调试支持由芯片上的调试性设计架构和软件组成。其策略是将接入点放置在系统中,由它的接口获得和控制芯片内部信号。电子系统中有三种元件需要测试:数字逻辑、内存块、模拟或混合信号电路。制造测试成本主要取决于测试数据的数量和测试时间
DFT调试技术概览:
- 扫描:对所有在扫描设计中的存储元件进行访问和控制。
- 扫描触发器(SFF):性能开销低,但速度慢
- 扫描链:将扫描触发器连成一串,然后将扫描值与SO值(扫描输出值)进行比较
- 扫描测试压缩:利用少量的测试的重要值来减少测试数据和测试时间
- 边界扫描:边界扫描技术利用边界扫描链,在芯片内部的信号线上插入测试信号,从而实现对芯片内部电路的测试和诊断。有效降低了PCB制造成本。
全速延迟测试:用于检测计时相关故障的方法
- 故障类型:转换故障(慢升和慢降造成的延迟),路径延迟故障(路径上的累计延迟)
- 两种方法:LOS和LOC
第四章 印制电路板 :设计与测试
本章讲述PCB的历史、生命周期、设计验证、装配流程。印制电路板PCB是基于基地结构的非导电板,为电路电气元件提供电气连接和机械支撑。
4.1 PCB的历史
在PCB量产前,通常使用点对点的飞线连接;早期PCB是在电路板材料上钻孔,并在孔中植入黄铜。20世纪20年代,PCB诞生,申请了第一个专利;20世纪30年代到40年代,PCB在二战中得到广泛运用;20世纪50年代,发明了酸刻蚀铜金属电路板的方法;20世纪80年代,表面贴装技术(Surface Mount Technology,SMT)的发展在1980年代引入了新的PCB制造和组装方法;现代,三维PCB、柔性PCB。
4.2 PCB的生命周期
PCB的生命周期与SoC的生命周期类似,设计规范->PCB设计->PCB原理图->PCB布局->制造和装配->检测验证
4.3 PCB的设计验证
恶意攻击者可以利用当今复炸而高度集成的PCB设计,借助隐藏孔或无源嵌入式元件,以硬件木马的形式篡改或植入额外的恶意电路,目前行业并无有效的安全措施来防御。
PCB检查:
- 自动光学检查(AOI):多次拍照,拼接成一个完整的大图像,与设计图进行比对。
- 自动X射线检查:利用不同材料对X射线的吸收率不同,对PCB进行检查
PCB测试:
- 芯片内测试:万用表原理
- 功能测试
- JTAG边界扫描测试
第二部分 硬件攻击:分析、示例和威胁模型
第五章 硬件木马
本章主要讲述了SoC的设计制造流程中的硬件木马(Hardware Trojan)插入威胁、HT特性、FPGA中的HT、HT的分类、信任基准、硬件木马的防御。由于硬件木马的硬件级别的植入,软件级别的对此可能不足以应对由硬件造成的威胁。
5.1 SoC
设计制造流程中的硬件木马(Hardware Trojan)插入威胁
5.2 硬件木马的特性
硬件木马(Hardware Trojan)指对电路设计的恶意的、故意的修改,在部署电路时会导致恶意行为(例如通过I/O输出密钥、通过侧信道功率输出重要信息、增加系统延迟、减半加密轮数)。
- 1、结构:基本结构有两个:触发器和攻击载荷。当触发器监测到预期的事件,攻击载荷就会执行恶意行为。触发条件可以是某内部节点上的n位值、重复发生某事件 2^10^次、到达某个温度等,以增加反检测能力。
- 2、硬件木马示例:
- 加密引擎中的木马:攻击载荷可以是由攻击者自定义的虚拟密钥而不是用于敏感加密的实际加密密钥,通过侧信道泄露硬件密钥。例如恶意片外泄露技术(MOLES),通过功率侧信道泄露硬件密钥。
- 通用处理器中的木马:攻击者在系统中植入后门,根据攻击者的命令输入禁用安全启动机制。并在硬件木马的帮助下实现深层次攻击,如利用缓冲区溢出攻击绕过内存保护机制或通过认证绕过漏洞来访问特定资产。
5.3 FPGA中的硬件木马
FPGA用途广泛,从电信系统到导弹制导都有应用。但FPGA的木马可以通过IP核的形式载入通用FPGA结构中,并且有大量可被控制的可重构逻辑单元,攻击者从而利用FPGA通用系统进行攻击。存在IP依赖木马和非IP依赖木马。
5.4 硬件木马的分类
分类的主要依据是硬件木马的物理、激活、功能特性。
5.5 信任基准
信任基准是一种基准电路测试,在难以检测、影响较大的位置故意添加木马,用以比较木马带来的影响和不同木马检测技术的有效性。
- 基准命名约定:DesignName - Tn#$,e.g.,MC8051-T1010:木马10号被插入MC8051的1号位置,版本为0
- 信任基准样例:开发制造阶段的基准样例:EthernetMAC10GE-T710,由组合器触发的木马程序,查找特定的16位向量
5.6 硬件木马的防御
木马检测:木马检测时最简单、常用的方法,分为硅前、硅后两阶段。
硅后检测:
- 破坏性逆向工程:检测能力强,可以检测到任意恶意修改
- 功能测试:检测能力弱,难以触发木马
- 侧信道信号分析:测量硬件参数来检测硬件木马(如延迟、功率、温度、辐射),将其与正常的(破坏性逆向工程得到的结果)进行对比
硅前检测:
- 代码覆盖率分析:即在设计阶段的功能验证期间执行代码行的百分比。木马可能逃脱
- 形式验证:如符号执行、模型检查、信息流,在验证3PIP方面有效。
- 结构分析:用定向指标将低激活概率的信号或门电路标记为可疑。
信任设计:检测静默的、低功率消耗的硬件木马更有效的一种方式。
- 促进测试:字面意思,如增加运行时监控模块
- 木马植入防范:逻辑混淆、伪装、功能性填充单元(将布局填满)。通过重新排序逻辑门、加入额外的逻辑功能或者使用不同的设计方法来实现。
- 可信计算:软件级别的检测,是基于不可信元件的可信计算,是最后一道防线。主要有TPM (受信任的平台模块)、安全启动 (Secure Boot)、远程验证 (Remote Attestation)、封装 (Sealing)组成。
- 分割制造:字面意思,降低代工厂的不可信水平
第六章 电子供应链
本章主要讲述电子供应链上的安全隐患及应对措施。
6.1 安全隐患
- 硬件木马
- CAD工具:CAD工具只注意可能无意间引入漏洞,CAD设计主要考虑传统指标(如面积、产量、可测试性),而忽略了安全性。
- 测试/调试工具:无法避免其在电子元件上的使用,但其允许攻击者观察或控制其内部状态。
6.2 信任问题
- IP滥用:即生产超过约定数量的元件
- IP盗版:非法复制和修改
- 零件不合格:
- 集成电路逆向工程:RE
- 文档伪造:即数据造假
- 集成电路再标记、回收
6.3 对策
木马检测、安全检查:
IP加密:
- 硬件锁:硬件锁通常是一个外部USB设备,其内部包含了一个芯片,这个芯片具有独特的识别码、加密功能和存储能力。软件开发者可以将授权信息、加密算法和关键数据存储到硬件锁中,然后将这些功能与其开发的软件绑定在一起。软件启动时,会与连接的硬件锁进行通信,验证硬件锁的身份。这通常包括向硬件锁发送请求,硬件锁返回唯一的识别码供软件进行验证。只有在硬件锁通过验证后,软件才会继续运行。
- 时间锁:类似硬件锁,通常与硬件锁结合使用。
- 追踪/水印技术:将特定的标识信息嵌入到IP中,以便在未经授权使用的情况下进行追踪。提取水印后进行水印比对,例如物理不可克隆函数(Physical Unclonable Function, PUF)利用微小的物理变异来生成唯一的标识信息。这些微小的变异是由制造过程中的随机性和不均匀性引起的,使得每个硬件实例都具有独特的特性。PUF可以用于实现设备的唯一标识、认证和密钥生成。
电气测试、物理检查
第七章 硬件IP盗版和逆向工程
7.1 FPGA的安全问题
FPGA的设计:
- 将总设计拆分成小段,每一段都适合于FPGA内部特定的可编程硬件元件,随后合成,输出一个门级网表
- 将几个门合并成一个LUT(以十六进制显示)作为配置位,放置并路由该网表
- 配置位连接成一个文件,即位流
FPGA系统的生命周期:与硬件IP类似
7.2 FPGA位流攻击
IP窃取
- 克隆:配置不当导致可实现位流回读;基于SRAM的电子探针拦截位流传输的位流探测;窃取解密密钥
- 位流逆向工程:厂商没有标准化位流格式,逆向难度较大
- IP滥用
IP篡改:
- 故障注入:有意引入系统的故障来削弱或破坏目标系统的功能、机密性、完整性或可用性。这种攻击方法通常是为了绕过系统的安全措施、窃取敏感信息或造成系统崩溃。故障注入攻击可以利用系统对故障的不恰当处理来获得攻击者所需的结果。
- 直接篡改:篡改未加密的位流以实现硬件木马,重点修改未使用的资源(常为一串0,有助于轻松修改)
- 硬件木马
- 未经授权的重新编程:字面意思
第八章 侧信道攻击
侧信道攻击(Side-Channel Attack,SCA)是一种利用系统在运行过程中产生的辅助信息(侧信道)来获取敏感信息的攻击方式。侧信道攻击通过分析系统在其他方面的物理特性,如功耗、电磁辐射、执行时间等,来获得额外的信息,从而窃取敏感数据。测信道攻击对加密设备,尤其是智能卡和物联网设备构成重大威胁。
8.1 功率分析攻击
需要对设备进行物理访问,主要用于提取密码系统的密钥,分为简单功率分析(SPA)、差分功率分析(DPA)、相关功率分析(CPA)等。功率跟踪指分析过程中捕获的每个功率信号
- 功率消耗侧信道泄露的来源:影响设备功率的因素有两个:动态功率、漏功率(无用)。动态功率由器件内晶体管开关活动引起。
- 功率信号采集:将示波器连接在电源和目标器件的Vdd或Gnd引脚之间的精密电阻,测量其的压降。利用算法消除噪声,使信号清晰。
- 简单功率分析 (Simple Power Analysis - SPA):通过目视观察即可直观的识别出信息。
- 差分功率分析 (DifferentialPower Analysis - DPA ):
用于窃取密码设备或加密系统中的秘密信息,如密钥。DPA 利用了加密设备在执行加密操作时所消耗的电力或功率的变化,以及这些变化与密钥相关的关系。DPA 的基本思想是通过测量设备在不同密钥值下的电力消耗来分析其差异。当设备执行加密操作时,其电路状态和开关活动会因密钥的不同而产生微小的变化,进而影响电力消耗。从而通过对比不同操作状态下产生的信号差异来获取敏感信息。
- 对策:
- 噪音引入:在设备的电路中引入噪音可以使功耗模式变得更加复杂,从而减少攻击者分析的准确性。这可以通过在电路中添加噪音电路、频率变化电路等方式实现。
- 电源噪音过滤:通过使用电源噪音过滤器可以减少来自电源的干扰,从而使功耗数据更加干净,难以分析。这有助于降低攻击的成功率。
- 随机化操作:在加密操作中引入随机性,使每次操作的功耗模式不同。这会使攻击者难以从多次操作中获取一致的功耗模式。
- 硬件隔离:将敏感的加密操作或密钥存储在物理隔离的硬件模块中,以减少攻击者通过功耗分析获取信息的可能性。
- 功耗平衡技术:在执行加密操作时,通过控制电路的开关活动和功耗分布,使得不同操作之间的功耗变化相对均匀。这样攻击者难以分辨不同操作之间的功耗模式。
- 使用低功耗算法:选择使用低功耗的加密算法,这样攻击者获取的功耗数据中的变化会更加微弱,难以分析。
- 协议级防御:在通信协议中引入随机性、模糊性,或者使用对抗攻击的防御策略,从而使攻击者难以从通信流量中获取有用的信息。
- 密钥分割和散列:将密钥分成多个部分,在执行加密操作时,只有部分密钥被用到,从而减少攻击者获取完整密钥的可能性。
8.2 电磁侧信道攻击
电磁测信道攻击主要测量运行中集成电路发出的电磁波,通过电磁分析能够捕捉空间信息,识别电磁信号位置。电磁信号可以通过近场探头或天线截取,并转化为电流信号。去除噪声后限制频带即可应用于电磁分析。
- 简单电磁分析(Simple Electromagnetic Analysis - SEMA) :在简单电磁分析(SEMA)攻击中,攻击者通过观察痕迹直接推断出密钥。它对于非对称加密实现非常有效。通常,只需要一些痕迹,尽管攻击者需要对加密设备和加密算法的实现有深入的了解。易受 SEMA 攻击的实现将根据该位是否执行不同的操作密钥的值是0或1,这将使用不同的功率和/或不同的芯片组件。
- 差分电磁分析(Differential Electromagnetic Analysis - DEMA):差分电磁分析 (DEMA) 攻击更为复杂,但对于对称加密实现有效。差分体现在对设备在不同操作状态下产生的电磁泄漏信号的比较上。
- 对策:与应对功率分析的对策基本一致
8.3 故障注入技术
故障注入攻击 (Fault Injection Attack) 是一种攻击手段,通过引入故障来改变系统的正常运行,从而达到攻击目的。这种攻击方法通常针对硬件组件,但也可以针对软件。故障注入可以通过多种方式实现,例如通过电磁干扰、电压变化、温度变化或特定的软件指令。
- 常见的故障注入攻击方法:
- 电压毛刺:基本的故障注入技术,通过产生电压的异常(例如尖端放电)来实现故障。
- 温度注入:通过改变设备的温度,引起设备的故障。
- 电磁注入:使用强磁场干扰设备的电子信号,会均匀的影响整个电路。
- 篡改时钟引脚:通过干扰系统时钟,发送故障的时钟信号,引发设备的故障。
- 软件注入:利用软件漏洞或特定的指令序列来引发故障。
- 对策:
- 基于关键操作的复制:重复加密操作,并比较两个输出,若不同则系统进入故障注入防御状态。复制可以在时间和空间上完成。空间复制即利用冗余的电路块来重新计算特定的加密任务;时间复制即在不同时间执行重新计算。
- 基于错误检测方案:当设备检测到系统在故障中运行时,将会禁用设备的关键功能。(效率较低)
8.4 时序攻击
时序攻击(Timing Attack)是基于目标系统响应时间的测量来获取有关其内部操作的信息。通过分析这些时序信息,攻击者可能能够推导出加密密钥或其他敏感信息。
时序攻击的基本思路是:当计算机执行不同的操作时,所需的时间可能会有所不同。例如,某些密码算法在处理特定的输入或特定的密钥部分时可能需要更长或更短的时间。攻击者可以通过测量处理不同输入时的响应时间来获得有关系统内部操作的信息。通常与其他方法共同使用。
- 时序攻击的例子:
- RSA解密:传统的RSA私钥操作可能会根据密钥的特定位的值而变慢或变快。攻击者可以根据响应时间来猜测密钥的某些部分。
- 密码比较:当系统比较用户输入的密码与存储的哈希值时,如果它按字节进行比较并在找到第一个不匹配的字节时停止,则攻击者可以根据比较所需的时间来猜测密码的前几个字符
- 如何防御时序攻击:
- 恒定时间操作:确保关键操作,如密码比较或加密解密,总是在相同的时间内完成,无论输入或密钥的值如何。
- 引入随机延迟:在关键操作中引入随机的延迟,使得基于时间的分析变得困难。
- 避免数据依赖的路径:确保代码的执行路径不依赖于敏感数据的值。
- 使用硬件加密:许多现代的硬件都支持加密操作,并且被设计成对侧信道攻击有抵抗力。
8.5 隐蔽信道
“隐蔽信道”(Covert Channel)是一个计算机安全术语,指的是在计算机系统中,不被预期用于通信的途径或机制被用于传递信息。这种通信途径可能会被攻击者用于绕过安全策略或机制,从而秘密地传输信息。隐蔽信道常常是安全体系中的一个难以处理的问题,因为它们常常利用了正常操作或功能的副作用来传递信息。较难利用。
1、隐蔽信道的类型:
- 时间隐蔽信道:攻击者可能通过观察某个操作的执行时间来推测系统的某些状态或信息。
- 存储隐蔽信道:攻击者可以在某个预定义的磁盘位置上写入数据,然后由另一个进程读取这些数据。
- 网络隐蔽信道:例如,攻击者可以通过修改数据包的某些字段(如TTL或其他不常用的字段)来传输信息,而这些字段在正常情况下并不用于这种目的。
第九章 面向测试的攻击
可测试性和安全性本质上是相互矛盾的。安全性依赖于使信息变得模糊和难以理解。扫描可以将电路设置为任何状态,并将芯片停止在任何中间状态进行分析,扫描链成为密码分析容易利用的测信道。
9.1 基于扫描的攻击
基于扫描的可观测性攻击:可以随时获取系统快照,寻找重要寄存器,从而获得密钥。
基于扫描的可观测性/可控性攻击:除了方法一外,还能使扫描链成为故障注入攻击点,使得攻击很容易重复。
威胁模型:扫描辅助差分攻击
- 通过应用挑战对、运行加密算法和比较响应,可以获得密钥。由于增加了可控性和可观测性,扫描有助于这种攻击。通过从功能模式切换到测试模式,攻击者可以从扫描链中识别密钥触发器,然后可以通过输入对、密钥触发器和密钥之间已经构建的相关性来恢复密钥。
防御策略 : 动态模糊测试、低成本安全扫描、开发锁、扫描接口加密(加密输出)
9.2 基于JTAG(边界扫描)的攻击
JTAG(Joint Test Action Group)是一种用于测试和调试电子设备的标准接口,通常用于在生产和维护过程中进行测试、调试和编程。
- JTA攻击:JTAG不知道芯片对外部命令的反应,JTAG很容易在软件层面被控制。例如绕过Xbox的认证和入侵iPhone等。
- JTAG防御:
- 使用后销毁JTAG
- JTAG密码保护
- 将JTAG隐藏在系统控制器后
第十章 逆向工程(物理攻击与对策)
逆向工程(Reverse Engineering)是一种通过分析已有的产品、软件或系统,来了解其设计、功能和工作原理的过程。逆向工程可以应用在各种领域,包括软件、硬件、网络和电子设备等。
10.1 芯片级逆向工程
芯片通常由裸片、引线框架、引线接合和成型封装材料组成。通常使用倒装芯片的方法,其中的电气连接靠导电溶胶来实现。在芯片级,逆向工程的目标是找到封装材料、引线接合、不同的金属层、触点、通孔和有源层及金属层之间的互联。
- 解封装:芯片解封装是将芯片封装材料(如塑料或陶瓷)移除,暴露出内部电路和结构的过程。这允许对芯片的内部设计、功能和连接进行详细分析和研究,通常用于逆向工程、芯片验证和安全研究。解封装需要使用化学、热或机械方法,但需要注意可能会破坏芯片样本。
- 分层 :现代芯片由几个金属层、钝化层、通孔、触点、多晶硅和有源层组成。逆向工程师必须对芯片进行横截面成像,使用 SEM 或TEM 来识别层数、金属材料、层厚、通孔和触点。横截面成像的知识非常关键(即层的厚度),因为它决定了分层必须如何进行。
- 成像:即拍照、X光
- 后处理:
- 图像处理:形成各层的图像
- 注释:记录晶体管等元件位置,各层的互联、通孔和触点。
- 门级原理图提取
- 从门级原理图中提取高级网表
10.2 芯片级反逆向工程
- 伪装:布局层次的技术,例如单元伪装和虚拟触点。让攻击者无法识别其功能。
- 混淆:通过内部设计转换某元件功能,实现混淆
10.3 探测攻击
探测攻击是一种通过观察芯片的物理硅实现来绕过安全措施的侵入方法。作为一种侵入式攻击,攻击者可以直接访问目标设备的内部线路和连接并提取敏感信息。与逆向工程相结合,这构成了严重的威胁。典型的探测攻击将从解封装开始,以暴露硅芯片。完成后,攻击者就可以开始对设备进行逆向工程。通过提取网表,人们可以开始了解功能并识别目标信号。一旦攻击者找到目标信号并将其映射到设备上的坐标,他们就可以开始铣削。通过铣削,它们暴露了设备的内部电线。然后他们可以形成电气连接并开始提取信息。为了防止此类攻击,设计人员必须识别可能的目标并采取适当的措施。此类目标的示例包括:
- 加密密钥
- 固件和配置比特流
- 设备上受保护的数据
- 加密随机数
一些常见的对策包括屏蔽和 T 专用电路。屏蔽层包含一层电线,其信号被监控以防止铣削引起的干扰。T 专用电路旨在按顺序分割信号,或者通过要求攻击者使用 t + 1 个探测器来提取 1 位信息来耗尽攻击者的资源。其他方法包括用于检测解封的光传感器和用于防止重复模式的扰线信号。
10.4 侵入性故障注入
聚焦离子束(FIB)是最精确和最强大的故障注入技术之一,攻击者可以编辑电路、重建丢失的总线、切断现有的导线,其工作精度为1nm。
第十一章 PCB攻击:安全挑战和脆弱性
11.1 现场更改PCB
中断或恶意更改PCB的功能。例如:在PCB信号线上添加电容使其电气连接中断、将PCB信号轨迹的宽度变窄以增加其电阻、外接恶意IC、通过重新连接路由电路以避开或替换安全块等。
11.2 破解芯片攻击
破解芯片攻击是现场更改PCB的重要应用。例如绕过Xbox的安全检测。
第三部分 硬件攻击防范对策
第十二章 硬件安全原语
硬件安全原语是一些基本的、可信赖的硬件组件或技术,用于构建安全的计算机系统和设备。它们通常设计用于提供硬件级别的保护,以确保系统的安全性和可靠性。作为安全环境的硬件级构建模块,在确保电子芯片和系统可信、真实、完整方面扮演着重要角色。
根据柯克霍夫原则,密码系统的安全性应该完全依赖于密钥,而不是系统设计(即没有实现上的系统缺陷或测信道泄露)。因此,密钥的强度直接决定了安全系统的强度。
12.1 前置知识
CMOS器件的性能:CMOS 是 “Complementary Metal-Oxide Semiconductor” 的缩写,翻译为”互补金属氧化物半导体”。它是一种广泛用于集成电路(IC)制造中的半导体技术。CMOS设备正面临着制程变异和性能降级。制程变异,即器件制造过程中产生的大量系统和随机误差。实时/环境波动、老化/磨损机制。
12.2 PUF物理不可克隆函数(physical uncloneable function)
概述:PUF能够利用设备内在的固有特征生成数字指纹。理想情况下,它是一种密码学安全的单向函数,输入与输出之间没有任何可预测的映射关系。PUF的熵来自器件制造过程中的固有误差。
PUF的进步性:PUF消除了密钥存储的要求,密钥可以通过输入触发器按需生成。加密的安全性在于密钥的保密性,PUF不需要存储密钥,不存在密钥被窃取的风险。此外,任何针对PUF的物理攻击,都会改变PUF的内在固有特征来彻底改变PUF的响应。
PUF的分类:大致可分为强PUF和弱PUF。强PUF能够抵抗任何碰撞和重放攻击。一般会在PUF上再加一层封装,提高安全性。
PUF的评估标准:PUF的不可克隆性表明它不能被软件模型替换而生成相同的响应,且其自身必须难以被复制。PUF应当具有攻击弹性,即当PUF被控制时,不能按照攻击者的意愿生成正确的响应。PUF的错误率应该为0。PUF还应具有不可预见性、扩散性。
常见的PUF架构:
- 仲裁器PUF:利用仲裁器来实现随机01
- RO PUF:利用环形振荡器来实现随机01
- SRAM PUF
- 蝴蝶PUF
- 轻量级PUF
- 双稳态环PUF
PUF的应用:
- 密钥生成
- 设备认证
- 软件和IP许可
- 硬件测量
12.3 TRNG(硬件随机数生成器True Random Number Generator)
- 概述:TRNG是一种硬件设备或软件程序,用于生成真正的随机数,这些随机数是通过物理过程或环境噪声等随机事件产生的。TRNG生成的随机数具有高度的不可预测性和不可重复性,因此在密码学、模拟和模型验证等领域中被广泛应用。与伪随机数生成器(PRNG)不同,TRNG不依赖于算法或种子,因此更加安全可靠。
- TRNG的评估标准:主要取决于随机性,应该不具有可预测性。
- 常见的TRNG架构:
- 基于噪声的TRNG
- 基于振荡器的TRNG
- 基于存储器的TRNG
- TRNG的应用:与PUF类似
12.4 已知的挑战和攻击
针对PUF:
- 针对PUF的强建模攻击
- 环境和老化对PUF的影响:出错率增加,PUF的输出不再可靠
- 克隆SRAM-PUF
针对TPNG:
- 环境和老化对TRNG的影响:熵源的随机性下降,TRNG的输出不再可靠
第十三章 安全评估与安全设计
略
第十四章 硬件混淆
硬件混淆通常指的是在硬件设计或制造中采用一系列技术和措施,使逆向工程或复制变得异常困难,并且实现硬件木马防御。从而增加设备的安全性和抵御物理攻击。是一种主动的防御策略。 混淆设计的工作模式有两种:正常模式和混淆模式。当密钥正确时产出正确的输出,错误时进入混淆模式,即“锁定”,产生错误的输出。
14.1 引言
- 1、定义:“混淆”表示模糊或者掩盖信息的真实内容或产品的功能行为以保护内在IP的方法。在密码学和软件中,混淆器Z的表现形式是“编译器”,它将程序重构为混淆形式Z(p)。Z(p)和P具有同样的功能,但攻击者无法通过Z(p)构造P。
14.2 混淆技术概述
- RTL(Register-Transfer Level寄存器传输级别)混淆:
- 基于密钥的软件IP混淆。
- 门级混淆:同样为基于密钥的软件IP混淆。
- 指令集混淆:每个处理器都有底层指令集架构(Instruction Set Architecture,ISA),ISA描述命令和数据的类型、地址空间和支持的操作码。ISA充当计算机软件和硬件交互的媒介。
- 为了降低ISA的可预测性,我们进行指令集混淆,对指令集进行加密(或者某种编码),即使代码仅能够在当前计算机上运行,而在其他计算机上保持锁定状态,保证了漏洞(如缓冲区溢出)难以扩散。
- 指令集混淆还可以通过在代码指令流中特意插入垃圾字节,导致反汇编的失败,而不影响指令的运行(因为没有那些指令)。
- 布局级混淆:硬件混淆方法。
- 分割制造技术:将高精尖的部分分割交由代工厂制造,再用可信任的技术相对落后的可信任工厂进行拼接,很好的保护了硬件的连接信息,从而保护了IP。
- 伪装:在关键部件处使用可配置单元,实现伪装。
- 2.5D/3D IC混淆:通过”Wire-lifting”线路提升技术,增加布线和门,实现混淆。
- PCB混淆:在板上插入置换块,密钥正确时才能正常工作。
14.3 硬件混淆方法
14.3.1 逻辑锁定
- 逻辑锁定:硬件混淆中的逻辑锁定(Logic Locking)通过在设计中引入附加逻辑门和控制信号,使得仅有授权用户能够正确配置电路,从而增强了硬件的安全性。
- 逻辑锁定单元(LLUs):逻辑锁定单元是逻辑锁定的基本单元,通常是一组逻辑门和相关的控制逻辑。LLUs 会对电路的某些部分进行锁定,使其在未提供正确的解锁密钥或配置之前无法正常工作。
- 解锁密钥(Unlock Key):解锁密钥是用于配置逻辑锁定单元的密码或密钥。只有具有正确解锁密钥的用户或设备才能解锁电路并使其正常工作。
- 功能保持性:逻辑锁定单元不仅用于锁定电路,还可以用于保持电路的某些功能,以便在解锁后继续正常运行。这有助于确保合法用户能够使用电路。
- 虚假路径(False Paths):虚假路径是一种路径,它不会对电路的正常功能产生影响,但可能会干扰对电路的逆向工程尝试。通过引入虚假路径,可以增加电路的复杂性和混淆度,使逆向工程变得更加困难。
- 多层逻辑锁定:有些设计使用多层逻辑锁定,其中多个逻辑锁定单元级联使用,以增加安全性。在这种情况下,要解锁电路,用户必须提供多个解锁密钥。
逻辑锁定技术已知攻击威胁:
- 密钥致敏攻击(Key Sensing Attack)是一种密码分析攻击方法,旨在通过监测或感知目标系统的电磁辐射、功耗、电流波形等物理信号,以获取密钥或密码信息。这种攻击方法利用目标系统在执行密码操作时产生的物理信号的微小变化来推断密码或密钥的值。密钥致敏攻击通常需要专业的实验设备和技能,因此属于高级威胁。以下是密钥致敏攻击的一般步骤和特点:
- 监测目标系统:攻击者需要物理接触目标系统或在较短的距离内监测目标系统的物理信号。这可以通过放置传感器或监测设备来实现。
- 收集信号数据:攻击者收集目标系统在执行密码操作时产生的物理信号数据。这可能包括电磁波辐射、电流消耗、功耗变化等。
- 信号分析:攻击者对收集到的信号数据进行分析,以检测与密码或密钥相关的模式或特征。这可能涉及信号处理和数据挖掘技术。
- 推断密码或密钥:通过分析物理信号的微小变化,攻击者试图推断出目标系统使用的密码或密钥的值。
密钥致敏攻击的成功取决于多个因素,包括目标系统的物理特性、密码算法的实现方式以及攻击者的技能水平。防御此类攻击的方法包括物理层面上的安全措施,如屏蔽、隔离和干扰物理信号,以减少泄漏的信息。
- 布尔可满足性攻击(Boolean Satisfiability Attack,通常缩写为SAT攻击)能够有效的从混淆设计中发现正确密钥。它旨在通过求解布尔可满足性问题来破解密码或攻击密码系统。SAT攻击通常用于密码破解、硬件验证和形式方法等领域。SAT攻击的基本思想是将密码或密码系统的特定属性表示为布尔方程,然后使用SAT求解器来查找方程的解。如果方程有解,那么找到的解可能对密码进行破解或攻击密码系统具有重要意义。以下是SAT攻击的一般步骤和特点:
- 建立布尔方程:攻击者将密码或密码系统的特定属性转化为布尔方程。这可以包括密码的比特表示、密码验证条件、访问控制规则等。
- 选择SAT求解器:攻击者选择适当的SAT求解器,这是一种用于解决布尔可满足性问题的计算工具。SAT求解器尝试找到方程的满足解(如果存在)。
- 求解方程:攻击者使用SAT求解器来求解布尔方程。如果求解器找到一个满足方程的解,那么这个解可能包含了密码的信息或用于攻击密码系统的关键信息。
- 分析结果:攻击者分析求解器的输出,以确定是否找到了密码或对密码系统的有利信息。如果找到了密码,攻击者可以成功破解密码或绕过密码验证。
SAT攻击的有效性取决于多个因素,包括密码系统的复杂性、方程的表示方式和SAT求解器的性能。一些密码系统和应用程序使用形式方法进行验证,以抵御SAT攻击,这些方法可以帮助发现并修复潜在的布尔方程漏洞。
需要注意的是,SAT攻击通常需要大量计算资源,特别是对于复杂的密码系统。因此,合理选择密码算法、密码长度和密码策略等安全实践可以减小SAT攻击的风险。
14.3.2 基于门伪装的混淆
基于门伪装的混淆(Gate-Level Obfuscation)通过在电路中引入伪装门(Obfuscation Gates)来干扰和困惑攻击者,使其难以理解电路的真实功能和结构。
- 伪装门:伪装门是一种特殊类型的逻辑门,其功能与标准逻辑门相同,但其内部结构经过修改,使其在逆向工程中更难以分析。伪装门通常通过改变门的布尔逻辑表达式、添加无关的输入、重新排列输入等方式来实现。
- 混淆技术:混淆技术包括引入伪装门、重排逻辑门、添加虚假逻辑路径、嵌入陷阱电路等方法。这些技术旨在使电路结构更加复杂,增加攻击者的分析难度。
- 解锁密钥:与逻辑锁定类似,基于门伪装的混淆通常需要解锁密钥或密码来恢复电路的原始功能。只有授权用户才能提供正确的解锁密钥。
- 功能保持性:与逻辑锁定类似,门伪装混淆也可以实现功能保持性,确保合法用户能够正常使用电路。
14.3.3 基于FSM的硬件混淆
基于有限状态机(Finite State Machine,FSM)的硬件混淆是一种用于增强硬件电路安全性的技术。它的基本思想是通过引入多余的状态、转移和控制逻辑,使电路的行为变得模糊和复杂,从而增加攻击者分析和逆向工程的难度。以下是有关基于FSM的硬件混淆的一些关键概念和原理:
- 有限状态机(FSM):有限状态机是一种用于描述电路行为的形式化模型,它包括一组状态、输入和状态转移函数。在硬件设计中,FSM通常用于控制电路的行为。
- 硬件混淆:硬件混淆是指在硬件电路中引入额外的逻辑、状态或控制,以增加电路的复杂性和难以理解性,从而提高安全性。
- 混淆技术:基于FSM的硬件混淆技术通常包括以下方法:
- 状态增加:引入多余的状态以增加状态空间的大小,使电路的行为变得复杂。
- 控制逻辑复杂化:修改状态转移逻辑,使其更加复杂和难以分析。
- 输入混淆:对输入信号进行变换或混淆,使其对应的状态转移关系变得不明显。
- 输出混淆:对输出信号进行变换,使其不易被攻击者识别。
- 安全性增强:基于FSM的硬件混淆可以增强电路的安全性,因为攻击者需要更多的时间和资源来理解电路的行为和逻辑。这种混淆技术适用于各种硬件安全应用,如防止逆向工程、防止硬件仿制和保护知识产权等。
- 性能影响:硬件混淆可能会导致电路性能下降,因为引入了额外的逻辑和状态。因此,在设计时需要权衡安全性和性能。
14.4 新兴的混淆方法
- FPGA位流加密:FPGA位流加密是指对FPGA的位流文件进行加密,以确保只有具有正确密钥或授权的用户能够解密和使用该位流文件。这样,即使攻击者获取了位流文件,也无法理解其内容或将其用于未经授权的设备。