理解Intel® AMT的PSK配置

在通过大企业(Enterprise)模式来配置Intel® AMT时,为了保证配置过程中的数据传输的安全性,配置服务器到AMT的连接必须采用TLS的加密传输方式。Intel® AMT一开始就支持TLS-PSK(预共享密钥)的方式来加密配置服务器到AMT的通信数据,在AMT相关文档中经常提到的PID/PPS就是应用这种模式。



那到底PIDProvisioning ID)和PPSProvisioning Pre-Shared Key)有什么不同呢? 分别又是做什么用途的呢?



TLSPSK加密通信过程中,使用的对称密钥加密算法,也就是通信的双方(这里时AMT和配置服务器)需要在通信前知道本地通信所使用的密钥。由于需要双方事先知道,所以我们称之为与共享密钥,也就是我们这里的PPS。为了安全起见,预共享密钥是不能在通信开始之前通过明文的方式来协商的,因为随时可能被窃听。为了能让通信的双方知道要用那个密钥,AMT引入了PIDPID是可以在网络上明文传输,即使被第三方非法获得也是没有关系的,因为PIDPPS之间并没有算法上的任何关系,也就是不可能由PID推算出PPS来。



AMTTLS-PSK配置方式中,我们首先需要给AMT预设一对PID/PPS,这种预设可以是通过AMTMEBX菜单,也可以是通过USB盘的方式。在配置服务器段,一般是预先配置了多对PID/PPS,存储在配置文件中。当AMTPID/PPS被设置好后,并且AMT的网络连接正常的情况下,AMT会自动开始朝配置服务器发送hello包,其中hello包里面就包含了给AMT配置的PID的值。Hello包的发送规则是,AMT启动后开始是每分钟发送一次,共发送5次;然后在接下来的时间内每十分钟发送一次,也是发送5次;接下来是间隔每1个小时发送一次,也是发送5次;也就是每次AMT启动最多会发送15hello包,如果中间配置完成,就停止发送hello包。这里需要注意的是,hello包是在AMT重新启动才会重新开始发送,而不是系统重启;AMT的重启取决于AMT的电源设置,如果设置成常开,那么需要断电后再次接上电源才会是AMT重新启动;如果设置的是只在S0有效,那么系统关机再开机就能使AMT重启。



配置服务器在接受到AMT发送过来的hello包后,从包里面解析出PID,然后通过读取配置文件的信息,找到与此PID相匹配的PPS,接着就用此PPS作为加密的密钥,将发往AMT的信息加密再发给AMTAMT接收到后,自动用已配置的PPS来解密通信信息;这样就实现了AMT和配置服务器的加密通信。我们可以看到,在整个过程中PPS是不会在网络上传输的,传输的只是加密的数据,因此传输的配置信息在安全方面的保证是可靠的。



PID/PPS是不是随便使用一串字符就可以呢?也不是,需要有一定的规则。首先组成PID/PPS的字符只能是大写的A-Z和数字0-9,按每四个字符一组组成,中间用‘-’隔开;其中PID由两组四字符组成,PPS8组四字符组成。另外,PIDPPS都有校验和检查规则,这里校验和检查是按每个字符对应的ASCII码来校验的;校验和的计算规则是:需要校验的字符的ASCII码的和摸0x24,结果如果是0x0 – 0x09,则结果加上0x30,结果如果是0x0A – 0x23,则结果再加上0x37,得到的结果就是最后一个字符的ASCII码。


对于PID,其最后一个字符是前面7个字符的校验和,比如0000-007M,最后一个字符的计算是: 0x30+0x30+0x30+0x30+0x30+0x30+0x37 = 0x15A;然后模0x240x16,大于0x09,则加上0x37得到0x4D,即是ASCII M


对于PPS,其每组字符最后一个字符是前三个字符的校验和,比如 NKLD-G5DC-RRNQ-E9YZ-ZIJL-7LFL-VJED-69XJ,第一组字符是NKLD,前三个字符相加 0x4E+0x4B+0x4C = 0xE5,模0x240xD,加0x370x44,即是ASCII D



为了保证每个AMT客户机使用的PID/PPS都不一样,并且不能由一台机器的PPS猜测出另外一台机器的PPS,因为PID/PPS的生成应该使用比较强的随机算法。Intel® AMT SDK有提供程序来生成PID/PPS,名字应该是USBFile.exe,有源程序可供参考,并且可以自动的将生成的PID/PPS写到U盘上,然后用U盘自动将PID/PPS设置到AMT中。另外,Intel SCS也提供了随即生成PID/PPS的功能,也支持将生成的PID/PPS导出到U盘。



TLS-PSK的加密通信方式为了保证PPS不在网络传输,因此需要管理员至少一次到客户桌面去配置PID/PPS,不管是手动配置还是通过U盘配置,因此我们称之为One-Touch-Configuration。在Intel AMT大规模部署的时候,这样的方法会感觉有些不方便,需要一台一台去设置,确实是一种体力活,因此在Intel AMT 3.0版本开始就引入了Zero-Touch-Configuration,引入了TLS-PKI配置方式,减轻了配置负担的同时,带来了配置过程的复杂性。笔者将会在下一篇博文中继续讲解ZTC的配置过程。

有关编译器优化的更完整信息,请参阅优化通知