Gentoo Archives: gentoo-dev

From: "Robin H. Johnson" <robbat2@g.o>
To: gentoo-dev@l.g.o
Subject: [gentoo-dev] Manifest2 hashes: validation of single hash per MANIFESTx_REQUIRED_HASH
Date: Wed, 15 Nov 2017 21:02:15
Message-Id: robbat2-20171115T195029-974167443Z@orbis-terrarum.net
In Reply to: Re: [gentoo-dev] Re: Manifest2 hashes, take n+1-th by R0b0t1
1 Replying to your original question here, to repeat the answer I emphasised
2 before, along with significantly more detail in the history of Portage hashes
3 (pulled from my notes back to GLEP57 and some minor updates).
4
5 On Wed, Nov 08, 2017 at 12:57:49PM -0600, R0b0t1 wrote:
6 > These posts are concerning because it looks like someone became stir
7 > crazy and invented a problem to solve. The changes proposed to date
8 > have remained poorly justified, and no one has addressed the concern
9 > that multiple hashes *is* actually more secure.
10 >
11 > If it was deemed necessary at one point, what justification was used?
12 > I.e. https://en.wikipedia.org/wiki/Wikipedia:Chesterton's_fence.
13 On Wed, Nov 15, 2017 at 11:47:41AM -0600, R0b0t1 wrote:
14 > Does the existence of a decision mean I would need to contact the trustees
15 > if I feel the changes have not been adequately justified?
16
17 In GLEP59, I referenced a paper by Joux [J04], in which it was shown that a
18 concatenation of multiple hashes is NOT much more secure against collisions
19 than the strongest of the individual hashes.
20
21 That was cited as original logic in GLEP59 for the removal of SHA256 (that
22 removal was never implemented). WHIRLPOOL & SHA512 were kept out of an
23 abundance of caution at the time, mostly to implementation bugs in hashes (as I
24 have referenced in the related threads since).
25
26 Your logic regarding removing something you think I don't understand is wrong
27 (Chesterton's Fence):
28
29 If you dig in the history of Portage, you will see that it's always been valid,
30 to have just a SINGLE hash for each file in a Manifest. Required hashes has
31 NEVER contained more than one hash.
32
33 If multiple hashes are present, then Portage will validate all of them, but a
34 potential attacker can still modify the Manifest and have only a single hash
35 listed. Exactly which hash MUST be present has changed over time.
36
37 Manifest1 is very old, and was stored in $CAT/$PN/files/digest-$P
38 Manifest2 is the current $CAT/$PN/Manifest (and soon in more locations per MetaManifest).
39
40 1999/xx/xx: Portage starts with Manifest1 format, MD5-only (CVS)
41 2004/08/25: Portage gets SHA1 support in Manifest1, but is problematic, SHA1 generation manual only.
42 https://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-src/portage/pym/portage_checksum.py?revision=1.1&view=markup
43 https://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-src/portage/pym/portage.py?r1=1.485&r2=1.486
44 2005/12/19: Portage Manifest1 supports MD5,SHA1,SHA256,RMD160, but still requires only a single hash present. Generates MD5+SHA256+RMD160.
45 https://gitweb.gentoo.org/proj/portage.git/commit/?id=cd3e3775966a9f58aebb91f58cbdb5903faad3de
46 2006/03/24: Manifest2 introduced.
47 https://gitweb.gentoo.org/proj/portage.git/commit/?id=f993747ca501e8a70d6f6174711149a172cfc3c2
48 2007/01/20: MANIFEST2_REQUIRED_HASH introduced, SHA1, it must be present & pass
49 https://gitweb.gentoo.org/proj/portage.git/commit/?id=e768571187d1655fbb558c23d61fa2983e48e411
50 2007/12/18: MANIFEST1_REQUIRED_HASH introduced, MD5, it must be present & pass
51 https://gitweb.gentoo.org/proj/portage.git/commit/?id=d9b10deaa03ce174d5ccc3b59c477549ad87e884
52 2008/02/28: Manifest1 support dropped.
53 https://gitweb.gentoo.org/proj/portage.git/commit/?id=66940e1f2f0549ee8f01dad59016e168105e193d
54 2011/10/02: GLEP59 implemented, MANIFEST2_REQUIRED_HASH changes to SHA256
55 https://gitweb.gentoo.org/proj/portage.git/commit/?id=c8cd3a985cc529299411d7343a11004b7d1330ef
56 2017/06/15: MANIFEST2_REQUIRED_HASH changes to SHA512
57 https://gitweb.gentoo.org/proj/portage.git/commit/?id=e6abcc0b7cbdca481862a5c7cca946c01c471ffb
58
59 [J04] Joux, Antoie. (2004). "Multicollisions in Iterated Hash Functions - Application to Cascaded Constructions;"
60 Proceedings of CRYPTO 2004, Franklin, M. (Ed); Lecture Notes in Computer Science 3152, pp. 306-316.
61 Available online from: http://web.cecs.pdx.edu/~teshrim/spring06/papers/general-attacks/multi-joux.pdf
62
63 --
64 Robin Hugh Johnson
65 Gentoo Linux: Dev, Infra Lead, Foundation Asst. Treasurer
66 E-Mail : robbat2@g.o
67 GnuPG FP : 11ACBA4F 4778E3F6 E4EDF38E B27B944E 34884E85
68 GnuPG FP : 7D0B3CEB E9B85B1F 825BCECF EE05E6F6 A48F6136

Attachments

File name MIME type
signature.asc application/pgp-signature

Replies