Dlaczego ważne jest, aby sekret znajdował się na końcu podczas podpisywania przy użyciu MD5?

16

często mówi się, że używając algorytmu MD5 do podpisywania dowolnych informacji, wspólny sekret musi znajdować się na końcu. Dlaczego?

Hendrik Brummermann
źródło
2
Czy możesz prosić bardziej konkretnie zamiast mówić „często”. Czy możesz przytoczyć referencje, a także wyjaśnić, dlaczego problem jest istotny?
Suresh Venkat
W tytule pytania jest literówka: czy możesz zmienić „i” na „koniec”?
Carlos Scheidegger,

Odpowiedzi:

16

Zobacz „ataki przedłużające” w konstrukcji Merkle-Damgard . Ten problem pojawia się podczas korzystania z funkcji skrótu do uwierzytelniania wiadomości .

Krótko mówiąc, umieszczenie sekretu na początku pozwala atakującemu, na podstawie wiadomości i jej skrótu, sfałszować dowolną wiadomość, która ma daną wiadomość jako prefiks. Jest to problem związany z naiwnymi kodami, ale można go uniknąć dzięki dobrze znanym kodom, takim jak HMAC .

randomwalker
źródło
1
Z tego, co rozumiem, jeśli złamiesz strumień wejściowy, a klucz współdzielony jest początkiem strumienia, wtedy pierwszy blok prawie zawsze otrzyma ten sam skrót, więc klucz wspólny można odgadnąć za pomocą ataków tęczy, prawda?
Alexandru