1 |
On Tuesday, September 13, 2011 04:00:05 Robin H. Johnson wrote: |
2 |
> On Thu, Aug 25, 2011 at 12:23:40AM -0400, Mike Frysinger wrote: |
3 |
> > On Monday, August 22, 2011 15:28:57 Robin H. Johnson wrote: |
4 |
> > > Unresolved items: |
5 |
> > > - commit signing |
6 |
> > > - thin Manifests |
7 |
> > |
8 |
> > how exactly are these two supposed to interact ? the previous discussion |
9 |
> > seemed to miss signing. if devs sign the thin manifests, when we go to |
10 |
> > produce the full manifest for rsync, we invalidate the signature. |
11 |
> |
12 |
> Thin Manifests are not going to be explicitly signed like the current |
13 |
> signatures. |
14 |
> |
15 |
> To summarize this better: |
16 |
> 1. Thin Manifests contain DIST lines, and _nothing_ else. |
17 |
> 1.1. Specifically: no signatures, and esp. not any other files that |
18 |
> appear in Git. |
19 |
|
20 |
for the record, i dont have a problem with thin manifests by themselves |
21 |
|
22 |
> 2. Commits (or pushes [1]) are signed going into Git. |
23 |
> 2.1. Non-signed commits/pushes are REJECTED by git-receive-pack on the |
24 |
> server-side. |
25 |
|
26 |
what and how is it being signed if it isn't the Manifest today ? are you |
27 |
referring to signed tags ? that's the only signing i'm aware of in git itself |
28 |
today, and signed tags would just cause a huge amount of noise ... |
29 |
|
30 |
i'm not terribly interested in possible additions to git if they aren't |
31 |
available for the foreseeable future. |
32 |
|
33 |
> > the other attack we want to prevent is MITM when people sync. in this |
34 |
> > case, someone who syncs over git:// is perpetually vulnerable with thin |
35 |
> > manifests as the attacker can keep recomputing the collisions so that |
36 |
> > the modified tree keeps ending up with the same digests as the public |
37 |
> > one. and the end user never notices without manually reviewing |
38 |
> > everything themselves. |
39 |
> |
40 |
> I don't follow this attack. The commits are signed, and the git:// user |
41 |
> can verify them. |
42 |
|
43 |
my point here was wrt the original thin manifest proposal as Funtoo is using |
44 |
it: Manifest is not signed, and they're relying on the SHA1's that git |
45 |
provides as the foundation of their verification. moving on to the paranoid |
46 |
point that SHA1's are brute-forcible, Funtoo's git:// sync method is |
47 |
vulnerable to a perpetual MITM attack. |
48 |
|
49 |
as for signing, if it's based on the SHA1, then it still doesn't matter. |
50 |
|
51 |
> > well, it sort of does. sha1 has been shown to be weaker than brute |
52 |
> > forcing, |
53 |
> ... |
54 |
> > talking about migrating away from it. and now in 2012, we want to talk |
55 |
> > about migrating purely to it ? |
56 |
> |
57 |
> RESO UPSTREAM(git). It looks like Git will probably migrate to whatever |
58 |
> hash wins the SHA-3 contest. |
59 |
|
60 |
that's fine as long as we don't espouse SHA1's (and any system built upon it) |
61 |
as being secure. so if we do provide anonymous git:// for syncing, we include |
62 |
the aforementioned caveats. |
63 |
|
64 |
as for the devs pushing their signed SHA1's over ssh to the machine which |
65 |
produces signed Manifest2 files (as we have today), that reduces the attack |
66 |
surface to that server machine (ignoring the obvious surface of every dev |
67 |
machine where people do their commit/sign/push). which isnt as big a deal. |
68 |
|
69 |
> [1] Current state of commit signing, 2011/09/13 05:00 UTC |
70 |
> There's a variation of commit signing presently being actively discussed |
71 |
> on the Git mailing list. It's making a LOT more progress than previous |
72 |
> signing discussions. Rather than signing blobs or commits directly, it's |
73 |
> actually signing pushes (which include the SHA1's of commits and thus |
74 |
> blobs). I'm personally concerned it's going to still be vulnerable to |
75 |
> the collision/pre-image attacks, but it's much better than no signing |
76 |
> (one of the attacks suggested against my SHA1-workaround signing was to |
77 |
> subvert the note that my signature was being stored in). |
78 |
|
79 |
i'm not sure how signing a push which includes only a single changeset is any |
80 |
better than signing a single changeset. but i'll let them worry about it :P. |
81 |
-mike |