TPM2 工作原理及操作 --数据封装(三):使用策略密封数据


目录

前言

 使用策略密封数据

使用tpm2_policypassword密码策略密封数据

使用tpm2_policysecret 策略密封数据

使用tpm2_createpolicy 基于pcr创建简单的授权策略密封数据


前言

以下部分内容来自我对tpm2-tools API文档、《A Practical Guide to TPM 2.0》的翻译和理解

关于TPM2基本原理、特性、密钥、层次、PCR等内容,TPM-JS这个项目有较详细的说明: 

TPM-JShttps://google.github.io/tpm-js/#pg_welcome想自学以及更深入了解的同学可以参考tpm2-tools doc :Home - tpm2-tools

TPM 的外部编程接口规范: https ://trustedcomputinggroup.org/tpm-library-specification/

TPM2.0实用指南 《A Practical Guide to TPM 2.0》:

​​​​​​https://link.springer.com/content/pdf/10.1007/978-1-4302-6584-9.pdf

 使用策略密封数据

了解完前面的授权和会话,现在再了解通过策略启动授权和会话来密封数据。

基于策略的会话授权也是可以密封数据,具体命令工具包含tpm2_policypassword、tpm2_policysecret 、tpm2_createpolicy、tpm2_policypcr、tpm2_policysigned、tpm2_ticket等。

使用tpm2_policypassword密码策略密封数据

在此使用密码和tpm2_policypassword密码策略密封数据,使用 TPM 对象明文身份验证值进行身份验证解封数据。

具体TPM命令流程如下:

1.创建密码策略

tpm2_startauthsession -S session.dat

tpm2_policypassword -S session.dat -L policy.dat

tpm2_flushcontext session.dat

2.使用密码和密码策略创建对象

tpm2_createprimary -C o -c prim.ctx

tpm2_create -g sha256 -G aes -u key.pub -r key.priv -C prim.ctx -L policy.dat -p testpswd

3.使用明文密码输入进行身份验证

tpm2_load -C prim.ctx -u key.pub -r key.priv -n key.name -c key.ctx

echo "plaintext" > plain.txt

echo "secret iv file." >iv.ctx

tpm2_encryptdecrypt -c key.ctx -o encrypt.out -p testpswd plain.txt -t iv.ctx

tpm2_flushcontext session.dat

4.使用密码和策略进行身份验证

tpm2_startauthsession --policy-session -S session.dat

tpm2_policypassword -S session.dat -L policy.dat

tpm2_encryptdecrypt -d -c key.ctx -o decrypt.out encrypt.out -p session:session.dat+testpswd -t iv.ctx

tpm2_flushcontext session.dat

使用tpm2_policysecret 策略密封数据

tpm2_policysecret将密封对象的 auth 值与所有者层次结构密码相关联。步骤如下:

1、启动试用身份验证会话并运行tpm2_policysecret 以创建仅在提供所有者层次结构身份验证值时才能满足的策略。

2、启动一个真正的策略会话并提供所有者层次结构身份验证值。

3、 向unseal工具提供满足所有者层次结构身份验证的 policysecret 中的会话输入。

4、 如果策略得到满足,解封应该成功。

具体TPM命令流程如下:

1、生成绑定到所有者层次结构秘密的策略

tpm2_startauthsession -S session.ctx

tpm2_policysecret -S session.ctx -c o -L secret.policy

tpm2_flushcontext session.ctx

2、使用策略创建 TPM 对象

tpm2_createprimary -Q -C o -g sha256 -G rsa -c prim.ctx

tpm2_create -Q -g sha256 -u sealing_key.pub -r sealing_key.priv -i- \

  -C prim.ctx -L secret.policy <<< "SEALED-SECRET"

tpm2_load -C prim.ctx -u sealing_key.pub -r sealing_key.priv \

  -c sealing_key.ctx

3、满足策略并解封秘密

tpm2_startauthsession --policy-session -S session.ctx

tpm2_policysecret -S session.ctx -c o -L secret.policy

tpm2_unseal -p "session:session.ctx" -c sealing_key.ctx

输出:SEALED-SECRET

tpm2_flushcontext session.ctx

使用tpm2_createpolicy 基于pcr创建简单的授权策略密封数据

tpm2_createpolicy (1) - 基于多个启用的PCR banks的多个 PCR 索引值创建简单的断言授权策略。

具体TPM命令流程如下:

tpm2_createprimary -c primary.ctx -Q

tpm2_pcrread -Q -o pcr.bin sha256:0,1,2,3

tpm2_createpolicy -Q --policy-pcr -l sha256:0,1,2,3 -f pcr.bin -L pcr.policy

echo 'secret' | tpm2_create -C primary.ctx -L pcr.policy -i-\

-u seal.pub -r seal.priv -c seal.ctx -Q

tpm2_unseal -c seal.ctx -p pcr:sha256:0,1,2,3

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大大大飞啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值