<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.linuxformat.ru/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF144%3ADrBrown2</id>
		<title>LXF144:DrBrown2 - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF144%3ADrBrown2"/>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF144:DrBrown2&amp;action=history"/>
		<updated>2026-05-13T03:53:21Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.19.20+dfsg-0+deb7u3</generator>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF144:DrBrown2&amp;diff=14569&amp;oldid=prev</id>
		<title>Crazy Rebel: викификация, оформление, иллюстрация</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF144:DrBrown2&amp;diff=14569&amp;oldid=prev"/>
				<updated>2013-01-10T06:04:44Z</updated>
		
		<summary type="html">&lt;p&gt;викификация, оформление, иллюстрация&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Тайная жизнь паролей==&lt;br /&gt;
&lt;br /&gt;
: Итак, вы в курсе, что единственное, чего нет в файле '''passwd''' – это пароль; а знаете ли вы, как все это работает на самом деле?&lt;br /&gt;
&lt;br /&gt;
Начнем с основ. Все учетные записи в Linux – или, по крайней мере те, что соответствуют реальным пользователям – защищены паролями. Когда пользователь задает пароль, криптографическая свертка пароля (хэш) записывается в строку учетной записи пользователя в файле '''/etc/shadow'''. Входя в систему, пользователь вводит пароль, который снова хэшируется, и свертка сравнивается со сверткой в файле '''shadow'''. В открытом виде пароли не хранятся нигде.&lt;br /&gt;
&lt;br /&gt;
Это немного упрощенное объяснение. На практике при задании пароля генерируется случайный текст (salt, «приправа») и дописывается к незашифрованному паролю. Затем результат объединения пароля и «приправы» шифруется. «Приправа» и пароль сохраняются в поле пароля в '''/etc/shadow'''. Когда пользователь входит в систему, «приправа» берется из файла '''shadow''', объединяется с паролем, и вычисляется свертка от результата объединения. Применение «приправы» дает ряд преимуществ. Во-первых, если два пользователя выберут одинаковый пароль, об этом нельзя будет догадаться, заглянув в '''/etc/shadow'''. «Приправа» также значительно усложняет взлом пароля методом перебора, о чем я расскажу позже. За задание и проверку паролей в основном отвечает модуль PAM ''pam_unix''. Ему часто помогают модули вроде ''pam_pwcheck, pam_cracklib'' и ''pam_passwdqc'', выполняющие проверку паролей на надежность.&lt;br /&gt;
&lt;br /&gt;
В Linux использовались различные алгоритмы хэширования. Самый ранний был основан на алгоритме DES и использовал только пароли из восьми символов – по семь бит от каждого символа образовывали 56-битный ключ DES. В дальнейших версиях была добавлена поддержка хэширования на основе MD5 и поддержка сверток SHA-256 и SHA-512. Они поддерживают более длинные пароли и используют более длинные свертки. Например, в системе SLED-11 (SUSE) моя запись в '''/etc/shadow''' выглядит так:&lt;br /&gt;
&lt;br /&gt;
 $1$vte.LblF$de2zWUjnCqqFbeqhcwCbi0&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF144_51_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
: '''  Для неподготовленного взгляда это выглядит мусором, но символы $ создают в записях файла /etc/shadow некую структуру.'''&lt;br /&gt;
&lt;br /&gt;
На рисунке ниже показана структура этой записи. Видны «приправа» из 8 символов и свертка из 22 символов. Они закодированы по основанию 64, и каждому символу соответствуют шесть бит. Это свертка MD5. В Ubuntu 10.04 она выглядит так:&lt;br /&gt;
&lt;br /&gt;
 $6$QIwH744n$2cFYj/WxLoNwzZ1YKs1YOCGNKS.gvM-mxcuFLydzAWw5jm8Or3BmLAKp6jLPdhyV0h5v5fA3/gsDEq3tFRTsCr0&lt;br /&gt;
&lt;br /&gt;
Здесь мы видим «приправу» из восьми символов и свертку из 86 символов. Это хэш SHA-512. Все хэширование выполняется процедурой ''crypt library''.&lt;br /&gt;
&lt;br /&gt;
===Взлом паролей===&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF144_51_2.jpg|300px]] «Приправа» играет ключевую роль в установке и проверке пароля и препятствует атаке методом перебора.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
Если вы заполучите копию файла '''shadow''', легко ли будет восстановить пароль? Криптографы могут вычислить усилия, необходимые для атаки методом перебора, когда последовательно перебираются все возможные пароли, затем они хэшируются и результат проверяется на совпадение. «Приправа» усложняет эту задачу, потому что каждый перебираемый пароль нужно объединять с «приправой» и хэшировать, а не просто сравнивать каждый хэш с каждой записью в файле '''shadow'''. «Приправа» также делает невозможным использование «радужных таблиц» – заранее вычисленных таблиц хэшей. «Радужные таблицы» содержат большой объем данных, и для каждого возможного значения «приправы» понадобится отдельная таблица – таблиц слишком много, чтобы это было осуществимо на практике. Все это очень подробно обсуждается в статье http://cromwell-intl.com/security/password.html.&lt;br /&gt;
&lt;br /&gt;
На практике область паролей, выбираемых обычными людьми, гораздо, существенно меньше. Программы вроде ''John The Ripper'' умеют выполнять эффективные атаки методом перебора, используя словарные слова и строки, от них образованные. За одну ночь работы в файле '''shadow''' обыкновенной многопользовательской системы ''John'' может добыть один или несколько паролей – конечно, в зависимости от того, насколько хорошо осведомлены пользователи о важности выбора надежных паролей. И, конечно, чтобы осуществить такую атаку, первым делом нужно получить доступ к файлу '''shadow''', а его может читать только root. Гораздо более многообещающий подход для многих хакеров – социальная инженерия: необходимо заставить пользователя поверить вам настолько, чтобы он сам сказал вам пароль. Осведомленность пользователя здесь также играет большую роль.&lt;br /&gt;
&lt;br /&gt;
===Вычисляем свертку===&lt;br /&gt;
&lt;br /&gt;
Начнем с фрагмента текста. Сложим ASCII-коды всех символов текста и возьмем четыре последних цифры результата. Очевидно, получится число от 0 до 9999. Это пример свертки. Это что-то вроде «отпечатка пальца» оригинала, но это преобразование с потерями, и по нему вернуться к исходному тексту нельзя. Для этого алгоритма по заданной свертке легко подобрать исходный текст (не обязательно исходный). А вот для криптостойких сверток, типа MD5 и SHA1, это гораздо сложнее.&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>	</entry>

	</feed>