Nhưng sau khi đọc nó, tôi vẫn không hiểu XXH3 (một trong những dòng xxHash) có khả năng chống lại các cuộc tấn công giả định như thế nào.
Hoàn toàn không - thật dễ dàng để tạo một hình ảnh băm thành một giá trị tùy ý.
Có, đầu ra XXH3 là 64/128 bit, điều đó có nghĩa là xác suất tìm thấy hình ảnh là $2^{64}/2^{128}$ tương ứng.
Xác suất giữ nếu chiến lược bạn sử dụng là "chọn một hình ảnh, băm nó và xem kết quả là gì". Có nhiều chiến lược hiệu quả hơn.
Có lẽ có một số loại không tấn công vũ phu?
Chắc chắn là.
xxhash bao gồm các bước:
Chuyển đổi trạng thái hiện tại theo cách không thể đảo ngược; hoặc
Thêm một từ phụ thuộc (một lần nữa, theo cách không thể đảo ngược) vào từ tiếp theo của hình ảnh (và không có thao tác nào khác trong xxhash phụ thuộc vào từ đầu vào đó).
Do đó, để tạo một hình ảnh băm thành một giá trị cụ thể, tất cả những gì bạn cần làm là chọn một mẫu bao gồm các giá trị ngoại trừ một từ; sau đó, bạn đánh giá xxhash về phía trước cho đến khi bạn nhận được một từ đó, xuất hiện giá trị trạng thái bên trong A. Sau đó, bạn lấy giá trị hàm băm mục tiêu và bạn tính toán xxhash ngược lại cho đến khi bạn nhận được một từ đó, xuất hiện với một giá trị trạng thái bên trong B. Sau đó, tất cả những gì bạn cần làm là chọn một từ chưa biết để chuyển đổi giá trị trạng thái A thành giá trị trạng thái B - thật dễ dàng; chèn từ đó vào mẫu và bạn đã hoàn tất.
Và, để giải quyết câu hỏi cuối cùng của bạn:
Đối với các hàm băm mật mã, thật khó để tìm thấy chúng nhưng chúng tồn tại. Khi chúng tôi đã thực hiện thành công cuộc tấn công tạo ảnh trước, làm thế nào chúng tôi có thể chắc chắn rằng giá trị chúng tôi tìm thấy là giá trị ban đầu?
Rõ ràng, xung đột là không thể tránh khỏi đối với bất kỳ chức năng nào chuyển đổi một chuỗi dài có khả năng thành một chuỗi ngắn hơn có độ dài cố định. Bây giờ, nếu chúng tôi tìm thấy một hình ảnh được băm với cùng một giá trị, làm cách nào để đảm bảo rằng đó là cùng một hình ảnh được băm ban đầu? Trả lời: nói chung, chúng tôi không thể, trừ khi chúng tôi biết nhiều về hình ảnh gốc (ví dụ: trong cuộc tấn công vào xxhash ở trên, chúng tôi biết tất cả các từ của đầu vào ngoại trừ một từ). Mặt khác, đối với hầu hết các cuộc tấn công chống lại hàm băm mật mã, chúng tôi không quan tâm - kẻ tấn công thường thắng nếu anh ta có thể tìm thấy không tí nào hình ảnh trước