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;
return 0;
[/code]
и заменить его на любой произвольный, например, на такой:
[code]
#include "stdafx.h"
int main(int argc, char* argv[])
{
while(true)
return 0;
printf("Goodbye World :-(\n");
[/code]
После компиляции по методике авторов можно получить бинарные файлы с идентичным хэш-значением. Можно подменять и уже откомпилированный код, внедряя в него любые функции.
Аналогично, используя мультиколлизии и атаки Нострадамуса[link3] при помощи вычислений на игровой приставке Sony playstation авторам удалось создать хэш для файла, который "абсолютно достоверно" предсказывает итоги предстоящих президентских выборов в США в 2008 году. Таким образом можно фальсифицировать доказательство знания событий, происходящих в будущем, в любых криптографических протоколах, использующих хэш-функции, нестойкие к атакам Нострадамуса.
Речь идёт о создании множества файлов имеющих одинаковый хэш (мультиколлидирующих) и предъявлении подтасованного заранее результата. Этот же метод применяется и для получения множества исполняемых файлов с одинаковым хэшем.
Пока что данная атака тоже не до конца практична, так как требует создания фальсификата до опубликования хэша или подписи. Например можно создать фальсифицированную копию драйвера со злонамеренными функциями, а получить сертификат на чистый вариант или множество других файлов. Но нельзя создать такой фальсификат по хэшу и файлу уже созданному другим разработчиком (нельзя подделать чужой файл).
Атака на SHA-1[link4] представляется пока недостижимой, но авторы рекоммендуют по возможности полностью отказаться от md5 и подумать о возможно недолгом будущем sha-1.
Источник: Technische Universiteit Eindhoven[link1]
[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/