tpm2-tools相关实验

系统背景

  1. 操作系统:Ubuntu 18.04.4 LTS
  2. tpm模拟器:ibmtpm 1332
  3. tpm协议栈中:tpm2-tss 2.1.0
  4. tpm守护进程:tpm2-abrmd 2.0.2
  5. tpm2 tools 3.x

注:旧版的tpm2-tools命令与tpm2-tools4.0以上命令有所不同,其中变换参考链接 https://build.opensuse.org/package/view_file/openSUSE:Factory/tpm2.0-tools/tpm2.0-tools.changes?expand=0

实验一:利用hash 函数生产文件度量值

  1. 利用tpm2-tools命令,对数据文件生成hash值并修改文件进行对比。
tpm2_hash -H e -g sha1 -o hash.bin -t ticket.bin data.txt
  1. 利用命令tpm2_hash对data.txt进行度量,其中利用sha1哈希算法,生成哈希文件为hash.bin。之后,将data.txt文件进行修改,重新测试,结果显示hash值不同。

  2. 实验步骤图和结果图
    在这里插入图片描述
    文件修改前后 hash值不同;

实验二 利用tpm实现对文件的加解密

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

  • 操作过程:

  1. 利用takeownership实现对TPM所有权访问认证设置。利用TPM拥有权来实现证明现有身份验证机密的知识来对所有权进行身份验证。其中-o 为作为所有者密码,-e为认可密码,-l为锁定密码。
tpm2_takeownership -o 1 -e 2 -l 3
  1. 创建主键对象,以使用创建的对象生成秘钥。利用-K后参数11作为对象密码,其秘钥为RSA秘钥且哈希函数为SHA256。并将对象保存在文件po.ctx。其中-p后为认可密码。
tpm2_createprimary -H e -K 11 -g 0x000b -G 0x0001 -C po.ctx -P 2
  1. 在主键背景下,创建一个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
  1. 利用tp2_load命令使用认证秘钥加载创建的RSA秘钥,生成秘钥加载的对应信息obj.ctx。
tpm2_load -c po.ctx -P 11 -u key.pub -r key.priv -n key.name -C obj.ctx
  1. 利用tpm2_rsaencrypt加密函数利用创建的秘钥对文件进行加密,生成加密文件data.encrypt
tpm2_rsaencrypt -c obj.ctx -o data.encrypt test.txt
  1. 最后利用tpm2_rsadecrypt解密函数对加密的输出进行解密,生成解密后的文件data.decrypt。
tpm2_rsadecrypt -c obj.ctx -I data.encrypt -P 111 -o data.decrypt
  1. 实验步骤和截图

    创建主键对象
    生成RSA秘钥并显示RSA秘钥信息
    加载RSA秘钥

在这里插入图片描述

利用RSA秘钥对文件进行加解密
在这里插入图片描述

实验三:利用TPM实现对文件进行签名,实现对文件完整性认证。

  1. 利用takeownership实现对TPM所有权访问认证设置。
tpm2_takeownership -o 1 -e 1 -l 1
  1. 创建主键对象。
tpm2_createpriimay -H e -K 11 -g 0x000b -G 0x000a -C po.ctx -P 1
  1. 生成RSA秘钥。
tpm2_create -c po.ctx -P 11 -K 111 -g 0x000b -G 0x0001 -u key.pub -r key.priv
  1. 利用tp2_load命令使用认证秘钥加载创建的RSA秘钥,生成秘钥加载的对应信息obj.ctx。
tpm2_load -c po.ctx -P 11 -u key.pub -r key.priv -n key.name -C obj.ctx
  1. 生成消息文件。
echo “my message”>message.dat
  1. 使用tpm2_sign利用加载的RSA秘钥对消息文件进行签名。生成签名文件sig.rssa。
tpm2_sign  -c obj.ctx -P 111 -g 0x000b -s sig.rssa -m message.dat
  1. 使用tmp2_verfysignature函数对文件和签名信息的一致性进行确认。
tpm2_verfysignature -c obj.ctx -g 0x000b -m message.dat -s sig.rssa -t tk.sig
  1. 实验步骤和过程

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 6
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值