2009-12-08 41 views
59

Cho một tập hợp 100 chuỗi khác nhau có chiều dài bằng nhau, làm thế nào bạn có thể định lượng xác suất mà xung đột tiêu hóa SHA1 đối với các chuỗi là khó xảy ra ...?Xác suất của các va chạm SHA1

+0

làm rõ, làm thế nào bạn có thể có 'độ dài khác nhau nhưng bằng' chuỗi? – KevinDTimm

+5

@kevindtimm "a", "b", "c" có độ dài bằng nhau nhưng các chuỗi khác nhau –

+0

Tôi giả sử các chuỗi có độ dài tối thiểu 20 byte. Nếu không, rõ ràng là cơ hội sẽ cao hơn của một vụ va chạm. :) –

Trả lời

137

alt text

Are các giá trị băm 160 bit được tạo ra bởi SHA-1 đủ lớn để đảm bảo dấu vân tay của mỗi khối là duy nhất? Giả sử giá trị hash ngẫu nhiên với một phân phối thống nhất, một bộ sưu tập của khối dữ liệu n khác nhau và một hash chức năng mà tạo ra bit b, xác suất p rằng sẽ có một hoặc nhiều va chạm giáp số các cặp các khối nhân với số bằng xác suất mà một cặp nhất định sẽ va chạm.

(nguồn: http://bitcache.org/faq/hash-collision-probabilities)

+9

Tóm lại, khả năng xảy ra xung đột là 10^-45. Điều đó rất, rất * rất khó xảy ra. –

+3

Nhưng SHA-1 không phân bố đều, nó có thể lớn hơn giới hạn trên. Tôi nghi ngờ rằng phương trình này là không chính xác. Ít nhất là EQUAL. – Kamel

+1

Câu trả lời này không tính đến phát hiện của Trung Quốc năm 2005, nơi họ có thể sản xuất va chạm trong 2^69 lần lặp thay vì 2^80 được dự tính bởi lực lượng vũ phu https://www.schneier.com/blog/archives /2005/02/sha1_broken.html – Djarid

2

Đó là Birthday Problem - bài viết cung cấp các xấp xỉ tốt đẹp giúp dễ dàng ước tính xác suất. Xác suất thực tế sẽ rất rất rất thấp - xem this question để biết ví dụ.

3

Vâng, xác suất xảy ra xung đột sẽ là 1 - ((2^160 - 1)/2^160) * ((2^160 - 2)/2^160) * ... * ((2)^160 - 99)/2^160).

Hãy suy nghĩ về xác suất xảy ra xung đột 2 mục trong không gian 10. Mục đầu tiên là duy nhất với xác suất 100%. Thứ hai là duy nhất với xác suất 9/10. Vì vậy, xác suất của cả hai là duy nhất là 100% * 90%, và xác suất của một vụ va chạm là 1 - (100% * 90%), hoặc 1 - ((10 - 0)/10) * ((10 - 1)/10) hoặc 1 - ((10 - 1)/10).

Rất khó xảy ra. Bạn sẽ phải có nhiều chuỗi hơn để nó trở thành một khả năng từ xa.

Hãy xem bảng trên this page on Wikipedia; chỉ nội suy giữa các hàng cho 128 bit và 256 bit.

Các vấn đề liên quan