☰
IC逆向工程实战:从芯片拆解到网表提取与行为还原
2026/10/6 1:09:19 网站建设 项目流程

1. 先把IC逆向这件事说清楚

1.1 从一份芯片到一张网表:IC逆向到底在做什么

这几年无论是TCHES这样的密码硬件顶会,还是CTF比赛里的硬件题目,都在频繁出现一个词:IC逆向。很多人第一反应是“把芯片拆开看里面”——对,但这只是最外层。真正意义上的IC逆向,是把一颗已经封装成型的芯片,通过物理或逻辑手段,还原出它的内部结构、电路连接,甚至行为级代码。拆开只是开始,真正的工作是从一张张照片、一堆电压波形、一组时序行为里,把芯片“说人话”的逻辑提取出来。

我最早接触这块,是因为一次芯片安全评估的委托。甲方拿了一颗用作认证的智能卡芯片,想确认里面的密钥保护逻辑是不是像厂商宣传的那样“不可提取”。一开始我也以为这事很难,后来才发现,难的不是拍照或者读网表,而是每一步都有无穷多的细节坑等着你。TCHES '2026这篇IC逆向综述,把这条路上的方法、工具、层级梳理得很清楚,正好可以当作一个系统化入门的框架来聊。

1.2 想清楚目的再动手:合法场景与目标分层

在正式动手之前,必须先明确一个问题:你逆向这颗芯片,到底想拿到什么?目的不同,投入的设备、时间和路径天差地别。

常见的合法目的有这几类:

  • 安全评估:验证某颗安全芯片是否真的防篡改,密钥是否可通过侧信道或物理手段提取,这是TCHES这类会议最关心的方向;
  • 失效分析:芯片功能异常,需要确认内部金属线是否断裂、各模块是否正常工作,这是半导体厂和终端厂商的日常需求;
  • 兼容性与竞品分析:确认某颗芯片实现了哪些功能、接口协议怎么定义,用于合法兼容产品或独立评估;
  • 学术研究与教学:把一颗老芯片重新提取成网表和逻辑,用于教学和验证新的逆向算法。

目的定了,才好决定工作对象的分层。从物理到逻辑,我习惯把IC逆向分成四层:

  1. 封装层:材料构成、Die尺寸、引脚绑定关系;
  2. 版图层(Layout):各金属层走线、器件位置、模块划分;
  3. 网表层(Netlist):提取出晶体管级或门级连接关系;
  4. 行为层(Behavioral):从网表或片子运行行为反推算法、协议、状态机。

大部分初学者一上来就盯着“还原RTL”,其实不对。IC逆向是一个逐层递减信息的过程,每一层都有专用的技术和工具。你从哪一层切入,取决于你能接受多少信息损失。下面这张分层思路,是我在评估了十几个项目之后总结出来的,大家可以顺着这个框架去理解TCHES综述里的绝大多数内容。

2. TCHES '2026这篇综述的核心脉络

2.1 为什么是TCHES,为什么是IC逆向

TCHES是密码硬件与嵌入式系统方向最硬核的会议之一,全称是IACR Transactions on Cryptographic Hardware and Embedded Systems。它关注的不是泛泛的硬件安全,而是加密算法在硬件实现里那些“纸面上没有的漏洞”。IC逆向在其中占据的位置特殊:它是所有物理攻击手段的底层基础。

你想做侧信道功耗分析,总得知道哪些模块在跑、哪条总线在翻转;你想做故障注入,总得知道目标寄存器的物理位置和时钟域;你想评估防克隆方案,总得先理解芯片里的PUF电路是怎么实现的。这些知识,单靠芯片手册和设计文档是不够的——文档可能不完整,甚至可能是故意误导的。唯一可靠的办法,就是自己把芯片逆向出来,拿到一手信息。

这篇2026综述最值得读的地方,不在于它罗列了多少工具或论文,而在于它把IC逆向重新定义成了一套“多模态信息融合”的方法学。过去大家提到逆向,就是磨芯片、拍照、描线,一条路走到底。但近五年的研究趋势明显变了:光学的、电学的、逻辑行为观测的、形式化验证的,全都开始往一张网表里汇入。阅读这篇综述,你其实是拿到了当前学术界最前沿的一张作战地图。

