LinuxForum.Fans
Тема

кирилические пароли

Автор: Olej 22 сообщений 1788 просмотров
28.01.2017 15:25 · отредактировано #419480

Сложность пароля


Сложность пароля в компьютерной индустрии обычно оценивают в терминах информационной энтропии (понятие из теории информации), измеряемой в битах. Вместо количества попыток, которые необходимо предпринять для угадывания пароля, вычисляется логарифм по основанию 2 от этого числа, и полученное число называется количеством «битов энтропии» в пароле. Пароль со, скажем, 42-битной сложностью, посчитанной таким способом, будет соответствовать случайно сгенерированному паролю длиной в 42 бита. Другими словами, чтобы методом полного перебора найти пароль с 42-битной сложностью, необходимо создать 2^42 паролей и попытаться использовать их; один из 2^42 паролей окажется правильным. Согласно формуле при увеличении длины пароля на один бит количество возможных паролей удвоится, что сделает задачу атакующего в два раза сложнее. В среднем атакующий должен будет проверить половину из всех возможных паролей до того, как найдет правильный.

Если в качестве алфавита для генерации пароля используются все печатные символы ASCII (арабские цифры, строчные и заглавные буквы латинского алфавита: a-z, A-Z, 0-9, спецсимволы и знаки препинания) то число таких символов (алфавит) 95, а энтропия на 1 символ оценивается как 6,5699 бит. Тогда для 6-символьного пароля энтропия ~39 бит, а 8-символьного — 53 бит, а числа полного перебора составят, соответственно, 239 = 550×10⁹ и 253 = 9×10¹⁵. Рост сложности пароля от длины будет, как понятно, экспоненциальный.

Возникло такое ... смешное соображение *HI* : в качестве пароля использовать его набранным на русской раскладке, в кодировке UTF-8, которая принята сейчас повсеместно в Linux:

text

[olej@dell ~]$ sudo passwd stupid
[sudo] пароль для olej: 
Изменяется пароль пользователя stupid.
Новый пароль : 
Повторите ввод нового пароля : 
passwd: все данные аутентификации успешно обновлены.
[olej@dell ~]$ su - stupid
Пароль: 
[stupid@dell ~]$ whoami
stupid

(я даже в качестве пароля здесь установил тоже "stupid", но набранное на русской раскладке клавиатуры - я даже не знаю что там я набирал)

Это будет большим сюрпризом для того, кто попытался бы подобрать такой пароль. *DRINK*
То, что кирилическая 'К' (болшая) будет 2 байта D0 9A - для малолетних сопливых "хакеров" может быть большим откровением ... тем более, что они дальше Windows ничего не слышали, а про UTF-8 не догадываются.

P.S. Тем более, что даже зная пароль к Linux системе они там у себя, в вынь-де, при удалённом доступе просто не смогут его набрать в UTF-8 ... в своих окошках ввода.

Хотелось бы выслушать мнения и возражения по этому поводу.
Добавлено: 28.01.2017 15:25:06

"Olej" написал:
Это будет большим сюрпризом для того, кто попытался бы подобрать такой пароль.

И попутно вот такой вопрос:

text

[olej@dell ~]$ ssh stupid@192.168.1.103
stupid@192.168.1.103's password: 
Permission denied, please try again.
stupid@192.168.1.103's password: 
Permission denied, please try again.
stupid@192.168.1.103's password: 
Permission denied, please try again.
stupid@192.168.1.103's password: 
Permission denied, please try again.
stupid@192.168.1.103's password: 
Permission denied, please try again.
stupid@192.168.1.103's password: 
Received disconnect from 192.168.1.103 port 22:2: Too many authentication failures
Connection to 192.168.1.103 closed by remote host.
Connection to 192.168.1.103 closed.

Что мешает SSH-клиенту или SSH-серверу воспринимать такой пароль?

28.01.2017 16:58 #419481
"Olej" написал:

Что мешает SSH-клиенту или SSH-серверу воспринимать такой пароль?

Здесь моя ошибка! (где-то я запутался в IP хостов) :

text

