ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

IC逆向工程:从封装到门级网表的完整技术与实操指南

IC逆向工程:从封装到门级网表的完整技术与实操指南 最近在翻 TCHESIACR Transactions on Cryptographic Hardware and Embedded Systems上关于硬件安全的新投稿看到一篇关于 IC 逆向工程的综述性文章心里挺有感触。做这行的人都知道IC 逆向从来不是一门“能说清楚”的手艺它处在半导体工艺、密码分析、失效分析和知识产权保护的交界地带既古老又常新。这篇综述把散落在各篇论文里的技术路线、工具链和典型应用系统性地串了起来正好可以拿来当一张地图帮助新手找到入口也帮老手梳理自己踩过的坑。这篇文章想聊的就是基于那篇 TCHES 2026 综述结合我自己在数字 IC 设计、芯片安全评估和逆向分析方面的实操经验把 IC 逆向这件事从“是什么”讲到“怎么干”再讲到“别踩哪些坑”。适合刚准备进入芯片安全方向的学生、做硬件安全评估的工程师以及想了解“一颗芯片是如何被拆解到门级网表”这件事的任何人。1. IC逆向工程的核心概念与目标1.1 什么是IC逆向它和软件逆向的根本差异IC逆向全称是集成电路逆向工程简单说就是从一颗已经制造出来的芯片实物出发通过物理或逻辑手段恢复出它的设计意图、电路结构、状态机、甚至原始 RTL 代码。这和软件逆向最关键的区别在于软件逆向面对的是二进制指令流可以通过反汇编、动态调试等手段在可控环境中反复分析而 IC 逆向面对的是物理器件一旦封装被打开、金属层被去除就不可逆所有操作都要“一击必中”或尽量多保留信息。我在接触一些从安卓逆向或 JS 逆向转过来的朋友时发现他们常会惯性思维拿到一个芯片先想“用软件跑一跑看看有没有泄露密钥”。但在 IC 领域大多数芯片根本没有可交互的调试接口。你要么通过侧信道采集功耗和电磁辐射要么直接破坏封装做内部观测。这篇综述开篇也提到IC逆向目前主要分两大类非侵入式侧信道分析、电磁注入等和侵入式去封装、聚焦离子束FIB切割、扫描电子显微镜SEM成像。两者的代价和成功率完全不同。1.2 逆向一颗芯片到底是为了什么很多人一听到“芯片逆向”就想到盗版、克隆或者破解。确实商业上有公司靠逆向别人芯片做兼容替换产品的先例但在学术和工业界合法的逆向需求其实更普遍。我把常见的应用场景列成了一张表方便对照应用场景目的典型角色失效分析定位芯片内部缺陷、工艺异常导致的故障质量部门、FA实验室安全评估验证密码算法实现是否会被侧信道或侵入式攻击攻破安全实验室、CC EAL认证竞争情报分析竞品芯片的布局策略、工艺节点、单元库选用市场研究、设计公司维修与翻新恢复无资料的老芯片内部电路以便替换或仿制军工、医疗电子教育与研究用真实网表做安全分析、评估新防御方案高校、研究所TCHES 这篇综述特别强调了安全工作者的视角逆向一颗安全芯片目标往往不是拿到完整网表而是找到安全关键信号比如密钥寄存器、真随机数发生器、熔丝配置、硬件木马。这个过程更像“带地图的搜索”而不是“全量抄版”。我在做安全评估时也深有体会如果只想克隆一颗 74LS00 这样的简单逻辑门芯片花大功夫逆向全部电路纯属浪费但如果目标是评估一颗智能卡芯片的抗侵入攻击能力你就必须精确定位到某个触发器。2. 逆向流程与技术路径2.1 从封装到网表的完整流程一篇合格的 IC 逆向综述必然会把流程拆得很细。我结合 TCHES 那篇文章和自己在实验室做过的工作把标准流程概括为五个阶段。第一阶段封装去除与样品制备。这是最脏最累的活也是决定成败的第一步。陶瓷封装可以用发烟硝酸加热溶解塑料封装则要用浓硫酸或者专门的去封装机。环氧树脂在高温下会软化但温度和时间极难控制——时间短了塑封料除不干净时间长了铝焊盘会被腐蚀甚至芯片表面钝化层被破坏。我见过新手把一顆几万块的 FPGA 直接泡在沸腾的硝酸里结果芯片变成了黑色的糊状。正确的做法是先用 X 射线检查内部结构估算芯片尺寸和绑线位置然后从小剂量试剂开始逐步增加时间。第二阶段层次去除与图像采集。这是侵入式逆向的重中之重。去除封装后芯片表面覆盖着多层金属互连现代工艺可能有十几层铜或铝层。为了看到下面的晶体管和逻辑门必须用酸或机械研磨逐层去除金属层并用扫描电子显微镜SEM或光学显微镜拍摄每一层的照片。关键参数是放大倍率和焦距的一致性。综述中提到现代用于逆向的 SEM 通常搭配自动拼接平台能连续采集数千张高分辨率图像。如果手动操作需要保证每张图像有 20%左右的重叠区域否则后期拼接软件会报错。第三阶段图像处理与拼接。一张 SEM 图像视野有限需要把几百甚至几千张照片拼成一张完整的芯片版图。这时候要依靠图像识别和特征匹配算法。常用的开源工具有ImageJ、OpenCV商业工具有Chipworks现在属于TechInsights的专用软件。拼接的成败取决于两点一是采集时的焦平面必须完全一致二是要有足够的特征点比如金属走线的交叉点、过孔。我在实践中发现如果芯片是多次流片的老批次金属层上会打上“划片槽标记”或者“设计单位缩写”这些纹理都是极好的对齐参考。第四阶段版图提取与网表恢复。得到各层的图像后需要把图像里的多边形状结构转换成版图文件GDSII 格式或者更简化的 CIF。这个环节需要人工介入非常多。现代的 EDA 工具有了图像识别辅助提取但面对 40nm 以下的工艺节点金属层间的对准以及过孔识别仍然是难点。提取出版图后再通过对比标准单元库比如常见的 7T、9T 单元来识别出每个晶体管、每个逻辑门的类型和连接关系最终输出门级网表。第五阶段功能分析与验证。得到网表之后你可以用逻辑仿真工具比如 Verilator、ModelSim对它进行功能仿真验证是否和原始芯片行为一致。更高级的做法是把网表登入 FPGA 原型验证平台直接上电跑真实程序。但这个阶段有一个经典问题网表里可能包含大量不间断的俘获电路、延迟单元、二极管结构这些在逻辑仿真里被视为空载。综述里建议在做功能验证前先用形式化工具清理冗余结点否则仿真速度会慢到不可接受。2.2 侵入式逆向中物理层面的技术细节很多人对“侵入式”的理解只停留在“拆开封装看看”其实背后有非常硬核的微纳加工技术。我这里重点说两个FIB 切割和探针测试。FIB聚焦离子束设备是侵入式逆向的标配。它用镓离子束在纳米尺度上刻蚀金属、沉积绝缘层、切割信号线。加密芯片里的防探测网格通常就是靠 FIB 小心翼翼地切出一条通路用额外的探针钩住内部信号。TCHES 综述里有一张图展示了用 FIB 从智能卡芯片的金属层下方接出三条信号线的实例那条线宽不到 500nm稍微手抖一点整个芯片就报废了。探针测试则是直接物理接触芯片内部的信号节点。老派黑客用微细探针台Probe Station加显微镜手工扎在金属走线上测出电压波形。现代做法是用电子束探针E-beam prober或者激光电压探针LVP来非接触测量内部节点信号。我在某些安全评估项目中曾见过用 LVP 成功抓取到 AES 最后一轮输出信号辅助差分功耗分析的方案。但这类设备价格极其昂贵一家普通实验室通常不会配很多安全厂商会外包给第三方的失效分析实验室。3. 工具选型与参数配置3.1 硬件工具和软件工具怎么配做 IC 逆向工具链的投入取决于你要逆向的芯片规模和工艺节点。网上有很多“免费”方案但说实话真正好用的工具都不便宜。对于侵入式逆向去封装加热台、发烟硝酸、超声波清洗机这是基础三件套。我自用的是德国某品牌的去封装系统带温度反馈控制比手工滴管靠谱得多。图像采集扫描电子显微镜SEM和光学显微镜。SEM 分辨率是关键参数至少要到 5nm 级别才能看清 130nm 工艺的最小特征。如果只是做 350nm 以上老芯片用金相显微镜也行。版图提取商业版图编辑工具比如 KLayout免费和 Tanner L-Edit商业。KLayout 支持 GDSII/OASIS 格式可以写 Python 脚本做自动化提取。对于逻辑还原和仿真网表转换用脚本把版图导出的 CIF 文件转换为 SPICE 网表再用工具提取晶体管级网表。逻辑综合与仿真商业的 Synopsys、Cadence 全家桶当然最好但开源替代方案也够用Yosys 做逻辑综合Verilator 做门级仿真GTKWave 看波形。FPGA 验证如果想把网表跑起来需要把门级网表映射到 FPGA 的查找表LUT资源上。这个过程绕不开厂商工具比如 Vivado、Quartus。3.2 关键参数的计算和选择逻辑参数的选取不能拍脑袋。我举两个例子能反映综述里强调的“权衡”。第一个是 SEM 放大倍率的选择。假设我们要逆向一颗使用 180nm 工艺的芯片最小金属线宽约 0.5μm。SEM 的理论分辨率必须至少达到 0.1μm即最小特征尺寸的五分之一否则无法分辨两个相邻的连线。但放大倍率高视野就小图像数量就多。如果选 5000 倍单张视野约 50μm × 50μm一颗 5mm × 5mm 的芯片需要采集 (5000/50)^2 10000 张图像实际不会这样因为可以分层扫描而且拼接时通常先低倍率整体扫再对目标区域高倍率放大。性价比最高的做法是先用 2000 倍全片扫描单张视野 120μm数量在 (5000/120)^2 ≈ 1700 张左右拼接耗时八到十小时。然后针对疑似安全逻辑区域再用 10000 倍精扫。第二个是 FIB 切割的精度参数。FIB 的切割精度取决于离子束流的大小。束流 50pA 时线宽约 60nm束流 300pA 时线宽约 150nm但切割速度快。如果你只是要在顶层金属上开个 2μm 的窗口用 300pA 完全没问题但如果你想切断一根信号线然后重新布线必须用 10pA 的低束流精细磨避免损伤周边氧化物。4. 实操案例逆向一颗简单 MCU 的密钥存储逻辑4.1 案例背景与目标为了把上述流程串起来我讲一个我在实验室做过的实操收尾案例——逆向一颗早年国产 8 位 MCU 的闪存编程接口目标是找出写保护熔丝的具体实现位置。这颗芯片的封装是 DIP40工艺大概 500nm金属层有两层铝。我手上只有一颗样品没有任何资料属于典型的“盲夹”。我们的计划是第一用硝酸开盖第二用光学显微镜拍摄整颗芯片的照片确定出大模块CPU核、RAM、ROM、闪存、模拟电路第三用 SEM 分层扫描金属层和过孔第四提取出相关区域的版图识别出逻辑门并还原电路第五验证。4.2 实操步骤与现场记录开盖这一步我用的是 60°C 的发烟硝酸滴在塑料封装表面等大约 5 分钟。芯片非常小我用放大镜盯着发现塑封料开始坍塌后立刻用滴管吸走酸液再用丙酮清洗。结果非常顺利芯片表面银光闪闪没有损伤焊盘。接着用金相显微镜拍全片照片。由于是 500nm 工艺光学显微镜足够看清楚主要模块边界。我发现左下角有一块比较规整的区域周围全是 PAD输入输出焊盘怀疑是 ESD 保护电路。而在右下角靠近闪存阵列的位置有一圈金属走线围成的矩形里面分布着几十个大小一致的接触孔这大概率是写保护熔丝因为熔丝阵列往往用高压器件尺寸大于普通逻辑门。用 SEM 放大到 3000 倍对这块区域进行分层扫描。第一层金属上能看出很多长长的平行走线但看不出逻辑。去掉第一层金属后显微镜下出现多晶硅层——这层才是真正的晶体管栅极。扫描图像清楚显示多个 NMOS 和 PMOS 管以及连接它们的接触孔。图像拼接用 KLayout 插件自动完成因为采集时每张重叠 25%识别速度还挺快的。随后我用脚本把轮廓转换为多边形再导入到版图编辑器里手动匹配单元。由于是老工艺标准单元非常规整花了大约半天时间就还原出了一个由 8 个触发器、2 个与非门阵列和 1 个高压泵控制逻辑组成的电路。最终电路验证表明这组熔丝实际上是一个“一次性可编程锁存器”当编程电压超过阈值时熔丝被击穿锁存器输出被拉高进而阻断闪存的编程命令。这个结论直接解释了为什么芯片出厂后无法再次修改写保护位。4.3 复盘过程中的重要注意事项这个案例看起来顺利但我中间差点犯了两个错误。第一个是硝酸浸泡时间太长。我一开始用 70°C 硝酸等了 8 分钟结果发现芯片表面覆盖了一层难溶的残渣后来用超声波清洗机震了十分钟才去掉。教训是对于小封装宁可动态观察每次加 1 分钟而不是提前预判时间。第二个错误是在分层去金属时我原本想用“湿法腐蚀”比如磷酸快速去掉铝层但湿法腐蚀是各向同性的会把底下的氧化物也一起啃掉导致后来的晶体管图像模糊。正确做法是先用反应离子刻蚀RIE干法去掉金属层再用湿法去掉剩余介质。干法可控性好虽然慢但保护了多晶硅层。5. 常见问题与排查技巧实录5.1 常见问题速查表我在这个领域这几年攒了不少踩坑经验直接整理成一张表按症状、原因、解决方法排列方便大家排查问题。现象可能原因常用解法SEM图像模糊有充电效应样品表面绝缘层未接地或电子束能量过高在样品表面镀一层薄金或碳降低加速电压至1kV以下拼接后图像错位特征点闪烁拍摄时焦距漂移或样品台移动不均匀使用自动对焦和步进马达控制增加重叠区域比例金属层去除后看不到多晶硅湿法腐蚀过度氧化层被破坏改用干法刻蚀重新做一层薄氧化层保护提取的网表仿真功能不对过孔识别错误导致短路或开路在版图提取后做ERC电气规则检查标记悬空和短路节点FPGA验证时时序崩了网表中有未清理的延迟单元或RC网络先用逻辑综合工具优化移除无用缓冲器用探针测试信号波形全是噪声探针接触到钝化层而非金属用微米级机械手重新对准在FIB开窗前做I-V曲线验证接触5.2 几件常规文档里不会写的小事第一件是关于“逆向用的芯片应该备几颗”。我在项目规划时总是建议至少备三颗同批次的芯片第一颗用来开盖练手观察腐蚀速度和内部结构第二颗正式拍摄第三颗留作备份万一中途需要验证某个可疑节点还能再做一次侵入分析。只给一颗芯片做完整流程的人多半会哭着回来。第二件是“如何在网表里快速搜索安全关键信号”。技术文档通常只会教你用电路图软件查看层级但字面查找往往找不到名字因为厂家不会在版图里留下“SECRET_KEY”这种标签。我踏实做法是先从功耗分析结果锁定时钟网络附近的高翻转率节点再用动态仿真跑几千个随机向量找出那些不随输入变化但影响输出的锁存器。这个方法在多次评估中都有效。第三件是“关于成本和时间投入的预估”。很多管理者以为逆向一颗芯片像重新画一张 PCB 一样简单但实际上一颗中等复杂度芯片几十万门的全流程逆向熟练团队也需要数周甚至数月费用可能高达几十万。TCHES 那篇综述也提到了这一点它认为未来 5 年随着 AI 辅助图像分割和电路识别技术的进步时间和成本有望下降一个数量级。6. 对IC逆向未来走向的个人体会我个人的体会是IC 逆向虽然在综合综述里被描述成一个高度系统化的工程学科但在实际执行中它依然充满“匠人”色彩。很多时候关键信息不是靠工具跑出来的而是靠人对工艺、电路和物理理解的直觉。就像使用探针台抓信号这件事可能同一种故障换了十个工程师就有十种处理手法。提高整个行业水平的不只是工具自动化还有像 TCHES 这样推动可复现性、公开数据集的努力。再说一个小经验如果你刚入行建议先找一颗年代久远的老芯片练手比如 74 系列逻辑门或者 80C51 的早期版本。它们的层数少、特征尺寸大、单元库简单非常适合建立“从版图到网表”的整体感觉。等能够闭着眼把一颗芯片的电源网络和地网络理清楚之后再碰现代高密度芯片也不迟。最后结合这篇 TCHES 2026 综述里提到的趋势IC 逆向一定会和 AI 结合得越来越紧密。我可以预见未来的入门门槛会降低但信息安全对抗也会加剧防御方必须更早地考虑“可反向设计”能力。这就像软件界常说的“没有绝对安全的系统”——IC 也一样理解逆向才能更好地做正向设计中的防护。
返回列表