Ich habe darüber gelesen, dass Git SHA-1 Digest als ID für eine Revision verwendet. Warum wird keine modernere Version von SHA verwendet?
git
cryptography
sha
qazwsx
quelle
quelle
Antworten:
Dezember 2017: Es wird. Und Git 2.16 (Q1 2018) ist die erste Version, die diese Absicht veranschaulicht und implementiert.
Hinweis: siehe Git 2.19 unten: Es wird SHA-256 sein .
Git 2.16 wird eine Infrastruktur vorschlagen, um zu definieren, welche Hash-Funktion in Git verwendet wird, und sich bemühen, diese in verschiedenen Codepfaden auszuloten.
Siehe Commit c250e02 (28. November 2017) von Ramsay Jones (``) .
Siehe Commit eb0ccfd , Commit 78a6766 , Commit f50e766 , Commit abade65 (12. November 2017) von Brian M. Carlson (
bk2204
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 721cc43 , 13. Dezember 2017)Update August 2018, für Git 2.19 (Q3 2018) scheint Git SHA-256 als NewHash zu wählen.
Siehe Commit 0ed8d8d (04. August 2018) von Jonathan Nieder (
artagnon
) .Siehe Commit 13f5e09 (25. Juli 2018) von Ævar Arnfjörð Bjarmason (
avar
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 34f2297 , 20. August 2018)Sie können diesen Übergang zu SHA 256 mit Git 2.20 (Q4 2018) sehen:
Sehen Sie verpflichten 0d7c419 , begehen dda6346 , begehen eccb5a5 , begehen 93eb00f , begehen d8a3a69 , begehen fbd0e37 , begehen f690b6b , begehen 49d1660 , begehen 268babd , begehen fa13080 , begehen 7b5e614 , begehen 58ce21b , begehen 2f0c9e9 , begehen 825544a (15. Oktober 2018) von brian m . Carlson (
bk2204
) .Siehe Commit 6afedba (15. Oktober 2018) von SZEDER Gábor (
szeder
) .(Zusammengeführt vonJunio C Hamano -
gitster
- in Commit d829d49 , 30. Oktober 2018)GIT_SHA1_HEXSZ
wird weiter entfernt / durch Git 2.22 (Q2 2019) ersetzt und d4e568b festgeschrieben .Dieser Übergang wird mit Git 2.21 (Q1 2019) fortgesetzt, das sha-256-Hash hinzufügt und durch den Code steckt, um das Erstellen von Git mit dem "NewHash" zu ermöglichen.
Sehen Sie verpflichten 4b4e291 , begehen 27dc04c , begehen 13eeedb , begehen c166599 , begehen 37649b7 , begehen a2ce0a7 , begehen 50c817e , begehen 9a3a0ff , begehen 0dab712 , begehen 47edb64 (14. November 2018) und begehen 2f90b9d , begehen 1ccf07c (22. Oktober 2018) von brian m . Carlson (
bk2204
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 33e4ae9 , 29. Januar 2019)Die Upgrade-Bemühungen werden mit Git 2.24 (Q4 2019) fortgesetzt.
Sehen Sie verpflichten aaa95df , begehen be8e172 , begehen 3f34d70 , begehen fc06be3 , begehen 69fa337 , begehen 3a4d7aa , begehen e0cb7cd , begehen 8d4d86b , begehen f6ca67d , begehen dd336a5 , begehen 894c0f6 , begehen 4439c7a , begehen 95518fa , begehen e84f357 , begehen fe9fec4 , begehen 976ff7e , verpflichten 703d2d4 , Commit 9d958cc , Commit 7962e04 , Commit Fee4930(18. August 2019) von brian m. Carlson (
bk2204
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 676278f , 11. Oktober 2019)Mit Git 2.26 (Q1 2020) sind die Testskripte für den Tag bereit, an dem die Objektnamen SHA-256 verwenden.
Sehen Sie verpflichten 277eb5a , begehen 44b6c05 , begehen 7a868c5 , begehen 1b8f39f , begehen a8c17e3 , begehen 8.320.722 , begehen 74ad99b , begehen ba1be1a , begehen cba472d , begehen 82d5aeb , begehen 3c5e65c , begehen 235d3cd , begehen 1d86c8f , begehen 525a7f1 , begehen 7a1bcb2 , begehen cb78f4f , verpflichten 717c939 , Commit 08a9dd8 , Commit 215b60b , Commit 194264c(21. Dezember 2019) von brian m. Carlson (
bk2204
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit f52ab33 , 05. Februar 2020)Beispiel:
Also, anstatt zu verwenden:
Tests verwenden
Und
OID_REGEX
kommt von commit bdee9cd (13. Mai 2018) von brian m. Carlson (bk2204
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 9472b13 , 30. Mai 2018, Git v2.18.0-rc0)Und noch für Tests:
Sehen Sie verpflichten f303765 , begehen edf0424 , begehen 5db24dc , begehen d341e08 , begehen 88ed241 , begehen 48c10cc , begehen f7ae8e6 , begehen e70649b , begehen a30f93b , begehen a79eec2 , begehen 796d138 , begehen 417e45e , begehen dfa5f53 , begehen f743e8f , begehen 72f936b , begehen 5df0f11 , verpflichten 07877f3 , Commit 6025e89 , Commit 7b1a182 , Commit 94db7e3 ,Commit db12505 (07. Februar 2020) von Brian M. Carlson (
bk2204
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 5af345a , 17. Februar 2020)Einige Codepfade erhielten eine Repository-Instanz als Parameter für die Arbeit im Repository, übergaben jedoch die
the_repository
Instanz an ihre Callees, die mit Git 2.26 (Q1 2020) (etwas) bereinigt wurde.Siehe Commit b98d188 , Commit 2dcde20 , Commit 7ad5c44 , Commit c8123e7 , Commit 5ec9b8a , Commit a651946 , Commit eb999b3 (30. Januar 2020) von Matheus Tavares (
matheustavares
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 78e67cd , 14. Februar 2020)Beyogen auf:
quelle
git rev-parse
kann jetzt drucken, welcher Hash verwendet wird: stackoverflow.com/a/58862319/6309 . Und der leere Baum hat eine neue SHA2-ID: stackoverflow.com/a/9766506/6309UPDATE : Die obige Frage und diese Antwort stammen aus dem Jahr 2015. Seitdem hat Google die erste SHA-1-Kollision angekündigt: https://security.googleblog.com/2017/02/announcing-first-sha1-collision.html
Natürlich kann ich nur von außen darüber spekulieren, warum Git weiterhin SHA-1 verwendet, aber dies kann einer der Gründe sein:
unsigned char[20]
Puffer überall vor ;-), es ist viel einfacher, die kryptografische Agilität zu Beginn zu programmieren, als sie später nachzurüsten.Einige Links:
Meine persönliche Ansicht wäre, dass, während praktische Angriffe wahrscheinlich eine Auszeit haben und selbst wenn sie auftreten, die Leute sie wahrscheinlich zunächst mit anderen Mitteln als der Änderung des Hash-Algorithmus selbst abschwächen werden, dass Sie sich irren sollten, wenn Sie sich um die Sicherheit kümmern Vorsicht bei der Auswahl der Algorithmen und bei der kontinuierlichen Überarbeitung Ihrer Sicherheitsstärken, da die Fähigkeiten von Angreifern auch nur in eine Richtung gehen. Daher wäre es unklug, Git als Vorbild zu nehmen, insbesondere als Zweck Die Verwendung von SHA-1 soll keine kryptografische Sicherheit sein.
quelle
Dies ist eine Diskussion über die Dringlichkeit der Migration von SHA1 für Mercurial, gilt jedoch auch für Git: https://www.mercurial-scm.org/wiki/mpm/SHA1
Kurz gesagt: Wenn Sie heute nicht besonders fleißig sind, haben Sie viel schlimmere Schwachstellen als sha1. Trotzdem begann Mercurial vor über 10 Jahren, sich auf die Abwanderung von sha1 vorzubereiten.
Wenn git nicht vor Mercurial von sha1 weg migriert, können Sie jederzeit eine weitere Sicherheitsstufe hinzufügen, indem Sie einen lokalen Mercurial-Spiegel mit hg-git beibehalten .
quelle
Es gibt jetzt einen Übergangsplan zu einem stärkeren Hash, so dass es so aussieht, als würde in Zukunft ein modernerer Hash als SHA-1 verwendet. Aus dem aktuellen Übergangsplan :
quelle