Bug#931238: [openpgp] Bug#931238: hot armor: please drop "Version: " header

ilf ilf at zeromail.org
Mon Jul 8 11:48:52 BST 2019


Peter Gutmann:
> "An attacker knowing that you're running out- of-date software" barely 
> qualifies as a threat - they can just try and attack you anyway - and 
> I can't see what other purpose it serves. 

We had this debate three years ago over on gnupg-devel.

dkg posted a patch - which was merged in upstream GnuPG:

> The version of GnuPG in use is not particularly helpful.  It is not
> cryptographically verifiable, and it doesn't distinguish between
> significant version differences like 2.0.x and 2.1.x.
> Additionally, it leaks metadata that can be used to distinguish users
> from one another, and can potentially be used to target specific
> attacks if there are known behaviors that differ between major
> versions.
> It's probably better to take the more parsimonious approach to
> metadata production by default.

https://lists.gnupg.org/pipermail/gnupg-devel/2016-August/031424.html

These were the original arguments:

> Since "Pervasive Monitoring Is an Attack" [2], let's minimize metadata 
> as much as possible, especially if it's unencrypted *and* not 
> cryptographically verifiable.
> The riseup.net "OpenPGP Best Practices" [3] refer to a gpg.conf [4] 
> which already implements "no-emit-version". I and many other people have 
> been using this with many implementations on many plattforms for a long 
> time, without any problems. So I see no technical reason against the 
> proposal.
> Even RFC 4880 lists no pressing reason for including this by default:
>> The Armor Headers are pairs of strings that can give the user or the 
>> receiving OpenPGP implementation some information about how to decode 
>> or use the message. [5]
> I can't see how "Version: GnuPG v2" tells me or an OpenPGP 
> implementation "how to decode or use the message".
> Let's just drop it.
> 2. https://tools.ietf.org/html/rfc7258
> 3. https://riseup.net/en/security/message-security/openpgp/best-practices
> 4. https://raw.githubusercontent.com/ioerror/duraconf/master/configs/gnupg/gpg.conf
> 5. https://tools.ietf.org/html/rfc4880#page-55

https://lists.gnupg.org/pipermail/gnupg-devel/2016-August/031428.html

After it was merged, a pratical attack was published:

> Werner Koch:
>> You are right, the "Version:" has no technical meaning.
>> I just pushed dkg's patch to master.
> Thanks again for this. Even after the decision, I want to add a 
> real-world example of why this change helps against de-anonymization:
>> Both "French Maid" and Force (operating as "Nob") used the exact same 
>> brand of PGP software, a free brand called GnuPG. There are different 
>> brands of PGP software so it is noteworthy that both Force (operating 
>> as "Nob") and "French Main" used the same brand. Not only did Force 
>> and "French Maid" both use the same brand of PGP software, they also 
>> both used the same outdated version of that software, 1.4.12. Version 
>> 1.4.12 was released on January 2012, and was replaced with a new 
>> version by December 2012, and was one of several versions of GnuPG 
>> software. As such, both "French Maid" and Force (as Nob) were using 
>> the specific, older version of the GnuPG software, and neither of them 
>> replaced it with the other (free) version of GnuPG that came out 
>> thereafter. […]
>> There are also additional similarities between Force's (Nob's) and 
>> "French Maid's" PGP patterns. Both "Nob" and "French Maid" left 
>> certain default settings on their PGP software. For one thing, both 
>> "French Maid" and Force (Nob) left a "tag" that appeared on every 
>> message authored from their PGP key revealing the brand and version of 
>> PGP software they were using. This is akin to, for example, leaving 
>> the phrase "sent from my iPhone" on the bottom of one's emails but 
>> with greater detail: it would be akin to leaving a phrase like "sent 
>> from my iPhone 6 iOS 8.0.1." Leaving this "tag" on typically reveals 
>> that one is dealing with a fairly inexperienced user of PGP, because 
>> someone that regularly uses PGP to communicate would normally have 
>> changed their settings to omit this tag.
> http://www.justice.gov/sites/default/files/opa/press-releases/attachments/2015/03/30/criminal_complaint_forcev2.pdf
> http://www.networkworld.com/article/2904395/microsoft-subnet/mistakes-that-betrayed-anonymity-of-former-dea-agent-and-silk-road-investigator.html

After that, the OpenPGP "Version:" header was dropped across the 
ecosystem:

GnuPG: https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=commit;h=c9387e41db7520d176edd3d6613b85875bdeb32c
GPGTools: https://github.com/GPGTools/MacGPG2/commit/831c2ed77d2ce88134ad4d689414051dc99dc3b3
SKS: https://bitbucket.org/skskeyserver/sks-keyserver/commits/4af75b3526d9

To sum up:

- there is no valid technical reason for it
- there are active attacks which have put people in jail
- it's now ecosystem standard not to generate it

So please:

1. let's drop it by default in other implementations, like hOpenPGP
2. let's edit rfc4880bis to "SHOULD NOT emit a Version: header"

-- 
ilf

If you upload your address book to "the cloud", I don't want to be in it.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://alioth-lists.debian.net/pipermail/pkg-haskell-maintainers/attachments/20190708/269f1eea/attachment.sig>


More information about the Pkg-haskell-maintainers mailing list