2.2 综述方法学框架:从物理层到逻辑层

综述里提出的框架,我用自己的项目经验翻译一下,大概是下面这个模样。

第一层:物理侦察。这一步的目标是确定芯片的制程、工艺、分层结构。常用的手段包括X射线断层扫描、声学显微镜、红外显微镜。对于没有专业实验室的个人研究者,一台高倍率的光学显微镜加一台工业CT,已经能覆盖大部分封装级侦察需求。做完这一层,你就知道从哪里下刀(或者说,从哪里开始腐蚀)。

第二层:延迟与图像重建。芯片开封后,需要逐层去除钝化层和金属层,用SEM(扫描电子显微镜)或者高清光学显微镜逐层拍照。然后把这些照片拼接起来,识别出金属连线和通孔。开源社区常用的工具是ImageJ配合插件做拼接,更正规的会用到商业软件。这一层的“产品”是一套完整的版图照片集。

第三层:网表提取。这一步是硬功夫。芯片里可能有几百万甚至上亿个晶体管,你要从图像里识别出哪些是晶体管、哪些是连线、连到哪里。完全手工不现实,目前主流方案是半自动提取,用图像识别辅助标记,再用规则检查去重。对老工艺芯片,有一些开源工具能帮助你做门级提取;先进工艺则基本依赖商业EDA工具配合数据训练。

第四层:逻辑行为还原。拿到网表之后,把它翻译成模块划分、状态机、数据通路,这一步和数字IC设计里的“反向综合”很像。你要从一个门级网表里找哪些电路是加法器、哪些是寄存器堆、哪些是状态机。现代做法里会引入形式化验证工具(比如SymbiYosys)来辅助判断模块性质。

这套框架里最容易被业余玩家忽略的,其实是第一层和第四层的衔接关系。很多人以为“拍照+提取连线”就是把芯片逆向的最终目标,实际上那只是中间产物。真正能回答安全问题的,是第四层的行为还原——比如密钥比较逻辑在哪里、熔丝位是怎么控制的、调试接口有没有可能被强行激活。TCHES综述把它们串成了一条流水线,而不是四个孤立阶段,这是我读完最大的收获。

3. 实操过程中的关键技术与避坑指南

3.1 样品前处理:从一颗芯片到可以拍照的Die

如果你准备自己动手做一次IC逆向,前处理是第一道坎,也是最容易翻车的地方。我踩过的第一个坑,就是把芯片放在硝酸里泡太久,结果整个Die都散架了,连拍照的机会都没有。

前处理的目标很简单:把芯片从封装里完整地、不破坏器件结构地“解放”出来。通常的步骤是:

  1. 去塑封:绝大多数芯片是环氧树脂封装,传统方法是用发烟硝酸加热到120°C左右,滴在芯片背面溶解树脂。这里有两个关键参数:温度和时长。温度低了,树脂不溶解;温度高了,芯片内部的铝层会被腐蚀。我自己的经验是,对于常规QFP封装,120°C发烟硝酸滴3-5分钟,每30秒观察一次,一旦看到Die边缘露出来就立刻停止,并用丙酮超声清洗。

  2. 去钝化层:裸Die表面有一层玻璃钝化层,需要用等离子刻蚀或者氢氟酸(BOE)处理。这一步对新手极度危险,氢氟酸直接接触皮肤会造成严重伤害,必须戴氟橡胶手套、护目镜,在通风橱里操作。

  3. 逐层金属去除:如果你只想看顶层金属,那么到第2步就可以拍照了。如果想看到晶体管层,还要用磷酸系腐蚀液或离子研磨设备逐层去除金属层,每去一层拍一次照。

提示:千万不要为了“省时间”用稀硝酸替代发烟硝酸,也不是所有芯片都耐酸。有些特殊封装(陶瓷、金属密封)需要机械开盖,先用工业CT确认内部结构再动手。

这里必须强调安全:所有化学品操作必须在通风橱内完成,酸液加热过程要全程有人看守,废液不能直接倒下水道。我见过有人图方便在实验室角落直接操作,结果树脂烟雾触发排烟警报,整个实验室被疏散——这种尴尬,一次就够了。

