我正在研究 GPG 机制来对我的 debian 软件包进行代码签名。我已经生成了主密钥对和从属密钥对来对我的软件包进行签名。现在我想将我的密钥对存储在 TPM 硬件中而不是密钥环中。稍后我想删除我的密钥环并从 TPM 中检索密钥。
有人能解释一下在 TPM 中安全地存储和检索代码签名密钥的机制是什么,以实现安全代码签名吗?
答案1
GPG 从 2.3 版开始,对 TPM 提供原生支持,请参阅
这是通过名为 的外部程序在 gpg-agent 中处理的tpm2daemon
。在 OpenSuse 上,要安装的软件包名为gpg2-tpm
。Ubuntu(从 Noble 开始)附带GPG 2.4.4
答案2
对于 GnuPG 2.x,您需要:
- gpg
scdaemon
程序(智能卡处理程序组件)中提供原生 TPM2 支持, scdaemon
或使用 TPM2 的替代程序,- 或者使用 PKCS#11 模块的替代
scdaemon
程序,进而使用 TPM2 的 PKCS#11 模块。
目前,选项 #1 和 #2 不可行(所需的 scdaemon 替代品尚不存在)。选项 #3 应该是可行的,使用gnupg-pkcs11-scd和tpm2-pkcs11。
然而,后一个项目仍然处于密集开发中,其用途在未来几周内可能会发生很大变化,所以我现在还不能开始为它编写说明...当 tpm2-pkcs11 稳定下来后,我可能会稍后回到这个帖子。