Введение

Утилита шифрования Unix

В системах Unix, crypt или enigma — это утилита, используемая для шифрования. Из-за лёгкости взлома она считается устаревшей. Программа обычно используется как фильтр и традиционно реализовывалась с использованием алгоритма, основанного на принципе "роторной машины", подобно машине Энигма. Считается, что она криптографически слишком слаба, чтобы обеспечить какую-либо защиту от атак полным перебором современными персональными компьютерами. Некоторые версии Unix поставлялись с ещё более слабой версией команды crypt(1) для соответствия действующим законам и нормативным актам, ограничивающим экспорт криптографического программного обеспечения. Некоторые из них представляли собой просто реализации шифра Цезаря (по сути, не более безопасные, чем ROT13, который реализован как шифр Цезаря с известным ключом).

История

Криптограф Роберт Моррис разработал программу на основе M 209, которая впервые появилась в Unix версии 3, чтобы стимулировать эксперименты по взлому шифров; Моррису удалось взломать её вручную. Деннис Ричи автоматизировал дешифрование с помощью метода Джеймса Ридса, а в версии 7 появилась новая версия, основанная на "Энигме", которую также взломали Ридс и Питер Дж. Вайнбергер.

Разрушение криптографии

Программы для взлома шифрования crypt(1) широко доступны. Рабочая среда криптоаналитика Боба Болдуина, разработанная в 1984–1985 годах, представляет собой интерактивный инструмент, который предоставляет последовательные предположения открытого текста, которые пользователь должен корректировать. Она также включает в себя рабочую реализацию crypt(1), используемую в современных дистрибутивах BSD. Программа unixcrypt breaker, разработанная Питером Селингером, использует простую статистическую модель, аналогичную атаке по словарю, которая принимает набор открытых текстов на вход и обрабатывает их для подбора вероятных вариантов, и не требует участия пользователя.

Отношение к хеш-функции пароля

Существует также хеш-функция для паролей Unix с тем же именем — crypt. Хотя обе используются для защиты данных в определенном смысле, в остальном они практически не связаны между собой. Чтобы различать их, авторы часто называют утилиту crypt(1), поскольку она документирована в разделе 1 страниц руководства Unix, а хеш-функцию пароля — crypt(3), поскольку её документация находится в разделе 3 руководства.