From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: Thomas Ackermann via GitGitGadget <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org, Junio C Hamano <gitster@pobox.com>,
Thomas Ackermann <th.acker@arcor.de>
Subject: Re: [PATCH 5/6] doc hash-function-transition: move rationale upwards
Date: Sun, 31 Jan 2021 21:37:07 +0100 [thread overview]
Message-ID: <87r1m0onbg.fsf@evledraar.gmail.com> (raw)
In-Reply-To: <2cdb0f8e2edc4416c5dfb88722aa05be35afba7d.1612093734.git.gitgitgadget@gmail.com>
On Sun, Jan 31 2021, Thomas Ackermann via GitGitGadget wrote:
> diff --git a/Documentation/technical/hash-function-transition.txt b/Documentation/technical/hash-function-transition.txt
> index dc0c4976a62..c9b57a125e2 100644
> --- a/Documentation/technical/hash-function-transition.txt
> +++ b/Documentation/technical/hash-function-transition.txt
> @@ -27,13 +27,17 @@ advantages:
> methods have a short reliable string that can be used to reliably
> address stored content.
>
> -Over time some flaws in SHA-1 have been discovered by security
> -researchers. On 23 February 2017 the SHAttered attack
> +Over time some flaws in SHA-1 have been discovered by security researchers.
> +In early 2005, around the time that Git was written, Xiaoyun Wang,
> +Yiqun Lisa Yin, and Hongbo Yu announced an attack finding SHA-1
> +collisions in 2^69 operations. In August they published details.
> +Luckily, no practical demonstrations of a collision in full SHA-1 were
> +published until 10 years later: on 23 February 2017 the SHAttered attack
> (https://shattered.io) demonstrated a practical SHA-1 hash collision.
>
> Git v2.13.0 and later subsequently moved to a hardened SHA-1
> -implementation by default, which isn't vulnerable to the SHAttered
> -attack.
> +implementation by default that mitigates the SHAttered attack, but
> +SHA-1 is still believed to be weak.
>
> Thus Git has in effect already migrated to a new hash that isn't SHA-1
> and doesn't share its vulnerabilities, its new hash function just
> @@ -57,6 +61,29 @@ SHA-1 still possesses the other properties such as fast object lookup
> and safe error checking, but other hash functions are equally suitable
> that are believed to be cryptographically secure.
I don't think this is an improvement, why does someone trying to learn
about Git's SHA-256 transition care about early SHA-1 flaws that didn't
prompt the transition.
I'm probably biased since the current intro is mine from 5988eb631a3
(doc hash-function-transition: clarify what SHAttered means,
2018-03-26), but this really feels too much like going into the weeds.
I think the document would be improved by just removing the whole
mention of early 2005 and mentioning several researchers by name. I
think the current prose of "Over time some flaws in SHA-1 have been
discovered by security researchers" suffices, if people are curious
about SHA-1's vulnerability history there's plenty of good easily found
sources for that.
> +Choice of Hash
> +--------------
> +The hash to replace the hardened SHA-1 should be stronger than SHA-1
> +was: we would like it to be trustworthy and useful in practice for at
> +least 10 years.
> +
> +Some other relevant properties:
> +
> +1. A 256-bit hash (long enough to match common security practice; not
> + excessively long to hurt performance and disk usage).
> +
> +2. High quality implementations should be widely available (e.g., in
> + OpenSSL and Apple CommonCrypto).
> +
> +3. The hash function's properties should match Git's needs (e.g. Git
> + requires collision and 2nd preimage resistance and does not require
> + length extension resistance).
> +
> +4. As a tiebreaker, the hash should be fast to compute (fortunately
> + many contenders are faster than SHA-1).
> +
> +We choose SHA-256.
> +
> Goals
> -----
> 1. The transition to SHA-256 can be done one local repository at a time.
> @@ -601,39 +628,6 @@ example:
>
> git --output-format=sha1 log abac87a^{sha1}..f787cac^{sha256}
>
> -Choice of Hash
> ---------------
> -In early 2005, around the time that Git was written, Xiaoyun Wang,
> -Yiqun Lisa Yin, and Hongbo Yu announced an attack finding SHA-1
> -collisions in 2^69 operations. In August they published details.
> -Luckily, no practical demonstrations of a collision in full SHA-1 were
> -published until 10 years later, in 2017.
> -
> -Git v2.13.0 and later subsequently moved to a hardened SHA-1
> -implementation by default that mitigates the SHAttered attack, but
> -SHA-1 is still believed to be weak.
> -
> -The hash to replace this hardened SHA-1 should be stronger than SHA-1
> -was: we would like it to be trustworthy and useful in practice for at
> -least 10 years.
> -
> -Some other relevant properties:
> -
> -1. A 256-bit hash (long enough to match common security practice; not
> - excessively long to hurt performance and disk usage).
> -
> -2. High quality implementations should be widely available (e.g., in
> - OpenSSL and Apple CommonCrypto).
> -
> -3. The hash function's properties should match Git's needs (e.g. Git
> - requires collision and 2nd preimage resistance and does not require
> - length extension resistance).
> -
> -4. As a tiebreaker, the hash should be fast to compute (fortunately
> - many contenders are faster than SHA-1).
> -
> -We choose SHA-256.
> -
Same here. We're going into the weeds about what hashes we didn't pick
before talking about what we're going to do with SHA-256? Much of that
wording is just historical, and pre-dates the SHA-256 pick. I think
something like this would be much better at this point:
diff --git a/Documentation/technical/hash-function-transition.txt b/Documentation/technical/hash-function-transition.txt
index 6fd20ebbc25..a4222eb0a6c 100644
--- a/Documentation/technical/hash-function-transition.txt
+++ b/Documentation/technical/hash-function-transition.txt
@@ -602,36 +602,17 @@ git --output-format=sha1 log abac87a^{sha1}..f787cac^{sha256}
Choice of Hash
--------------
-In early 2005, around the time that Git was written, Xiaoyun Wang,
-Yiqun Lisa Yin, and Hongbo Yu announced an attack finding SHA-1
-collisions in 2^69 operations. In August they published details.
-Luckily, no practical demonstrations of a collision in full SHA-1 were
-published until 10 years later, in 2017.
-Git v2.13.0 and later subsequently moved to a hardened SHA-1
-implementation by default that mitigates the SHAttered attack, but
-SHA-1 is still believed to be weak.
-
-The hash to replace this hardened SHA-1 should be stronger than SHA-1
-was: we would like it to be trustworthy and useful in practice for at
-least 10 years.
-
-Some other relevant properties:
-
-1. A 256-bit hash (long enough to match common security practice; not
- excessively long to hurt performance and disk usage).
-
-2. High quality implementations should be widely available (e.g., in
- OpenSSL and Apple CommonCrypto).
-
-3. The hash function's properties should match Git's needs (e.g. Git
- requires collision and 2nd preimage resistance and does not require
- length extension resistance).
+There were several contenders for a successor hash to SHA-1, including
+SHA-256, SHA-512/256, SHA-256x16, K12, and BLAKE2bp-256.
-4. As a tiebreaker, the hash should be fast to compute (fortunately
- many contenders are faster than SHA-1).
+In late 2018 the project picked SHA-256 as its successor hash.
-We choose SHA-256.
+See 0ed8d8da374 (doc hash-function-transition: pick SHA-256 as
+NewHash, 2018-08-04) and numerous mailing list threads at the time,
+particularly the one starting at
+https://lore.kernel.org/git/20180609224913.GC38834@genre.crustytoothpaste.net/
+for more information.
Transition plan
---------------
next prev parent reply other threads:[~2021-01-31 20:38 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <pull.858.git.1612093734.gitgitgadget@gmail.com>
[not found] ` <3efe3392e9de6d4446665a8e6ae5a06b86bdccae.1612093734.git.gitgitgadget@gmail.com>
2021-01-31 20:23 ` [PATCH 1/6] doc hash-function-transition: fix asciidoc output Ævar Arnfjörð Bjarmason
[not found] ` <62ca087d4ebaa5f3a7efba6a2865e89284fcd98d.1612093734.git.gitgitgadget@gmail.com>
2021-01-31 20:24 ` [PATCH 2/6] doc hash-function-transition: use SHA-1 and SHA-256 consistently Ævar Arnfjörð Bjarmason
[not found] ` <d4abf1cf78e2e59e49b81bd458d85848bd3d7ff3.1612093734.git.gitgitgadget@gmail.com>
2021-01-31 20:25 ` [PATCH 4/6] doc hash-function-transition: use https links consistently Ævar Arnfjörð Bjarmason
[not found] ` <2cdb0f8e2edc4416c5dfb88722aa05be35afba7d.1612093734.git.gitgitgadget@gmail.com>
2021-01-31 20:37 ` Ævar Arnfjörð Bjarmason [this message]
2021-02-02 16:19 ` [PATCH v2 0/6] doc: improvements for hash-function-transition Thomas Ackermann via GitGitGadget
2021-02-02 16:19 ` [PATCH v2 1/6] doc hash-function-transition: fix asciidoc output Thomas Ackermann via GitGitGadget
2021-02-02 16:19 ` [PATCH v2 2/6] doc hash-function-transition: use SHA-1 and SHA-256 consistently Thomas Ackermann via GitGitGadget
2021-02-02 19:39 ` Junio C Hamano
2021-02-02 23:19 ` Junio C Hamano
2021-02-02 16:19 ` [PATCH v2 3/6] doc hash-function-transition: use upper case consistently Thomas Ackermann via GitGitGadget
2021-02-02 16:19 ` [PATCH v2 4/6] doc hash-function-transition: fix incomplete sentence Thomas Ackermann via GitGitGadget
2021-02-02 16:19 ` [PATCH v2 5/6] doc hash-function-transition: move rationale upwards Thomas Ackermann via GitGitGadget
2021-02-02 19:54 ` Junio C Hamano
2021-02-02 23:23 ` brian m. carlson
2021-02-02 16:19 ` [PATCH v2 6/6] doc: use https links Thomas Ackermann via GitGitGadget
2021-02-02 19:57 ` [PATCH v2 0/6] doc: improvements for hash-function-transition Junio C Hamano
2021-02-05 18:22 ` [PATCH v3 " Thomas Ackermann via GitGitGadget
2021-02-05 18:22 ` [PATCH v3 1/6] doc hash-function-transition: fix asciidoc output Thomas Ackermann via GitGitGadget
2021-02-05 18:22 ` [PATCH v3 2/6] doc hash-function-transition: use SHA-1 and SHA-256 consistently Thomas Ackermann via GitGitGadget
2021-02-05 18:22 ` [PATCH v3 3/6] doc hash-function-transition: use upper case consistently Thomas Ackermann via GitGitGadget
2021-02-05 18:22 ` [PATCH v3 4/6] doc hash-function-transition: fix incomplete sentence Thomas Ackermann via GitGitGadget
2021-02-05 18:22 ` [PATCH v3 5/6] doc hash-function-transition: move rationale upwards Thomas Ackermann via GitGitGadget
2021-02-05 20:48 ` Ævar Arnfjörð Bjarmason
2021-02-05 21:49 ` Junio C Hamano
2021-02-05 18:22 ` [PATCH v3 6/6] doc: use https links Thomas Ackermann via GitGitGadget
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87r1m0onbg.fsf@evledraar.gmail.com \
--to=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
--cc=gitster@pobox.com \
--cc=th.acker@arcor.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).