diff --git "a/sig/Hygon Arch/content/4-TC\346\265\213\350\257\225\346\226\207\346\241\243/3-TPM\345\212\237\350\203\275\346\265\213\350\257\225.md" "b/sig/Hygon Arch/content/4-TC\346\265\213\350\257\225\346\226\207\346\241\243/3-TPM\345\212\237\350\203\275\346\265\213\350\257\225.md" index a6ce7d64e15bdbcbc2ecd3a4db18cb52c218078d..72005e9dae7d67918b2482037d1a4709d959e178 100755 --- "a/sig/Hygon Arch/content/4-TC\346\265\213\350\257\225\346\226\207\346\241\243/3-TPM\345\212\237\350\203\275\346\265\213\350\257\225.md" +++ "b/sig/Hygon Arch/content/4-TC\346\265\213\350\257\225\346\226\207\346\241\243/3-TPM\345\212\237\350\203\275\346\265\213\350\257\225.md" @@ -8,15 +8,15 @@ 2)**当前国内发行的常用OS版本基本都已支持海光TPM2.0**,安装后用户可以直接测试使用,**支持海光TPM2.0的硬件配置要求以及国产OS海光TPM2.0功能支持情况**详见页面: [0-安全功能配置要求 - OpenAnolis龙蜥操作系统开源社区](https://openanolis.cn/sig/Hygon-Arch/doc/1076446632387394260) ; -3)**如果安装的是未适配海光TPM2.0的OS**,则需要安装支持TPM的软件栈,包括tpm2-tools、tpm2-tss、tpm2-abrmd,并且需要打上相应的支持补丁, [1-TC软件编译 - OpenAnolis龙蜥操作系统开源社区](https://openanolis.cn/sig/Hygon-Arch/doc/968403949936204287) 这个页面tpm2小节提供了生成rpm包的参考示例,deb包的生成类似,不再赘述;另外也可以按照源码的方式编译安装,可参照链接: https://tpm2-tools.readthedocs.io/en/latest/INSTALL/ ; +3)**如果安装的是未适配海光TPM2.0的OS**,则需要安装支持TPM的软件栈,包括tpm2-tools、tpm2-tss、tpm2-abrmd,并提出适配需求获取相应的功能补丁, [2-TC软件编译 - OpenAnolis龙蜥操作系统开源社区](https://openanolis.cn/sig/Hygon-Arch/doc/968403949936204287) 这个页面tpm2小节提供了生成rpm包的参考示例,deb包的生成类似,不再赘述;另外也可以按照源码的方式编译安装,可参照链接: https://tpm2-tools.readthedocs.io/en/latest/INSTALL/ ; -4)**TPM2.0要求grub的版本为2.04及以上**,如果grub版本不满足要求请参考页面 [1-TC软件编译 - OpenAnolis龙蜥操作系统开源社区](https://openanolis.cn/sig/Hygon-Arch/doc/968403949936204287) 完成grub的安装;但有些OS自带的低版本grub可能会backport高版本的补丁,比如龙蜥8.9中的grub2.02版本支持TPM,具体需要视情况而定; +4)**TPM2.0要求grub的版本为2.04及以上**,如果grub版本不满足要求请参考页面 [2-TC软件编译 - OpenAnolis龙蜥操作系统开源社区](https://openanolis.cn/sig/Hygon-Arch/doc/968403949936204287) 完成grub的安装;但有些OS自带的低版本grub可能会backport高版本的补丁,比如龙蜥8.9中的grub2.02版本支持TPM,具体需要视情况而定; ## 2.BIOS设置 进入BIOS setup界面,在TCG Trusted Computing选项下关于TPM的默认设置如下图1所示,度量支持SHA1、SHA256、SM3三种算法,三个Hierarchy(Platform, Storage, Endorsement)全部使能,如果没特殊需求,使用默认设置即可。 - 图 1 BIOS设置 +图 1 BIOS设置 ![](../../assets/tpm2-1.png) @@ -69,13 +69,13 @@ $ tpm2_pcrread sm3_256:0,1,2,3,4,5,6,7,8,9,10,11 ``` 执行结果: - 图 2 获取的pcrread值 +图 2 获取的pcrread值 ![](../../assets/tpm2-3.png) **注:** -1)**如果PCR8、PCR9均为0,则表明grub中的tpm.mod模块没有嵌入到grub的核心模块core.efi**,因为BIOS只度量grub核心模块,grub核心模块再度量其他的模块,如果tpm.mod不嵌入核心模块则存在度量链的缺失,将tpm.mod嵌入core.efi的方法请参考页面: [1-TC软件编译 - OpenAnolis龙蜥操作系统开源社区](https://openanolis.cn/sig/Hygon-Arch/doc/968403949936204287) ; +1)**如果PCR8、PCR9均为0,则表明grub中的tpm.mod模块没有嵌入到grub的核心模块core.efi**,因为BIOS只度量grub核心模块,grub核心模块再度量其他的模块,如果tpm.mod不嵌入核心模块则存在度量链的缺失,将tpm.mod嵌入core.efi的方法请参考页面: [2-TC软件编译 - OpenAnolis龙蜥操作系统开源社区](https://openanolis.cn/sig/Hygon-Arch/doc/968403949936204287) ; 2)**如果启动前后PCR0发生改变**,最常见原因是更新了BIOS固件,也可能是主板上嵌入的外置UEFI驱动有改变,具体的原因需要咨询BIOS厂商时如何扩展PCR0的; @@ -110,7 +110,7 @@ $ ./test.sh 命令正确执行的结果如下图4。 - 图 4 功能测试结果示例 +图 4 功能测试结果示例 ![](../../assets/tpm2-5.png) @@ -153,6 +153,10 @@ $ tpm2_nvread -o cert_file 0x1c0001a 1)使用openssl工具查看EK证书格式,命令如下,结果如图5。 +``` +$ openssl x509 -in cert_file -inform DER -noout -text +``` + 图 5 openssl查看的EK证书格式 ![](../../assets/tpm2-6.png) @@ -238,7 +242,7 @@ $ tpm2_makecredential -Q -T none -u ekpub.tss -s secret.data -n $loaded_key_name $ tpm2_activatecredential -Q -c ak.ctx -C ek.ctx -i mkcred.out -o actcred.out ``` -将解密后的数据actcred.out发给CA,CA对比源数据和解密后的数据,相同则通过验证,CA确认这把 AK 属于受信 TPM,之后给这把 AK **签发证书**(常称 AK/AIK 证书): +将解密后的数据actcred.out发给CA,CA对比源数据和解密后的数据,相同则通过验证,CA确认这把 AK 属于受信 TPM,之后给这把 AK 签发证书(**常称 AK/AIK 证书**): ``` $ diff secret.data actcred.out diff --git "a/sig/Hygon Arch/content/4-TC\346\265\213\350\257\225\346\226\207\346\241\243/4-TCM\345\212\237\350\203\275\346\265\213\350\257\225.md" "b/sig/Hygon Arch/content/4-TC\346\265\213\350\257\225\346\226\207\346\241\243/4-TCM\345\212\237\350\203\275\346\265\213\350\257\225.md" index bd7f060a1b08f363f15a80f61054d7b62611ac00..d0e2731a69660bda0be5455450b77cbdb266b422 100755 --- "a/sig/Hygon Arch/content/4-TC\346\265\213\350\257\225\346\226\207\346\241\243/4-TCM\345\212\237\350\203\275\346\265\213\350\257\225.md" +++ "b/sig/Hygon Arch/content/4-TC\346\265\213\350\257\225\346\226\207\346\241\243/4-TCM\345\212\237\350\203\275\346\265\213\350\257\225.md" @@ -4,15 +4,15 @@ **注:** -1)**海光TCM2.0参照GM/T 0012-2020 《可信计算 可信密码模块接口规范》实现**,接口规范详见: [行业标准 - 全国标准信息公共服务平台](https://std.samr.gov.cn/hb/search/stdHBDetailed?id=C60C676BC20A358AE05397BE0A0AFABB) ,TCM2.0的命令格式和TPM2.0基本一致,只是删除了部分TPM支持的命令和新增ECC加解密的支持,详细可参阅接口规范; +1)**海光TCM2.0参照GM/T 0012-2020 《可信计算 可信密码模块接口规范》实现**,TCM2.0的命令格式和TPM2.0基本一致,只是删除了部分TPM支持的命令和新增ECC加解密的支持,详细可参阅接口规范: https://std.samr.gov.cn/hb/search/stdHBDetailed?id=C60C676BC20A358AE05397BE0A0AFABB ; 2)**海光TCM2.0使用的TSS软件栈是直接复用的TPM2.0**,已同步向国内各开源社区推送补丁,可以做到同一套软件栈既支持TPM2.0也支持TCM2.0; 2)**当前国内发行的常用OS版本基本都已支持海光TCM2.0**,安装后用户可以直接测试使用,**国产OS海光TCM2.0功能支持情况**详见页面: [0-安全功能配置要求 - OpenAnolis龙蜥操作系统开源社区](https://openanolis.cn/sig/Hygon-Arch/doc/1076446632387394260) ; -3)**如果安装的是未适配海光TCM2.0的OS**,则需要安装支持TPM的软件栈,包括tpm2-tools、tpm2-tss、tpm2-abrmd,并且需要打上相应的支持补丁, [1-TC软件编译 - OpenAnolis龙蜥操作系统开源社区](https://openanolis.cn/sig/Hygon-Arch/doc/968403949936204287) 这个页面tpm2小节提供了生成rpm包的参考示例,deb包的生成类似,不再赘述;另外也可以按照源码的方式编译安装,可参照链接: https://tpm2-tools.readthedocs.io/en/latest/INSTALL/ ; +3)**如果安装的是未适配海光TCM2.0的OS**,则需要安装支持TCM的软件栈,包括tpm2-tools、tpm2-tss、tpm2-abrmd,并提出适配需求获取相应的功能补丁, [2-TC软件编译 - OpenAnolis龙蜥操作系统开源社区](https://openanolis.cn/sig/Hygon-Arch/doc/968403949936204287) 这个页面tpm2小节提供了生成rpm包的参考示例,deb包的生成类似,不再赘述;另外也可以按照源码的方式编译安装,可参照链接: https://tpm2-tools.readthedocs.io/en/latest/INSTALL/ ; -4)**TCM2.0要求grub的版本为2.04及以上**,如果grub版本不满足要求请参考页面 [1-TC软件编译 - OpenAnolis龙蜥操作系统开源社区](https://openanolis.cn/sig/Hygon-Arch/doc/968403949936204287) 完成grub的安装;但有些OS自带的低版本grub可能会backport高版本的补丁,比如龙蜥8.9中的grub2.02版本支持TCM,具体需要视情况而定; +4)**TCM2.0要求grub的版本为2.04及以上**,如果grub版本不满足要求请参考页面 [2-TC软件编译 - OpenAnolis龙蜥操作系统开源社区](https://openanolis.cn/sig/Hygon-Arch/doc/968403949936204287) 完成grub的安装;但有些OS自带的低版本grub可能会backport高版本的补丁,比如龙蜥8.9中的grub2.02版本支持TCM,具体需要视情况而定; 5)**海光2号开始支持TCM2.0,BIOS的PI版本需要大于DhyanaPatch_PI2.1.0.4_200248_001**,如果不满足请直接联系BIOS厂商升级BIOS解决; @@ -20,7 +20,7 @@ 进入BIOS setup界面,在TCG Trusted Computing选项下关于TCM的默认设置如下图1所示,度量只支持SM3一种算法,三个Hierarchy(Platform, Storage, Endorsement)全部使能,如果没特殊需求,使用默认设置即可。 - 图 1 BIOS设置 +图 1 BIOS设置 ![](../../assets/tcm2-1.png) @@ -73,13 +73,13 @@ $ tpm2_pcrread ``` 执行结果: - 图 2 获取的pcrread值 +图 2 获取的pcrread值 ![](../../assets/tcm2-3.png) **注:** -1)**如果PCR8、PCR9均为0,则表明grub中的tpm.mod模块没有嵌入到grub的核心模块core.efi**,因为BIOS只度量grub核心模块,grub核心模块再度量其他的模块,如果tpm.mod不嵌入核心模块则存在度量链的缺失,将tpm.mod嵌入core.efi的方法请参考页面: [1-TC软件编译 - OpenAnolis龙蜥操作系统开源社区](https://openanolis.cn/sig/Hygon-Arch/doc/968403949936204287) ; +1)**如果PCR8、PCR9均为0,则表明grub中的tpm.mod模块没有嵌入到grub的核心模块core.efi**,因为BIOS只度量grub核心模块,grub核心模块再度量其他的模块,如果tpm.mod不嵌入核心模块则存在度量链的缺失,将tpm.mod嵌入core.efi的方法请参考页面: [2-TC软件编译 - OpenAnolis龙蜥操作系统开源社区](https://openanolis.cn/sig/Hygon-Arch/doc/968403949936204287) ; 2)**如果启动前后PCR0发生改变**,最常见原因是更新了BIOS固件,也可能是主板上嵌入的外置UEFI驱动有改变,具体的原因需要咨询BIOS厂商时如何扩展PCR0的; @@ -114,7 +114,7 @@ $ ./test.sh 命令正确执行的结果如下图4。 - 图 4 功能测试结果示例 +图 4 功能测试结果示例 ![](../../assets/tcm2-5.png)