[olej@dell .ssh]$ ssh stupid@192.168.1.101
The authenticity of host '192.168.1.101 (192.168.1.101)' can't be established.
ECDSA key fingerprint is SHA256:Jhd8ErBQXvPxi5ZJFOtPLcQQLmKANznLpQG5IHRxR7c.
ECDSA key fingerprint is MD5:72:a8:4f:33:85:c4:0e:a1:01:7c:b0:be:c3:09:b5:b1.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.101' (ECDSA) to the list of known hosts.
stupid@192.168.1.101's password: 
Last login: Sat Jan 28 13:25:48 2017
[stupid@dell ~]$ whoami
stupid
...

А вот как логи на хосте SSH-сервере зафиксировали это подключение:

text

[olej@dell etc]$ journalctl --since="2017-01-28 15:00" -u sshd
-- Logs begin at Пт 2016-04-22 12:18:30 EEST, end at Сб 2017-01-28 15:49:05 EET. --
янв 28 15:49:04 dell.localdomain sshd[18606]: Accepted password for stupid from 192.168.1.101 port 41812 ssh2
text

[root@dell audit]# cat audit.log | grep sshd | grep USER_LOGIN | tail -n2
type=USER_LOGIN msg=audit(1485611288.073:1254): pid=18538 uid=0 auid=4294967295 ses=4294967295 msg='op=login acct="(unknown)" exe="/usr/sbin/sshd" hostname=? addr=192.168.1.101 terminal=ssh res=failed'
type=USER_LOGIN msg=audit(1485611345.051:1274): pid=18606 uid=0 auid=1001 ses=7 msg='op=login id=1001 exe="/usr/sbin/sshd" hostname=192.168.1.101 addr=192.168.1.101 terminal=/dev/pts/21 res=success'

И это (как всякое и понятное единообразие) радует. *THUMBSUP*

28.01.2017 17:30 #419482
"Olej" написал:
просто не смогут его набрать в UTF-8

cmd
chcp 65001
echo Сюрприз, русский текст в UTF-8!

Ну и Блокнот тоже умеет...

28.01.2017 17:49 #419483
"bormant" написал:
Ну и Блокнот тоже умеет...

Умеют, конечно, но гаданиями и сменой кодировок - я именно это и имел в виду.

28.01.2017 18:22 #419484

Если бы пароли можно было задавать так:
[console]$ tr -cd [:graph:]+[:cntrl:] < /dev/urandom | head -c25
[/console]
то было бы совсем тяжело взломать.
А так терминал не пропустит при установке такого пароля.

29.01.2017 11:50 #419497
"ormorph" написал:
то было бы совсем тяжело взломать.
А так терминал не пропустит при установке такого пароля.

Использовать весь диапазон национальных алфавитов в UTF-8 (кстатит, возможно для имён, а не только паролей) - это практически и есть почти ваше "плотное" двоичное пространство.

Думаю, что и терминал, и SSH, и другие протоколы по сети пропустят ваши двоичные пароли, потому что русскоязычные не ASCII - пропускают и понимают, как я проверил и показал выше.

29.01.2017 12:53 #419514
"Olej" написал:
Думаю, что и терминал, и SSH, и другие протоколы по сети пропустят ваши двоичные пароли, потому что русскоязычные не ASCII - пропускают и понимают, как я проверил и показал выше.

Тут очень много символов которые несовместимы, которые просто нельзя задать при вводе с клавиатуры и всякие escape символы.
Пока приходит на ум такое для генерации паролей.
[console]$ tr -cs [:graph:] < /dev/urandom | head -c25|iconv -f KOI8-R -t UTF-8|tr '[:cntrl:]' ' '|tr "\n" " "|sed 's/ //g'[/console]
Задавать такие пароли удобно из файла:
пример файл passwd.txt:

text
жy≈├╝А╘E3+ooнP╒╪MЪ1┴Й
жy≈├╝А╘E3+ooнP╒╪MЪ1┴Й

[console]# cat passwd.txt |passwd user[/console]

29.01.2017 12:59 #419519
"ormorph" написал:
Задавать такие пароли удобно из файла:

Зачэм из файла, дарагой? *OK*

Есть специальные тулзы для хранения паролей, вот их и нужно задействовать.
Добавлено: 29.01.2017 12:59:44

"Olej" написал:
(кстатит, возможно для имён, а не только паролей)

Ну, тут я несколько увлёкся и маху дал:

text

[olej@dell home]$ sudo adduser вася
[sudo] пароль для olej: 
adduser: неверное имя пользователя «вася»
29.01.2017 13:06 #419520
"Olej" написал:
Есть специальные тулзы для хранения паролей, вот их и нужно задействовать.

