Пароль

Это старая версия этой страницы, сохранённая 46.148.224.124 (обсуждение) в 17:22, 27 октября 2018 (→‎См. также: дополнение). Она может серьёзно отличаться от текущей версии.

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

Окно ввода пароля

История паролей

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

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

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

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

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

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

В конце 2017 года корпорация SplashData опубликовала 100 самых ненадежных паролей года. Первое место, уже 4 год подряд, занимает пароль - 123456. Его используют около 17% пользователей сети Интернет.[6]

Генерация пароля

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

pwgen 10 1

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

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

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

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

Простая передача пароля

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

Передача через зашифрованные каналы

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

Базирующийся на хэшах

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

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

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

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

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

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

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

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

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

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

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

Критерии стойкости пароля

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

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

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

Методы защиты от атаки

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

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

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

См. также

Примечания

Ссылки