3.2 图像拼接与金属层恢复:从照片到连线

Die拍出来之后,要拼接成完整图像。常见设备是光学显微镜配合电动载物台,按固定步长扫描,然后拼接。参数上我一般设置20%重叠率,太高浪费拍摄时间,太低拼接容易出裂缝。用ImageJ的Grid/Collection stitching插件可以解决大部分拼接问题,但要注意镜头畸变,拍之前用校准尺标定一下。

拼接完成之后,要做金属层恢复,也就是把每层的图像对齐、叠加,把通孔对齐。这一步之所以重要,是因为上层金属会挡住下层金属,如果你只看一层图像,很多连接关系是断的。我现在的工作流是:

  1. 每层图像用固定参考点(比如Die边角标记)做仿射对齐;
  2. 建立一个完整的图像堆栈;
  3. 在半透明模式下叠加观察,确认哪些走线通过通孔连接到了下一层。

实际操作中,最耗时间的不是拍照,而是对齐。芯片在被腐蚀的过程中会发生微小的形变和收缩,导致上下层图像无法精确匹配。我的解决办法是在每层腐蚀前,用激光打标记点,每个标记点不仅记录层的序号,还能在图像对齐时提供稳定的特征点。

对于工具选型,个人研究用开源方案完全可行:ImageJ做拼接、GIMP做图像校准、Inkscape做矢量描线。商业方案里,Chipworks(现在的TechInsights)那套工具是好用,但价格不是个人玩家能承受的。TCHES综述里提到的新方法,很多还处在论文原型阶段,但对实践者最有参考价值的反而是那些“低配高效”的组合——这也说明这个领域距离成熟工具链还有不少距离。

3.3 网表提取与行为级还原:逆向的“最后一公里”

拿到走线图后,下一步是把图像转成网表文件。这一步和“数字IC设计”正好形成镜像:设计是RTL到GDSII,而逆向是图像到Netlist再到RTL。对老工艺芯片(比如0.18μm以上制程),一些开源工具能帮你自动识别门级结构。新工艺下(28nm以下),图像识别难度骤然上升,基本依赖商业工具和人工标注结合。

行为级还原这一层,我的经验是“先模块识别,后信号分析”。

模块识别的套路是:先通过版图上的物理特征判断功能模块,比如规则排列的寄存器阵列大概率是RAM或寄存器堆,对称结构可能是差分对或PLL。然后通过信号追踪(追时钟、追复位、追片选),确定各模块的控制边界。

信号分析更依赖劳动量:把提取出来的网表导入仿真器(比如Verilator或Icarus Verilog),灌入测试向量,观察内部信号波动,再反向推断状态机。有不少工具能辅助做“公式提取”和“逻辑简化”,但对复杂状态机,人工分析依然是主力。

我个人最长的一次行为级还原项目,花了三周时间去追一颗老芯片的电源管理状态机。所有证据都指向某个电容充放电时序可能在控制复位逻辑,最后抓到真凶时,发现是一个在版图上看起来毫不起眼的施密特触发器在边缘触发。这种“最后一公里”的枯燥与兴奋,确实是软件逆向难以比拟的。对于习惯Java或JS逆向的人来说,IC逆向的行为级还原更接近于把混淆过的代码用动态插桩来还原逻辑——只不过这里的“插桩”机会不多,你更依赖静态分析和波形仿真。

4. 双向视角:从IC逆向反看数字IC设计

4.1 数字IC设计流程里,哪些环节最容易成为逆向突破口

做IC逆向做得多了,反倒会更懂数字IC设计。因为每一次逆向,本质上都在验证一件事:设计里有没有哪个环节把“不该暴露的信息”暴露了出去。

