Saya membaca tentang bahwa Git menggunakan intisari SHA-1 sebagai ID untuk revisi. Mengapa tidak menggunakan versi SHA yang lebih modern?
git
cryptography
sha
qazwsx.dll
sumber
sumber
Jawaban:
Desember 2017: Itu akan. Dan Git 2.16 (Q1 2018) adalah rilis pertama yang mengilustrasikan dan mengimplementasikan maksud tersebut.
Catatan: lihat Git 2.19 di bawah ini: SHA-256 .
Git 2.16 akan mengusulkan infrastruktur untuk mendefinisikan fungsi hash apa yang digunakan di Git, dan akan memulai upaya untuk menyelaraskannya di berbagai jalur kode.
Lihat commit c250e02 (28 Nov 2017) oleh Ramsay Jones (``) .
Lihat commit eb0ccfd , commit 78a6766 , commit f50e766 , commit abade65 (12 Nov 2017) oleh brian m. carlson (
bk2204
) .(Digabung oleh Junio C Hamano -
gitster
- di commit 721cc43 , 13 Des 2017)Update Agustus 2018, untuk Git 2.19 (Q3 2018), Git sepertinya memilih SHA-256 sebagai NewHash.
Lihat commit 0ed8d8d (04 Agustus 2018) oleh Jonathan Nieder (
artagnon
) .Lihat commit 13f5e09 (25 Jul 2018) oleh Ævar Arnfjörð Bjarmason (
avar
) .(Digabung oleh Junio C Hamano -
gitster
- di commit 34f2297 , 20 Agustus 2018)Anda dapat melihat transisi ke SHA 256 ini sedang berlangsung dengan Git 2.20 (K4 2018):
Lihat komit 0d7c419 , komit dda6346 , komit eccb5a5 , komit 93eb00f , komit d8a3a69 , komit fbd0e37 , komit f690b6b , komit 49d1660 , komit 268babd , komit fa13080 , komit 7b5e614 , komit 58ce21b , komit 2f0c9e9 , komit 825544a (15 Oktober 2018) oleh brian m . carlson (
bk2204
) .Lihat commit 6afedba (15 Okt 2018) oleh SZEDER Gábor (
szeder
) .(Digabung olehJunio C Hamano -
gitster
- di commit d829d49 , 30 Okt 2018)GIT_SHA1_HEXSZ
selanjutnya dihapus / diganti dengan Git 2.22 (Kuartal 2 2019) dan lakukan d4e568b .Transisi itu berlanjut dengan Git 2.21 (Kuartal 1 2019), yang menambahkan hash sha-256 dan menghubungkannya melalui kode untuk memungkinkan pembuatan Git dengan "NewHash".
Lihat komit 4b4e291 , komit 27dc04c , komit 13eeedb , komit c166599 , komit 37649b7 , komit a2ce0a7 , komit 50c817e , komit 9a3a0ff , komit 0dab712 , komit 47edb64 (14 Nov 2018), dan komit 2f90b9d , komit 1ccf07c (22 Oktober 2018) oleh brian m . carlson (
bk2204
) .(Digabung oleh Junio C Hamano -
gitster
- di commit 33e4ae9 , 29 Jan 2019)Upaya peningkatan terus berlanjut dengan Git 2.24 (Q4 2019)
Lihat komit aaa95df , komit be8e172 , komit 3f34d70 , komit fc06be3 , komit 69fa337 , komit 3a4d7aa , komit e0cb7cd , komit 8d4d86b , komit f6ca67d , komit dd336a5 , komit 894c0f6 , komit 4439c7a , komit 95518fa , komit e84f357 , komit fe9fec4 , komit 976ff7e , komit 703d2d4 , commit 9d958cc , commit 7962e04 , commit fee4930(18 Aug 2019) oleh Brian m. carlson (
bk2204
) .(Digabung oleh Junio C Hamano -
gitster
- di commit 676278f , 11 Okt 2019)Dengan Git 2.26 (K1 2020), skrip pengujian siap untuk hari ketika nama objek akan menggunakan SHA-256.
Lihat komit 277eb5a , komit 44b6c05 , komit 7a868c5 , komit 1b8f39f , komit a8c17e3 , komit 8.320.722 , komit 74ad99b , komit ba1be1a , komit cba472d , komit 82d5aeb , komit 3c5e65c , komit 235d3cd , komit 1d86c8f , komit 525a7f1 , komit 7a1bcb2 , komit cb78f4f , komit 717c939 , commit 08a9dd8 , commit 215b60b , commit 194264c(21 Dec 2019) oleh Brian m. carlson (
bk2204
) .(Digabung oleh Junio C Hamano -
gitster
- di commit f52ab33 , 05 Feb 2020)Contoh:
Jadi, daripada menggunakan:
Tes menggunakan
Dan
OID_REGEX
berasal dari commit bdee9cd (13 Mei 2018) oleh Brian m. carlson (bk2204
) .(Digabung oleh Junio C Hamano -
gitster
- di commit 9472b13 , 30 Mei 2018, Git v2.18.0-rc0)Dan, masih untuk tes:
Lihat komit f303765 , komit edf0424 , komit 5db24dc , komit d341e08 , komit 88ed241 , komit 48c10cc , komit f7ae8e6 , komit e70649b , komit a30f93b , komit a79eec2 , komit 796d138 , komit 417e45e , komit dfa5f53 , komit f743e8f , komit 72f936b , komit 5df0f11 , komit 07877f3 , lakukan 6025e89 , lakukan 7b1a182 , lakukan 94db7e3 ,commit db12505 (07 Feb 2020) oleh brian m. carlson (
bk2204
) .(Digabung oleh Junio C Hamano -
gitster
- di commit 5af345a , 17 Feb 2020)Beberapa jalur kode diberi instance repositori sebagai parameter untuk bekerja di repositori, tetapi meneruskan
the_repository
instance ke kalendernya, yang telah dibersihkan (agak) dengan Git 2.26 (Q1 2020).Lihat commit b98d188 , commit 2dcde20 , commit 7ad5c44 , commit c8123e7 , commit 5ec9b8a , commit a651946 , commit eb999b3 (30 Jan 2020) oleh Matheus Tavares (
matheustavares
) .(Digabung oleh Junio C Hamano -
gitster
- di commit 78e67cd , 14 Feb 2020)Berdasarkan:
sumber
git rev-parse
sekarang dapat mencetak hash yang akan digunakan: stackoverflow.com/a/58862319/6309 . Dan pohon kosong memiliki ID SHA2 baru: stackoverflow.com/a/9766506/6309PEMBARUAN : Pertanyaan di atas dan jawaban ini berasal dari 2015. Sejak itu Google telah mengumumkan tabrakan SHA-1 pertama: https://security.googleblog.com/2017/02/announcing-first-sha1-collision.html
Jelas saya hanya bisa berspekulasi dari luar mencari tahu mengapa Git terus menggunakan SHA-1, tetapi ini mungkin di antara alasannya:
unsigned char[20]
buffer yang di -hardcode itu ada di mana-mana ;-), jauh lebih mudah untuk memprogram kelincahan kriptografi di awal, daripada memperbaikinya nanti.Beberapa link:
Pandangan pribadi saya adalah bahwa sementara serangan praktis mungkin beberapa waktu istirahat, dan bahkan ketika itu terjadi, orang mungkin pada awalnya akan mengurangi terhadap mereka dengan cara selain mengubah algoritma hash itu sendiri, bahwa jika Anda benar-benar peduli dengan keamanan yang seharusnya Anda lakukan. di sisi hati-hati dengan pilihan algoritme Anda, dan terus merevisi ke atas kekuatan keamanan Anda, karena kapabilitas penyerang juga hanya mengarah ke satu arah, jadi tidak bijaksana untuk mengambil Git sebagai model peran, terutama sebagai tujuannya dalam menggunakan SHA-1 tidak dimaksudkan sebagai keamanan kriptografi.
sumber
Ini adalah diskusi tentang urgensi migrasi keluar dari SHA1 untuk Mercurial, tetapi juga berlaku untuk Git: https://www.mercurial-scm.org/wiki/mpm/SHA1
Singkatnya: Jika Anda tidak terlalu rajin hari ini, Anda memiliki kerentanan yang jauh lebih buruk daripada sha1. Namun terlepas dari itu, Mercurial memulai lebih dari 10 tahun yang lalu untuk bersiap-siap bermigrasi dari sha1.
Jika git tidak bermigrasi dari sha1 sebelum Mercurial melakukannya, Anda selalu dapat menambahkan tingkat keamanan lain dengan menyimpan mirror Mercurial lokal dengan hg-git .
sumber
Sekarang sudah ada rencana transisi ke hash yang lebih kuat, jadi sepertinya kedepannya akan menggunakan hash yang lebih modern dari SHA-1. Dari rencana transisi saat ini :
sumber