Gần đây tôi đã tìm thấy một bài đăng từ 2013-04-29 trong một nhóm thảo luận BSD tại
http://openbsd-archive.7691.n7.nabble.com/Why-does-OpenBSD-use-CVS-td226952.html
nơi người đăng tuyên bố:
Tôi đã gặp phải một vụ va chạm băm một lần, sử dụng git rebase.
Thật không may, ông không cung cấp bằng chứng cho yêu cầu của mình. Nhưng có lẽ bạn muốn thử liên lạc với anh ta và hỏi anh ta về sự cố được cho là này.
Nhưng ở cấp độ tổng quát hơn, do cuộc tấn công sinh nhật, cơ hội cho một vụ va chạm băm SHA-1 là 1 trong pow (2, 80).
Điều này nghe có vẻ nhiều và chắc chắn là nhiều hơn tổng số phiên bản của các tệp riêng lẻ có trong tất cả các kho Git của thế giới cộng lại.
Tuy nhiên, điều này chỉ áp dụng cho các phiên bản thực sự còn trong lịch sử phiên bản.
Nếu một nhà phát triển phụ thuộc rất nhiều vào việc nổi loạn, thì mỗi khi một rebase được chạy cho một chi nhánh, tất cả các cam kết trong tất cả các phiên bản của chi nhánh đó (hoặc một phần của chi nhánh) đều nhận được băm mới. Điều này cũng đúng với mọi tệp sửa đổi với "nhánh lọc git". Do đó, "rebase" và "nhánh lọc" có thể là bội số lớn cho số lượng băm được tạo theo thời gian, mặc dù không phải tất cả chúng đều được giữ: Thường xuyên, sau khi nổi loạn (đặc biệt là cho mục đích "dọn dẹp" một nhánh ), nhánh ban đầu bị vứt đi.
Nhưng nếu sự va chạm xảy ra trong quá trình rebase hoặc nhánh lọc, nó vẫn có thể có tác dụng phụ.
Một điều nữa là ước tính tổng số thực thể băm trong kho git và xem chúng cách pow bao xa (2, 80).
Giả sử chúng ta có khoảng 8 tỷ người, và tất cả trong số họ sẽ chạy git và giữ cho các công cụ của họ được phiên bản trong kho 100 git mỗi người. Giả sử thêm kho lưu trữ trung bình có 100 lần xác nhận và 10 tệp và chỉ một trong số các tệp đó thay đổi trên mỗi lần xác nhận.
Đối với mỗi sửa đổi, chúng tôi có ít nhất một hàm băm cho đối tượng cây và chính đối tượng cam kết. Cùng với tệp đã thay đổi, chúng tôi có 3 băm cho mỗi lần sửa đổi và do đó 300 băm cho mỗi kho lưu trữ.
Đối với 100 kho lưu trữ của 8 tỷ người, điều này mang lại cho pow (2, 47) vẫn còn xa pow (2, 80).
Tuy nhiên, điều này không bao gồm hiệu ứng nhân được cho là đã đề cập ở trên, vì tôi không chắc chắn làm thế nào để đưa nó vào dự toán này. Có lẽ nó có thể làm tăng cơ hội va chạm đáng kể. Đặc biệt là nếu các kho lưu trữ rất lớn mà lịch sử cam kết lâu dài (như Hạt nhân Linux) bị nhiều người phản đối vì những thay đổi nhỏ, tuy nhiên tạo ra các giá trị băm khác nhau cho tất cả các cam kết bị ảnh hưởng.
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.
, nguồn: lwn.net/Articles/307281