Использовать случайный пароль или парольную фразу?+−
Оба варианта законны, и рекомендации NIST по цифровой идентификации 2024 года прямо отдают предпочтение длине, а не принудительным правилам сложности. Случайный пароль концентрирует больше энтропии на символ, что идеально, когда менеджер паролей запомнит его за вас. Парольная фраза - несколько случайных слов, соединённых вместе, - обменивает немного энтропии на символ на то, что человек действительно может запомнить и напечатать, что важно для мастер-паролей или всего, что вы вводите по памяти.
Что на самом деле означают биты энтропии?+−
Каждый дополнительный бит энтропии удваивает число попыток, которые понадобятся злоумышленнику, чтобы перебрать все варианты. Пароль с 40 битами энтропии имеет около триллиона возможных комбинаций; пароль с 80 битами - примерно триллион в квадрате. Рекомендации по безопасности обычно считают 80+ бит отличным показателем для всего, что нельзя защитить ограничением попыток или блокировкой, например ключа шифрования или мастер-пароля менеджера паролей.
Как рассчитывается оценка времени взлома?+−
Она предполагает злоумышленника с офлайн-доступом к хешу пароля, делающего около 10 миллиардов попыток в секунду - грубый аналог современного GPU-кластера. Цель - передать порядок величины, а не дать точный прогноз: реальное время взлома сильно зависит от алгоритма хеширования, используемого целевой системой, о котором этот инструмент не может знать.
Почему исключаются похожие символы, такие как l, 1, I, O и 0?+−
Их легко перепутать при чтении вслух, написании от руки или отображении определёнными шрифтами. Их исключение меняет немного энтропии на пароль, который менее подвержен ошибкам при вводе с экрана или с листа бумаги - полезно для паролей, которые нужно вводить вручную, а не вставлять из менеджера.
Может ли генератор случайных значений отдавать предпочтение одним символам перед другими?+−
Нет - вместо простой операции с остатком от деления он использует выборку с отклонением (rejection sampling) поверх crypto.getRandomValues(). Если бы брался случайный байт и вычислялось byte % размерПула, символы в начале пула получали бы чуть более высокие шансы всякий раз, когда размер пула не делит 256 без остатка, поэтому генератор вместо этого отбрасывает любое значение вне диапазона и повторяет попытку, пока результат не попадёт в диапазон, делящийся без остатка. В итоге каждый символ имеет абсолютно одинаковую вероятность быть выбранным, независимо от того, сколько типов символов вы включили.
Почему случайный пароль всегда содержит хотя бы один символ каждого включённого мной типа?+−
После формирования пула символов генератор откладывает по одному символу из каждой включённой вами категории - заглавные буквы, строчные буквы, цифры, символы - прежде чем заполнить оставшуюся длину из полного пула, а затем перемешивает всё в случайном порядке. Это гарантирует, что пароль случайно не окажется состоящим только из букв без цифр, что важно, поскольку многие сайты отклоняют пароль без обязательного типа символов, даже если он был в пуле. Этап перемешивания использует тот же непредвзятый случайный выбор, поэтому гарантированные символы не оказываются в предсказуемых позициях.