资讯详情

IC逆向工程全流程指南:从物理拆解到固件分析的硬核实践

📅 2026/10/6 1:14:51 | 华诺云谱 👁 阅读
IC逆向工程全流程指南:从物理拆解到固件分析的硬核实践
芯片逆向这个方向放在硬件安全圈子里一直是知道的人知道不知道的人觉得边缘的状态。但TCHES这几年的稿子看下来IC逆向不再是冷门分支反而成了密码实现验证、供应链可信度检查、硬件木马检测的核心支撑。TCHES 2026的投稿系统里IC逆向相关的综述和实践论文明显占了不少份额甚至有几位常年在物理逆向一线的作者开始系统整理方法学这算是给后来者的一份完整地图了。这篇内容我打算从三个层次展开物理逆向怎么做、逻辑逆向怎么还原、固件层面怎么提取分析再结合TCHES 2026反映出的趋势把实操流程、工具选型、踩坑经验一次讲透。如果你是做硬件安全、芯片验证、嵌入式逆向的工程师或者想从软件逆向降维到硬件方向这篇内容能帮你少走很多弯路。1. IC逆向工程是什么从一块硅片到完整设计的还原1.1 IC逆向的三个层次我在实际接触这个方向时习惯把IC逆向拆成三个层次它们之间是递进关系但也经常单独出现在不同项目中。物理逆向是金字塔的底座。一块芯片从封装到裸片再到晶体管层面的电路结构都需要通过物理手段逐层剥离和成像来还原。国内一些实验室做失效分析时经常会用到类似手段——开盖、去层、SEM拍照——只不过失效分析是为了找到故障点而逆向是为了提取完整设计。逻辑逆向是中间层。拿到物理成像后的门级网表或者直接从芯片验证工具里导出网表然后通过各种算法把网表还原成RTL。这个过程有点像把编译后的二进制程序反汇编成高级语言只不过对象从指令变成了逻辑门。状态机识别、寄存器阵列提取、模块边界划分都是这一步的高频操作。固件逆向是最接近软件工程师日常的一层。芯片里除了硬件逻辑总有固件跑在CPU上。从Flash里把固件读出来解析文件系统识别架构再到用反汇编工具做程序逻辑还原。很多人从安卓逆向、JS逆向转到IC方向往往是从这一层切入的。用生活化的方式来理解芯片是一栋楼物理逆向就是拆掉外墙看钢筋水泥逻辑逆向是读建筑图纸搞懂房间布局固件逆向则是去观察楼里住的人每天的活动规律。三者的信息量完全不同但加起来才是一个完整的家。1.2 为什么安全会议盯上了IC逆向TCHESTransactions on Cryptographic Hardware and Embedded Systems是IACR旗下硬件安全领域的权威平台它的关注点一直是密码算法的安全实现、侧信道攻击、物理攻击与防护。IC逆向之所以在这个平台上连续成为热点有三个直接推手。第一芯片供应链的可信度问题。一颗芯片从设计、流片、封装到交付中间经过的环节越来越多如何确认里面没有被人塞进恶意逻辑最可靠的办法不是看文档而是把芯片逆向出来和预期设计做对比。第二密码算法的硬件实现验证。密码芯片是安全系统的信任根如果它的硬件实现被做了手脚密钥管理、真随机数发生器、防侧信道的掩码方案都可能被削弱。通过逆向工程能够直接看到硬件实现是否和论文描述一致。第三侧信道分析需要精准的电路级信息。做功耗分析或电磁注入实验时如果能定位到芯片内部关键模块的位置和结构攻击和防护实验的效率和准确率都会大幅提升。TCHES 2026的征稿范围里IC逆向方向的综述类文章尤其被鼓励——这说明这个领域已经积累了足够的经验到了可以系统性总结、形成方法论、甚至推出标准工具链的阶段了。2. TCHES 2026信号解读IC逆向正在告别手工作坊模式2.1 从经验驱动走向流程化早几年的IC逆向很大程度上依赖少数资深工程师的手感。开盖温度控制、去层时间把握、SEM束流选择这些环节都是口口相传的经验不同实验室做出来的结果差异很大。这个状况在最近两年开始转变。从TCHES 2026的投稿倾向和公开的技术趋势来看IC逆向正在向流程化和自动化迈进。图像自动拼接与对齐、金属线追踪算法、基于标准单元库的门级网表自动提取这些过去需要大量人工干预的环节如今逐渐有了相对成熟的半自动方案。一些研究组甚至尝试将机器学习引入图像处理阶段用分割模型识别SEM图片里的金属层结构和过孔位置。这种变化的原因也很现实。先进工艺节点的芯片层数越来越多——28nm主流工艺通常有8到12层金属16nm以下轻松超过14层——靠人工逐层提取已经不可持续。流程化的意义在于把人的精力从重复劳动中解放出来集中在判断和决策上。2.2 与AI工具的结合趋势我看到的一个明显信号是IC逆向开始拥抱AI工具链。这不是是噱头而是由数据体量决定的。一颗中等规模的芯片物理逆向后生成的图像数据就有几十GB门级网表的文本文件动不动就是几百MB。用传统脚本和人工审查来处理这些数据效率跟不上。AI主要集中在三个场景图像识别层面的金属线和过孔定位、网表层面的标准单元分类与功能识别、以及在固件逆向中用大模型辅助语义理解。最后一个方向在软件逆向领域已经有不少实践比如用AI模型辅助分析反汇编代码的逻辑结构——热词里提到的deepseek逆向apkcodex自动逆向就是类似思路。IC方向只是把分析对象从软件二进制换成了固件镜像。2.3 硬件木马检测成为综述重点在TCHES 2026综述相关的讨论里硬件木马检测是被反复提及的关键词。硬件木马的检测本质上是一种差异分析——把逆向提取的实际网表和预期的可信网表做对比找出多出来的逻辑或者被篡改的连线。这需要完整可信的参考设计在实际场景中往往只有高端安全芯片才有。但对于学术研究来说IC逆向完善之后硬件木马检测就走通了从理论到实践的闭环。3. 物理逆向实操全流程从封装到晶体管级图像的步骤拆解3.1 开盖化学法、机械法与激光开盖的选择物理逆向的第一步是去掉芯片的封装把裸片暴露出来。这一步行业内叫开盖decapsulation在做失效分析时也会用到。最经典的方法是化学开盖使用发烟硝酸或硫酸浸泡把环氧树脂封装腐蚀掉。操作时要注意芯片要先加热到80-120摄氏度酸要少量多次滴加避免腐蚀太快损伤键合线和芯片表面。做完之后用丙酮清洗再用去离子水漂洗。机械方法则是用研磨机从背面打薄封装材料再用精细工具手工去除残余材料。这方法适合对化学药剂敏感的产品比如某些使用了特殊底填胶的芯片化学腐蚀会连芯片的钝化层一起破坏。激光开盖是这几年用得越来越多的方案通过激光精确烧蚀封装材料配合化学处理收尾精度高可控性好适合封裝厚度不均或需要精准定位的场景。我自己的经验是如果没有特殊要求优先尝试化学开盖成本低、操作设备简单如果芯片密度高、开盖位置靠近引脚建议直接用激光开盖哪怕费用高一些也不容易翻车。开盖失败最常见的原因就是酸剂量过大或者时间过长导致裸片表面被腐蚀后面就算成像也看不清关键结构。3.2 去层与成像逐层剥离和关键设备参数开盖之后芯片表面有钝化层、层间介质ILD和多层金属布线。要去掉每一层才能拍到下一层的金属图案。这一环节叫去层delayering常用手段包括等离子刻蚀、湿法腐蚀和化学机械抛光CMP。等离子刻蚀是主流选择使用含氟气体比如CF4/O2混合气在反应离子刻蚀设备中刻蚀掉氧化硅介质层。注意这里的节奏控制很关键每刻完一层就需要用光学显微镜或SEM确认当前层的形貌判断是否已经到达目标层的金属表面然后立即停止刻蚀。刻蚀过头会把金属层本身损伤导致布线图像不完整——这是物理逆向里翻车率最高的步骤。成像环节我分开说。光学显微镜对0.5微米以上的线宽可以做初步观测但先进工艺节点130nm以下必须上SEM扫描电子显微镜。SEM拍摄时选择合适的加速电压和束流既能观察到金属层的对比度又不至于把样品表面打坏。图像拼接是另一个基础操作一块完整的芯片在30000倍放大下需要几千甚至几万张图像拼接起来为了避免拼接错位标记点的选取和重叠率通常设为10%到20%决定了拼接质量。3.3 图像处理与布线提取传统算法和AI辅助的对比拿到整层图像之后需要把布线从图像中识别出来。传统做法是基于像素对比度分割金属线通常是亮色介质是暗色用阈值分割加形态学运算就能得到二值化的布线图。再通过细化算法提取金属线的中心线根据走线方向还原连通关系。这套流程在工艺节点较老、图像质量好的情况下依然有效。AI辅助的新思路则是训练分割模型来识别SEM图像中的金属线、过孔以及异常结构。它的优势体现在强噪声干扰和多层堆叠的场景下模型能够利用上下文信息补全省略残缺的区域。采用这类方法需要准备一定数量的标注图像对于小团队来说成本偏高但一旦模型收敛对批量图像的处理速度远快于人工。无论用哪种方法布线提取后必须做人工校验。我见过的案例中二值化噪声导致金属线断裂、过孔位置偏移是最常见的两类错误直接影响到后面网表提取的准确性。环节常用方法关键技术点常见失败原因开盖化学腐蚀/激光温度控制、酸量控制过度腐蚀损伤裸片去层等离子刻蚀/湿法刻蚀终点判断刻穿金属层成像SEM加速电压、束流荷电效应导致图像畸变布线提取阈值分割/AI分割连通性分析金属线断裂、过孔偏移4. 逻辑逆向从门级网表到RTL的高层还原4.1 标准单元识别的底层逻辑物理逆向完成后得到的是晶体管级别的连接关系。要在逻辑层面进行还原第一步就需要把晶体管级的连接映射为标准单元——比如反相器、与非门、触发器这些最基础的逻辑部件。这个过程叫标准单元识别standard cell recognition。常见的做法是模式匹配从晶体管连接图中提取特征结构和标准单元库比如某代工厂的SMIC/TSMC数字标准单元库做比对。如果裸片来自某个成熟的工艺平台单元库通常是公开的或者可以通过逆向直接提取。但要注意实际项目中很多芯片用的是定制单元特征与公开库不匹配这时就需要手动标注一组样本构建自己的识别特征库。这步做扎实了后续的网表提取准确率才有保障。4.2 门级网表到RTL的恢复方法有了标准单元识别的结果就能输出netlist网表——一个描述所有逻辑单元和它们之间连接关系的文本文件。这个网表就是逻辑逆向的原材料。从门级网表恢复RTL寄存器传输级描述的部分没有太多现成工具需要一些手工脚本的结合。第一个要点是划分时序逻辑和组合逻辑。方法是找出所有触发器输出端这是寄存器的天然边界。然后在此基础上做组合逻辑的扇入分析归纳出现组合电路的布尔表达式。比如一个多路选择器输入信号经过若干与或非门之后产生输出通过解析netlist就能还原出sel ? a : b这样的表达式。在实际处理的过程中我比较推荐用Python加上pyverilog这类库来解析Verilog格式的网表然后自己写逻辑化简算法比纯靠人力一个个门看效率高太多。第二个技巧是状态机的识别。芯片中大部分控制逻辑都可以建模为状态机识别出状态寄存器、状态转移条件和输出逻辑RTL的骨架就出来了。我在做逆向分析时遇到时序控制的主控逻辑一般先用脚本提取状态转移表确认状态寄存器的位宽和编码方式再回到RTL工程去推演功能。最后是层次化还原。完整的芯片规模很大直接在整个顶层做逻辑还原是不可行的。正确的思路是先把网表按照物理位置或者功能相关性切成模块识别每个模块的边界和内部逻辑再分析模块之间的接口关系。这个过程和做大型软件工程时的模块划分类似先在模块级吃透再逐步拼接整个芯片的逻辑功能。5. 固件与嵌入式系统逆向从芯片里把代码捞出来5.1 固件提取的几种获取路径芯片里的固件不会主动交出来获取它本身就是一场小型攻防战。实际操作中固件提取的路径大体有以下几条第一种是使用调试接口。很多芯片保留着JTAG或SWD接口虽然出厂时可能被锁住但通过合法渠道获取调试权限之后对Flash内容进行全量读取是最直接的。有些芯片会禁用JTAG但是Boot ROM可能仍然存在一段加载固件的代码所以即便读不到Flash把Boot ROM和引导流程拿回来也有很大分析价值。第二种是读Flash本身。如果芯片使用的是外部Nor/Nand Flash直接把Flash芯片拆下来用编程器读取也是常规操作。这种方式对设备自身的状态没有丝毫侵入性读出来的数据就是最原始、最完整的镜像。这几年我觉得需要注意的反而是Flash加密技术的普及一些高端芯片已经将Flash内容做了硬件加密放在Flash上的代码和明文完全不同这时候直接读取得到的是一堆密文。第三种是借助故障注入辅助。免拆和不破坏内部保护的前提下现代的Secure Boot往往在固件读取时做完整性校验攻击者可以通过时钟毛刺或电压毛刺注入来绕过校验。但要注意故障注入实验对设备有一定的损坏风险同时在很多地区是受到法律管制的我只建议在自有设备、明确授权的研究环境中操作。5.2 固件分析的基本流程拿到完整的固件镜像之后分析工作通常遵循以下流程。先用binwalk扫描一遍。binwalk能自动识别固件里包含的文件系统SquashFS、JFFS2等、压缩数据流、签名信息等。这一步能帮助判断固件的整体结构比如固件开头是Bootloader、中间是Kernel、后面是根文件系统镜像。接下来做架构识别和格式解析。把固件加载到支持反汇编的工具中——Ghidra和IDA Pro都支持。在加载前用file命令或者readelf识别固件的架构通常是ARM、MIPS或RISC-V再选择正确的反汇编分析模式。对固件做字符串提取也很有用——硬编码的密钥、明文协议、版本信息、文件路径这些信息在字符串表里往往藏不住。然后是将固件中的逻辑加载到分析工具中做静态分析。样例数据比较多时我习惯先识别主入口点再顺着入口梳理初始化流程。常见误区是直接开始看代码细节然后陷入一条调用链里出不来。正确路径是先明确固件中哪些代码是启动引导的、哪些是中断处理、哪些是业务逻辑再挑重点深入。5.3 加密固件的应对思路遇到加密固件是很正常的。应对思路顺着加密算法走确认加密算法AES、ChaCha20等确认密钥来源芯片熔丝存储、OTP存储、软件常量确认加密模式ECB、CBC、CTR等。如果密钥被存储在芯片安全存储区中无法直接读取则通常需要采用侧信道攻击或者利用设备的解密engine进行非法解密输出。这个方向的合规性值得多强调一句对自有设备、授权研究设备进行逆向分析是安全研究的重要基础但对着别人的产品做解密无论出于什么目的在多数司法管辖区都涉及违法。做工程和做安全研究边界一定要清楚。道德和安全底线是我们必须守住的。这里能给的建议是如果是出于漏洞分析的目的请联系厂商进行协调披露如果是学术研究选择合适的合规样本比如开源硬件、自行设计的开发板同样可以练完整套技能。6. 常见问题与排查技巧实录6.1 物理逆向阶段典型故障排查现象可能原因处理建议开盖后裸片表面发黑硝酸温度过高或接触时间过长控制温度在100度以下缩短腐蚀时间去层后金属线图像不完整过刻蚀降低刻蚀功率增加终点检测频次宁可慢不可快SEM图像有大面积白场荷电效应降低加速电压使用低真空模式或者喷镀导电层故障排查这件事上我最大的心得是宁可先小样本试错再做全量。芯片样品往往很稀缺尤其是昂贵或稀少的目标芯片所以动手之前先在额外部件或备件上做试探性实验确认整条流程稳定之后再处理正式样品。6.2 逻辑逆向的误差来源和控制方法逻辑逆向最大的问题不是没有原理图而是原理图画出来了却发现是错的。误差来源通常包括三个标准单元识别时出现错误导致netlist里多出了或缺失了部件布线提取时连线断裂或短路导致逻辑连接错误以及模块划分不当导致大模块内部的功能分析逻辑混乱。控制误差的方法首推交叉验证一组逻辑至少用两种不同方式去验证。比如通过波形仿真验证——把提取出的网表结合模拟测试向量跑一遍仿真分析结果是否符合预期或者通过动态实测对比——有些引脚连到已知功能的外设这样可以直接比对芯片实际行为做验证。6.3 工具链选型参考在IC逆向上目前没有像软件逆向那样成熟的比IDA Pro更流程化的商业级综合工具。多数从业者是在开源工具的基础上自建流程。SEM图像处理和拼接ImageJ/Fiji 配合 MosaicJ 模块标准单元识别自己做图像二值化 Python 模式匹配网表解析和逻辑还原Verilator 做仿真Yosys做逻辑综合辅助固件逆向Ghidra、Binwalk、pyelftools选工具的时候我有几个心得一是优先选社区活跃的项目遇到问题时有地方可问二是多写一次性脚本因为每次逆向的芯片差异太大通用化工具往往不能直接覆盖三是尝试引入大模型辅助——用自然对话的方式让AI去做固件代码的逻辑梳理和常见算法识别实际效果超出预期但密级较高的研究环境不建议这么用。6.4 团队协作与流程管理的经验IC逆向是一个脏活多、周期长、环节耦合深的项目。最常见的管理问题发生在不同环节交接时物理逆向交付的图像质量不行逻辑逆向的人半天才发现逻辑逆向输出网表和物理层的标注对不上两边又得回到原始数据重新核对。我的实操经验是建立人工检查点制度在关键节点安排Review。图像拼接完成后检查1-2个关键区域的拼接误差netlist提取完之后随机抽样5%-10%的逻辑做人工核对固件分析出结论后用仿真再验证一轮。复查机制前置能省下后面数以周计的返工时间。结尾一点经验做了这么多年硬件安全IC逆向给我最大的感受就是它不是一个学完了就能上手的方向而是一个需要持续积累手感、不断踩坑又爬出来的领域。如果你想入门我的建议是先别急着学多么深的理论花一个周末的时间找一个简单的开发板或者老芯片完整地走一遍开盖—去层—成像—提取netlist—找到某个功能模块的全流程比看任何论文都管用。TCHES 2026这个综述窗口其实是在告诉我们这个方向已经成熟到值得系统性总结也成熟到需要有更多人加入、建立更完整的开源工具生态了。如果你正在硬件安全和逆向工程的路口犹豫这个方向值得你认真投入。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