Пароль

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Пароль (фр. parole — слово) — это секретное слово или набор символов, предназначенный для подтверждения личности или полномочий. Пароли часто используются для защиты информации от несанкционированного доступа. В большинстве вычислительных систем комбинация «имя пользователя — пароль» используется для удостоверения пользователя.

Содержание

История паролей[править]

Пароли использовались с древнейших времён. Полибий (?201 до н. э.) описывает применение паролей в Древнем Риме следующим образом:

То, каким образом они обеспечивают безопасное прохождение ночью выглядит следующим образом: из десяти манипул каждого рода пехоты и кавалерии, что расположено в нижней части улицы, командир выбирает, кто освобождается от несения караульной службы, и он каждую ночь идёт к трибуну, и получает от него пароль — деревянную табличку со словом. Он возвращается в свою часть, а потом проходит с паролем и табличкой к следующему командующему, который в свою очередь передает табличку следующему. [1]

Пароли использовались в компьютерах с первых их дней. Например, CTSS от MIT, появившаяся в 1961 году, была одна из первых открытых систем. Она использовала команду LOGIN для запроса пароля пользователя.

Роберт Моррис предложил идею хранения паролей в хэш-форме для операционной системы UNIX. Его алгоритм, известный как crypt, использует 12-битный salt и связывается для изменения формы с алгоритмом DES, в 25 раз[источник не указан 1481 день] снижая риск перебора по словарю.

Безопасность пароля пользователя[править]

Исследования показывают [2], что около 40 % всех пользователей выбирают пароли, которые легко угадать автоматически. Легко угадываемые пароли (123, admin) считаются слабыми и уязвимыми. Пароли, которые очень трудно или невозможно угадать, считаются более стойкими. Некоторыми источниками рекомендуется использовать пароли, генерируемые на стойких хэшах типа MD5, SHA-1 от обычных псевдослучайных последовательностей, по алгоритмам вида [3],[4][5] (в коде Linux Bourne Shell, Perl):

Bourne Shell

function mkpw_md5() {   # Hex password making function via MD5 hashing
 
        # random + Year + Month + Day + Hour + Minute + Second + Nanoseconds
        local s=$(head /dev/urandom)$(date +%Y%m%d%H%M%S%N)
        echo $s | md5sum | cut -c1-${1:-8};
}
 
function mkpw_md5_alpha() {     # Alphabetic password making function via MD5 hashing
 
        # random + Year + Month + Day + Hour + Minute + Second + Nanoseconds
        local s=$(head /dev/urandom)$(date +%Y%m%d%H%M%S%N)
        echo $s | md5sum | uuencode -m -| sed -n 2p | cut -c3-43 | cut -c1-${1:-8};
}

Генерация пароля[править]

В Unix-подобных операционных системах можно использовать утилиту pwgen. Например

pwgen 10 1

сгенерирует 1 пароль длиной 10 символов.

Альтернативные методы контроля доступа[править]

Многочисленные виды многоразовых паролей могут быть скомпрометированы и способствовали развитию других методов. Некоторые из них становятся доступны для пользователей, стремящихся к более безопасной альтернативе.


Методы передачи пароля через сеть[править]

Простая передача пароля[править]

Пароль передаётся в открытом виде. В этом случае он может быть перехвачен при помощи простых средств отслеживания сетевого трафика.

Передача через зашифрованные каналы[править]

Риск перехвата паролей через Интернет можно уменьшить, помимо прочих подходов, с использованием Transport Layer Security TLS, которая ранее называлась SSL, такие функции встроены во многие браузеры Интернета.

Базирующийся на хешах[править]

Пароль передается на сервер уже в виде хэша (например, при отправке формы на web-странице пароль преобразуется в md5-хэш при помощи JavaScript), и на сервере полученный хэш сравнивается с хэшем, хранящимся в БД. Такой способ передачи пароля снижает риск получения пароля при помощи сниффера.[источник не указан 1481 день]

Проектирование защищенного программного обеспечения[править]

