我对同样的问题很感兴趣,并做了一些初步的研究。我将尝试回答一些问题,但作为非 AMD 工程师我不能确定。
它有软件可更新的固件吗?
是的,它确实。此固件是AGESA(AMD 通用封装软件架构)的一部分,AGESA 是从 AMD 分发给 UEFI 固件供应商的二进制 blob。还有 coreboot,它们带有发行说明PSP 部分提到了不同平台的 PSP 版本号。这表明它们是可更新的。
该固件是如何保护的?
我一直无法提取固件代码,也不知道它是如何保护的。一个可能的迹象是如何保护 SMU 固件:在标头中使用 HMAC-SHA,并使用隐藏的密钥(请参阅Rudolf Marek 的演示文稿)。
是否用于类似于 Intel 的 AMT 的远程管理?
不可能知道它的用途。但是,我的发现表明远程管理不是主要目的(与英特尔的 ME 不同)。我发现它的作用是:
PSP在CPU的启动过程中扮演着重要的角色(这个经常被引用,所以我不再赘述)。
PSP 为私钥管理提供 fTPM(基于固件的 TPM)API。
PSP 对 SEV(安全加密虚拟化 API)、VM 内存加密进行密钥管理。这使用了 PSP 的 API。要查看具体细节,有一个Linux 补丁 RFC来引入支持。
PSP 可用于加密卸载。对此的支持登陆在 Linux 内核下drivers/crypto/ccp
。
然而:有证据表明代码可以动态加载,
- 在 coreboot 中加载“trustlets”。进一步分析的指针:coreboot 中的 PSP 库
drivers/gpu/drm/amd/amdgpu/psp_gfx_if.h
Linux 内核中的注释“将受信任的应用程序二进制文件加载到 PSP 操作系统中的命令” 。这可能会处理 GPU 芯片上的不同 PSP,但由于它是 AMD 代码,即使那样也可能存在重叠。
它有自己的网络堆栈吗?
不,不知道库存配置中有网络堆栈。所有的 API 似乎都面向 CPU,而不是外部世界。
了解这些处理器是如何按照“企业客户”和 DRM 供应商的模糊规范设计的,就有可能加载带有网络堆栈的远程管理模块。但是,我发现的任何东西都无法确凿地证明这一点。
是否有任何已知的针对它的漏洞利用,或者对其固件进行过任何公开研究?
fTPM API 中有一个公共漏洞。我找不到任何关于固件的公开研究。
有什么理由可以说 AMD PSP 的情况比 Intel ME 的情况“好”或“差”?
与 Intel ME 不同,至少 AMD 安全处理器不提供开箱即用的远程管理 API(据我们所知)。为了把它变成一个网络监听后门,操作系统软件必须提供更多的模块,甚至可能破坏它。
然而,正如我们发现的那样,它是一个黑匣子,很少有公共研究投入其中。在密码学中,系统在经常被分析并且没有发现漏洞之后获得信任。默默无闻的安全性是不可接受的。不幸的是,没有人认为安全处理器符合 Kerckhoffs 的原则。