Можно ли создать поддельный файл с одинаковыми контрольными суммами, используя два разных алгоритма?
Я был немного вдохновлен этой записью в блоге http://blogs.technet.com/dmelanchthon/archive/2009/07/23/windows-7-rtm.aspx (немецкий)
текущее понятие заключается в том, что md5 и sha1 оба несколько нарушены. Не легко и быстро, но, по крайней мере, для MD5 в пределах практической возможности. (Я совсем не эксперт по криптографии, поэтому, возможно, я ошибаюсь в таких вещах).
поэтому я спросил себя, можно ли создать файл A, который имеет же размер на та же сумма md5 и та же сумма sha1 как исходный файл А.
во-первых, возможно ли это вообще?
во-вторых, возможно ли это на самом деле, с текущим оборудованием/программным обеспечением?
если нет, не было бы самым простым способом обеспечить целостность файла, чтобы всегда использовать два разных алгоритма, даже если у них есть какая-то слабость?
Обновлено:
просто уточню: идея есть файл a и файл в' которых удовлетворяют условиям:
size(A) == size(A') && md5sum(A) == md5sum(A') && sha1sum(A) == sha1sum(A')
5 ответов
" возможно ли это вообще?- да, если общий размер контрольных сумм меньше общего размера файла, то избежать коллизий невозможно.
" возможно ли это на самом деле, с текущим оборудованием/программным обеспечением?"- если возможно построить текст, соответствующий заданной контрольной сумме для каждой из используемых контрольных сумм, то да.
посмотреть Википедия по конкатенации криптографических хэш-функций, что также является полезным термином для google для.
страницы:
" однако, для Merkle-Damgård хэш функции, связанные функции сильна только лучшая. компонент, не сильнее. Жу отметил что 2-столкновения приводят к Н-столкновения: если это возможно найти два сообщения с одинаковым MD5 хэш, это эффективно больше не трудно найти столько сообщений, как злоумышленник желает с идентичным Хэши MD5. Среди сообщений н с тот же хэш MD5, есть вероятно, быть коллизии в SHA-1. Этот дополнительная работа, необходимая для поиска Столкновение SHA-1 (за пределами экспоненциальный поиск дня рождения) полином. Этот аргумент резюмировал Финни."
для наивного ответа мы должны были бы сделать некоторые (неправильные) предположения:
- оба алгоритма хэширования SHA1 и MD5 приводят к равномерному распределению хэш-значений для набора случайных входов
- детали алгоритма в сторону--случайная входная строка имеет равную вероятность получения любого хэш-значения
(в основном, нет сгущения и красиво распределенных доменов.)
Если вероятность обнаружения строки, которая сталкивается с другой хэш SHA1 - p1, и аналогично p2 для MD5, наивный ответ-вероятность найти тот, который сталкивается с обоими, - p1*p2.
однако хэши оба сломаны, поэтому мы знаем, что наши предположения неверны.
хэши имеют слипания, более чувствительны к изменениям, с некоторыми данными, чем другие, и другими словами, не идеальны. С другой стороны, идеальный, не сломанный алгоритм хэширования будет иметь вышеуказанные свойства, и именно это делает его трудным чтобы найти столкновения. Они случайны.
вероятность внутренне зависит от свойств алгоритма-в основном, поскольку наши предположения недействительны, мы не можем "легко" определить, насколько это сложно. В самом деле, трудно найти вход, который сталкивается, вероятно, очень сильно зависит от характеристик самой входной строки. Некоторые из них могут быть относительно простыми (но все же, вероятно, непрактичными на современном оборудовании), а из-за различной природы двух алгоритмов некоторые на самом деле это может быть невозможно.
поэтому я спросил себя, будет ли это можно создать файл, который тот же размер, один и тот же MD5 сумму, и та же сумма sha1, что и исходный файл А.
Да, сделайте копию файла.
кроме этого, не без большого количества вычислительных ресурсов для проверки тонн перестановок (при условии, что размер файла нетривиален).
вы можете думать об этом так:
Если размер файла увеличивается на n, вероятность из возможных поддельных увеличивается, но вычислительные затраты, необходимые для проверки комбинаций увеличивается экспоненциально на 2^n.
таким образом, чем больше файл, тем больше вероятность есть is дурак там, но тем меньше вероятность, что вы его найдете.
теоретически да, вы можете иметь его, на практике это адский сговор. На практике никто даже не может создать сговор SHA1, не говоря уже о размере MD5 + SHA1 + одновременно. Эта комбинация просто невозможна прямо сейчас, не имея всей мощности компьютера в мире и запустить его на некоторое время.
хотя в ближайшем будущем мы можем увидеть больше уязвимостей в SHA1 и MD5. И с поддержкой лучшего оборудования (особенно GPU) почему бы и нет.
теоретически вы могли бы это сделать. На практике, если вы начали с двух контрольных сумм, предоставленных MD5 и SHA1, и попытались создать файл, который произвел те же две контрольные суммы - это было бы очень сложно (во много раз сложнее, чем создать файл, который произвел ту же контрольную сумму MD5 или контрольную сумму SHA1 в изоляции).