如何在 TPM 中存储 GPG 密钥

如何在 TPM 中存储 GPG 密钥

我正在研究 GPG 机制来对我的 debian 软件包进行代码签名。我已经生成了主密钥对和从属密钥对来对我的软件包进行签名。现在我想将我的密钥对存储在 TPM 硬件中而不是密钥环中。稍后我想删除我的密钥环并从 TPM 中检索密钥。

有人能解释一下在 TPM 中安全地存储和检索代码签名密钥的机制是什么,以实现安全代码签名吗?

答案1

GPG 从 2.3 版开始,对 TPM 提供原生支持,请参阅

使用带有 GnuPG 2.3 的 TPM

这是通过名为 的外部程序在 gpg-agent 中处理的tpm2daemon。在 OpenSuse 上,要安装的软件包名为gpg2-tpm。Ubuntu(从 Noble 开始)附带GPG 2.4.4

答案2

对于 GnuPG 2.x,您需要:

  1. gpgscdaemon程序(智能卡处理程序组件)中提供原生 TPM2 支持,
  2. scdaemon或使用 TPM2 的替代程序,
  3. 或者使用 PKCS#11 模块的替代scdaemon程序,进而使用 TPM2 的 PKCS#11 模块。

目前,选项 #1 和 #2 不可行(所需的 scdaemon 替代品尚不存在)。选项 #3 应该是可行的,使用gnupg-pkcs11-scdtpm2-pkcs11

然而,后一个项目仍然处于密集开发中,其用途在未来几周内可能会发生很大变化,所以我现在还不能开始为它编写说明...当 tpm2-pkcs11 稳定下来后,我可能会稍后回到这个帖子。

相关内容