You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Golang中TPM2 RSA解密报错inconsistent attributes求助

问题分析与解决方案

你的解密失败核心原因是密钥模板中设置了不兼容的属性,具体问题和修复步骤如下:

1. 错误根源:FlagRestricted属性的冲突

你在密钥模板中添加了tpm2.FlagRestricted属性,这个属性的作用是限制密钥只能用于:

  • 解密由TPM父密钥加密的对称密钥(密钥封装场景)
  • 执行绑定操作(Binding)

而你使用的是普通RSA OAEP加解密(加密任意明文),Restricted属性会导致TPM拒绝这种解密请求,抛出inconsistent attributes错误。

2. 次要问题:不必要的对称算法配置

你的密钥模板中指定了Symmetric字段(AES-256-CFB),这个配置是用于密钥封装场景(用RSA密钥加密对称密钥),但普通RSA OAEP加解密不需要这个配置,应该将其设为nil。

修改后的密钥模板代码

var (
    publicKeyTemplate = tpm2.Public{
        Type:       tpm2.AlgRSA,
        NameAlg:    tpm2.AlgSHA256,
        // 移除FlagRestricted属性
        Attributes: tpm2.FlagFixedTPM | tpm2.FlagFixedParent | tpm2.FlagSensitiveDataOrigin | tpm2.FlagUserWithAuth | tpm2.FlagDecrypt | tpm2.FlagNoDA,
        AuthPolicy: nil,
        RSAParameters: &tpm2.RSAParams{
            // 普通RSA OAEP加解密不需要对称算法,设为nil
            Symmetric: nil,
            KeyBits: 2048,
        },
    }
)

额外注意事项

  • 修改模板后,需要重新创建并持久化密钥(删除旧的持久化密钥,再运行createRSAKey)
  • 确保解密时使用的owner密码和创建密钥时一致
  • 加密和解密的AsymScheme参数必须完全匹配(你当前的代码已经做到这一点,无需修改)

内容的提问来源于stack exchange,提问作者conficker7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 02:50:40