【可信计算】tpm2-tools的命令及使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 实验任务
  • 实验环境
  • 一、 准备工作(必须)
    • 1.启动TPM服务
    • 2.启动tpm2_abrmd服务
    • 3.测试
  • 二、hash 函数产生文件度量值
    • 1.实验思路
    • 2.实验步骤
  • 三、文件的加解密
    • 1.实验思路
    • 2.实验步骤
  • 四、对文件签名以实现完整性认证
  • 总结


实验任务

在安装好的TPM模拟环境基础上,通过搜索引擎查找tpm2-tools提供的命令和使用方法,完成以下任务:
(1) 利用tpm2-tools提供的hash 函数生产文件度量值。
(2) 利用tpm实现对文件的加解密。
(3) 利用TPM实现对文件进行签名,实现对文件完整性认证。

实验环境

实验环境类型:Linux
Linux版本:Ubuntu 16.04.7 LTS
内核版本:4.4.0-210-generic
tpm模拟器:ibmtpm 1332
tpm协议栈中:tpm2-tss 2.1.0
tpm守护进程:tpm2-abrmd 2.0.2
tpm2 tools 3.x

一、 准备工作(必须)

1.启动TPM服务

systemctl daemon-reload
systemctl start tpm-server.service
service tpm-server status

效果如图:

【可信计算】tpm2-tools的命令及使用_第1张图片

2.启动tpm2_abrmd服务

systemctl daemon-reload
systemctl start tpm2-abrmd.service
service tpm2-abrmd status

【可信计算】tpm2-tools的命令及使用_第2张图片
PS:按q退出

3.测试

输入以下命令打印pcr情况,查看输出是否正常:

tpm2_pcrlist

出现以下结果,可以进行以下实验。
【可信计算】tpm2-tools的命令及使用_第3张图片

二、hash 函数产生文件度量值

1.实验思路

利用tpm-tools中生成文件hash值的命令:tpm2_hash -H e -g sha1 -o hash.bin -t ticket.bin data.txt对某数据文件进行度量,(即生成该文件的hash值,也就是度量值),然后修改该文件,再进行度量,对比修改前后的文件哈希值可以发现,它们是不同的。也就是说,修改文件会导致文件度量值发生改变。

2.实验步骤

①用vim命令创建一个data.txt数据文件,在data.txt数据文件中写入任意你喜欢的内容,用于实验:
注:i插入。:wq保存并退出

vim data.txt

此处数据内容为:

Does Tartaglia reprint today?

