Intel ME是一个独立于x86 CPU,BIOS/UEFI固件的一个框架,这个框架分为硬件和软件两个部分,硬件部分根据ME版本不同分别对应ARC4/5, SPARC和x86(=>MEv11)的处理器,而软件的部分则是在flash中和BIOS,GBE以及其他固件模块打包在一起,在ME这个框架(以及独立的小型计算机)下可以运行很多底层的应用,包括永远处于运行状态的远程管理工具包AMT( Advanced Mgt Technology)是ME第一个的基于ME架构的应用,现在也有作为ME实现的TPM: PTT,用于remote attestion的信任链条的EPIDhe Boot Guard,PAVP( Protected Audio and Video Path)和SGX。ME也被称为Ring -3,和BIOS/EFI的启动是并行的,Bootguard的验签OK的话SEC/PEI会有序进行。
为什么要有ME?远程管理成为了解决问题的良方。远程管理分为带外和带内管理两种: 带外管理(Out-of-band management,OOB):使用独立管理通道进行设备维护。无论被管理设备是否处于开机状态,只要已经通电并联网,就可以远程监控和管理设备,包括远程关机、远程开机、远程重启、远程更改BIOS设置、远程安装操作系统等。
带内管理(In-Band Network Access,IBN):是指使用常规数据通道来管理设备。这种管理要求被管理设备不仅要通电、联网,而且必须已经开机、运行了客户端程序等。
我们经常使用的Windows远程桌面、VNC、SNMP和Telnet等等都属于带内管理。而各种KVM(注意这个不是虚拟机世界的KVM),BMC和AMT就属于带外管理。 带内管理的优点是便宜,不要增加什么硬件,安装个软件就可以了。缺点也很明显,OS死掉了就无解了,所以大部分安装、死机问题并不能靠带内管理解决。
服务器领域很早就引入BMC(Baseboard ManagementController),它借助IPMI(Intelligent Platform Management Interface)来进行带外管理。有感于PC领域的现实需求,于是Intel在PC中引入了类似BMC的概念:有一个专门的处理器,带外进行计算机管理。开始是引入AMT技术(Intel Active Management Technology,英特尔主动管理技术,参考资料2),后来又整合其它技术,推出vPro(博锐,参考资料3)。
看到带有vPro的徽标,就表示可以使用vPro的AMT远程管理技术。它的框架图如下: 
后来ME加入了更多安全、校验、防盗和电平信号管理等等新功能。 ME在哪里?与网上大多数瞎说的不同,ME并不在CPU内核中。它最早在北桥里: 
北桥消失后,它被放到了南桥PCH中: 
为什么有的人会认为它在CPU中呢? - 部分SOC的酷睿产品,南桥被放入CPU Package中。因此ME也随着被放入CPU的Package中,这并不意味着ME是CPU内核的一部分,这种做法和单独的PCH并没有本质区别,PCH和CPU还是两个Die。这种设计简化了主板,节约了成本,但是误导了部分IT爱好者。CPU Package设计是一个很有趣的方向,改天写一篇文章介绍一下,这里按下不表。
- 部分ATOM产品中,ME的部分功能被真正植入CPU Die中。但它也并不在CPU core和uncore中,而是在类似南桥的south cluster中。这个ME阉割版也并不含现在被广泛讨论的AMT功能。
ME干了哪些事ME有自己的处理器,它是一款32位的ARC MCU。也有部分片上RAM,但是主要RAM是BIOS在启动时在住内存上挖下来专门给它的。这种方式叫做UMA: 
BIOS不仅仅为ME分配内存,也为内置GPU用同样的方法分配内存。 和BMC一样,它脱离于CPU独自运行,有自己的操作系统(具体不详,BMC一般是Linux)。由于电源部分被它管理,在主板有电,但CPU尚未上电的时候,它可以开启电脑。在开机后它和BIOS协同工作,并在OS启动后和ME的操作系统驱动程序一起工作,完成AMT、KVM、电源管理、电平管理等等功能。 ME后来又加入了更多的功能,包括安全管理(fTPM等)、电平管理、电源管理等等高级功能。
一些谣言- ME是Intel不可告人的后门。实际上AMT曾经被Intel广泛宣传过,并被作为一个很有价值的技术被推广到很多计算机厂家,并受到广泛欢迎,尤其是中小企业。Intel官网上有很多介绍。AMD在芯片中也有单独的固件。
- ME可以干任何事情。实际上它有很多限制,并不能随便访问主存。BIOS为它单独分配了内存,这些内存被保留,OS并不知情。ME通过一般办法并不能访问被分配空间之外的其他内存(当然也有例外)。我们可以认为它的内存访问和内置GPU内存访问没有本质区别,GPU也有自己的运行单元,为什么没有被诘难?它的USB、IDE/SATA重定向、网口控制也并不是对所有都有效。事实上,和它对应的BMC在服务器领域已经应用更长时间,而服务器对安全更加在乎,为什么没有这么大反对声呢?
- ME可以控制CPU,是ring -3。实际并不行,两者是互相独立工作的。这个说法是纯粹的吸引眼球的标题党干的,ring的概念只在X86上有,ARC并不会存在。
- ME控制网口为了留后门。ME中的AMT既然作为带外管理,必须联网,这是理所应当的。
- ME很容易被篡改。ME受数字签名保护,实际上它是fTPM等等安全手段的提供者。
- ME可以访问硬盘数据。部分有问题,ME固件并不能在操作系统环境下独自访问硬盘,否则会有冲突。可以访问硬盘的是ME的操作系统驱动。事实上硬件驱动大部分都是ring 0的,可以访问任何东西。ME的驱动也不例外,如果不信任驱动,那也不要安装主板驱动了。
- Intel强制安装ME。ME有好几个版本,主板包含哪种ME,这是OEM的选择。
- ME不能关闭。实际上很多主板BIOS中都有ME关闭的功能:
关闭后ME会进入一个低功耗状态。
|