Да всякие есть например keepassx, в принципе можно и их использовать...
Но если уж извращаться так извращаться по полной *WALL*

29.01.2017 13:11 · отредактировано #419521
"ormorph" написал:
Пока приходит на ум такое для генерации паролей.

Проверил использование и вход с таким вашим паролем:

text

[olej@dell home]$ tr -cs [:graph:] < /dev/urandom | head -c25|iconv -f KOI8-R -t UTF-8|tr '[:cntrl:]' ' '|tr "\n" " "|sed 's/ //g'
©┌jЛ/5O┌ш/≈▌▒═Ё1╧∙д[olej@dell home]$
text

[olej@dell home]$ sudo adduser vasja
[sudo] пароль для olej:
Создание почтового ящика: Файл существует
[olej@dell home]$ sudo passwd vasja
Изменяется пароль пользователя vasja.
Новый пароль :
Повторите ввод нового пароля :
passwd: все данные аутентификации успешно обновлены.
[olej@dell home]$ su - vasja
Пароль:
[vasja@dell ~]$ whoami
vasja
[vasja@dell ~]$ exit
logout
[olej@dell home]$ sudo userdel vasja

Вася получил такой замысловатый пароль, и потом с ним входит...
И в команде passwd (установка пароля) и при его использовании (su) я использовал скопированный (Ctrl+Insert) пароль его вставкой (Shift+Insert). Естественно, что такое ввести с клавиатуры невозможно, но копи-пастом всё замечательно решается.

29.01.2017 14:18 #419525
"Olej" написал:
Естественно, что такое ввести с клавиатуры невозможно, но копи-пастом всё замечательно решается.

Странно бы было, если бы не получилось, так как этот вариант команды не пропускает управляющие символы, ну и их так же не пропускает терминал(он с ними работает).

29.01.2017 15:43 #419532
ormorph написал:
[quote="Olej"]Естественно, что такое ввести с клавиатуры невозможно, но копи-пастом всё замечательно решается.

Странно бы было, если бы не получилось, так как этот вариант команды не пропускает управляющие символы, ну и их так же не пропускает терминал(он с ними работает).[/quote]
Как это "не пропускает терминал", если я дважды (или трижды) ввёл показанную последовательность с терминального ввода: при фиксации пароля (passwd), и про регистрации с новым именем (su)?
Добавлено: 29.01.2017 15:43:01

"ormorph" написал:
Да всякие есть например keepassx, в принципе можно и их использовать...

Использовать шифрованное хранилище паролей - хорошая идея, хорошая привычка.
Гораздо лучше, чем использовать автосохранение паролей в Mozzila или Google браузерах!
А KeePassX, в частности:
- рекомендуют майнтейнеры многих дистрибутивов;
- и они же его включают в состав стандартных репозиториев дистрибутивов:

text

$ sudo dnf install keepassx
...
Объем загрузки: 612 k
Объем изменений: 1.9 M
...
Выполнение транзакции
  Установка   : keepassx-1:2.0.3-1.fc23.x86_64 

- позволяет запросто (быстро и просто) скопировать в буфер обмена любой пароль (и соответствующее ему имя тоже):

29.01.2017 15:59 · отредактировано #419536
"Olej" написал:
Как это "не пропускает терминал", если я дважды (или трижды) ввёл показанную последовательность с терминального ввода: при фиксации пароля (passwd), и про регистрации с новым именем (su)?

Я имею в виду про то, что эта команда:
[console]$ tr -cd [:graph:]+[:cntrl:] < /dev/urandom | head -c25[/console]
выводит еще управляющие символы, с которыми работает терминал которые портят весь вывод.
Пример:
[console]$ echo -e "fix\rmod"
mod[/console]
Меняем на символ новой строки:
[console]$ echo -e "fix\rmod"|tr '\r' '\n'
fix
mod[/console]
Это только частичка таких символов.
Вывод этой команды получается без этих символов:
[console]$ tr -cs [:graph:] < /dev/urandom | head -c25|iconv -f KOI8-R -t UTF-8|tr '[:cntrl:]' ' '|tr "\n" " "|sed 's/ //g'[/console]

29.01.2017 16:05 #419538
ormorph написал:

