Надежность zip 2.0 шифрования
В одном ПО для бекапирования (backup4all) предлагается 2 варианта шифрации архива:
– zip 2.0
– AES (128, 256)
Понятно, что второй вариант лучше, но он неудобен т.к. потом zip файлы невозможно открыть стандартным архиватором, а только этим.
Также известно, что сила алгоритма не в нем самом, а в длине ключа.
Вопрос: если использовать достаточно длнный ключ (напр. 12+ символов), то можно ли говорить о силе 2.0 шифрования аналогичной AES, или алгоритм настолько старый, что взламывается на раз-два простыми хакерскими програмками?
Сильное заявление =)
Афтар жжот. Мда... И это:
Учите-ка матчасть[link1], уважаемый.
Может в тему "Юмор" перенести?
На самом деле можно перевести на русский так, что будет близко к истине: "Если использован 12-символьный пароль из словарных слов, стойкость к взлому полным перебором будет одинакова, что для AES256, что для большинства самопальных алгоритмов." Если не приняты спецмеры по типу RAR.
А вот к взлому неполным перебором стойкость будет разная :-D
"Прочность цепи равна прочности самого слабого звена"©
Но в данном конкретном случае я бы предложил алгоритм zip, обработав поверх RAR-ом без сжатия, но с AES. И стойкость удовлетворит, и извлечь отдельные файлы можно будет тем же самым RAR.
Если идти по пути дополнительной обработки архива, то я лучше бы использовал (в порядке приоритета):
1. gpg
2. PGP
2. 7-zip (без сжатия)
3. RAR
Понимаю предпочтение бесплатного 7-zip ворованному RAR, но ни pgp, ни gpg не могут извлекать отдельные файлы из двухуровневых архивов. Так что серьезно расплачиваемся эффективностью работы с обмен на сомнительное повышение стойкости (сомнительное, потому что для извлечения одного файла нужно вывалить куда-то содержимое всего бэкапа в открытом виде).
Чем вам плох самораспаковывающийся архив? В крайнем случае (при пересылке через почту странных провайдеров) поменяйте расширение.
Он зависит от ОС. Плюс мало кто запустит у себя на системе недоверенный код.
О чём вообще речь? Просто указываете в имени архива адрес, откуда можно скачать архиватор, использовавшийся вами при создании этого архива. ;)
Да что мелочиться? Лучше уж сразу присылайте бинарники для всех возможных типов операционных систем. :)
А почему без сжатия, если не секрет?
Давно хотел спросить про надежность 7-zip шифрования, чтобы не начинать новую тему спрошу здесь.
Интересует прежде всего как берется хэш из пароля (сколько раз, соль и т.д.), к сожалению описания нигде найти не смог.
Также замитил, что в одной из недавних версий "- Encryption strength for .7z format was increased. Now it uses random initialization vectors." Снижается ли криптостойкость в предыдущих версиях использующих постоянный IV? Если да, то как можно это использовать?
С постоянным ВИ идентичный открытый текст шифруется в идентичный шифртекст. При случайном ВИ шифртекст всегда случаен, независимо от входных данных. (Разумеется, всё это с учётом фиксированного ключа. Если ВИ одинаковый, но ключи разные, шифртекст, разумеется, тоже будет разным.) Причём если при идентичном ВИ различается только часть открытых текстов (допустим, одинаковое начало и разная концовка), то шифртекст будет также одинаковым до места расхождения. Это даёт атакующему большой простор для атак на систему.
Это будет уже сжатый файл утилитой backup4all, т.е. повторное сжатие только замедлит работу.
P. S. К RAR тоже нужно приписать "без сжатия".
Описание, как всегда в сырцах, сиплюсплюсным по синему. Как и в RAR обрабатывается строка из многократных повторений соли, пароля и счетчика. Отличия – в RAR соль 8 байт, в 7-zip 16 (вообще длина соли определена как половина от длины ключа). Пароль тоже наверное в Unicode, я не разбирался подробно. Счетчик 8 байт вместо 3 байт в RAR. Формат заголовка и программный код предусматривают число циклов хэширования до 262 (для будущих суперкомпьютеров наверное), сейчас используется 218. Хэш SHA256 (в RAR SHA-1). Ну и алгоритм AES256 вместо AES128 в RAR. Режим счетчика (в RAR не помню какой).
Есть там еще один вариант, когда ключ примитивно образуется объединением соли с паролем, но это наверное для совместимости с какими-то старыми версиями.
С учетом 16-байтовой соли рандомный IV скорее рюшечка, чем реальная необходимость.
А что, у RAR уже доступны исходники?
Файл UnRarDLL.url из стандартной поставки.
Открытый UnRAR это конечно хорошо, но можно ли по нему сказать, что в самом RAR нет backdoor'ов?
Нет конечно. Но вопрос вообще был про алгоритм работы 7-zip, с RAR я сравнивал просто для примера.
Для меня это не столь очевидно. Не исключено что, проанализировав алгоритм расшифрования (особенно если он сообщает как об ошибках о различных "неформатных" данных в исходном файле), можно будет сделать заключение, что бэкдоров нет.
Только что собрался написать дополнение :)
Открытый UnRAR безусловно резко сокращает число возможных каналов утечки, процедуры генерации ключа и шифрования не могут содержать лазеек (иначе ничего бы не работало), а "лишние байты" в коротком и задокументированном нешифрованном заголовке сразу были бы обнаружены. Так что под подозрением остается разве что соль – в качестве нее можно использовать зашифрованные коротким случайным ключом первые 8 байт пароля. Но единственный канал гораздо проще отследить, а уж умельцы код ковыряли (правда больше на предмет взлома). Так что гарантировать отсутствие бэкдоров UnRAR все-таки не может, но делает их наличие куда менее вероятным.
Можно ли исходя из этого считать, что шифрование RAR имеет гарантированную стойкость как у AES128 c длиной пароля равной (длина_RAR_пароля-8) байт ?
Так это надо каждую новую версию опять ковырять...
Ну пароль и заархивировать можно... К тому же по первым 8 байтам легко опознать цитатную парольную фразу или определить типичные используемые "рандомизаторы" (типа чередования больших и маленьких букв).
Гарантировать можно только невозможность утечки ключа через соль.
Недаром многие предпочитают ПО с открытым кодом. И хотя я в первую очередь предложил RAR, того кто предпочтет открытый 7-zip понимаю и одобряю.
То есть можно сказать, что RAR'у гарантированную стойкость даст достаточно длинный случайный пароль.
Можно. Но возвращаясь к нашим баранам, через полгода длинный случайный пароль можно и не вспомнить. Так что стоит или разумно ограничить требования к безопасности и спокойно пользоваться RAR-ом, или использовать специальные средства – например хранить все бэкапы в ТруКриптовских контейнерах.
А его можно получать из легкозапоминаемого короткого с помощью средств вроде Javascript password generator[link2] ;)
Здравое зерно без сомнения есть, но уж не по интернету генерировать пароль. Накроется завтра этот сайт, а с ним вся информация? А свою такую програмку можно написать.
Что касается конкретно указанной страницы, то она легко сохраняется локально. Кроме того, там использован стандартный алгоритм SHA-1.
Кстати, как RAR обращается с паролем? Есть ли смысл расширять набор используемых в нём символов, или можно просто в достаточной степени увеличить его длину?
Для получения SHA-1 хэша выделите нижеследующий текст, вставьте его в поле адреса браузера и перейдите по этому "адресу" ;-). Можно даже сохранить в закладках и ни от кого не зависеть!
cooshoo, огромное спасибо за разъяснение про 7-zip.
Мне вот еще что особо понравилось – если кому-то не нужна защита от словарного подбора (256К итераций), а нужна высокая скорость шифрования и он переделает программу так, чтобы хэш вычислялся только 1 раз – получившийся вариант абсолютно нормально откроется любой версией 7-zip. Число повторов записывается в заголовок.
При больших массивах информации время на генерацию ключа пренебрежительно мало в сравнении с самим процессом шифрования. Поэтому сокращать количество циклов не вижу смысла.
Я имел ввиду ситуацию, когда каждый из нескольких тысяч файлов упаковывается в самостоятельный архив (хотя согласен, сам делал это только в тестовых целях и не представляю кому бы это было нужно на практике). Но верно и обратное – если кто-то решит увеличить число циклов в 64-256 раз, такая модификация тоже откроется стандартной программой.