Как придумать надежный пароль в Linux

Любопытный способ сгенерировать надежный пароль предложил один энтузиаст. Более того, он даже подсчитал сколько лет потребуется на взлом такого пароля методом перебора — 412 триллионов лет.

Сначала способ, а потом объяснения:


< /dev/urandom tr -dc '67890^*_+-=;:,.?yuiopYUIOPhjklHJKLbnmBNM12345!@#$%qwertQWERTasdfgASDFGzxcvbZXCVB' | head -c${1:-16}; echo;

Но что происходит? Сначала данные берутся из файла /dev/urandom. Если кто не знает, этот файл представляет собой интерфейс доступа к ядру к функции получения псевдослучайных чисел. Далее с помощью команды tr отбрасываются все символы, которые не могут быть напечатаны на экране. Потом команда head выдает из потока первые 16 символов, а команда echo их печатает.

Для удобства использования, открываем файл ~/.bashrc и добавляем всего одну строку:

securepw(){< /dev/urandom tr -dc "67890^*_+-=;:,.?yuiopYUIOPhjklHJKLbnmBNM12345!@#$%qwertQWERTasdfgASDFGzxcvbZXCVB" | head -c${1:-16};echo;}

Теперь в терминале можно использовать команду securepw каждый раз, когда требуется задать надежный пароль.

field_vote: 
Ваша оценка: Нет Средняя: 4.4 (7 оценки)

Комментарии

Ага, и получишь пароль, который не то что запомнить, но и произнести нельзя.
Если вообще получишь. Походу этот хакер решил всех нагнуть — его программа выдаёт фиксированный пароль:

bash: !@#$%qwertQWERTasdfgASDFGzxcvbZXCVB": event not found

Оценка: 
Пока без оценки
comrade аватар

Всё работает.
Вот так надо (не двойные кавычки, а одинарные):

< /dev/urandom tr -dc '67890^*_+-=;:,.?yuiopYUIOPhjklHJKLbnmBNM12345!@#$%qwertQWERTasdfgASDFGzxcvbZXCVB' | head -c${1:-16};echo;

Оценка: 
Средняя: 5 (2 оценки)

Или заэкранировать `!':
< /dev/urandom tr -dc "67890^*_+-=;:,.?yuiopYUIOPhjklHJKLbnmBNM12345\!@#$%qwertQWERTasdfgASDFGzxcvbZXCVB" | head -c${1:-16};echo;

Оценка: 
Средняя: 5 (1 оценка)

Все делается проще

Оценка: 
Средняя: 1 (1 оценка)

Можно и проще:

< /dev/urandom tr -dc [:graph:] | head -c 16; echo

Оценка: 
Средняя: 5 (2 оценки)

всегда использую длинные фразовые пароли, например:
ghtlgjxbnf.-ckj;yst-ahfpjdst-gfhjkb (надежность 288 бит)
или генератор паролей:
g)i(~q=Fwgrm39-Q}!}`s]YmKLF (надежность 175 бит)
последний запомнить сложнее

Оценка: 
Средняя: 2 (1 оценка)
comrade аватар

Как Вы тут биты посчитали, если не секрет?

Оценка: 
Пока без оценки

Могу предположить: KeePassX показывает криптографическую стойкость - качество пароля в битах
Насколько я понял 1 символ = 5 битам

Оценка: 
Пока без оценки

Как бы кол-во бит зависит ещё и от того, какие именно символы.

Например, одна заглавная или строчная буква (в пароле, где они все одного регистра) будет нести log(2,26) -- где-то между 4 и 5 бит информации. Одна буква (любого регистра) или цифра -- log(2,62) -- почти 6 бит. Если добавить ещё символов или использовать русские буквы вместе с английскими, то криптографическая стойкость увеличится ещё сильнее.

Вообще, лично меня уже достаёт, что нужно постоянно придумывать всё более и более длинные пароли, и даже 8 букв разных регистров/цифр уже считаются ненадёжными. (будь проклят закон Мура...)

Оценка: 
Пока без оценки
comrade аватар

Если гражданин использует слова из словаря, то "битов" надо сильно меньше насчитывать.

Например, три слова ≈ (1/100000)^3 , какой-то жалкий миллион миллиардов вариантов (т.е., "50 бит", где-то).
Вполне реально перебрать. Хоть в этих трёх словах 18 букв, хоть 25...

