【已评审】新增IPMI命令获取BMC侧启动度量,硬件度量信息

背景

Host存在使用三方插卡展示BMC侧可信度量信息诉求,BMC增加IPMI接口将度量日志信息通过IPMI接口传递给host侧,构建符合可信计算3.0标准的硬件信任链,实现BMC与Host间的可信协同,满足等保/关基要求

评审点

新增IPMI命令用于带内获取BMC侧启动度量,硬件度量信息

详细描述

命令名称: 查询可信计算度量信息
命令说明: 可信计算相关信息查询接口
命令权限: ReadOnly
是否锁定之后可以访问:
是否有敏感数据:
命令样式:

  • 请求:ipmitool raw 0x30 0x93 <ManufacturerID> <SubCmd> <Data Type> <reserved> <Offset> <Length>
  • 响应:<Completion Code> <ManufacturerID> <End of List> <data>

命令请求参数:

字节顺序 域取值说明
NetFn 30h
Cmd 93h
1:3 Manufacturer ID,LS Byte first。长度固定 3 个字节,例如,某厂家ID时 2011,对应十六进制为0x0007DB,则字节序为第1个字节为 DBh,第二个字节为 07h,第三个字节为 00h。
4 SubCmd,固定为 93h
5 Data Type, 数据类型,详见 数据类型说明
6:7 预留扩展,填0
8:9 Offset, 读取的数据偏移,LS Byte first
10 Length,读取长度

命令响应参数:

字节顺序 域取值说明
1 Completion Code
00h = 【标准完成码】命令响应成功
C0h = 【标准完成码】命令总线忙
C1h = 【标准完成码】命令无效
CEh = 【标准完成码】命令无法响应,数据未准备完成
2:4 Manufacturer ID,LS Byte first。长度固定 3 个字节,例如,某厂家ID时 2011,对应十六进制为0x0007DB,则字节序为第1个字节为 DBh,第二个字节为 07h,第三个字节为 00h。
5 End of List,表示当前数据是否结束。当参数数据比较长的时候,可能需要分多次读取,通过此字段可以判断数据是否读完。
[7:1]:reserved.
[0]:End of list,取值如下:
0:当前是最后一帧数据
1:当前不是最后一帧数据
6 Data,实际返回的数据长度可能小于等于Length,响应数据见表数据类型说明

数据类型说明

Data Type Data Format 读写类型 子命令字可用通道 描述
0 见表版本信息格式 read only bt/ipmb 芯片版本、固件版本等,见下表版本信息格式
1 见表BMC信息格式 read only bt/ipmb BMC基础固件度量信息
2 见表BMC信息格式 read only bt/ipmb BMC引导固件度量信息
3 见表BMC信息格式 read only bt/ipmb BMC运行固件度量信息
4 见表BMC信息格式 read only bt/ipmb BMC安全协处理器固件度量信息
5 见表BMC信息格式 read only bt/ipmb BIOS固件度量信息
6 见表OS信息格式 read only bt/ipmb Host安全引导固件度量信息
7 见表OS信息格式 read only bt/ipmb Host引导固件度量信息
8 见表OS信息格式 read only bt/ipmb Host引导固件配置度量信息
9 见表OS信息格式 read only bt/ipmb Host内核固件度量信息
10 见表OS信息格式 read only bt/ipmb Host初始根文件系统度量信息
11 见表硬件度量信息格式 read only bt/ipmb CPU设备硬件度量信息
12 见表硬件度量信息格式 read only bt/ipmb 网卡设备硬件度量信息
13 见表硬件度量信息格式 read only bt/ipmb NPU设备硬件度量信息
14 见表硬件度量信息格式 read only bt/ipmb GPU设备硬件度量信息

数据格式说明

版本信息格式

Data字节顺序 长度(byte) 描述
data 1 1 信息格式版本号,当前版本为1
data 2:5 4 tcm芯片版本(16进制编码),LS Byte first
data 6:9 4 tcm固件版本(16进制编码),LS Byte first

BMC信息格式

Data字节顺序 长度(byte) 描述
data 1 1 信息格式版本号,当前版本为1
data 2:5 4 TCG定义的类型,平台状态寄存器索引值,从1开始,LS Byte first
data 6:9 4 TCG定义的类型,代表日志事件类型,当前事件类型取值为0xf1,LS Byte first
data 10:41 32 data 46:N+32 数据的hash值(16进制编码)
data 42:45 4 data 46:N+32 数据长度
data 46:49 4 固件类型,取值包括:1 - L1,2 - UBoot,3 - Rootfs,4 - BIOS,7 - Coprocessor
data 50:53 4 固件数量
data 54:N 40*固件数量 每个固件在存储区域的offset(4字节)、size(4字节),以及hash值(32字节)
data N+1:N+32 32 所有固件的hash拼接后计算得出的hash值
data N+33:N+64 32 固件名称(字符串,包含结束符)
data N+65:N+96 32 实际度量值(16进制编码)
data N+97:N+128 32 基准度量值(16进制编码)
data N+129 1 对比结果,255:未刷新/无效数据,0:成功,1:失败
data N+130 1 控制行为,255:未刷新/无效数据,0:允许启动,1:阻止启动

OS信息格式

Data字节顺序 长度(byte) 描述
data 1 1 信息格式版本号,当前版本为1
data 2:33 32 固件名称(字符串,包含结束符)
data 34:65 32 实际度量值(16进制编码)
data 66:97 32 基准度量值(16进制编码)
data 98 1 对比结果,255:未刷新/无效数据,0:成功,1:失败
data 99 1 控制行为,255:未刷新/无效数据,0:允许启动,1:阻止启动

硬件度量信息格式

Data字节顺序 长度(byte) 描述
data 1 1 信息格式版本号,当前版本为1
data 2 1 组件数量
data 3:34 32 固件名称(字符串,包含结束符),带槽位号
data 35:66 32 实际度量值(16进制编码)
data 67:98 32 基准度量值(16进制编码)
data 99:130 32 实际型号(字符串,包含结束符)
data 131:162 32 基准型号(字符串,包含结束符)
data 163:194 32 实际厂商(字符串,包含结束符)
data 195:226 32 基准厂商(字符串,包含结束符)
data 227:290 64 实际标识(字符串,包含结束符)
data 291:354 64 基准标识(字符串,包含结束符)
data 355 1 部件状态,0:正常,1:增加,2:移除,3:变更,其它:失败
data 356:N 353 如果有多个部件,格式同 data 3:355

命令示例:
样例1:

  • 请求:ipmitool raw 0x30 0x93 0xdb 0x07 0x00 0x93 0x00 0x00 0x00 0x00 0x00 0x05
  • 响应:db 07 00 00 01 00 00 09 00

评审结论

同意新增IPMI命令带内获取BMC侧启动度量,硬件度量信息
命令请求参数:

字节顺序 域取值说明
NetFn 30h
Cmd 93h
1:3 Manufacturer ID
4 SubCmd,固定为 93h
5 Data Type, 数据类型,详见 数据类型说明
6:7 预留扩展,填0
8:9 Offset, 读取的数据偏移,LS Byte first
10 Length,读取长度

命令响应参数:

字节顺序 域取值说明
1 Completion Code
2:4 Manufacturer ID
5 End of List
[0]:End of list,取值如下:
0:当前是最后一帧数据
1:当前不是最后一帧数据
6 Data,实际返回的数据长度可能小于等于Length

数据格式定义参考详细描述

遗留问题

1、确认是否可以不用多帧设计
结论: 需要使用多帧设计,后面演进会使用quote签名,某个数据类型的属性查询会超过200字节