Как создаётся пароль
Каждый символ выбирается случайно из разрешённых вами символов с помощью криптографического генератора случайных чисел браузера (crypto.getRandomValues). Случайные значения, из-за которых некоторые символы стали бы вероятнее, отбрасываются и выбираются заново, поэтому все символы равновероятны. Если выбрано несколько видов символов, в пароле всегда есть хотя бы один символ каждого вида.
энтропия = длина × log2(возможных символов) парольная фраза = слов × log2(слов в списке) время подбора = 2^(энтропия − 1) ÷ попыток в секунду
Энтропия измеряет, сколько попыток нужно атакующему. Каждый лишний бит удваивает их число, поэтому длина важнее специальных символов: 20 букв и цифр надёжнее, чем 12 символов со всеми спецсимволами. Парольную фразу из случайных слов проще набирать и запоминать, и чтобы она сравнялась по стойкости со случайным паролем из 12 символов, нужно около семи слов.
Пример
Пароль из 16 символов, составленный из заглавных и строчных букв и цифр, использует 62 возможных символа: 16 × log2(62) ≈ 95 бит. При 10 млрд попыток в секунду его подбор занимает в среднем около 76 млрд лет. Шесть случайных слов из списка в 1296 слов дают 62 бита, около 7 лет при той же скорости.
Создать на сервере
На сервере Linux случайный пароль можно создать и без браузера. Любая из этих команд выведет один; pwgen, возможно, придётся сначала установить (apt install pwgen).
openssl rand -base64 24
pwgen -s 24 1
head -c 18 /dev/urandom | base64Вопросы
Безопасно ли пользоваться этим генератором паролей?
Да. Пароль создаёт криптографический генератор случайных чисел вашего браузера после загрузки страницы. Он никогда не отправляется на наш сервер и не сохраняется, а страница работает так же и при отключённой сети.
Какой длины должен быть пароль сервера?
Не меньше 16 случайных символов, а для всего, что доступно из интернета, например пароля root, базы данных или панели, — 20 и больше. Для SSH используйте ключ вместо пароля и отключите вход по паролю.
Парольная фраза лучше случайного пароля?
Её проще набирать и запоминать, и она так же стойка, если достаточно длинная: семь случайных слов из этого списка дают около 72 бит. Выбирайте слова случайно, как здесь; фразу, которую вы придумали сами, угадать гораздо проще.
Почему некоторых символов нет?
Кавычки, обратные слеши, пробелы, $ и # ломают команды оболочки, файлы .env и строки подключения, если их не экранировать. Предлагаемые здесь символы почти везде работают без кавычек. Если нужна большая стойкость, увеличивайте длину, а не добавляйте символы.