Четыре слова из словаря ≈ 67 бит, а никак не 288. Но если ещё слова в проверочном словаре отсортированы по убыванию частоты, а в пароле частые слова, то будет уже не 1/100000 на слово, а, например, 1/4000, т.е. всего ≈ 48 бит.
Так что в "предпочитаю-сложные-фразовые-пароли" слово "сложные" самой сложности добавило не очень((-;

Оценка: 
Средняя: 5 (1 оценка)

А я предпочитаю менеджер паролей. Там можно использовать очень сложные разные пароли для разных нужд. Сам менеджер паролей закрыт двухфакторной авторизацией (пароль+ключ на флешке).

Желающим обсуждение менеджеров паролей предлагаю вынести в отдельный топик, а здесь не флудить.

Оценка: 
Пока без оценки

Предложение поддерживается. Вот отдельный топик.

Оценка: 
Пока без оценки

Сложность можно добавить искусственно, например, использовать фразу с намеренными АшЫПками либо фонетическую транскрипцию слов другой яэыковой группы, к примеру, как во Вторую Мировую для шифрограмм янки использовали диалекты индейцев(кечуа, гуарани, гуахиро,аймара).
С тем же успехом можно использовать смесь из разных языков: Rtn-yfabu-gkbp-[tqr[' (4 языка 176 бит)
или пошло. но надежно так: 3.14c.y-Nh`[cjnitcnbltcznbvbkbvtnhjdsq
(320 бит)

Оценка: 
Средняя: 5 (1 оценка)

А ещё проще, ставим apg, и генерим пароли, соответствующие FIPS-181 и не только. :)

Оценка: 
Пока без оценки

как вариант
date | md5sum | head -c${1:-16}; echo;

Оценка: 
Средняя: 1.5 (2 оценки)
comrade аватар

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

Если противник будет проверять данный метод генерирования паролей, то перебор
< 32 млн. паролей × [число возможных лет],
займёт секунды.

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

Способ из статьи вроде хороший (опечатки в нём исправлены в первых комментариях).

Я, правда, пока не смотрел как линуксовский urandom работает. Скорее всего там использованы, как и у Вас, date и md5sum, но ещё и какой-то криптографический генератор случайных чисел + "соль" где-то в постоянной памяти.

Оценка: 
Пока без оценки

Я, правда, пока не смотрел как линуксовский urandom работает.

Тогда я процитирую man 4 random

Специальные символьные файлы /dev/random и /dev/urandom (имеются
начиная с Linux 1.3.30) предоставляют интерфейс к генератору случайных
чисел, встроенному в ядро. Файла /dev/random имеет старший номер
устройства 1, и младший номер устройства 8. Файл /dev/urandom имеет
старший номер устройства 1 и младший номер устройства 9.

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

При чтении устройство /dev/random возвращает единичные случайные байты,
количество битов шума в которых равно количеству бит шума в пуле
энтропии. /dev/random следует использовать, если требуется высокий
коэффициент случайности, например, при использовании одноразовой
шифровки (one-time pad) или при генерации ключа. Если пул энтропии
пуст, попытка чтения /dev/random приведёт к задержке, пока не будет
собран дополнительный окружающий шум.

При чтении устройство /dev/urandom возвратит столько байтов, сколько
было запрошено. Как результат, если в пуле недостаточная энтропия, то
возвращённые значения теоретически нестойки к криптографической атаке
на алгоритмы, используемые драйвером. О том, как это сделать, не
сказано в современной несекретной литературе, но теоретически возможно,
что такая атака может существовать. Если это важно для вашего
приложения, используйте лучше /dev/random.

Оценка: 
Пока без оценки
comrade аватар

Надеюсь, в линуксе в этом вопросе не всё так запущено (1950-60-е годы уже давно позади:-)

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

Во FreeBSD и OpenBSD уже сделали, примерно как я выше написал.

http://en.wikipedia.org/wiki//dev/random

Похоже, вместо термина "соль", из криптографической литературы, в юниксах используют термин "пул энтропии".

Вот тут более по человечески описано, как-что...
http://src-code.net/princip-raboty-i-realizaciya/

Оценка: 
Пока без оценки

вместо термина "соль", из криптографической литературы, в юниксах используют термин "пул энтропии"

Нет, это разные вещи.

Оценка: 
Средняя: 5 (1 оценка)

Человек легко запоминает то, что ему интересно или что его удивило.
Например, меня зовут Александр, дата рождения - 14 02 1972. Я иногда использую, например, такие пароли: Loveandhope Loveandlove Al14021972 Al14021972! Al14021972!! Конечно же, это несложные пароли, но зато это - мой личный опыт...

Оценка: 
Средняя: 5 (1 оценка)

Легко ломаются перебором. Можно добавить чуть спецсимволов и значительно поднять стойкость Al140$219#72!

Оценка: 
Средняя: 5 (1 оценка)

Комментировать

Filtered HTML

  • Use [fn]...[/fn] (or <fn>...</fn>) to insert automatically numbered footnotes.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <blockquote> <strike> <code> <h2> <h3> <h4> <h5> <del> <img>
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.