Re: [Crypto-practicum] Monotone's usage of SHA1
Bill Cox <[email protected]> Tue, 16 Feb 2016 11:53:55 -0800
| Newsgroups | gmane.comp.version-control.monotone.devel |
|---|---|
| Message-ID | <CAOLP8p7LMHsWL-2fng4WT4kem7Eu6SXVV1o=iGvLUnQVO+h72Q@mail.gmail.com> |
On Tue, Feb 16, 2016 at 8:19 AM, Markus Wanner <[email protected]> wrote: > Hi, > > On 02/09/2016 09:45 PM, grarpamp wrote: > > Subscription to the archives is required as said, and is also > > documented on the list page. It's free, no human is involved. > > Bug them on policy, not me. The context for this thread begins > > there and would be of interest to those with interest. > > > > https://lists.sonic.net/mailman/listinfo/crypto-practicum > > Okay, thanks, I've read through the archives, now. > > One thing I'm curious about is the proposal to use Argon2 (a password > hash) over SHA3 or Blake2b for user facing hashes (or portions thereof). > Do I understand correctly that this "only" makes it (proportionally) > harder for Mallory to come up with a collision on the first few bytes of > the resulting hash? Or put another way: Is there any point in using > Argon2 (compared to Keccak or Blake2), if the full hash is used? > > SHA3 is slower than SHA1, and would slow down Monotone somewhat. BLAKE2b is faster than MD5, and would speed up Monotone, but it has a bit less formal analysis at this point than SHA3. Showing Argon2 derived hashes to users is an interesting concept. One problem: do we need to ever verify these hashes, or do can we generate them once during a commit (when an extra 100ms or so wont hurt much) and keep them around. Verification of Argon2 hashes is very expensive. I would not want to download 1 million commits and have to verify 1 million Argon2 hashes. There are some algorithms with "short-cuts" where verification is faster than hashing. One of those might be better. The best ones are only "bandwidth hard" rather than memory hard, so their security is a bit lower. > Monotone is pretty rigorous in checking its data's hashes. For example, > it checks not just after receiving from another node, but even after > loading a revision from disk. Therefore, I'd be pretty hesitant to > impose that additional computational cost for the normal user. > An Argon2 hash here would be a real problem if it had to be verified every time. Maybe the resulting hash could be signed by the committer so you only have to verify a signature? > I rather thought about using a more compact encoding, like base58 as > used by Bitcoin. That way you'd get 45% more information into those 5-7 > chars that humans can comfortably pass around (compared to hex), > resulting in 29 - 40 bits of hash. > That might be a small improvement. > I'm not saying that's enough, either. But in the case of monotone, I'm > less concerned, because there we have integrated certs, which check > against the full hash. And just to identify a revision out of the set of > already validated revisions, 5-7 chars usually are enough. (Sounds > suspiciously similar to Linus' argument, except that certs are external > to git, AFAIUI.) > > Kind Regards > > Markus Wanner > It sounds like switching away from SHA1 is even more important for Monotone than git, since Monotone does intend to provide data integrity against malicious attackers. Bill _______________________________________________ Monotone-devel mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/monotone-devel