从设计流程来看,最容易成为突破口的地方有这几处:

  1. 扫描链(Scan Chain):为了可测试性,数字IC会插入扫描链。芯片量产时扫描链可能被熔丝断开,但逆向工程师可以直接物理恢复熔丝,或者绕开熔丝直接从扫描链中把内部寄存器状态“拉”出来。这不是理论攻击,实际做安全评估时这是首选路径之一。

  2. 调试接口(JTAG/SWD):很多芯片出厂时调试接口并没有完全关闭,或者只做了“低安全等级”的验证。只要找到一个没有被烧断的边界扫描单元,就可以逐步读回固件和密钥。

  3. 内置自测试(BIST):BIST电路有一套完整的内存测试逻辑,它的控制信号和地址生成器在版图上是高度规律的排列。逆向工程师通过识别BIST模块,能快速定位数据路径中的关键寄存器。

  4. 时钟域与复位设计:安全芯片最怕的就是“异步进入未知状态”。如果你能在时钟树里找到某个未加保护的叶节点,通过毛刺注入让芯片进入调试模式,那么再强的加密算法也挡不住逻辑层面的裸奔。

  5. 冗余逻辑与混淆门:设计者为了防逆向,常会插入冗余逻辑和逻辑混淆门。但在物理层面,这些逻辑和正常逻辑一样会被提取出来。如果混淆门设计得不彻底(比如使用了模式固定的可重构逻辑),逆向工程师反而能从它的特有结构中判断出功能意图。

4.2 在设计与逆向的攻防中,我学到的几条心得

做了逆向之后再回看设计,会发现很多“安全功能”其实是纸糊的。以下几点是我在项目中总结的、设计端真正能挡住逆向的实践:

  • 把密钥世代更改和密钥销毁的功能做成硬件状态机,而不是由固件控制。固件控制的密钥擦除很容易在逆向后被定位和绕过;
  • 对扫描链做分级安全控制。不要等到芯片流片完成后再想着熔丝,而是从DFT阶段就设计“安全模式”优先级高于测试模式;
  • 时钟网络要加毛刺检测,检测到异常时钟沿时立即触发全局复位,这是成本最低、效果最明显的抗故障注入手段之一;
  • 逻辑混淆要配合物理布局。如果你的可重构逻辑块在版图里显得和周围模块格格不入,反而会成为逆向的定位标记;
  • 不要迷信工艺制程。先进制程让物理探针变难,但会让光学和扫描技术更依赖大型设备,不代表绝对安全。TCHES综述里那些针对先进工艺的攻击方法,已经在实验室里得到验证了。

对于正在学习数字IC设计的人来说,我强烈建议在学RTL和验证的同时,留出一部分精力了解DFT(可测试性设计)和物理设计。因为你只有知道了逆向是怎么“拆”一颗芯片的,才会理解DFT、扫描链这些看似枯燥的模块,为什么在安全场景里如此重要。

5. 工具链装备清单:从入门到专业

5.1 硬件装备的分级参考

很多人在后台私信我问:“我家没有实验室,能不能玩IC逆向?”我的回答是:看你想玩到哪一层。不同层级有完全不同的装备需求,下面是基于我这些年实操经验的配置参考。

层级主要工作最低配置参考预算(人民币)说明
入门封装外观、引脚识别、基础X-ray观察高倍率体视显微镜、万用表、芯片开盖用化学工具3000-1万可以完成封装级观测和部分老芯片的开盖
进阶芯片去层、光学拍照、拼图通风橱、加热台、酸液套装、光学显微镜(带电动载物台更佳)、图像工作站3万-10万适合老工艺(≥0.5μm)芯片的版图提取
专业深亚微米工艺、SEM拍照、网表提取工业CT、SEM/FIB、离子研磨设备、图像处理工作站100万以上一般是安全实验室或半导体分析机构配置
学术前沿先进工艺(≤28nm)及自动化提取全套失效分析实验室加EDA工具链千万级别只有少数机构能全流程覆盖

如果你只是兴趣使然,最划算的入门路径是买几颗老工艺的简单芯片(比如老版本的温度传感器或EEPROM),用体视显微镜做封装观察,配合硝酸开盖后拍照试试。不要一上来就挑战最新款的CPU——那不是新手该碰的东西。

5.2 软件工具的实测体验

