Это теоретически возможно, но это еще не сделано.
То, что вы ищете, называется «коллизия хешей»: два файла с одинаковым хешем. Криптографические хэш-коды, такие как SHA-1, обычно предназначены для того, чтобы сделать это трудным. Поскольку SHA-1 является 160-битным кодом, в среднем потребуется 2 ^ 159 попыток перебора, чтобы найти дубликат. Если найден алгоритм, который надежно работает лучше, чем алгоритм против криптографического хэша, хеш считается «сломанным».
MD-5 - пример очень сломанного хэша. Он должен был иметь прочность 128 бит, что требовало в среднем 2 ^ 127 попыток. Как и в случае злоупотребления известными уязвимостями, фактическое количество попыток может достигать 2 ^ 47. Это много меньше, чем 2 ^ 127. Фактически, это было сделано менее чем за один день на современном вычислительном кластере.
Я привожу этот пример, потому что это наиболее близко к тому, как вы собираетесь использовать SHA-1. Тем не менее, это не самый распространенный подход криптоанализа для проверки того, что хэши не сломаны. Как правило, они допускают конфликт между двумя файлами, выбранными злоумышленником, вместо того, чтобы вы выбирали один файл и злоумышленник пытался сопоставить его. Преимущество такого рода атак состоит в том, что их легче сравнивать. Если я нахожу, что "тяжело" взломать ваш файл, значит ли это, что другой файл такой же сильный? Эта атака, при которой злоумышленник выбирает оба файла, гарантирует, что мы поймаем худшее из худшего.
Этот тип атаки позволяет использовать интересный трюк, известный как « атака на день рождения ». Короче говоря, использование атаки на день рождения вдвое уменьшает силу алгоритма, поэтому SHA-1 требует в среднем 2 ^ 80 попыток, а MD5 требует в среднем 2 ^ 64 попыток. Это половина из 160 и 128 соответственно.
SHA-1 имеет известные атаки, которые уменьшают свою силу с 2 ^ 80 до 2 ^ 69. Это не будет иметь большого значения для вас. 2 ^ 69 попыток это долго .
Однако из истории мы обнаружили, что алгоритмы хеширования не нарушаются самопроизвольно, а скорее нарушаются со временем. Никто не взломает алгоритм, подобный MD-5, взяв его с 2 ^ 64 до 2 ^ 47 за ночь. Это происходит со временем, так как многие люди публикуют статьи о математике, которую они используют против нее. Обычно можно наблюдать, как сложность атак медленно снижается с самого начала алгоритма (где лучшая атака обычно - атака на день рождения).
Тот факт, что мы видим некоторые изменения в столкновениях, предполагает, что SHA-1 видит свет в конце туннеля. Он по-прежнему силен, но может возникнуть желание перейти на новейший SHA-3, который в настоящее время намного безопаснее.
Вы должны действительно принимать такие решения с точки зрения модели угроз. Сколько урона может нанести атакующий, если он получит одно из этих столкновений. Являются ли ваши злоумышленники сценаристами, имеющими доступ к нескольким ноутбукам, или правительствами, располагающими целыми суперкомпьютерными кластерами? Насколько велико временное окно, злоумышленник должен взломать хеш, прежде чем он не будет использоваться (многие виды криптографии включают «смену защиты», например, смену пароля). Все это повлияет на то, насколько серьезно вы должны учитывать столкновения.