Приемы, облегчающие работу противника. Часть 16.
Очень многие программы распространяются в ZIP-архивах. И очевидная идея защиты дистрибутива — установка пароля на архив. Если выбранный пароль содержит буквы, цифры и знаки препинания и имеет достаточно большую длину, то для отыскания такого пароля перебором потребуется очень много времени. Однако кроме подбора пароля методом грубой силы (brute force) существуют и более эффективные варианты атаки.
Если архив был создан с помощью программы, основанной на исходных текстах от InfoZIP Group (например WinZip), и содержит пять или более файлов, существует алгоритм, отыскивающий ключ и расшифровывающий архив примерно за час.
Если применялся архиватор, не основанный на InfoZIP, то противник может попытаться воспользоваться атакой на основе открытого текста. Для этого ему понадобится иметь в открытом виде один из файлов, зашифрванных в архиве.
Но как можно получить незашифрованный файл? Оказывается, создатели архива часто сами помещают в архив с дистрибутивом файл, который можно найти в открытом виде. Например, файл README.TXT, описывающий продукт, обычно доступен по ссылке с web-страницы, а также находится в дистрибутиве.
Если инсталлятор программы, зашифрованный в архиве, создан при помощи пакета InstallShield, то в архиве окажется с десяток файлов, некоторые из которых идентичны для всех инсталляторов, созданных с помощью Install- Shield той же версии. Следовательно, незашифрованный файл может быть взят от другой программы или найден в Интернете с помощью службы FTPsearch.
Некоторые производители для распространения своих продуктов использовали разработанную компанией Symantec бесплатную программу Norton Secret Stuff (NSS), создающую из указанного набора файлов самораспаковывающийся архив с паролем. Все данные шифруются с помощью криптографически стойкого алгоритма BlowFish, но в силу действовавших на момент создания NSS ограничений на экспорт программного обеспечения, использующего стойкую криптографию, применяется ключ шифрования, в котором неизвестными являются только 32 бита.