用户工具

站点工具


微码研究

这是本文档旧的修订版!


本页面聚集了如何载入自定义微码的相关研究。学术界或日常环境里没有明确翻译的直接使用原文词汇,有时为了避免歧义与叙述上的简洁也可能直接使用原文词汇。欢迎发送邮件到 inquiry AT fsfans DOT club 提供改进意见,或申请加入FSFans 直接贡献本wiki!

AMD 微码自由软件化相关研究与工具

2025年上半叶,谷歌的安全团队博客po出了一篇文章:Zen and the Art of Microcode Hacking,公开了自定义微码的原理,载入方法,与使用EntrySign漏洞载入自定义微码的Zentool 工具,为现在(截至2025年3月)市面上流通的Zen1-Zen4架构AMD CPU提供了载入自由软件意义上的微码的可能性。

使用Zentools和理解此次微码补丁漏洞时可以参考的中文文章: 自己改 CPU 微码:ZENTOOL,CVE-2024-56161 的后续 (wavecn.com 版权声明 免责声明

下面部分 使用Mistral Small 3 (SaaSS)并辅以人工修正来翻译 Zen and the Art of Microcode Hacking(请注意,翻译的这一段因为原文协议不明,现暂时假定为谷歌版权所有,转载此段翻译时请遵循fair use law (以及中华人民共和国现行法律《中华人民共和国著作权法》第二十四条的规定)

“微码补丁为CPU架构师在遇到新硬件漏洞并需要修复时提供了大量的灵活性。然而,英特尔和AMD利用加密防止补丁的逆向工程,并使用数字签名防止加载不可信的微码补丁,这同时防止了恶意软件开发者和研究人员运行自定义微码。AMD微码补丁的验证和加载过程包括如如下4个步骤:

I) 微码的创建:AMD生成一个新的微码补丁。该补丁以二进制块的形式交付给BIOS、操作系统和其他合作伙伴;该块中包含以下组件:

  • 一个包含header的格式、其(作用)目标CPU的相关元数据、补丁创建日期和版本信息的header。
  • 一个 2048-bit RSA PKCS #1 签名。
  • 一个 2048-bit RSA 公钥的模 (0x10001 被用作模幂运算中的模).
  • 一个 2048-bit 的公钥的蒙哥马利算法下的模逆元(用来简化RSA的模运算)。
  • 一个 bit 用来表示补丁剩下的部分是否是加密的。
  • 一个由match registers和掩码值组成的数组,用于选择要修补的微码和指令。
  • 一个micro-ops数组,按四个“四元组”捆绑,每个四元组配有一个序列字,用于指示下一步执行的位置。

II) 微码的验证: AMD 使用其 RSA 私钥签署新的微码补丁,该私钥对应着嵌入在补丁中的公钥。稍后,在补丁验证过程中,CPU 将对 RSA 公钥进行哈希处理,并验证其是否与在制造过程中硬编码到 CPU 中的 AMD 公钥的哈希值匹配。这旨在确保只有(来自于AMD官方的)原始 RSA 密钥对才能用于签署微码补丁。

Intel 微码自由软件化相关研究与工具

OPENPOWER 微码自由软件化相关研究与工具

微码研究.1742147381.txt.gz · 最后更改: 2025/03/16 17:49 由 pp