Это теоретически возможно, но это еще не сделано.
То, что вы ищете, называется «коллизия хешей»: два файла с одинаковым хешем. Криптографические хеш-коды, такие как 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, который в настоящее время намного безопаснее.
Вы должны действительно принимать такие решения с точки зрения модели угроз. Сколько урона может нанести атакующий, если он получит одно из этих столкновений. Являются ли ваши злоумышленники сценаристами, имеющими доступ к нескольким ноутбукам, или правительствами, располагающими целыми суперкомпьютерными кластерами. Насколько велико временное окно, злоумышленник должен разбить хеш, прежде чем он не будет использоваться (многие виды криптографии включают «смену защиты», например, смену пароля). Все это повлияет на то, насколько серьезно вы должны учитывать столкновения.