คุณสามารถเห็นการศึกษาที่ดีใน " Git จะจัดการกับการชน SHA-1 บนหยดได้อย่างไร "
เนื่องจากการชนกันของ SHA1 เป็นไปได้ในขณะนี้ (ตามที่ฉันอ้างอิงในคำตอบนี้ด้วยshattered.io ) รู้ว่า Git 2.13 (Q2 2017) จะปรับปรุง / บรรเทาสถานการณ์ปัจจุบันด้วยตัวแปร "ความพยายามในการตรวจจับเพื่อสร้างการชน" ของSHA-1 โดยมาร์คสตีเวนส์ (CWI) และแดนชูโมว (Microsoft)
ดูกระทำ f5f5e7f , กระทำ 8325e43 , กระทำ c0c2006 , กระทำ 45a574e , กระทำ 28dc98e (16 มีนาคม 2017) โดยเจฟฟ์คิง (peff
)
(รวมโดยJunio C Hamano - gitster
-ในการกระทำ 48b3693 , 24 มีนาคม 2017)
Makefile
: ทำให้DC_SHA1
เป็นค่าเริ่มต้น
เราเคยใช้การใช้งาน SHA1 จากไลบรารี OpenSSL ตามค่าเริ่มต้น
ในขณะที่เราพยายามระวังการโจมตีจากการชนหลังจากประกาศ "แตก" เมื่อเร็ว ๆ นี้ให้เปลี่ยนค่าเริ่มต้นเพื่อกระตุ้นให้ผู้คนใช้การติดตั้ง DC_SHA1 แทน
ผู้ที่ต้องการใช้การใช้งานจาก OpenSSL สามารถขอได้อย่างชัดเจนโดยOPENSSL_SHA1=YesPlease
เมื่อเรียกใช้ " make
"
เราไม่ได้มีการชนกันของ Git-object ดังนั้นสิ่งที่ดีที่สุดที่เราทำได้คือการเรียกใช้ PDF ที่แตกหักผ่านการทดสอบ sha1 การดำเนินการนี้จะกระตุ้นการตรวจสอบการชนและตาย
Git จะได้รับการปรับปรุงให้ดีขึ้นเพื่อใช้กับสิ่งนั้นหรือฉันจะต้องเปลี่ยนเป็นอัลกอริทึมแฮชใหม่หรือไม่?
อัปเดตธันวาคม 2560ด้วย Git 2.16 (ไตรมาสที่ 1 ปี 2561): ความพยายามในการสนับสนุน SHA ทางเลือกนี้กำลังดำเนินการอยู่: ดูที่ " ทำไม Git จึงไม่ใช้ SHA ที่ทันสมัยกว่านี้ "
คุณจะสามารถใช้อัลกอริทึมแฮชอื่น: SHA1 ไม่ได้เป็น Git อีกต่อไป
Git 2.18 (Q2 2018) เอกสารที่ดำเนินการ
ดูกระทำ 5988eb6 , กระทำ 45fa195 (26 มีนาคม 2018) โดยÆvar Arnfjord Bjarmason (avar
)
(ผสานโดยJunio C Hamano - gitster
- in d877975 , 11 Apr 2018)
doc hash-function-transition
: ชี้แจงความหมายของ SHAttered
พยายามอธิบายความหมายของการโจมตีโดยพลการของ SHAttered ในทางปฏิบัติสำหรับ Git
ข้อความก่อนหน้านี้ไม่ได้กล่าวถึง Git แต่อย่างใดที่มีการลดลงสำหรับการโจมตีเฉพาะนี้ซึ่งนักวิจัยของ SHAttered อ้างว่าจะตรวจจับการโจมตีการโจมตีของ cryptanalytic
ฉันอาจได้รับความแตกต่างเล็กน้อย แต่เท่าที่ฉันรู้ว่าข้อความใหม่นี้สรุปสถานการณ์ปัจจุบันกับ SHA-1 อย่างแม่นยำในคอมไพล์ เช่นgit ไม่ได้ใช้ SHA-1 อีกต่อไป แต่ใช้ Hardened-SHA-1 (มันเกิดขึ้นเพื่อให้ได้ผลลัพธ์ที่เหมือนกัน 99.99999999999 ... % ของเวลา)
ดังนั้นข้อความก่อนหน้านี้ไม่ถูกต้องในการยืนยันว่า:
[... ] ด้วยเหตุนี้ [จาก SHAttered] ทำให้ SHA-1 ไม่สามารถใช้การเข้ารหัสแบบเข้ารหัสได้อีกต่อไป [... ]
นั่นไม่ใช่กรณี เรามีการลดผลกระทบต่อ SHAttered แต่
เราคิดว่ามันรอบคอบที่จะย้ายไปทำงานเพื่อหาNewHash
ช่องโหว่ในอนาคตทั้งใน SHA-1 หรือ Hardened-SHA-1
ดังนั้นเอกสารใหม่อ่านในขณะนี้:
Git v2.13.0 และต่อมาย้ายไปใช้ SHA-1 ที่แข็งขึ้นตามค่าเริ่มต้นซึ่งไม่เสี่ยงต่อการโจมตีของ SHAttered
ดังนั้น Git จึงย้ายไปยังแฮชใหม่ที่ไม่ใช่ SHA-1 และไม่แชร์ช่องโหว่ฟังก์ชันแฮชใหม่ของมันเพิ่งเกิดขึ้นเพื่อสร้างเอาต์พุตเดียวกันสำหรับอินพุตที่รู้จักทั้งหมดยกเว้น PDF สองไฟล์ที่เผยแพร่โดย SHAttered นักวิจัยและการใช้งานใหม่ (เขียนโดยนักวิจัยเหล่านั้น) อ้างว่าตรวจจับการโจมตีการชนกันของ cryptanalytic ในอนาคต
ไม่ว่าจะเป็นการพิจารณาที่รอบคอบแล้วที่จะย้ายตัวแปร SHA-1 ใด ๆ ไปสู่แฮชใหม่ ไม่มีการรับประกันว่าการโจมตี SHA-1 ในอนาคตจะไม่ได้รับการเผยแพร่ในอนาคตและการโจมตีเหล่านั้นอาจไม่ได้ช่วยบรรเทาปัญหาได้
ถ้า SHA-1 และตัวแปรนั้นแตกหักอย่างแท้จริงฟังก์ชันแฮชของ Git จะไม่สามารถนำมาพิจารณาเข้ารหัสแบบเข้ารหัสได้อีกต่อไป สิ่งนี้จะส่งผลกระทบต่อการสื่อสารของค่าแฮชเนื่องจากเราไม่สามารถเชื่อถือได้ว่าค่าแฮชที่ระบุนั้นแสดงถึงเนื้อหาที่เป็นที่รู้จักในแบบที่ผู้บรรยายต้องการ
หมายเหตุ: เอกสารเดียวกันในขณะนี้ (ไตรมาสที่ 3 ปี 2018, Git 2.19) อ้างอิง"hash ใหม่"อย่างชัดเจนว่าเป็น SHA-256 : ดูที่ " ทำไม Git จึงไม่ใช้ SHA ที่ทันสมัยกว่านี้ "
I've been informed by the git Gods that the chances of a SHA1 collision is the same as the Earth being sucked up into the black hole created by the CERN accelerator. If this is indeed true, then there's no need for that extra memcmp.
แหล่งที่มา: lwn.net/Articles/307281