Вывод этой команды получается без этих символов:
[console]$ tr -cs [:graph:] < /dev/urandom | head -c25|iconv -f KOI8-R -t UTF-8|tr '[:cntrl:]' ' '|tr "\n" " "|sed 's/ //g'[/console]

Теперь хотелось бы ссылок на какие-то публикации по оцениванию таких сложных паролей.

29.01.2017 16:49 · отредактировано #419541
"Olej" написал:
Теперь хотелось бы ссылок на какие-то публикации по оцениванию таких сложных паролей.
"Olej" написал:
Теперь хотелось бы ссылок на какие-то публикации по оцениванию таких сложных паролей.

Ну так ищите...
Мощность алфавита = 2^16
Вес одного символа 16 бит
2^16/16=4096 символов.
По теории вероятности:
(Количество буков)*4096=(количество переборов)
Примерно как то так...

Зы: но это при условии что заранее известен вес символа.

29.01.2017 17:17 #419544
ormorph написал:

Ну так ищите...
Мощность алфавита = 2^16
Вес одного символа 16 бит
2^16/16=4096 символов.
По теории вероятности:
(Количество буков)*4096=(количество переборов)
Примерно как то так...

Зы: но это при условии что заранее известен вес символа.

Это всё известно, это всё классика, и хорошо описано ... вон по той ссылке, что я уже показывал:
Сложность пароля

Интересно другое ... то что появляется с UTF-8 представление ... когда пароль "вася" - это не 4, а 8 байт, где нечётные байты D0, а чётные - это не ASCII коды.
А если каждый (или некоторые) символ пароля не 2-х, а 6-ти байтный, на каком-то китайском или югуртском языке?
Вот в таких условиях кто-то анализировал криптостойкость?
Когда могут использоваться любые национальные языки + каждый отображаемый символ пароля может быть на самом деле от 1-го до 6-ти байт...

30.01.2017 04:33 #419601

а не проще по старинке - ключ помощнее и все?

30.01.2017 10:17 #419607
"dyasny" написал:
а не проще по старинке - ключ помощнее и все?

Мне интересно не "помощнее", а понимание (и ссылки на источники).
А по старинке ... не понимая, основываясь на спекулятивных пересказках "помощнее", и давим на педаль - так оно, конечно, проще. *DANCE*

30.01.2017 11:19 #419608
"dyasny" написал:
ключ помощнее и все?

И что значит "помощнее"? Подлиннее?
Так стало появляться много обсуждений последнего года (на основе практики "применения"), что пароли длиной 12 и более символов не повышают мощность, а снижают - из-за корреляций смыслов, привносимых пользователем.
И что значит "число символов" в пароле в свете того, что обсуждалось выше?

А на "мощность" ... всегда найдётся что-то ... "с винтом" *JOKINGLY*
Когда уроды для брутфорсинга, специально и только, собирают вот такие станции, и это у них ещё называется "бюджетной" ($5000) - How To Build A Password Cracking Rig. Cracking On A "Budget".



30.01.2017 17:34 #419642
"Olej" написал:
А по старинке ... не понимая, основываясь на спекулятивных пересказках "помощнее", и давим на педаль - так оно, конечно, проще.

причем здесь педаль? есть четкие best practices для безопасности ssh, ключ это абсолютно рандомальный (насколько рандомальность возможна) пароль длиной в 4096 знаков (или больше), никакой юникод рядом не стоял с такой сложностью.

"Olej" написал:
Когда уроды для брутфорсинга, специально и только, собирают вот такие станции, и это у них ещё называется "бюджетной" ($5000) - How To Build A Password Cracking Rig. Cracking On A "Budget".

такая станция может долбить пароли локально с относительной эффективностью, но когда доступ к ssh замораживается на 15 минут после трех неверных попыток, брутфорс займет несколько столетий. долбить с большой распределенной сети никто не станет, так как это слишком дорогое удовольствие, а там где это имеет смысл, нападающий пролезет максимум на первый бастион, с которого он может пытаться долбить внутрь, но уже с одной единственной и не специально прокачанной машины, да еще и скорее всего урезанной до полной невозможности поставить софт для взлома, то есть подбирать пароли в тысячи знаков руками. Короче, вся эта чушь релевантна только для домашних локалхостов с голой _опой в интернете, да и то вряд ли.

Войдите или зарегистрируйтесь, чтобы ответить.