县工商局 网站建设我国的网络营销公司
1. 获取用户名
命令及结果如下所示:
$ whoami
ph
2. 获取设备序列号(串号)
命令及结果如下所示:
$ sudo dmidecode | grep "Serial Number" | head -n 1Serial Number: MP260S48
3. 将用户名和设备序列号放入到一个文件中
文件名如key_info.dat。具体步骤略。
4. 通过TPM生成哈希值
通过tpm2_hash命令针对文件生成哈希值。命令及结果如下所示:
$ sudo /usr/local/bin/tpm2_hash -C e -g sha256 -o hash.bin -t ticket.bin key_info.dat$ ls
hash.bin key_info.sh key_info.dat ticket.bin
5. 加载外部密钥到TPM中
通过tpm2_loadexternal命令以AES密钥形式加载生成的外部密钥(即上一步中的hash.bin)到TPM中。命令及结果如下所示:
$ sudo /usr/local/bin/tpm2_loadexternal -C o -G aes -r hash.bin -c key.ctx
WARNING:esys:src/tss2-esys/api/Esys_LoadExternal.c:314:Esys_LoadExternal_Finish() Received TPM Error
ERROR:esys:src/tss2-esys/api/Esys_LoadExternal.c:108:Esys_LoadExternal() Esys Finish ErrorCode (0x000003c5)
ERROR: Esys_LoadExternal(0x3C5) - tpm:parameter(3):hierarchy is not enabled or is not correct for the use
ERROR: Unable to run /usr/local/bin/tpm2_loadexternal
可以看到,出现了错误。具体原因参见:
tpm2-tools/tpm2_loadexternal.1.md at master · tpm2-software/tpm2-tools · GitHub
中的“NOTES”:
NOTES
If the hierarchy is null or the name hashing algorithm is null, tickets produced using the object will be NULL.
If the private portion of an object is specified, the hierarchy must be null or the TPM will reject loading it.
因此,将参数由“-C o”改为“-C n”。命令及结果如下所示:
$ sudo /usr/local/bin/tpm2_loadexternal -C n -G aes -r hash.bin -c key.ctx
name: 000bd13e6f08d050bf1d0b1ba1396698e719518a8d3a6550f2b2f7deb32abf7408f7
6. 生成明文文件
通过命令生成一个明文文件。如下举例:
$ echo "plain text" > message.dat
$ cat message.dat
plain text
7. 加密
通过tpm2_encryptdecrypt命令、利用步骤5中生成的AES密钥key.ctx对步骤6中的明文文件进行加密。命令及结果如下所示:
$ sudo /usr/local/bin/tpm2_encryptdecrypt -c key.ctx -o message.enc message.dat
WARN: Using a weak IV, try specifying an IV
$ sudo cat message.enc
���*9D�wA
8. 解密
通过tpm2_encryptdecrypt命令、利用步骤5中生成的AES密钥key.ctx对步骤7中的密文文件进行解密。命令及结果如下所示:
$ sudo /usr/local/bin/tpm2_encryptdecrypt -d -c key.ctx -o message.dec message.enc
WARN: Using a weak IV, try specifying an IV
$ sudo cat message.dec
plain text
9. 将密钥持久保存
通过tpm2_evictcontrol命令,将以上AES密钥从易失性空间移存到非易失性空间中。命令及结果如下所示:
$ sudo /usr/local/bin/tpm2_evictcontrol -C o -c key.ctx 0x81010002
WARNING:esys:src/tss2-esys/api/Esys_EvictControl.c:330:Esys_EvictControl_Finish() Received TPM Error
ERROR:esys:src/tss2-esys/api/Esys_EvictControl.c:114:Esys_EvictControl() Esys Finish ErrorCode (0x00000282)
ERROR: Esys_EvictControl(0x282) - tpm:handle(2):inconsistent attributes
ERROR: Unable to run /usr/local/bin/tpm2_evictcontrol