【已评审】新增ipmi命令支持查询安全启动公钥指纹的配置信息

背景

装备阶段,导入安全启动公钥指纹以后,指纹校验存在问题。
以前不导入安全启动公钥指纹,不会去校验签名,导入安全启动公钥指纹以后,才会去校验签名。通过升级一个非华为签名的hpm包,来校验是否导入过安全启动公钥指纹。升级成功就是没导入过安全启动公钥指纹,升级失败就是导入过安全启动公钥指纹。
当前社区不管导入还是没导入安全启动公钥指纹都会去校验签名。用之前这个方法无法校验是否导入过安全启动公钥指纹。在安全SIG组评审后,新增ipmi命令判断是否导入过安全启动公钥指纹。

决策点

在获取BMC配置参数命令(Get BMC Configuration)下,新增子命令用于获取安全启动公钥指纹配置信息,权限为安全配置(SecurityMgmt):

表1 bmc配置参数表

功能描述 parameter selector parameter data-get parameter data-set
查询安全启动公钥指纹的配置信息 0x4D 请求: data length:2 data1:查询的安全启动公钥指纹类型 0:查询PKCS格式的BMC固件安全启动公钥指纹 1:查询PSS格式的BMC固件安全启动公钥指纹 data2: 0:查询安全启动公钥指纹导入状态 1:查询安全启动公钥指纹的hash值 响应: 请求data2=0时 data1: 0:未导入 1:已导入 请求data2=1时 data1:安全启动公钥指纹信息长度n data2: data2~n+1: 安全启动公钥指纹的hash值 不支持

命令功能

获取BMC配置参数

权限说明

ReadOnly

命令格式

ipmicmd -k “0f 00 30 93 db 07 00 5b {selector} {length} {data} ” smi 0

参数说明

参数(字节) 域内容
NetFn 30h
CMD 93h
1:3 Manufacturer ID,LS Byte first。长度固定3个字节,例如,某厂家ID是2011,对应十六进制为0x0007DB,则字节序为第1个字节为DBh、第2个字节为07h、第3个字节为00h。
4 Sub command,子命令=5bh
5:6 Parameter Selector,参见表1 BMC配置参数表。低字节在前。
7:8 Data Length,低字节在前。
9:N Parameter Data,参见表1 BMC配置参数表

响应说明

字节顺序 域内容
1 Completion Code
2:4 Manufacturer ID,LS Byte first。长度固定3个字节,例如,某厂家ID是2011,对应十六进制为0x0007DB,则字节序为第1个字节为DBh、第2个字节为07h、第3个字节为00h。
5:N Data,具体数据参见表1 BMC配置参数表

表1 bmc配置参数表

功能描述 parameter selector parameter data-get parameter data-set
查询安全启动公钥指纹的配置信息 0x4D 请求: data length:2 data1:查询的安全启动公钥指纹类型 0:查询PKCS格式的BMC固件安全启动公钥指纹 1:查询PSS格式的BMC固件安全启动公钥指纹 data2: 0:查询安全启动公钥指纹导入状态 1:查询安全启动公钥指纹的hash值 响应: 请求data2=0时 data1: 0:未导入 1:已导入 请求data2=1时 data1:安全启动公钥指纹信息长度n data2: data2~n+1: 安全启动公钥指纹的hash值 不支持

整体方案

通过ipmi命令获取安全启动公钥指纹hash值,ipmi命令返回全0,则没有安全启动公钥指纹;ipmi命令返回其他值,则为有安全启动公钥指纹。

评审结论

同意IPMI命令(netfn=0x30, cmd=0x93, subcmd=0x5b)扩展参数选项0x4d,用于查询安全启动公钥指纹的配置信息。
请求说明:
data1:安全启动公钥指纹类型
0:PKCS格式的BMC固件安全启动公钥指纹
1:PSS格式的BMC固件安全启动公钥指纹
data2:安全启动公钥指纹查询选项
0:安全启动公钥指纹导入状态
1:安全启动公钥指纹的hash值

响应说明:
请求data2=0时
data1:导入状态,0:未导入 1:已导入
请求data2=1时
data1: 安全启动公钥指纹信息长度n
data2~n+1: 安全启动公钥指纹的hash值

遗留问题

1、将伙伴根修改为专业术语名称,建议安全启动可信/校验根,需要同步刷新文档(主要是IPMI接口文档)
结论:与security SIG maintainer确认,专业术语名称为安全启动公钥指纹