LXF144:DrBrown2
|
|
|
Тайная жизнь паролей
- Итак, вы в курсе, что единственное, чего нет в файле passwd – это пароль; а знаете ли вы, как все это работает на самом деле?
Начнем с основ. Все учетные записи в Linux – или, по крайней мере те, что соответствуют реальным пользователям – защищены паролями. Когда пользователь задает пароль, криптографическая свертка пароля (хэш) записывается в строку учетной записи пользователя в файле /etc/shadow. Входя в систему, пользователь вводит пароль, который снова хэшируется, и свертка сравнивается со сверткой в файле shadow. В открытом виде пароли не хранятся нигде.
Это немного упрощенное объяснение. На практике при задании пароля генерируется случайный текст (salt, «приправа») и дописывается к незашифрованному паролю. Затем результат объединения пароля и «приправы» шифруется. «Приправа» и пароль сохраняются в поле пароля в /etc/shadow. Когда пользователь входит в систему, «приправа» берется из файла shadow, объединяется с паролем, и вычисляется свертка от результата объединения. Применение «приправы» дает ряд преимуществ. Во-первых, если два пользователя выберут одинаковый пароль, об этом нельзя будет догадаться, заглянув в /etc/shadow. «Приправа» также значительно усложняет взлом пароля методом перебора, о чем я расскажу позже. За задание и проверку паролей в основном отвечает модуль PAM pam_unix. Ему часто помогают модули вроде pam_pwcheck, pam_cracklib и pam_passwdqc, выполняющие проверку паролей на надежность.
В Linux использовались различные алгоритмы хэширования. Самый ранний был основан на алгоритме DES и использовал только пароли из восьми символов – по семь бит от каждого символа образовывали 56-битный ключ DES. В дальнейших версиях была добавлена поддержка хэширования на основе MD5 и поддержка сверток SHA-256 и SHA-512. Они поддерживают более длинные пароли и используют более длинные свертки. Например, в системе SLED-11 (SUSE) моя запись в /etc/shadow выглядит так:
$1$vte.LblF$de2zWUjnCqqFbeqhcwCbi0
- Для неподготовленного взгляда это выглядит мусором, но символы $ создают в записях файла /etc/shadow некую структуру.
На рисунке ниже показана структура этой записи. Видны «приправа» из 8 символов и свертка из 22 символов. Они закодированы по основанию 64, и каждому символу соответствуют шесть бит. Это свертка MD5. В Ubuntu 10.04 она выглядит так:
$6$QIwH744n$2cFYj/WxLoNwzZ1YKs1YOCGNKS.gvM-mxcuFLydzAWw5jm8Or3BmLAKp6jLPdhyV0h5v5fA3/gsDEq3tFRTsCr0
Здесь мы видим «приправу» из восьми символов и свертку из 86 символов. Это хэш SHA-512. Все хэширование выполняется процедурой crypt library.
Взлом паролей
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Если вы заполучите копию файла shadow, легко ли будет восстановить пароль? Криптографы могут вычислить усилия, необходимые для атаки методом перебора, когда последовательно перебираются все возможные пароли, затем они хэшируются и результат проверяется на совпадение. «Приправа» усложняет эту задачу, потому что каждый перебираемый пароль нужно объединять с «приправой» и хэшировать, а не просто сравнивать каждый хэш с каждой записью в файле shadow. «Приправа» также делает невозможным использование «радужных таблиц» – заранее вычисленных таблиц хэшей. «Радужные таблицы» содержат большой объем данных, и для каждого возможного значения «приправы» понадобится отдельная таблица – таблиц слишком много, чтобы это было осуществимо на практике. Все это очень подробно обсуждается в статье http://cromwell-intl.com/security/password.html.
На практике область паролей, выбираемых обычными людьми, гораздо, существенно меньше. Программы вроде John The Ripper умеют выполнять эффективные атаки методом перебора, используя словарные слова и строки, от них образованные. За одну ночь работы в файле shadow обыкновенной многопользовательской системы John может добыть один или несколько паролей – конечно, в зависимости от того, насколько хорошо осведомлены пользователи о важности выбора надежных паролей. И, конечно, чтобы осуществить такую атаку, первым делом нужно получить доступ к файлу shadow, а его может читать только root. Гораздо более многообещающий подход для многих хакеров – социальная инженерия: необходимо заставить пользователя поверить вам настолько, чтобы он сам сказал вам пароль. Осведомленность пользователя здесь также играет большую роль.
Вычисляем свертку
Начнем с фрагмента текста. Сложим ASCII-коды всех символов текста и возьмем четыре последних цифры результата. Очевидно, получится число от 0 до 9999. Это пример свертки. Это что-то вроде «отпечатка пальца» оригинала, но это преобразование с потерями, и по нему вернуться к исходному тексту нельзя. Для этого алгоритма по заданной свертке легко подобрать исходный текст (не обязательно исходный). А вот для криптостойких сверток, типа MD5 и SHA1, это гораздо сложнее.