【可信计算】tpm2-tools的命令及使用_第4张图片
②cat(英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上,此处显示文件内容:

cat data.txt

在这里插入图片描述

③用以下命令生成data.txt数据文件的度量值:

tpm2_hash -H e -g sha1 -o hash.bin -t ticket.bin data.txt

在这里插入图片描述
④修改数据文件内容:

vim data.txt

数据修改为:

Does Albedo reprint today?

【可信计算】tpm2-tools的命令及使用_第5张图片

⑤显示修改后文件内容:

cat data.txt

在这里插入图片描述
⑥生成修改后的data.txt数据文件的度量值:

tpm2_hash -H e -g sha1 -o hash.bin -t ticket.bin data.txt

在这里插入图片描述
⑦对比可得,两次的文件度量值不同,实验成功:
【可信计算】tpm2-tools的命令及使用_第6张图片

三、文件的加解密

1.实验思路

为了能够在不可信的存储上安全存储数据,利用tpm可信根,生成加密秘钥来对数据进行加密。利用模拟器实现整个加解密过程。

2.实验步骤

①利用takeownership实现对TPM所有权的访问认证设置。利用TPM所有权来实现证明现有身份,通过验证机密的知识来对所有权进行身份验证。其中-o 为作为所有者密码,-e为认可密码,-l为锁定密码。

tpm2_takeownership -o 1 -e 2 -l 3

在这里插入图片描述

②创建主键对象,以使用创建的对象生成秘钥。利用-K后参数11作为对象密码,其秘钥为RSA秘钥且哈希函数为SHA256。并将对象保存在文件po.ctx。其中-p后为认可密码。

tpm2_createprimary -H e -K 11 -g 0x000b -G 0x0001 -C po.ctx -P 2

【可信计算】tpm2-tools的命令及使用_第7张图片
通过命令ls查看目录,可以看到po.ctx已经创建完毕:
【可信计算】tpm2-tools的命令及使用_第8张图片

③在主键背景下,创建一个RSA秘钥,产生公钥和私钥。-p为主键的对象密码,-K为子类密码,这里设置为11。公钥保存在key.pub中,私有秘钥存为key.priv。

tpm2_create -c po.ctx -P 11 -K 111 -g 0x000b -G 0x0001 -u key.pub -r key.priv

【可信计算】tpm2-tools的命令及使用_第9张图片
通过命令ls查看目录,可以看到公钥key.pub和私有秘钥key.priv已经创建完毕:

【可信计算】tpm2-tools的命令及使用_第10张图片

④利用tp2_load命令使用认证秘钥加载创建的RSA秘钥,生成秘钥加载的对应信息obj.ctx。

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

通过命令ls查看目录,可以看到obj.ctx已经创建完毕:
【可信计算】tpm2-tools的命令及使用_第11张图片

⑤利用tpm2_rsaencrypt加密函数利用创建的秘钥对第一个实验中的文件data.txt进行加密,生成加密文件data.encrypt:

tpm2_rsaencrypt -c obj.ctx -o data.encrypt test.txt

【可信计算】tpm2-tools的命令及使用_第12张图片

⑥最后利用tpm2_rsadecrypt解密函数对加密的输出进行解密,生成解密后的文件data.decrypt。

tpm2_rsadecrypt -c obj.ctx -I data.encrypt -P 111 -o data.decrypt

⑦用以下命令查看三个文件:

cat data.decrypt
cat data.txt
cat data.encrypt

【可信计算】tpm2-tools的命令及使用_第13张图片

从上图可以看出,数据文件data.txt和解密后的data.decrypt内容一致,而data.encrypt中则是加密后的乱码,实验成功。

四、对文件签名以实现完整性认证

①创建主键对象:
PS:如果这步报错了可以重启一下虚拟机,虽然但是不得不承认有的时候重启可以解决很多问题:),重启之后记得再做下准备工作!

tpm2_createprimary -H e -K 11 -g 0x000b -G 0x0001 -C po.ctx -P 1

【可信计算】tpm2-tools的命令及使用_第14张图片

③生成RSA秘钥:

tpm2_create -c po.ctx -P 11 -K 111 -g 0x000b -G 0x0001 -u key.pub -r key.priv

【可信计算】tpm2-tools的命令及使用_第15张图片

④利用tp2_load命令使用认证秘钥加载创建的RSA秘钥,生成秘钥加载的对应信息obj.ctx1:

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

【可信计算】tpm2-tools的命令及使用_第16张图片

⑤生成消息文件:

echo “my message”>message.dat

⑥使用tpm2_sign利用加载的RSA秘钥对消息文件进行签名。生成签名文件sig.rssa。

tpm2_sign  -c obj.ctx -P 111 -g 0x000b -s sig.rssa -m message.dat

⑦使用tmp2_verfysignature函数对文件和签名信息的一致性进行确认。

tpm2_verifysignature -c obj.ctx -g 0x000b -m message.dat -s sig.rssa -t tk.sig

【可信计算】tpm2-tools的命令及使用_第17张图片
⑧ 将message.dat文件改名为messagel.dat,完整性认证成功:

ls
rm tk.sig
cat message.dat
mv message.dat messagel.dat
tpm2_verifysignature -c obj.ctx -g 0x000b -m messagel.dat -s sig.rssa -t tk.sig

【可信计算】tpm2-tools的命令及使用_第18张图片

⑨更改message.date文件的内容,完整性认证失败:

cat messagel.dat
mv messagel.dat message.dat
echo "change message" > message.dat
cat message.dat
rm tk.sig
tpm2_verifysignature -c obj.ctx -g 0x000b -m message.dat -s sig.rssa -t tk.sig

【可信计算】tpm2-tools的命令及使用_第19张图片

总结

周一,好困;早八 ,好累 ;中午,好饿。:)

你可能感兴趣的:(可信计算,可信计算,tpm2.0)