Crypt (Unix)
Crypt | |
---|---|
Тип | Шифрование файлов |
Автор | Роберт Моррис |
Операционные системы | Research Unix V3-V7, OpenSolaris |
Языки интерфейса | Английский |
Аппаратные платформы | IA-32, x86-64 и другие |
Состояние | Устарела |
В UNIX системах crypt является устаревшей утилитой, предназначенной для шифрования файлов.
История
[править | править код]Crypt был создан Робертом Моррисом и впервые появился в Version 3 Unix с целью стимулировать разработки по взлому шифров; в конечном итоге Моррис сам и взломал crypt. Деннис Ритчи сумел автоматизировать процесс расшифровки, используя метод, предложенный Джеймсом Ридсом, и усовершенствованная версия алгоритма crypt появилась в Version 7 Unix, которую Ридс и Питер Вейнбергер также взломали[1].
Связь с хеш-функцией
[править | править код]Существует также криптографическая хеш-функция с одноимённым названием — crypt. Несмотря на то, что и утилита crypt и функция crypt используются для шифрования данных, между ними нет ничего общего. Чтобы различать их, обычно ссылаются на системную утилиту как crypt(1), так как она документирована в разделе 1 руководства UNIX, а на криптографическую хеш-функцию как crypt(3), так как она документирована в секции 3.
Команда crypt(1)
[править | править код]crypt(1) является простой утилитой для шифрования/дешифровки данных. Как правило она используется в качестве программы-фильтра (программы, которая принимает на вход строку и возвращает другую строку), и которая традиционно основывается на алгоритме, использовавшемся в машине Энигма. Алгоритм считается чрезмерно криптографически уязвимым, чтобы обеспечить защиту от полного перебора ключей современным бытовым персональным компьютером.
Некоторые версии UNIX поставлялись с даже более уязвимой версией команды crypt(1), чтобы обеспечить выполнение современных законов, ограничивающих экспорт криптографического программного обеспечения. Некоторые из реализаций crypt фактически являлись реализациями шифра Цезаря.
crypt(1) на Linux
[править | править код]Дистрибутивы Linux обычно не включают в себя UNIX-совместимую версию crypt по нескольким причинам:
- crypt считается весьма незащищённым от атак методом полного перебора (в дистрибутив обычно входит GnuPG, который достаточно криптографически стоек по современным меркам).
- На ранних этапах развития Linux были опасения, что crypt может не удовлетворить требованиям ITAR по экспорту криптографического программного обеспечения; по этой причине утилита была исключена из большинства дистрибутивов, разрабатывавшихся в США (разработчики предлагают пользователям скачать GnuPG или аналогичное программное обеспечение самостоятельно, иногда предоставляя скрипты для автоматизации процесса установки).
Исходный код для нескольких старых версий программы crypt доступен в архиве The Unix Heritage Society.
Последняя версия кода доступна в проекте OpenSolaris.
В настоящее время на Linux доступны усовершенствованные симметричные криптосистемы (они также портируемы на любую другую UNIX-подобную операционную систему), включая mcrypt и ccrypt[2]. Несмотря на то, что эти программы позволяют использовать весьма сложные алгоритмы шифрования, с помощью опций командной строки можно задать им режим работы, совместимый с классическим crypt(1).
Взлом crypt(1)
[править | править код]Программы для взлома шифров crypt(1) широко доступны. В 1984—1985 Боб Балдвин создал программу Crypt Breaker’s Workbench[3], которая является интерактивной утилитой, предоставляющей пользователю последовательно 'догадки' о пароле, а пользователь должен выбирать из них наиболее подходящий. Unixcrypt-breaker Питера Селингера[4] использует простую статистическую модель для отсеивания неподходящих паролей и не требует вмешательства пользователя.
Примечания
[править | править код]- ↑ Макилрой, Дуглас A Research Unix reader: annotated excerpts from the Programmer’s Manual. CSTR. Bell Labs. 139. 1971—1986 . Дата обращения: 8 сентября 2015. Архивировано 11 ноября 2017 года.
- ↑ Peter Selinger: ccrypt Архивная копия от 22 февраля 2011 на Wayback Machine. Июль 27, 2008.
- ↑ Bob Baldwin: Crypt Breaker’s Workbench Архивная копия от 18 августа 2011 на Wayback Machine, 1984—1985.
- ↑ Peter Selinger: unixcrypt-breaker Архивная копия от 19 сентября 2015 на Wayback Machine. Июль 27, 2008.
Ссылки
[править | править код]- Исходный код для crypt(1) из OpenSolaris (опубликован после смягчения экспортных ограничений)
- Исходный код для crypt(1) из Version 7 Unix
- Исходный код для crypt(1) из Version 6 Unix (реализация криптосистемы на основе машины M-209 созданной Борисом Хагелиным)
- Пример кода SHA-512, баш-скрипт и его описание.