tpm2-tools 使用方法

文章目录

  • TPM
    • 1. 设置TPM相关密码
    • 2. 修改TPM相关密码
    • 3. 清除ownership,资源以及其所有者的关系将被释放
    • 4. 设定NV存储,比如index从0x1500001开始,大小为32bytes,属性为0x2000A,授权
      • 向NV中写数据,比如:将nv.data中的数据写入index为0x1500001的位置
      • 4.2 从NV中读取数据,比如:从index为0x1500001位置,偏移量为0,读取32bytes,授权
      • 4.3 释放NV存储,比如释放index为0x1500001的NV存储
    • 5. 创建主对象,使用objectpass(主对象的密码),RSA keys(-G参数)和SHA256(-g参数)哈希算法,对象内容存储在po.ctx中
    • 6. 使用上一步的主对象创建RSA公钥/私钥,subobjectpass (RSA私钥的密码),SHA256哈希算法,公钥保存在key.pub,私钥保存在key.priv
    • 7. 加载生成的RSA私钥,加载完成RSA公钥以及私钥后,就可以使用加解密服务了
      • 8.1 使用RSA加密操作
      • 8.2 使用RSA解密操作
      • 9.1 使用RSA签名
      • 9.2 验证签名

原文链接 https://blog.csdn.net/makenothing/article/details/86650025

TPM

1. 设置TPM相关密码

tpm2_takeownership -o ownerpass -e endorsepass -l lockpass

ownership: 对TPM的操作权限的拥有者;

ownerpass是操作者对TPM设备进行操作的密码;

endorsepass是使用TPM进行背书/签名的密码,lockpass是对TPM进行锁定.

2. 修改TPM相关密码

tpm2_takeownership -o ownerpassnew -e endorsepassnew -l lockpassnew -O ownerpass -E endorsepass -L lockpass

3. 清除ownership,资源以及其所有者的关系将被释放

tpm2_takeownership -c  [-L lockpass]

4. 设定NV存储,比如index从0x1500001开始,大小为32bytes,属性为0x2000A,授权

tpm2_nvdefine -x 0x1500001 -a 0x40000001 -s 32 -t 0x2000A -P ownerpass

向NV中写数据,比如:将nv.data中的数据写入index为0x1500001的位置

tpm2_nvwrite -x 0x1500001 -a 0x40000001 -f nv.data -P ownerpass

4.2 从NV中读取数据,比如:从index为0x1500001位置,偏移量为0,读取32bytes,授权

tpm2_nvread -x 0x1500001 -a 0x40000001 -s 32 -o 0 -P ownerpass

4.3 释放NV存储,比如释放index为0x1500001的NV存储

tpm2_nvrelease -x 0x1500001 -a 0x40000001 -P ownerpass

5. 创建主对象,使用objectpass(主对象的密码),RSA keys(-G参数)和SHA256(-g参数)哈希算法,对象内容存储在po.ctx中

tpm2_createprimary -A e -K objectpass -g 0x000b -G 0x0001 -C po.ctx

附:Supported Hash Algorithms

 · 0x4 or sha1 for TPM_ALG_SHA1 (default)

 · 0xB or sha256 for TPM_ALG_SHA256

 · 0xC or sha384 for TPM_ALG_SHA384

 · 0xD or sha512 for TPM_ALG_SHA512

 · 0x12 or sm3_256 for TPM_ALG_SM3_256

附:Supported Public Object Algorithms

· 0x1 or rsa for TPM_ALG_RSA (default).

· 0x8 or keyedhash for TPM_ALG_KEYEDHASH.

· 0x23 or ecc for TPM_ALG_ECC.

· 0x25 or symcipher for TPM_ALG_SYMCIPHER.

6. 使用上一步的主对象创建RSA公钥/私钥,subobjectpass (RSA私钥的密码),SHA256哈希算法,公钥保存在key.pub,私钥保存在key.priv

tpm2_create -c po.ctx -P objectpass -K subobjectpass -g 0x000b -G 0x0001 -o key.pub -O key.priv

7. 加载生成的RSA私钥,加载完成RSA公钥以及私钥后,就可以使用加解密服务了

tpm2_load -c po.ctx -P objectpass -u key.pub -r key.priv -n key.name -C obj.ctx

8.1 使用RSA加密操作

tpm2_rsaencrypt -c obj.ctx -I data.in -o data.encrypted

8.2 使用RSA解密操作

tpm2_rsadecrypt -c obj.ctx -P subobjectpass -I data.encrypted -o data.out

9.1 使用RSA签名

tpm2_sign -c obj.ctx -P subobjectpass -g 0x000b -m msg.in -s sig.out

9.2 验证签名

tpm2_verifysignature -c obj.ctx -g 0x000b -m msg.in -s sig.out -t tk.sig

你可能感兴趣的:(可信计算,TPM2)