tpm - 如何在不需要另一个 NvIndex 的情况下保护 NvIndex 不被重新创建
问题描述
TL;DR:(如何)是否可以确保 NvIndex 的名称在每次创建时都会更改而不需要任何其他对象?
我想在 TPM (v2) 中创建一个应受 TPM_NT_PIN_FAIL NvIndex 保护的密钥。我知道该怎么做,但我认为攻击者可能能够删除 NvIndex 并在 pinCount 设置为零或非常高的 pinLimit 的情况下重新创建它。
据我所知,重新创建 NvIndex 并不会改变他的名字,因此仍然可以满足依赖于 NvIndex 的策略。我有一个想法如何确保每次创建 NvIndex 的名称都会更改,但这需要第二个 NvIndex。
这是我目前的想法:
- 创建一个 NvIndex 作为 TPM_NT_COUNTER
- 增加计数器
- 读取计数器值
创建一个策略以允许对 NvIndex 进行读取访问,但只允许一次写入:
策略会话 A:Policy_CC NV_READ
Policy Session B:Policy_Nv 计数器索引的值必须等于其当前值,Policy_NvWritten TPM_NT_PIN_FAIL NvIndex 不能设置 TPMA_NV_WRITTEN 标志,Policy_CC NV_WRITE
限制访问 NvIndex 的策略:Policy_Or Policy Session A、Policy Session B
- 使用密码和策略创建 NvIndex
- 将 pinCount 和 pinLimit 写入 NvIndex
- 增加计数器
可能需要创建许多这样的键,因此每个键需要两个 NvIndex 可能会成为问题。
解决方案
推荐阅读
- javascript - Puppeteer - 使用“--allow-file-access-from-files”通过 XMLHttpRequest 加载本地文件不起作用
- scip - SCIP 6.0 无法读取的 SMPS 文件
- alias - 带有选项的别名的 kubectl bash 补全
- javascript - pug 迭代 - 循环遍历具有动态长度的对象属性
- user-interface - 在 wxpython 面板上不正确地刷新 GUI 图
- windows - ipython启动很慢,有没有办法加速呢?
- python - Python tensorflow 复数运算
- php - 如何将 $arr['news'] 更改为 echo
- c# - WPF 应用程序无限进度条不显示,但进程正在后台运行
- ms-access - 更改子报表记录源时出错:“您输入的表达式对属性表单/报表的引用无效”