Как придумать надежный пароль в 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 каждый раз, когда требуется задать надежный пароль.
Комментарии
Чингачгук
12 мая, 2013 - 00:26
Ага, и получишь пароль, который не то что запомнить, но и произнести нельзя.
Если вообще получишь. Походу этот хакер решил всех нагнуть — его программа выдаёт фиксированный пароль:
bash: !@#$%qwertQWERTasdfgASDFGzxcvbZXCVB": event not found
comrade
12 мая, 2013 - 02:22
Всё работает.
Вот так надо (не двойные кавычки, а одинарные):
< /dev/urandom tr -dc '67890^*_+-=;:,.?yuiopYUIOPhjklHJKLbnmBNM12345!@#$%qwertQWERTasdfgASDFGzxcvbZXCVB' | head -c${1:-16};echo;
Чингачгук
12 мая, 2013 - 10:44
Или заэкранировать `!':
< /dev/urandom tr -dc "67890^*_+-=;:,.?yuiopYUIOPhjklHJKLbnmBNM12345\!@#$%qwertQWERTasdfgASDFGzxcvbZXCVB" | head -c${1:-16};echo;
Чингачгук
12 мая, 2013 - 01:52
Все делается проще
Чингачгук
12 мая, 2013 - 09:17
Можно и проще:
< /dev/urandom tr -dc [:graph:] | head -c 16; echo
Чингачгук
12 мая, 2013 - 10:01
всегда использую длинные фразовые пароли, например:
ghtlgjxbnf.-ckj;yst-ahfpjdst-gfhjkb (надежность 288 бит)
или генератор паролей:
g)i(~q=Fwgrm39-Q}!}`s]YmKLF (надежность 175 бит)
последний запомнить сложнее
comrade
12 мая, 2013 - 11:59
Как Вы тут биты посчитали, если не секрет?
Platon
12 мая, 2013 - 15:36
Могу предположить: KeePassX показывает криптографическую стойкость - качество пароля в битах
Насколько я понял 1 символ = 5 битам
MrBison
12 мая, 2013 - 17:47
Как бы кол-во бит зависит ещё и от того, какие именно символы.
Например, одна заглавная или строчная буква (в пароле, где они все одного регистра) будет нести log(2,26) -- где-то между 4 и 5 бит информации. Одна буква (любого регистра) или цифра -- log(2,62) -- почти 6 бит. Если добавить ещё символов или использовать русские буквы вместе с английскими, то криптографическая стойкость увеличится ещё сильнее.
Вообще, лично меня уже достаёт, что нужно постоянно придумывать всё более и более длинные пароли, и даже 8 букв разных регистров/цифр уже считаются ненадёжными. (будь проклят закон Мура...)
comrade
12 мая, 2013 - 18:46
Если гражданин использует слова из словаря, то "битов" надо сильно меньше насчитывать.
Например, три слова ≈ (1/100000)^3 , какой-то жалкий миллион миллиардов вариантов (т.е., "50 бит", где-то).
Вполне реально перебрать. Хоть в этих трёх словах 18 букв, хоть 25...
Четыре слова из словаря ≈ 67 бит, а никак не 288. Но если ещё слова в проверочном словаре отсортированы по убыванию частоты, а в пароле частые слова, то будет уже не 1/100000 на слово, а, например, 1/4000, т.е. всего ≈ 48 бит.
Так что в "предпочитаю-сложные-фразовые-пароли" слово "сложные" самой сложности добавило не очень((-;
Чингачгук
12 мая, 2013 - 21:30
А я предпочитаю менеджер паролей. Там можно использовать очень сложные разные пароли для разных нужд. Сам менеджер паролей закрыт двухфакторной авторизацией (пароль+ключ на флешке).
Желающим обсуждение менеджеров паролей предлагаю вынести в отдельный топик, а здесь не флудить.
pomodor
13 мая, 2013 - 19:56
Предложение поддерживается. Вот отдельный топик.
Platon
12 мая, 2013 - 22:10
Сложность можно добавить искусственно, например, использовать фразу с намеренными АшЫПками либо фонетическую транскрипцию слов другой яэыковой группы, к примеру, как во Вторую Мировую для шифрограмм янки использовали диалекты индейцев(кечуа, гуарани, гуахиро,аймара).
С тем же успехом можно использовать смесь из разных языков: Rtn-yfabu-gkbp-[tqr[' (4 языка 176 бит)
или пошло. но надежно так: 3.14c.y-Nh`[cjnitcnbltcznbvbkbvtnhjdsq
(320 бит)
Чингачгук
13 мая, 2013 - 23:39
А ещё проще, ставим apg, и генерим пароли, соответствующие FIPS-181 и не только. :)
vanoc
15 мая, 2013 - 21:02
как вариант
date | md5sum | head -c${1:-16}; echo;
comrade
15 мая, 2013 - 22:10
Можно же коллекционировать не только базы паролей со всяких почт и вконтактов, но и подобные методы генерирования паролей.
Если противник будет проверять данный метод генерирования паролей, то перебор
< 32 млн. паролей × [число возможных лет],
займёт секунды.
Нужны такие методы генерирования, которые гарантируют надёжность, даже если противник точно знает, какой метод использовался для создания пароля.
Способ из статьи вроде хороший (опечатки в нём исправлены в первых комментариях).
Я, правда, пока не смотрел как линуксовский urandom работает. Скорее всего там использованы, как и у Вас, date и md5sum, но ещё и какой-то криптографический генератор случайных чисел + "соль" где-то в постоянной памяти.
Чингачгук
15 мая, 2013 - 23:04
Тогда я процитирую man 4 random
comrade
16 мая, 2013 - 03:30
Надеюсь, в линуксе в этом вопросе не всё так запущено (1950-60-е годы уже давно позади:-)
Вроде как это только самые общие соображения, а остальное – на усмотрение разработчиков. Т.е., надо алгоритмы в исходниках конкретных реализаций ядер смотреть.
Во FreeBSD и OpenBSD уже сделали, примерно как я выше написал.
http://en.wikipedia.org/wiki//dev/random
Похоже, вместо термина "соль", из криптографической литературы, в юниксах используют термин "пул энтропии".
Вот тут более по человечески описано, как-что...
http://src-code.net/princip-raboty-i-realizaciya/
pomodor
16 мая, 2013 - 03:49
Нет, это разные вещи.
Чингачгук
24 декабря, 2018 - 14:44
Человек легко запоминает то, что ему интересно или что его удивило.
Например, меня зовут Александр, дата рождения - 14 02 1972. Я иногда использую, например, такие пароли: Loveandhope Loveandlove Al14021972 Al14021972! Al14021972!! Конечно же, это несложные пароли, но зато это - мой личный опыт...
pomodor
24 декабря, 2018 - 14:48
Легко ломаются перебором. Можно добавить чуть спецсимволов и значительно поднять стойкость Al140$219#72!
Комментировать