Общие методы повышения безопасности программного обеспечения систем защищенных паролем включают:

  • Ограничение минимальной длины пароля (некоторые системы Unix ограничивают пароли 8 символами).
  • Требование повторного ввода пароля после определенного периода бездействия.
  • Требование периодического изменения пароля.
  • Назначение стойких паролей (генерируемых с использованием аппаратного источника случайных чисел, либо с использованием генератора псевдослучайных чисел, выход которого перерабатывается стойкими хэш-преобразованиями).

Взлом компьютерных паролей[править]

Взлом пароля является одним из распространенных типов атак на информационные системы, использующие аутентификацию по паролю или паре «имя пользователя-пароль». Суть атаки сводится к завладению злоумышленником паролем пользователя, имеющего право входить в систему.

Привлекательность атаки для злоумышленника состоит в том, что при успешном получении пароля он гарантированно получает все права пользователя, учетная запись которого была скомпрометирована, а кроме того вход под существующей учетной записью обычно вызывает меньше подозрений у системных администраторов.

Технически атака может быть реализована двумя способами: многократными попытками прямой аутентификации в системе, либо анализом хэшей паролей, полученных иным способом, например перехватом трафика.

При этом могут быть использованы следующие подходы:

  • Прямой перебор. Перебор всех возможных сочетаний допустимых в пароле символов. Например, нередко взламывается пароль "qwerty" т.к. его очень легко подобрать по первым клавишам на клавиатуре.
  • Подбор по словарю. Метод основан на предположении, что в пароле используются существующие слова какого-либо языка либо их сочетания.
  • Метод социальной инженерии. Основан на предположении, что пользователь использовал в качестве пароля личные сведения, такие как его имя или фамилия, дата рождения и т.п. Напр. Вася Пупкин, 31.12.1999 г.р. нередко имеет пароль типа "vp31121999" или "vp991231".

Для проведения атаки разработано множество инструментов, например, John the Ripper.

Критерии стойкости пароля[править]

Исходя из подходов к проведению атаки можно сформулировать критерии стойкости пароля к ней.

  • Пароль не должен быть слишком коротким, поскольку это упрощает его взлом полным перебором. Наиболее распространенная минимальная длина — восемь символов. По той же причине он не должен состоять из одних цифр.
  • Пароль не должен быть словарным словом или простым их сочетанием, это упрощает его подбор по словарю.
  • Пароль не должен состоять только из общедоступной информации о пользователе.

В качестве рекомендацией к составлению пароля можно назвать использование сочетания слов с цифрами и специальными символами (#, $, * и т.д.), использование малораспространенных или несуществующих слов, соблюдение минимальной длины.

Методы защиты от атаки[править]

Методы защиты можно разделить на две категории: обеспечение стойкости к взлому самого пароля, и предотвращение реализации атаки. Первая цель может быть достигнута проверкой устанавливаемого пароля на соответствие критериям сложности. Для такой проверки существуют автоматизированные решения, как правило работающие совместно с утилитами для смены пароля, например, cracklib[6].

Вторая цель включает в себя предотвращение захвата хэша передаваемого пароля и защиту от многократных попыток аутентификации в системе. Чтобы предотвратить перехват, можно использовать защищенные (зашифрованные) каналы связи. Чтобы усложнить злоумышленнику подбор путем многократной аутентификации, обычно накладывают ограничение на число попыток в единицу времени (пример средства: fail2ban[7]), либо разрешением доступа только с доверенных адресов.

Комплексные решения для централизованной аутентификации, такие как Red Hat Directory Server[8] или Active Directory[9] уже включают в себя средства для выполнения этих задач.

См. также[править]

Документы[править]

  1. Polybius on the Roman Military
  2. Самые распространенные пароли в интернете — Деловой Петербург
  3. MLA Wire: Shell: Linux Password Generator
  4. Астахов Константин. Генератор паролей
  5. mkpw-md5-alpha | Download mkpw-md5-alpha software for free at SourceForge.net
  6. CrackLib | Download CrackLib software for free at SourceForge.net
  7. Fail2ban
  8. Chapter 7. Managing User Authentication
  9. Enforcing Strong Password Usage Throughout Your Organization

Ссылки[править]