软件工具方面,我推荐一条从小白到进阶都适用的路径:

  • 图像处理:ImageJ(免费)是首选。拼接功能稳定,插件生态成熟。商业工具里Hugin适合大批量全景拼接,PTGui适合需要精确控制控制点的场景。我实测下来,ImageJ默认的网格拼接算法在芯片图像这种高度规律对象上表现极佳,至少省去一半手动调整时间。
  • 网表提取辅助:Degate是一个老牌开源项目,专门用于芯片版图到门级网表的提取。它的问题在于维护较慢,对现代系统兼容性一般。商业软件(如Chipworks的电路提取工具)在校准、自动化方面好很多,但价格劝退。
  • 逻辑仿真与验证:Icarus Verilog + GTKWave是免费组合里的经典。Yosys配合SymbiYosys可以做形式化验证,这就是前面提到的“行为还原”利器。很多人不知道SymbiYosys不仅能验证等价性,还能当“功能猜测器”用——给一个未知网表,你设置好性质断言,它能自动找反例,帮你快速排除错误假设。

关于软件工具,这里有一个实操心得:图像对齐这一步,不要急着上AI或深度学习。先用传统特征点匹配把问题解决,因为芯片图片的高频纹理干扰很强,深度学习模型如果不针对你的工艺定制,反而会引入很多虚假匹配。我自己试过用训练好的神经网络做连线识别,在0.35μm老工艺上效果不错,换到0.18μm就彻底失灵。这个领域里,稳定可靠比炫技重要。

6. 常见问题与排查技巧实录

6.1 逆向结果和预期对不上?先查这三件事

我在做IC逆向的几年里,遇到过不少“明明按教程来,结果却不对”的情况。下面这三类问题占到了九成以上,列出来给大家避坑。

第一,图像拼接出现错位,导致连线识别错误。排查思路:检查显微镜载物台的步进精度和镜头的畸变参数。很多时候不是拼接算法不行,而是拍摄时的X/Y轴步进不一致,导致图像畸变叠加。解决办法是拍摄前用标准光栅校准载物台横纵比。

第二,腐蚀过头,金属层被破坏。排查思路:腐蚀时间控制不当。表现是Die上局部看起来特别干净、反射均匀——这往往不是好事,说明金属已经被腐蚀掉了。新手最容易犯的错是按“文献里的标准时间”做,实际上每颗芯片的封装材料和厚度都不一样。最稳妥的做法是,前几次小批量试蚀,每次用显微镜观察截面,记录实际腐蚀速率。

第三,网表仿真结果与实测行为完全对不上。排查思路:大概率是时钟树或复位树的提取出错。在版图里,时钟线通常会做屏蔽和加宽处理,看起来和普通信号线不一样。如果你把它们当普通信号线处理,提取出来的网表时序关系会彻底错乱。经验做法是先找出所有“长而宽、带屏蔽”的走线,标记为时钟候选,再验证它们是否连接到触发器的时钟端。

6.2 安全合规红线:这几件事别碰

最后聊一个不常被放在台面上、但一定要重视的话题:合规。

IC逆向本身是中性的技术,但应用场景必须严格限定在合法授权范围内。参与芯片安全评估,必须获得芯片所有者或权属方的书面授权;学术研究尽量选用公开或已破解保护的老芯片;不要试图逆向涉及他人知识产权保护的商业产品用于克隆、仿制或破解授权机制。TCHES综述里提到的绝大多数攻击场景,都是在实验室环境下对自研或授权样本进行验证。

具体操作上,有几点红线建议:

  • 不拆解自己不拥有或未获授权的设备;
  • 不以帮助破解付费服务或绕过授权验证为目的做逆向;
  • 学术论文复现时,优先使用芯片厂商官方提供的“研究专用样品”;
  • 化学品的购买、存储、废弃物处理都要遵守当地环保法规,别因为剂量小就忽略处置规范。

IC逆向领域最迷人的地方在于,它横跨了材料科学、电子工程、计算机科学和安全研究,几乎每个环节都考验着从业者的综合能力。我做了这么多年,最深的体会是:每一次逆向,都是一次对硬件设计者思维的高强度推演。你在心里把他设计时的取舍、妥协、疏忽都重新推演一遍,然后找到那个隐藏了信息的角落。这种智力上的张力,是这一行最让人上瘾的部分。

如果你看完这篇想动手试试,我的建议是:别急着买设备,先用手头的一颗旧芯片做一次光学观察到开盖的完整流程。哪怕最后网表提取失败,光是亲眼看到一颗芯片内部那些精细的金属线和晶体管排列,你就会理解,为什么这个领域值得花时间去研究。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询