01.12 // Атака с подобранным префиксом на md5-хэш позволяет подменять исполняемый код


После многочисленных исследований в области хэш-функций удалось провести много атак на нахождение коллизий для практически всех широко используемых на сегодняшний момент и предсказать теоретическую возможность для остальных. Быстро были получены и практические результаты, но пока только для неиспользуемой md4 и имевшей широкое
распространение md5.

Первые атаки были непрактичны: удавалось получать лишь бессмысленные коллизии. Но их быстро адаптировали к получению коллизий для полей имён цифровых сертификатов, некоторых типов архивов.

Новым этапом стало недавнее исследование Marc Stevens, Arjen Lenstra и Benne de Weger "Vulnerability of software integrity and code signing applications to chosen-prefix collisions for MD5"[link1]. Им удалось получить коллизии для исполняемых файлов на основе атак с подобранным префиксом[link2], используя метод нахождения дифференциальных путей.

Теперь можно взять любой исходный код, например, такой:

[code]

#include "stdafx.h"
int main(int argc, char* argv[])
{
printf("Hello World ;-)\n");
return 0;
}

[/code]

и заменить его на любой произвольный, например, на такой:

[code]

#include "stdafx.h"
int main(int argc, char* argv[])
{
while(true)
printf("Goodbye World :-(\n");
return 0;
}

[/code]

После компиляции по методике авторов можно получить бинарные файлы с идентичным хэш-значением. Можно подменять и уже откомпилированный код, внедряя в него любые функции.

Аналогично, используя мультиколлизии и атаки Нострадамуса[link3] при помощи вычислений на игровой приставке Sony playstation авторам удалось создать хэш для файла, который "абсолютно достоверно" предсказывает итоги предстоящих президентских выборов в США в 2008 году. Таким образом можно фальсифицировать доказательство знания событий, происходящих в будущем, в любых криптографических протоколах, использующих хэш-функции, нестойкие к атакам Нострадамуса.

Речь идёт о создании множества файлов имеющих одинаковый хэш (мультиколлидирующих) и предъявлении подтасованного заранее результата. Этот же метод применяется и для получения множества исполняемых файлов с одинаковым хэшем.

Пока что данная атака тоже не до конца практична, так как требует создания фальсификата до опубликования хэша или подписи. Например можно создать фальсифицированную копию драйвера со злонамеренными функциями, а получить сертификат на чистый вариант или множество других файлов. Но нельзя создать такой фальсификат по хэшу и файлу уже созданному другим разработчиком (нельзя подделать чужой файл).

Атака на SHA-1[link4] представляется пока недостижимой, но авторы рекоммендуют по возможности полностью отказаться от md5 и подумать о возможно недолгом будущем sha-1.

Источник: Technische Universiteit Eindhoven[link1]

Ссылки
[link1] http://www.win.tue.nl/hashclash/SoftIntCodeSign/

[link2] http://www.win.tue.nl/hashclash/ChosenPrefixCollisions/

[link3] http://www.win.tue.nl/hashclash/Nostradamus/

[link4] http://www.iaik.tugraz.at/research/krypto/collision/