Tôi có thể thúc đẩy sự khác biệt cho bạn với các kịch bản tấn công.
Trong một cuộc tấn công preimage đầu tiên , chúng tôi yêu cầu một kẻ thù, đưa ra chỉ , để tìm m hoặc một số m ' như vậy mà H ( m ' ) = H ( m ) . Giả sử một trang web lưu trữ { u s e r n a m e , H ( p a s s w o r d ) } trong cơ sở dữ liệu của nó thay vì { u s eH(m)mm′H(m′)H(m){username,H(password)} . Trang web vẫn có thể xác minh tính xác thực của người dùng bằng cách chấp nhận mật khẩu của họ và so sánh H ( i n p u t ) = ? H ( p một s s w o r d ) (với xác suất 1 / 2 n đối với một số lượng lớn n cho dương tính giả). Bây giờ giả sử cơ sở dữ liệu này bị rò rỉ hoặc bị buộc tội khác. Một{username,password}H(input)=?H(password)1/2nncuộc tấn công tiền giả đầu tiên là tình huống mà một kẻ thù chỉ có quyền truy cập vào một thông báo tiêu hóa và đang cố gắng tạo ra một thông điệp băm đến giá trị này.
Trong một cuộc tấn công tiền giả thứ hai , chúng tôi cho phép đối thủ có thêm thông tin. Cụ thể, chúng tôi không chỉ cho anh ấy mà còn cho anh ấy m . Xét hàm băm trong đó và là các số nguyên tố lớn và là hằng số công khai. Rõ ràng đối với một cuộc tấn công tiền giả đầu tiên, điều này trở thành vấn đề RSA và được cho là khó khăn. Tuy nhiên, trong trường hợp của cuộc tấn công tiền giả thứ hai, việc tìm kiếm một vụ va chạm trở nên dễ dàng. Nếu một người đặt ,H(m)mH(m)=mdmodpqq d m ′ = m p q + m H ( m p q + m ) = ( m p q + m ) dpqdm′=mpq+mH(mpq+m)=(mpq+m)dmodpq=mdmodpq. Và do đó, đối thủ đã tìm thấy một sự va chạm với rất ít tính toán.
Chúng tôi muốn các hàm băm một cách chống lại các cuộc tấn công tiền giả thứ hai vì các sơ đồ chữ ký số, trong trường hợp đó được coi là thông tin công khai và được chuyển qua (thông qua mức độ gián tiếp) với mọi bản sao của tài liệu. Ở đây kẻ tấn công có quyền truy cập vào cả và . Nếu kẻ tấn công có thể đưa ra một biến thể trên tài liệu gốc (hoặc một tin nhắn hoàn toàn mới) sao cho anh ta có thể xuất bản tài liệu của mình như thể anh ta là người ký ban đầu.H(document)documentH(document)d′H(d′)=H(document)
Một cuộc tấn công va chạm cho phép đối thủ thậm chí nhiều cơ hội hơn. Trong sơ đồ này, chúng tôi yêu cầu đối thủ (tôi có thể gọi anh ta là Bob không?) Để tìm bất kỳ hai tin nhắn và sao cho . Do nguyên tắc pigeonhole và nghịch lý sinh nhật, các hàm băm 'hoàn hảo' thậm chí còn yếu hơn đối với các cuộc tấn công va chạm so với các cuộc tấn công tiền chế. Nói cách khác, được cung cấp một hàm tiêu hóa thông điệp không thể đoán trước và không thể đảo ngược , điều này làm mất thời gian của , một sự va chạm có thể luôn luôn được tìm thấy trong thời gian dự kiến .m1m2H(m1)=H(m2)f({0,1}∗)={0,1}nO(2n)O(sqrt(2n))=O(2n/2)
Bob có thể sử dụng một cuộc tấn công va chạm để lợi thế của mình theo nhiều cách. Đây là một trong những cách đơn giản nhất: Bob tìm thấy sự va chạm giữa hai nhị phân và ( ) sao cho b là bản vá bảo mật Microsoft Windows hợp lệ và là phần mềm độc hại. (Bob hoạt động cho Windows). Bob gửi bản vá bảo mật của mình lên chuỗi lệnh, trong đó đằng sau một kho tiền họ ký mã và gửi nhị phân cho người dùng Windows trên toàn thế giới để sửa lỗi. Bây giờ Bob có thể liên hệ và lây nhiễm tất cả các máy tính Windows trên toàn thế giới bằng và chữ ký mà Microsoft đã tính chob ′ H ( b ) = H ( b ′ ) b ′ b ′ bbb′H(b)=H(b′)b′b′b. Ngoài các loại kịch bản tấn công này, nếu một hàm băm được cho là có khả năng chống va chạm, thì hàm băm đó cũng có nhiều khả năng chống lại tiền giả.