Яка різниця між другою попередньою атакою та атакою зіткнення?


24

Вікіпедія визначає другу попередню атаку як:

задавши фіксоване повідомлення m1, знайдіть інше повідомлення m2 таке, що хеш (m2) = хеш (m1).

Вікіпедія визначає атаку зіткнення як:

знайдіть два довільних різних повідомлення m1 і m2 таких, що хеш (m1) = хеш (m2).

Єдина відмінність, яку я бачу, - це те, що у другому попередньому нападі m1 вже існує і відомий нападникові. Однак це не вражає мене як важливого - кінцевою метою все ж є пошук двох повідомлень, які створюють один і той же хеш.

Які суттєві відмінності у здійсненні другої попередньої атаки та атаки зіткнення? Які відмінності в результатах?

(Убік, я не можу правильно поставити тег до цього питання. Я намагаюся застосувати теги "зіткнення попереднього зображення криптографії", але у мене недостатньо репутації. Чи може хтось застосувати відповідні теги?)


1
Ваше враження правильне - у цьому різниця. Частина, де ви помиляєтесь, полягає в тому, що це ВЕЛИЧЕЗНА різниця в практиці. Одне - вміти знаходити будь-які дві речі, які мають зіткнення, і зовсім інше - знайти колізію для конкретного простого тексту. Наприклад, якщо ви хочете підробити певне повідомлення, марно робити екзистенційну підробку - вам потрібно ще одне повідомлення, яке відповідає тому самому, що і перехоплене вами повідомлення.
Адріан Петреску

@ Адріан Петреску: Не могли б ви зробити цю відповідь і, можливо, детальніше розглянути її? Додайте такі речі, як, коли кожен (ви надаєте ситуацію для попередньої атаки, але не для зіткнення) найкраще підходить?
Томас Оуенс

Відповіді:


27

Я мотивую різницю для вас сценаріями атаки.

In a first preimage attack, we ask an adversary, given only H(m), to find m or some m such that H(m) = H(m). Suppose a website stores {username,H(password)} in its databases instead of {username,password}. The website can still verify the authenticity of the user by accepting their password and comparing H(input)=?H(password) (with probability of 1/2n for some large n for false positives). Now suppose this database is leaked or is otherwise comprimised. A first preimage attack is the situation where an adversary only has access to a message digest and is trying to generate a message that hashes to this value.

In a second preimage attack, we allow the adversary more information. Specifically, not only do we give him H(m) but also give him m. Consider the hash function H(m)=mdmodpqpqdm=mpq+m, H(mpq+m)=(mpq+m)dmodpq=mdmodpq. And so the adversary has found a collision with little to no computation.

We would like one way hash functions to be resistant to second preimage attacks because of digital signature schemes, in which case H(document) is considered public information and is passed along (through a level of indirection) with every copy of the document. Here an attacker has access to both document and H(document). If the attacker can come up with a variation on the original document (or an entirely new message) d such that H(d)=H(document) he could publish his document as though he were the original signer.

A collision attack allows the adversary even more opportunity. In this scheme, we ask the adversary (can I call him Bob?) to find any two messages m1 and m2 such that H(m1)=H(m2). Due to the pigeonhole principle and the birthday paradox, even 'perfect' hash functions are quadratically weaker to collision attacks than preimage attacks. In other words, given an unpredictable and irreversible message digest function f({0,1})={0,1}n which takes O(2n) time to brute force, a collision can always be found in expected time O(sqrt(2n))=O(2n/2).

Bob can use a collision attack to his advantage in many ways. Here is one of the simpliest: Bob finds a collision between two binaries b and b (H(b)=H(b)) such that b is a valid Microsoft Windows security patch and b is malware. (Bob works for Windows). Bob sends his security patch up the chain of command, where behind a vault they sign the code and ship the binary to Windows users around the world to fix a flaw. Bob can now contact and infect all Windows computers around the world with b and the signature that Microsoft computed for b. Beyond these sorts of attack scenarios, if a hash function is believed to be collision resistant, that hash function is also more likely to be preimage resistant.


That's beautifully explained. A lot more math than I was looking for, but I very much appreciate the effort - I followed you right through each one. Thanks.
Thomas Owens

And wow. A fellow RIT student.
Thomas Owens

1
How's it going Thomas? I think you had Physics with my friend Alan Meekins. Good to see RIT people here! Also, thank you for accepting the answer.
Ross Snider

Pretty good. If you are going to be around campus in the Fall and are interested in security, perhaps we can catch up in person. I've been doing some applied security work (applying stenography, steganalysis, public key encryption, digital signatures) this summer and would love to hear about the theoretical side (as much as I'm interested in it - I don't have the time or mathematical background to get through a lot of the papers on the subject).
Thomas Owens

rws1236@cs.rit.edu
Ross Snider


1

The problem that Ross mentions as being the discrete log problem is in reality an altogether different problem, the RSA problem, which is much more related to computing roots than to discrete log.


2
This is certainly true! Oops. Originally I used the discrete log problem and later editted the details of the scheme. Good catch. Not sure that this consitutes a new answer - it was probably more appropriate to leave as a comment under my answer.
Ross Snider
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.