On 08/06/17 22:33, Stefan Claas wrote: > I did a test today with Enigmail and with TOFU in command line mode. > I posted 3 messages with a fantasy name to a Usenet test group where > the 3rd message was signed with a fake key and Enigmail showed me this: > > UNTRUSTED Good signature from Ernst Mustermann <e...@example.com> > Key ID: 0x4608CFA2 / Signed on: 08.06.17, 21:07 > > UNTRUSTED Good signature from Ernst Mustermann <e...@example.com> > Key ID: 0x4608CFA2 / Signed on: 08.06.17, 21:08 > > UNTRUSTED Good signature from Ernst Mustermann <e...@example.com> > Key ID: 0x4608CFA2 / Signed on: 08.06.17, 21:17 > > (It's the usual message under macOS with the blue bar. Note: with auto > key retrival on.) > > Then i downloaded all messages run them through GnuPG and on the first > message TOFU already told me that there are 3 equal email addresses!
I don't understand what you mean by "there are 3 equal email addresses". I don't know what you expected either. But I spent some time doing a little test of my own. Hopefully by reading along with what I did, it becomes clear how stuff works and to what extent Enigmail can already work with TOFU even though it doesn't really support it. TL;DR: Enigmail can correctly identify "genuine" signatures by awarding them a green bar with "Good signature". Fakes can be spotted by the fact they only get the blue "UNTRUSTED Good signature". A little side note: since plaintext mails don't support much formatting, the following is a tad bit hard to read. If I could have marked the pieces with console output with a more distinguishing formatting, the mail would have been a lot easier to read, but alas. I created two keys bound to an existing e-mail address. (Note that the address will not accept mail from the internet, only from within my local network.) I will consider one key to be the "genuine" article, and one key to be fake. Using Thunderbird and Enigmail, I sent myself two messages with either key. One message is PGP/MIME. But since that is not pleasant to work with on the command line and I wanted to do some command line stuff as well, I also sent a message with an inline signature, which I could then easily export to a file. So all in all, I have four messages: one PGP/MIME from the real key, one inline from the real key, one PGP/MIME from the fake key, and one inline from the fake key. I then moved my real ~/.gnupg home directory out of the way and started with a maiden directory containing just gpg.conf. gpg.conf contains "trust-model tofu+pgp" (and nothing else). Then I did the following steps: - Using Thunderbird, open mail considered genuine Yellow bar, "Unverified signature", no key - Import genuine key - Go back to Thunderbird, re-open message: Blue bar, "UNTRUSTED Good signature" - Go to command line: ---------------------------8<---------------->8--------------------------- $ gpg2 -k test...@butters.digitalbrains.com pub rsa2048 2017-06-21 [SC] [expires: 2019-06-21] ABEA7F4D39F72D2F15228F1206B2298382E57EFB uid [marginal] Test Real Mail <test...@butters.digitalbrains.com> sub rsa2048 2017-06-21 [E] [expires: 2019-06-21] ---------------------------8<---------------->8--------------------------- Marginal validity, per documentation for --tofu-default-policy auto. Marginal validity is not enough for positively verifying signature validity. Let's set tofu-policy to "good". ---------------------------8<---------------->8--------------------------- $ gpg2 --tofu-policy good ABEA7F4D39F72D2F15228F1206B2298382E57EFB gpg: Changing TOFU trust policy for binding <key: ABEA7F4D39F72D2F15228F1206B2298382E57EFB, user id: Test Real Mail <test...@butters.digitalbrains.com>> from auto to good. ---------------------------8<---------------->8--------------------------- - Go back to Thunderbird, re-open message: Green bar, "Good signature" - Open second, inline signed message: Green bar, "Good signature" - To the command line! Check inline message: ---------------------------8<---------------->8--------------------------- $ gpg2 -d inline-genuine.asc This is a signed mail from the account considered "genuine" (inline signature). gpg: Signature made Wed 21 Jun 2017 17:37:46 CEST gpg: using RSA key ABEA7F4D39F72D2F15228F1206B2298382E57EFB gpg: Good signature from "Test Real Mail <test...@butters.digitalbrains.com>" [full] gpg: test...@butters.digitalbrains.com: Verified 2 signatures in the past 9 minutes. Encrypted 0 messages. ---------------------------8<---------------->8--------------------------- Ah, good. The two signatures are the two mail messages. Note any signature is always only counted once (it keeps a database of verified signatures for that purpose). - Go to Thunderbird, open "fake" message Yellow bar, "Unverified signature", no key - Import fake key - Go to Thunderbird, open "fake" message Blue bar, "UNTRUSTED Good signature" Ah, good, it is not considered a "Good signature" (which I would have called "Valid signature" to avoid confusion with "UNTRUSTED Good signature" where "Good" means "correct" rather than "valid"). - Let's take a look at what happens if we look at the inline sig by the fake key on the command line: ---------------------------8<---------------->8--------------------------- $ gpg2 -d inline-fake.asc This is a signed mail from the account considered "fake" (inline signature). gpg: Signature made Wed 21 Jun 2017 17:43:17 CEST gpg: using RSA key B0E16AFEC0700656231ACCC34FC8B80F5FF212AE gpg: Good signature from "Test Real Mail <test...@butters.digitalbrains.com>" [undefined] The email address "test...@butters.digitalbrains.com" is associated with 2 keys! Please indicate whether this email address should be associated with key B0E16AFEC0700656231ACCC34FC8B80F5FF212AE or whether you think someone is impersonating "test...@butters.digitalbrains.com". This key's user IDs: Test Real Mail <test...@butters.digitalbrains.com> (policy: auto) Statistics for keys with the email address "test...@butters.digitalbrains.com": B0E1 6AFE C070 0656 231A CCC3 4FC8 B80F 5FF2 12AE (this key): Encrypted 0 messages. Messages verified over the past 1 day: 2. ABEA 7F4D 39F7 2D2F 1522 8F12 06B2 2983 82E5 7EFB (policy: good): Encrypted 0 messages. Messages verified over the past 1 day: 2. Normally, an email address is associated with a single key. However, people sometimes generate a new key if their key is too old or they think it might be compromised. Alternatively, a new key may indicate a man-in-the-middle attack! Before accepting this association, you should talk to or call the person to make sure this new key is legitimate. (G)ood, (A)ccept once, (U)nknown, (R)eject once, (B)ad? ---------------------------8<---------------->8--------------------------- So while Enigmail doesn't really support TOFU, merely not assigning validity to wrong keys (which would be really bad), the command line interface will immediately be very verbose about this situation. Let's confirm that this is indeed an impostor by answering with a b for Bad. ---------------------------8<---------------->8--------------------------- gpg: test...@butters.digitalbrains.com: Verified 2 signatures in the past 2 minutes. Encrypted 0 messages. gpg: WARNING: We do NOT trust this key! gpg: The signature is probably a FORGERY. ---------------------------8<---------------->8--------------------------- Let's verify the same message again: ---------------------------8<---------------->8--------------------------- $ gpg2 -d inline-fake.asc This is a signed mail from the account considered "fake" (inline signature). gpg: Signature made Wed 21 Jun 2017 17:43:17 CEST gpg: using RSA key B0E16AFEC0700656231ACCC34FC8B80F5FF212AE gpg: Good signature from "Test Real Mail <test...@butters.digitalbrains.com>" [never] gpg: test...@butters.digitalbrains.com: Verified 2 signatures in the past 8 minutes. Encrypted 0 messages. gpg: WARNING: We do NOT trust this key! gpg: The signature is probably a FORGERY. ---------------------------8<---------------->8--------------------------- GnuPG has indeed set the --tofu-policy for this key to "bad". - Open a fake message again in Thunderbird: Blue bar, "UNTRUSTED Good signature" Luckily it's still not assigning green "Good signature", but seeing how the validity of this key is now "Never", it could, IMHO, also have said something more explicit than UNTRUSTED. Instead of the default --tofu-default-policy auto, you could also use --tofu-default-policy good. I'll clear out my ~/.gnupg again and add that to my gpg.conf. Then it will look as follows: - Opening mail considered genuine Yellow bar, "Unverified signature", no key - Import genuine key - Go back to Thunderbird, re-open message: Green bar, "Good signature" - Let's have a look at the command line: ---------------------------8<---------------->8--------------------------- $ gpg2 -d inline-genuine.asc This is a signed mail from the account considered "genuine" (inline signature). gpg: Signature made Wed 21 Jun 2017 17:37:46 CEST gpg: using RSA key ABEA7F4D39F72D2F15228F1206B2298382E57EFB gpg: Good signature from "Test Real Mail <test...@butters.digitalbrains.com>" [full] gpg: test...@butters.digitalbrains.com: Verified 2 signatures in the past 20 seconds. Encrypted 0 messages. ---------------------------8<---------------->8--------------------------- Signatures by this key are now considered fully valid, because we have --tofu-default-policy good. - Go to Thunderbird, open "fake" message Yellow bar, "Unverified signature", no key - Import fake key - Go to Thunderbird, open "fake" message Blue bar, "UNTRUSTED Good signature" Ah, but since we already had a key for this e-mail address, TOFU no longer defaults to considering the signature good. We have spotted the fake: a real signature, either from a key seen before or from a key and e-mail address never seen before, would be considered good, but not this one. - Let's take a look what the command line additionally tells us. Open a signature by the real key: ---------------------------8<---------------->8--------------------------- $ gpg2 -d inline-genuine.asc This is a signed mail from the account considered "genuine" (inline signature). gpg: Signature made Wed 21 Jun 2017 17:37:46 CEST gpg: using RSA key ABEA7F4D39F72D2F15228F1206B2298382E57EFB gpg: Good signature from "Test Real Mail <test...@butters.digitalbrains.com>" [undefined] The email address "test...@butters.digitalbrains.com" is associated with 2 keys! Please indicate whether this email address should be associated with key ABEA7F4D39F72D2F15228F1206B2298382E57EFB or whether you think someone is impersonating "test...@butters.digitalbrains.com". This key's user IDs: Test Real Mail <test...@butters.digitalbrains.com> (policy: auto) Statistics for keys with the email address "test...@butters.digitalbrains.com": ABEA 7F4D 39F7 2D2F 1522 8F12 06B2 2983 82E5 7EFB (this key): Encrypted 0 messages. Messages verified over the past 1 day: 2. B0E1 6AFE C070 0656 231A CCC3 4FC8 B80F 5FF2 12AE (policy: auto): Encrypted 0 messages. Messages verified over the past 1 day: 1. Normally, an email address is associated with a single key. However, people sometimes generate a new key if their key is too old or they think it might be compromised. Alternatively, a new key may indicate a man-in-the-middle attack! Before accepting this association, you should talk to or call the person to make sure this new key is legitimate. (G)ood, (A)ccept once, (U)nknown, (R)eject once, (B)ad? ---------------------------8<---------------->8--------------------------- Since we haven't manually marked the real key as "good" yet, as can be seen by "(policy: auto)" above, it will now present this conflict to us. We can now flag the key as good, and it will no longer present us with this conflict: ---------------------------8<---------------->8--------------------------- $ gpg2 -d inline-genuine.asc This is a signed mail from the account considered "genuine" (inline signature). gpg: Signature made Wed 21 Jun 2017 17:37:46 CEST gpg: using RSA key ABEA7F4D39F72D2F15228F1206B2298382E57EFB gpg: Good signature from "Test Real Mail <test...@butters.digitalbrains.com>" [full] gpg: test...@butters.digitalbrains.com: Verified 2 signatures in the past 12 minutes. Encrypted 0 messages. ---------------------------8<---------------->8--------------------------- I verified that marking the tofu-policy as good before even ever encountering the fake key will avoid the message about the conflict and immediately show this latest result. Looking at a "fake" signature on the command line gives: ---------------------------8<---------------->8--------------------------- $ gpg2 -d inline-fake.asc This is a signed mail from the account considered "fake" (inline signature). gpg: Signature made Wed 21 Jun 2017 17:43:17 CEST gpg: using RSA key B0E16AFEC0700656231ACCC34FC8B80F5FF212AE gpg: Good signature from "Test Real Mail <test...@butters.digitalbrains.com>" [undefined] The email address "test...@butters.digitalbrains.com" is associated with 2 keys! Please indicate whether this email address should be associated with key B0E16AFEC0700656231ACCC34FC8B80F5FF212AE or whether you think someone is impersonating "test...@butters.digitalbrains.com". This key's user IDs: Test Real Mail <test...@butters.digitalbrains.com> (policy: auto) Statistics for keys with the email address "test...@butters.digitalbrains.com": B0E1 6AFE C070 0656 231A CCC3 4FC8 B80F 5FF2 12AE (this key): Encrypted 0 messages. Messages verified over the past 1 day: 2. ABEA 7F4D 39F7 2D2F 1522 8F12 06B2 2983 82E5 7EFB (policy: good): Encrypted 0 messages. Messages verified over the past 1 day: 2. Normally, an email address is associated with a single key. However, people sometimes generate a new key if their key is too old or they think it might be compromised. Alternatively, a new key may indicate a man-in-the-middle attack! Before accepting this association, you should talk to or call the person to make sure this new key is legitimate. (G)ood, (A)ccept once, (U)nknown, (R)eject once, (B)ad? ---------------------------8<---------------->8--------------------------- Let's choose b. From now on verifying a bad signature gives: ---------------------------8<---------------->8--------------------------- $ gpg2 -d inline-fake.asc This is a signed mail from the account considered "fake" (inline signature). gpg: Signature made Wed 21 Jun 2017 17:43:17 CEST gpg: using RSA key B0E16AFEC0700656231ACCC34FC8B80F5FF212AE gpg: Good signature from "Test Real Mail <test...@butters.digitalbrains.com>" [never] gpg: test...@butters.digitalbrains.com: Verified 2 signatures in the past 4 minutes. Encrypted 0 messages. gpg: WARNING: We do NOT trust this key! gpg: The signature is probably a FORGERY. ---------------------------8<---------------->8--------------------------- Good signatures will stay as: ---------------------------8<---------------->8--------------------------- $ gpg2 -d inline-genuine.asc This is a signed mail from the account considered "genuine" (inline signature). gpg: Signature made Wed 21 Jun 2017 17:37:46 CEST gpg: using RSA key ABEA7F4D39F72D2F15228F1206B2298382E57EFB gpg: Good signature from "Test Real Mail <test...@butters.digitalbrains.com>" [full] gpg: test...@butters.digitalbrains.com: Verified 2 signatures in the past 6 minutes. Encrypted 0 messages. ---------------------------8<---------------->8--------------------------- We are no longer bothered about the fake key; it would be a bit annoying if it kept droning on about it after we've already said it was bad. I hope this has given you some more insight into how it works! Peter. -- I use the GNU Privacy Guard (GnuPG) in combination with Enigmail. You can send me encrypted mail if you want some privacy. My key is available at <http://digitalbrains.com/2012/openpgp-key-peter>
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Gnupg-users mailing list Gnupg-users@gnupg.org http://lists.gnupg.org/mailman/listinfo/gnupg-users