CSME 简述

CSME 算是 Intel X86 PC 上最神秘的部分了,本文根据 us-19-Hasarfaty-Behind-The-Scenes-Of-Intel-Security-And-Manageability-Engine 一文写成。讲述内容无法证伪,各位随便听听即可,了解这些能够帮助BIOS 工程师更好的理解一些操作的实现。文章基于 Intel 第八代第九代CPU(Coffee Lake 和 Whiskey Lake)进行描述。

第一个问题,什么是 CSME? 这是 Converged Security and Manageability Engine  (我翻译成“集中式安全管理引擎”)的缩写 ,或者更简单称作 ME(对于一些小核系统,因为没有管理功能(Manageability),所以会缩写成 CSE,但是我并不建议这样做,因为容易引起误解) :

我的笔记本电脑上,设备管理器中可以看到这个设备。

第二个问题,CSME提供了什么功能。

从图中可以看到 CSME 位于PCH 中,对外可以通过 LAN 和 WIFI 直接通讯

从资料上看,引入这个设备可以提供如下功能:

  1. 对当前系统提供安全保护。比如, BootGuard 功能;
  2. 频率控制。比如,我们在 FIT中可以看到一些关于 PCIE Clock Request 之类的设定。上电之后CSME 先于CPU运行,因此一些时钟信号可以由 CSME 准备好,之后再提供给 CPU;
  3. 加载一些Patch给 PCH/CPU;
  4. 提供一些运行期的安全服务,比如:TPM ,DRM(Digital Rights Management,数字版权保护技术,能够阻止在未经授权的机器上播放带有版权保护的视频),DAL(Intel® Dynamic Application Loader,能够将Java 代码放在 CSME 中执行,这样能够更好的防止被破解【参考2】)
  5. AMT (Intel Active Management Technology, 英特尔主动管理技术), 这是企业版 PCH 才有的功能,打开这个功能后下,配合部署的管理软件能够实现一些远程管理功能。比如,通过 Gbe提供的网络功能远程登陆查看当前屏幕信息。理论上有了这个功能,只要能开机IT工程师就可以远程控制你的电脑来完成装系统等等工作,我见过实验室测试这样的功能,但从未见过有人使用这样的功能进行系统维护。同样的 Vpro 也是基于这个功能。因为这个功能能够“远程开机”和“监视屏幕”,所以这个功能经常被认为是 Intel 后门,但实际上这个是预留给局域网管理员的管理功能,好比:远程桌面或者TeamViewer 这种软件。另外,如果用过这个功能的人都会知道,当它进行屏幕监视的时候,会有大大的提示信息。

第三个问题:CSME 的硬件架构。

上图中最右侧CSME 内部有一个独立的 CPU (可以用 EC 进行类比),是一个32位 Intel 486 级别的CPU。SRAM 是独立于系统内存,有 1.5MB左的大小。正是因为有独立 CPU 和 SRAM 的存在,所以 CSME 能够监控CPU。此外们还有 ROM ,里面存放着固化的内容,是整个信任链的根节点。

System Agent 提供了CSME 和外部进行数据交换的接口。

OCS (Offload & Cryptography Subsystem):提供了加密算法的加速硬件,同时存放一些安全相关的密钥。比如,Secure Boot 的Private Key 之类都是存放在这里的。

Gasket 提供了对 PCH fabric 的接口和 CSME 的 IO 接口,例如:TPM 和 HECI (Management Engine Interface),最前面我设备管理器中可以看到有一个 HECI Controller。

Manageability Devices:用于控制管理和重定向设备,比如,你通过网络访问这个电脑,那么需要将键盘鼠标重定向到网络上。

Protected Real Time Clock: 带有保护的时钟。很多时候,需要从时间之类生成随机种子,如果从外部获取时间,很容易被欺骗,因此这里有一个内置的时钟。

从上面可以看到,当我们谈论烧写在主板SPINOR 的时候,可能提到的是 IFWI (Integrated FirmWare Image),就是我们使用 FIT 打开的那个 Image,也可能是 BIOS 本身(或者说 IFWI 中的 BIOS Region)。一般情况下,当我们使用 SF100 这样的工具进行烧写时,烧录上的是  IFWI (SF100无法区分具体哪个是 ME 哪个部分是BIOS Region,所以是完全擦写的),而当我们在 Windows 下或者 Shell 下烧写时,有可能是 IFWI 或者是BIOS, 软件本身有能力区分具体要求。所以,某天你给别人提供Image 时,最好明确你提供的是 IFWI 还是 BIOS Image。

在中文的世界中,“辐射”这个词有多种含义,比如:电磁辐射和电离辐射。前者无处不在,能够帮助我们看到东西,能够帮助我们进行通讯。后者也能帮助我们看到肉眼无法看到的东西,比如:X光测试,甚至之前的CRT显示器内部也存在着这种“辐射”。正是因为这样的误解,使得手机基站在很多小区成为大妈喊打的东西。前面提到的CSME 的“监控”也是这样,更多时候只能查看CPU 的状态,但是在很多人眼中它能够“监视”和“控制”用户的数据----不过至少现在我还没有看到这样的实例。

参考:

1. https://software.intel.com/content/www/cn/zh/develop/tools/dal/overview.html

《CSME 简述》有2个想法

发表评论

您的电子邮箱地址不会被公开。