<div dir="ltr">Hello Everyone,<div><br></div><div>I would like to protect my pgp keys using the TPM2 installed on my laptop</div><div>I was hence reading this article:</div><div><br></div><div><a href="https://gnupg.org/blog/20210315-using-tpm-with-gnupg-2.3.html">https://gnupg.org/blog/20210315-using-tpm-with-gnupg-2.3.html</a><br></div><div><br></div><div>but I'm not able to get the  `card-no: TPM-Protected` attribute for my key </div><div>so I guess something is going wrong and the key is not being protected using the TPM </div><div><br></div><div>I opened a support request also here: <a href="https://crypto.stackexchange.com/questions/108897/cannot-protect-gpg-key-using-tpm2-on-ubuntu-22-04">https://crypto.stackexchange.com/questions/108897/cannot-protect-gpg-key-using-tpm2-on-ubuntu-22-04</a></div><div><br></div><div>Please find below the info on what I did</div><div><br></div><div>I'm trying to protect a GPG key using the TPM2 available on my laptop, but I'm not having any success. Probably I'm doing something wrong, but I cannot figure out what this is.<br>My system is running `Ubuntu 22.04`<br><br>Here what I did:<br><br>## Verify TPM2 is available and enabled in my Linux system:<br>- check tpm hw is detected at boot time:<br>```<br>$ dmesg | grep -i tpm <br>[    0.327325] kernel: tpm_tis STM0125:00: 2.0 TPM (device-id 0x0, rev-id 78)<br>```<br>- check tpm devices are available and have the correct owners:<br>```<br>$ ls -l /dev/tpm*<br>crw-rw---- 1 tss tss  10,   224 nov 27 07:42 /dev/tpm0<br>crw-rw---- 1 tss tss  253, 65536 nov 27 07:42 /dev/tpmrm0<br>```<br>- my user is member of the `tss` group<br><br>- installed the following packages:<br>```<br>clevis-tpm2<br>libnatpmp1<br>libtss2-tcti-swtpm0<br>tpm-udev<br>tpm2-abrmd<br>tpm2-openssl<br>tpm2-tools<br>libtpm2-pkcs11-tools<br>libtpm2-pkcs11-1 <br>```<br><br>- loaded the tpm module:<br>```<br>$ modprobe tpm_tis_spi<br>$ lsmod | grep tpm<br>tpm_tis_spi            20480  0<br>```<br><br>- check the tpm broker is up and running<br>```<br>root@NR054-UB:/lib/modules/6.2.0-37-generic# systemctl status tpm2-abrmd<br>● tpm2-abrmd.service - TPM2 Access Broker and Resource Management Daemon<br>     Loaded: loaded (/lib/systemd/system/tpm2-abrmd.service; enabled; vendor preset: enabled)<br>     Active: active (running) since Mon 2023-11-27 07:42:29 CET; 4 days ago<br>   Main PID: 1086 (tpm2-abrmd)<br>      Tasks: 6 (limit: 18082)<br>     Memory: 1.4M<br>        CPU: 9.563s<br>     CGroup: /system.slice/tpm2-abrmd.service<br>             └─1086 /usr/sbin/tpm2-abrmd<br>```<br><br>I built gpg version `2.4` (as the default gpg version on `ubuntu 22.04` is `2.2`)<br>and set the env variable `GNUPGHOME=~/gpg2.tmp/` to use a "clean" keyring<br>```<br>$ gpg2 --version<br>gpg (GnuPG) 2.4.3<br>libgcrypt 1.10.2<br>Copyright (C) 2023 g10 Code GmbH<br>License GNU GPL-3.0-or-later <<a href="https://gnu.org/licenses/gpl.html">https://gnu.org/licenses/gpl.html</a>><br>This is free software: you are free to change and redistribute it.<br>There is NO WARRANTY, to the extent permitted by law.<br><br>Home: /home/<my-username>/gpg2.tmp<br>Supported algorithms:<br>Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA<br>Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,<br>        CAMELLIA128, CAMELLIA192, CAMELLIA256<br>Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224<br>Compression: Uncompressed, ZIP, ZLIB<br>```<br><br>## Try to protect a test gpg key using TPM<br><br>So far so good. As I got no relevant error or warning in setting up all the previous steps, I continued following the example from:<br><br>[1] <a href="https://gnupg.org/blog/20210315-using-tpm-with-gnupg-2.3.html">https://gnupg.org/blog/20210315-using-tpm-with-gnupg-2.3.html</a><br><br>[2] <a href="https://www.monperrus.net/martin/7-things-to-do-with-your-TPM-on-Linux">https://www.monperrus.net/martin/7-things-to-do-with-your-TPM-on-Linux</a><br><br>- started the tpm2daemon:<br>```<br>tpm2daemon --log-file ~/gpg2.tmp/tpm2daemon.log --daemon --debug-level 1000<br>```<br><br>BUT, when I try move the key to the TPM I do not get the<br>` card-no: TPM-Protected ` attribute to the key<br><br>```<br>$ /opt/gpg24/bin/gpg2 --edit-key <a href="mailto:tpm.test@test.com">tpm.test@test.com</a> <br>gpg (GnuPG) 2.4.3; Copyright (C) 2023 g10 Code GmbH<br>This is free software: you are free to change and redistribute it.<br>There is NO WARRANTY, to the extent permitted by law.<br><br>Secret key is available.<br><br>sec  rsa2048/2E0718AD3A17F52E<br>     created: 2023-12-02  expires: 2026-12-01  usage: SC  <br>     trust: ultimate      validity: ultimate<br>[ultimate] (1). <a href="mailto:tpm.test@test.com">tpm.test@test.com</a><br><br>gpg> keytotpm<br>Really move the primary key? (y/N) y<br>                                    <br>sec  rsa2048/2E0718AD3A17F52E<br>     created: 2023-12-02  expires: 2026-12-01  usage: SC  <br>     trust: ultimate      validity: ultimate<br>[ultimate] (1). <a href="mailto:tpm.test@test.com">tpm.test@test.com</a><br>```<br><br>What I'm I doing wrong? Any hint on how to debug this?<br><br></div><div>Ciao e grazie</div><div>Sergio</div><div><br clear="all"><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">preferisco ammazzare il tempo,<br>preferisco sparare cazzate,<br>preferisco fare esplodere una moda,<br>preferisco morire d'amore.<br>(Caparezza)<br><br></div></div></div>