Вопрос проверяет понимание недостатков алгоритма хэширования MD5 и его непригодности для криптографических задач.
MD5 (Message Digest 5) — это криптографическая хэш-функция, разработанная в 1991 году. Со временем в ней были обнаружены серьезные недостатки, которые делают ее небезопасной для большинства современных применений. Основная проблема — уязвимость к коллизиям, когда два разных набора данных производят одинаковый хэш.
В 2004 году исследователи продемонстрировали практические коллизии для MD5. Это означает, что злоумышленник может создать два разных файла или сообщения с одинаковым хэшем, что нарушает целостность данных. Например, можно подделать цифровую подпись или сертификат.
// Пример коллизии MD5 (упрощенно)
// Два разных сообщения с одинаковым хэшем
message1 = "d131dd02c5e6eec4"
message2 = "d131dd02c5e6eec5"
// Оба дают MD5: 79054025255fb1a26e4bc422aef54eb4MD5 очень быстрый, что делает его уязвимым для атак перебором. Современное оборудование может вычислять миллиарды хэшей в секунду, что позволяет легко подбирать пароли или данные. Для хранения паролей рекомендуется использовать медленные алгоритмы, такие как bcrypt или Argon2.
Хотя атаки на предобраз (нахождение исходных данных по хэшу) для MD5 менее практичны, чем коллизии, они все же существуют. В 2009 году была показана атака со сложностью 2^123, что ниже теоретического предела 2^128. Это делает MD5 слабее, чем идеальная хэш-функция.
MD5 все еще используется для проверки целостности данных в небезопасных средах (например, для контрольных сумм файлов), но не для криптографических целей. Вывод: MD5 не следует применять для защиты паролей, цифровых подписей или сертификатов. Вместо него используйте SHA-256 или SHA-3 для хэширования, а для паролей — специализированные функции с солью.