Comments 210
Когда-то для защиты пароля было достаточно иметь злую бабушку на входе в машинный зал
На КДПВ злая бабушка, надо полагать.
Почему в статье нет ни слова про UTF-8 и кириллицу?
Это многократно увеличивает сложность подбора даже трудно запоминаемого пароля, описанного в статье!
Запрет словарных паролей выглядит странно. Я считаю, что сервис вообще не должен требовать ничего от пользователя, если пользователь клиент разумеется. Хоть по IP пусть авторизируется. Но с другой стороны, дать возможность настройки безопасности, предупредив какие могут быть уязвимости. Так, к примеру, многие считают СМС канал очень защищенным.
Мне больше кажется, что челодой моловек так упоро втыкает в панель управления (что по левую руку от дамы), а стоит так далеко, чтобы всю панель (= весь ряд лампочек, который отражал состояние какого-нибудь регистра) одним взглядом ухватить.
Дебажит
И совсем плохо, если пользователь верно ввел пароль, но устройство недоверенное, второй фактор не подтвержден и IP принадлежит выходной ноде Тора. Вот в третьем случае пора дергать рубильник с надписью «Аларма! Волк украл зайчат!».
А вот за это бить ногами хочется. Когда в гостях пытаешся показать фото, а гугл кричит «недоверенное устройство».
Ой, не надо про майлру))
Несколько дней назад заходил через браузер в почту, ввожу логин-пароль — выкидывает капчу. Капчу я не разгадываю, страница обновляется и я… оказываюсь в своём ящике, где меня ждут письма "подозрительная попытка входа" и "вход с нового устройства".
Вот до сих пор как вспомню, так O_oфигеваю.
За это надо руки в мясорубке проворачивать по самую задницу!
Гугл правильно предупреждает. У хозяев в компе вполне может оказаться сборщик паролей, о котором они не подозревают.
Для показа фото в гостях давно придумали расшаривание и приватные ссылки.
Почти все почты практически похерили возможность выйти через Тор, что очень напрягает, когда порты закрыты. Более того, периодически начинают подозревать в плохом, когда выходишь с обычного мобильного инета. А гугель и яндекс при поиске из режима приватности прямо заявляют, что ты бот. Им, видите ли, настоящие куки подавай. Скотины.
Гораздо лучше поднять тревогу, если пароль всплывет в одном из многочисленных словарей утечек.
А как сервис об этом узнает?
Можно мониторить крупные базы утекших паролей, как это Firefox и Google делает. Мне кажется, это разумная мера. Понятно, что у нормального сервиса есть только хеши, но это не мешает свериться с хешами в БД.
Хотя, никто не мешает проверять пароль в момент входа пользователя (при достаточном быстродействии) и сообщать ему об этом. Но здесь также должен использоваться принцип разумности.
А как же соль? Разве правильная практика — это не генерить случайную соль на каждый пароль, да еще и хешировать каким-нибудь bcrypt или scrypt, которые намного дольше простого SHA-1 считаются? Вам же под каждую соль придется всю базу утекшую паролей заново хешировать.
Тем самым вы нивелируете саму суть хеширования и соления паролей.
Используя Argon2, bcrypt, scrypt, или PBKDF2 вам понадобятся годы, чтобы перебрать все комбинации словаря утекших паролей и паролей ваших пользователей, с учетом что каждый пароль имеет уникальную соль.
Врядли такое неразумное использование вычислительных ресурсов оправдывает возможность предупредить пользователя об утечке его пароля спустя год.
Просто для справки: сейчас в отрытом доступе находится 573 миллиона утекших паролей. Надежная функция для хешировния паролей должна выполнятся миллисекунды. Допустим, хеширование выполняется за 10ms, что довольно слабо. В таком случае, проверка одного пользовательского пароля будет выполнятся 66 дней. А если у вас их сто тысяч или миллион?
Даже если пароль пользователя будет скомпрометирован после регистрации, это абсолютно не является проблемой до тех пор, пока кто-то не попытается авторизоваться с использованием этого пароля.
Bcrypt, кстати, уже прошел аудит?
Раз уж зашёл разговор, то решил спросить.
Как это работает в правильном мире?
Получается, что в таблице пользователя три колонки: логин, пароль, соль.
При регистрации пользователя или смене пароля мы создаём новую соль и затем подставляем её к паролю?
Насколько я понимаю, при новой сессии (логине) соль не генерируется? Или после успешной проверки со старой солью лучше перехешировать пароль (который все ещё хранится где-то в переменной) с новой солью?
Получается, что в таблице пользователя три колонки: логин, пароль, соль.Верно. Если совсем придираться то еще одним обязательным полем должно быть время следующей успешной попытки авторизации, для защиты от брут форса.
При регистрации пользователя или смене пароля мы создаём новую соль и затем подставляем её к паролю?Да, для каждой пары логин+пароль должна быть уникальная соль.
Насколько я понимаю, при новой сессии (логине) соль не генерируется? Или после успешной проверки со старой солью лучше перехешировать пароль (который все ещё хранится где-то в переменной) с новой солью?В этом нет необходимости. Пароли солятся, чтобы в случае взлома ваших серверов максимально усложнить злоумышленнику восстановление паролей. Для этого достаточно чтобы соль была уникальной, истинно случайной (/dev/random), и достаточно большой (32 байта).
От того, что вы пересолите пароль 10 раз, жизнь хакера точно не усложнится, а возможно даже упростится, ведь теперь он может узнать несколько результатов хеширования для одного и того же пароля (само по себе это не компрометирует пароль, но в сочетании с другими уязвимостями может упростить атаку).
В момент авторизации можно сырой пароль сверить
Это если не солёный. Хотя соль у сервиса должна быть.
А если утечка после произошла? Надо хешировать базы паролей и искать аналогичные хеши у себя.
Чтобы сопоставлять пароли, нужно хранить их без соли. Тем самым вы выдадите на блюдце пароли значительной части ваших пользователей в случае компрометации.
Ключевая идея здесь – предупредить пользоваля, что его пароль скомпрометирован во время регистрации или смены пароля. В этот короткий промежуток времени пароль вам известен в открытом виде, и вы можете использовать любой (слабый) хеш для проверки.
Здесь вы пытаетесь решить две задачи, которые отчасти противоречат друг другу:
1. С одной стороны, обезопасить пароль пользователя в случае утечки с ваших серверов.
2. С другой стороны, защититься от несанкционированного доступа к вам в случае утечки пароля по стороннему каналу.
После попадания пароля в базу, надежно перепроверить его (вторая задача), не создав угрозы для компрометации (первая задача), невозможно, кроме моментов авторизации пользователя.
Хорошая новость состоит в том, что вы можете перепроверять пароль в момент каждой авторизации, и тем самым заблокировать потенциальную атаку в случае если пароль подходит И был недавно обнаружен в новых утечках, запросив у пользователя сменить пароль через надежный канал связи (почту), и/или потребовав дополнительный фактор авторизации (мобильный телефон, 2FA и т.п.).
2. Интересно, как Гугл понимает, что это я куда-то уехал, а не «злые враги» мой пароль украли?
По моему опыту — никак. Поэтому с их почты ушел.
А потом раз — и новую почту в РФ заблокировали. Т.ч. хожу туда теперь через Тор — см. п.1.
Интересно, как Гугл понимает, что это я куда-то уехал, а не «злые враги» мой пароль украли?Если у вас телефон на Андроиде, то гугл про ваши перемещения знает чуть больше чем все :-)
По моему опыту — никак.
…
гугл про ваши перемещения знает чуть больше чем все :-)
И при этом в почту не пускает…
так забирать он может, а при попытке отправить говорит «включите недоверенные устройства»
и делать это надо постоянно, не отследил пока периодичность, но довольно часто, несколько раз в год
У Гугла для таких сценариев есть специальная штука — application password. Советую для этого аутлука создать отдельный пароль.
Короче, все сводится к скорингу и вероятности злонамеренного доступа.
Особенно радует заходить с мозиллы с парой дополнений… Вечные машины/светофоры/пожарные гидранты… И это с одного IP :)
ОС + браузер + мак-адресНе очень удачный пример. Браузер MAC-адрес не передаёт никуда. А если это приложение вне браузера (которое уже может прочитать MAC-адрес), то браузер тут не при чём.
Второй фактор если и делать, то априори восстановимый типа одноразывых кодов.
Гугл особенно этим любит страдать: уехал в другой город, и почту уже не прочесть.
Вероятно, это не у всех (и/или не всегда) так. Я могу совершенно спокойно зайти на почту с адреса в США, при этом мой телефон находится в Германии — никаких вопросов и подозрений от гугла (кроме сообщения о том что "логин с нового устройства").
кроме сообщения о том что «логин с нового устройства»Ну, обычно там еще приписка, что попытка входа заблокирована в целях безопасности :)
Да, есть крайне странные сервисы, которые считают, что и 12 символов хватит, а значит остальные 28 можно спокойно отрезать и проверять хеш только первого фрагмента.
Это обычно выглядит по другому, при регистрации пароль вводится весь, а при логине обрезается. И ты такой сидишь, скопипастив пароль из одного и того же места, и не можешь понять что не так.
Однако, в сберонлайне пароли не чувствительны к регистру, так что если пароль полагается на игру с регистром — всё, приехали.
(А на последующий вопрос про то, хешируют ли они пароли, саппорт в твиттере ответил «Нет, надёжный пароль нужно придумать вам самим». Но стоит помнить, что в каждой шутке есть доля шутки :-)
Однако, в сберонлайне пароли не чувствительны к регистру, так что если пароль полагается на игру с регистром — всё, приехали.
Этим многие грешат, да. Например, Blizzard.
А на последующий вопрос про то, хешируют ли они пароли, саппорт в твиттере ответил «Нет, надёжный пароль нужно придумать вам самим»Ну там вполне очевидно, что SMM-щик не знает, что такое «хэширование».
убрир — 4 цифры, кто меньше? =\
echo "qwerty" | md5sum -
и вот мы уже получаем надёжный пароль (a86850deb2742ec3cb41518e26aa2d89), который шиш кто подберёт, но который при этом запоминать не надо — ведь мы знаем, как его можно сгенерировать из простого запоминаемого набора символов.Или так:
echo "qwerty" | base64
Вывод: cXdlcnR5Cg==
Ну то есть таким образом можно делать кучу паролей для неважных сервисов.
Считаем md5 от password_url_salt и подставляем адреса сервисов.
Непонятен бонус относительно истинно случайной генерации
Не очень понятно, в чем проблема с радужными таблицами. Вам же нужно не найти qwerty
по строке a86850deb2742ec3cb41518e26aa2d89
, а найти a86850deb2742ec3cb41518e26aa2d89
по тому, что лежит в базе у сервиса.
P.S. a86850deb2742ec3cb41518e26aa2d89
— это хэш от qwerty\n
. Хэш от qwerty
нужно считать как
echo -n "qwerty" | md5sum
Получится d8578edf8458ce06fbc5bb76a58c5ca4
.
Без длинной соли — плохой способ. Строка вида a86850deb2742ec3cb41518e26aa2d89 сразу выдаёт в себе md5-хеш, для которых есть радужные таблицы. И qwerty там точно будет
Окей, а если мы возьмём хеш от хеша?
echo "qwerty" | md5sum | md5sum
Не думаю что в радужной таблице найдется хеш на хеш (а может я просто наивный)
Безо всяких радужных таблиц.
google проиндексировал радужные таблицы. Теперь радужные таблицы есть в google ;)
Теперь радужные таблицы есть в google ;)
Сисадмин желал подобрать себе стойкий пароль для централизованной авторизации через radius-сервер. Он обратился за советом к Инь Фу Во.
— Как вы думаете, Учитель, пароль "史達林格勒戰役" стойкий?
— Нет, – ответил мастер Инь, – это словарный пароль.
— Но такого слова нет в словарях…
— «Словарный» означает, что это сочетание символов есть в wordlists, то есть «словарях» для перебора, которые подключаются к программам криптоанализа. Эти словари составляются из всех сочетаний символов, которые когда-либо встречались в Сети.
— А пароль «Pft,bcm» подойдёт?
— Вряд ли. Он тоже словарный.
— Но как же? Это же…
— Введи это сочетание в Гугле – и сам увидишь.
Сисадмин защёлкал клавишами.
— О, да. Вы правы, Учитель.
Через некоторое время Сисадмин воскликнул:
— Учитель, я подобрал хороший пароль, которого не может быть в словарях.
Инь Фу Во кивнул.
— Я ввёл его в Гугле, — продолжал Сисадмин, — и убедился, что в Сети такого сочетания нет.
— Теперь есть.
— Суждения об информационной безопасности мудреца и учителя Инь Фу Во, записанные его учениками
Строка вида a86850deb2742ec3cb41518e26aa2d89 сразу выдаёт в себе md5-хеш, для которых есть радужные таблицы. И qwerty там точно будет.
А если первый символ убрать? Лучше, конечно, несколько, и поменять на соль, но принцип, думаю, понятен
Пользователь на этапе регистрации введёт a86850deb2742ec3cb41518e26aa2d89 в поле «придумайте пароль», и поэтому в базу пойдёт уже либо хэш от a86850deb2742ec3cb41518e26aa2d89, либо хэш от этого + соль.
Ну и быть в определенном смысле стоиком чтобы иногда набирать пароли вида a86850deb2742ec3cb41518e26aa2d89 вручную.
А если попробовать сделать не 2 хэша, а 5?
echo -n 'qwerty' | md5sum | md5sum | md5sum | md5sum | md5sum
Результат: 8a46d17ffd17029d460fa1a36c3c98bc
Или миксовать md5 и base64:
echo -n 'qwerty' | md5sum | base64 | md5sum | base64 | md5sum | base64 | md5sum | base64 | md5sum | base64
Результат: N2FkY2UyOGJlZDNiNDczNjkxYjllZGY3ZGI1YzhkN2EgIC0K
Просто нужно запоминать последовательность хэшей (и не только).
Version 2 of this paper contains the appendix with the description of more tunnels. These tunnels further decrease the average time of MD5 collision to 31 seconds. On PC Intel Pentium 4 (3,2 GHz) it is 17 seconds in average.
Плохо, что нет варианта "Дайте пользователю не использовать пароль".
У каждого в карманах по несколько хардварных токенов авторизации, телефоны которые могли бы таким токеном работать — а задействовать все это для авторизации, там где хочешь, в подавляющем случае нельзя. Тот же WebAuthn вроде приняли — и кто им пользуется?
Нахер.
Вот сразу нахер.
В головы которые придумывают идеи «а давайте обяжем желающего пользоваться нашим сервисом покупать себе смартфон и ставить на него какую-то левую прогу для авторизации которая тянет с собой полгугля» — надо не то что гвоздь, железнодорожный костыль забить.
Не смартфон, а просто токен (вроде бы предполагается, что он должен для всех сервисов, что WebAuthn умеют). А смартфон — это для тех, у кого уже старый лишний на полках валяется.
Сейчас оно не стандартизировано и каждый сервис (экосистема) свое приложение-аутентификатор хочет. И смарт для работы должен быть онлайн. А WebAuthn стандартизован и оффлайновую работу обещает.
И смарт для работы должен быть онлайнНу, обычно, при работе в интернете (а когда еще нужно пароль вбивать?), есть wi-fi, или что-то еще.
А WebAuthn стандартизован...Так это вроде бы только с одного устройства можно так заходить, а с другого уже не получится — нет разве?
обычноБывают и необычные ситуации: отсутствие мобильной сети при наличии корпоративной проводной, как пример.
Куда устройство-аутентификатор воткнешь/приложишь — оттуда и заходишь.
Это только внутри браузера, что в телефоне, ключи прямо в этом телефоне и хранятся.
Устройств, правда, лучше бы иметь не одно — для восстановления доступа, если первое потеряешь.
Вообще-то при включении двух-факторной аутентификации даются коды сброса.
Устройств-аутентификатаров должно быть несколько. (Тут, кстати, надо бить тех кто реализует 2FA, но этого не понимает). Или должен быть альтернативный вариант входа, не использующий этого телефона.
Ситуация в точности эквивалентна "забыл пароль или мастер-пароль от менеджера паролей".
но! мне актитвно не нравятся несколько моментов:
а) подключение к проекту — не самая тривиальная штука, даже при уже готовых библиотеках. там и бэк, и фронт, и БД — джун за полчасика побыстрячку не прикрутит, миддла давай что ли, ну это ещё ладно;
б) производится аутентификация не юзера, а устройства: хорошо если телефона, а можно и десктоп (общий?) так же завести, сервер и не заметит разницы.
т.е. сервер видит только устройство (телефон), а сколько разных людей авторизуют это устройство своим отпечатком — ему уже иррелевантно;
в) когда просишь приложить пальчик, ты уже должен знать, какого именно юзера ты пускаешь. хотелось бы что-то типа «сначала палец, а там уже посмотрим кто ты, и куда тебя пускать», но нет — работает только «юзер Ваше Величество… чо, правда? а ну, докажи!»
И это от людей, к которым постоянно люди заходят по ssh по публичному ключу, без пароля. Короче в очередной раз старая консольная утилита оказывается уже решила все заново всплывшие проблемы)
А идея, что пароль можно иметь один, а вот разных емейлов — много (да, у меня личный почтовый сервер) ни до кого не доходила?
(И да, хозяин сервиса должен солить пароль).
Для этого не обязательно иметь свой сервер Gmail поддерживает алиасы формата username+alias@gmail.com, ещё вариант GMail, Outlook бизнес аккаунт со своим доменом и ловить всю почту на any@domain, цена вопроса 4-6 usd в месяц на одного юзера (больше и не потребуется) со всякими доп. плюшками.
Вот только разные чудорасы, писавшие формы регистрации многих сайтов, считают, что в емейле не может быть не-алфавитноцифровых символов (навроде "+"). Зла не хватает.
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:
\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(
?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[
\t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\0
31]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\
](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+
(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:
(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)
?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\
r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[
\t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)
?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t]
)*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
\t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*
)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)
*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+
|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r
\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:
\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t
]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031
]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](
?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?
:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?
:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?
:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?
[ \t]))*"(?:(?:\r\n)?[ \t])*)*:(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\]
\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|
\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>
@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"
(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t]
)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?
:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[
\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-
\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(
?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;
:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([
^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\"
.\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\
]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\
[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\
r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\]
\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]
|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \0
00-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\
.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,
;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?
:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*
(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".
\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[
^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]
]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)(?:,\s*(
?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(
?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[
\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t
])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t
])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?
:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|
\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:
[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\
]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)
?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["
()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)
?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>
@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[
\t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,
;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t]
)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?
(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".
\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:
\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\[
"()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])
*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])
+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\
.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(
?:\r\n)?[ \t])*))*)?;\s*)
Да, это самая длинная версия для perl\ruby, но общий смысл вы поняли, думаю. Многие ограничиваются чем-то типа r'\w+@\w+\.\w+' «И так сойдёт!»
А можете поделиться ссылкой, чтобы не быть голословным?
Очень интересно, что они и на что подменяют в паролях. И что при этом ломается.
Часто бывает, что можно регнуться с символами вроде ñ,ç´´´¨ и т.п., а зайти потом нельзя :)
При этом символы могут быть в логине. А логин может быть почтой :) И потом уже никакими способами невозможно зарегаться на эту почту — при создании нового акка говорит, что такой уже есть, а когда заходишь, говорит, что такого нет :)
Сообщайте пользователю, если его пароль появился в словарных базах.Для некоторых разработчиков ещё следует уточнить, что если и проверяете это, то только в момент авторизации пользователя и не хранить пароль в открытом виде.
Скомпрометированные пароли будут применены почти сразу.Замечательно. А как корректно, с точки зрения безопасного хранения пароля, «почти сразу» сообщить пользователю?
Но если пользователь хочет использовать ਬਹੁਤ ਮੁਸ਼ਕਲ ਪਾਸਵਰਡ или මෙයද ඉතා දුෂ්කර මුරපදයකි — дайте ему это сделать. Или добавить символ буррито в пароль для криптостойкости. Имеет право.
С одной стороны да, с другой же разрешать в паролях символы которые невозможно ввести с клавиатуры это создавать приключенческий задел на будущее.
Строго говоря, символов, которые, вообще невозможно ввести с клавиатуры, не существует. Всё сводится к тому, что нужно либо знать как, либо иметь настроенную для этого клавиатуру.
Правда есть весёлые маки, у которых в парольных полях раскладка гвоздями прибивается к латинице, и надо пароль копипастить из предварительно набранного в адресную строку или блокнот.
Запомнилось багом во времена 10.6, где на первой установке раскладка почему-то оставалась русской, а вот на экране логина работала как и везде. И поля, чтоб набрать и скопировать, там тоже нет. Товарищ отца купил аймак, привёз домой, настроил — и попал, благо сброс пароля делается с загрузочного сидюка.
Ввести, конечно, формально можно, но вот получится ли использовать в пароле NULL, BACKSPACE или возврат каретки.
Если символа в них нет как быть? Не всегда логинишся со своего устройства, иногда приходится с того что есть. И вот тут экзотика может вылезти боком.
Фокусы с цифровым вводом кодов требует знания кода нужного символа и практической возможности такого действия. Это точно работает где угодно и похожим образом на мак, андроид, линукс и виндовс?
В базовом функционале как ситуация со всем этим? Охотно допускаю что нормально, но не уверен.
входить на сайт, то у вас точно есть интернет, а вместе с ним гугл, яндекс, дакдакго, байду и прочая-прочая-прочая
Совершено не факт, в том то и дело. Но в целом я вашу мысль понял.
del
(привёл пример с эмодзи, но хабр их не отображает)
'Приключенческий задел' — это когда ты приезжаешь к американцем и пытаешься ввести этот самый «ЯоЬот», который у себя замечательно вводил.
Ну и для статистики не хватает данных, скажем за последние 10 лет. сколько систем были взломаны через подбор паролей, а сколько через фишинг или эксплуатацию уязвимостей разных?
Текст как раз о том, что не нужно требовать ротации. А пользователь может, но не обязан использовать очень длинные пароли.
Далее был целый набор веселых квестов: напиши письмо в поддержку, разберись почему тебя послали, выясни кто руководитель
В общем восстанавливал я все три недели, а вы про лучшие практики безопасности… тут бы просто блин не мешали людям работать.
Ну и я бы не писал начальнику админов, а писал бы своему, а он уже пусть решает — разбираться с начальником админов самостоятельно или поднимать вопрос еще выше.
Пока у меня мнение такое: это бездельники с синдромом вахтера — запретить, не пущать…
Других я не видел. Хотя допускаю, что где-то вменяемые встречаются.
Вот ситуация была: хотел на работе статью прочитать про комп. вирусы (сейчас уже ссылку не дам — с месяц назад дело было). Касперский ендпоит секьюрити ее блокирует — контент для взрослых! WTF??? Выясняется: там аналогия про беспорядочные незащищенные связи была…
Кстати, может кто не знает. Каспер ставит корневой сертификат и весь ваш трафик читает. Т.ч. о паролях можно уже не беспокоиться.
Каспер ставит корневой сертификат и весь ваш трафик читает. Т.ч. о паролях можно уже не беспокоиться.
Может я что-то не понимаю… Сертификат просто удостоверяет что ваш публичный ключ принадлежит вам, имея его ваш трафик расшифровать нельзя, в этом суть несимметричного шифрования, которое является основой всей этой технологии сертификатов.
Он ставит свой CA доверенным и выполняет MitM для всех соединений
У меня и скриншот есть, но что-то не вставляется прямо тут, только ссылка
habrastorage.org/webt/70/hz/k8/70hzk8zapko_phtboslj8d4cxdy.jpeg
Хорошо что на Линуксе пока что можно и без Касперского и прочих антивирусов, нормально жить :)
Политика дебильная — не спорю, даже выразился бы покрепче, да не хочу на бан нарываться.
Не знаю, правда или нет, но вот что про пароли в сбере рассказывают
Я думал это расчет на термопринтеры, у которых нижнего регистра в шрифтах может и не оказаться. Хотя сейчас возможно таких уже и не осталось
Ну вообще в сбербанк-онлайн первый пароль именно что печатался банкоматом. А было еще время — и печатался второй чек с одноразовыми паролями.
...использовать безопасный пароль.Microsoft ещё в 2019 году публично сообщила, что в настоящее время пароль уже не является средством, достаточным для надёжной защиты, каким бы сложным он ни был!
Такой вывод основывается на имеющихся у неё огромных объёмах данных, при ежедневном использовании облачных сервисов которой фиксируется порядка 300 миллионов попыток несанкционированного входа в аккаунты.
И лишь многофакторная аутентификация (multi-factor authentication — MFA) делает почти все эти попытки бесполезными, потому что она защищает от 99,9% всех попыток взлома.
Поэтому пользователь, защищающий свои учётные записи с помощью одного лишь пароля, может с тем же успехом считать, что не защищает их вовсе!
Жуткая чушь.Почему?
Я как-то в гуглофоруме на эту тему общался. Там было высказано мнение, что потеря аккаунта это компрометация сервиса. Но вот обоснование такой позиции мне получить не удалось…
Уже довольно давно нарисовали такую картинку (reddit/imgur)
Вам это, вероятно, не грозит, но огромное количество людей попадается.
Поэтому в современном мире любая аутентификация по паролю без второго фактора считается небезопасной, независимо от сложности пароля.
...уже давно пароли к сервисам...получают преимущественно через фишинг...Даже в настоящее время весьма эффективно происходит такая масштабная фишинговая операция похищения имен и паролей корпоративных пользователей Microsoft Office 365, особенностью которой является защита фишинговых страниц каптчей, также предохраняющей поддельные страницы от индексирования автоматическими защитными решениями.
СорокТысячОбезьянВНебоСунулиБанан додумались до этого ещё 15 лет назад, однажды и до компаний дойдёт! =)
После третьего восстановления доступа к онлайн-банкингу (а это отдельный квест), у меня возникло подозрение, что симптомы один-в-один похожи на поведение китайских wi-fi камер, когда используются пароли со спецсимволами. Проверил — таки да, спецсимволы в начале пароля отбрасываются как незначащие 8-0
Классический пример того, как не надо делать. Рукалицо.жпг
Классический пример того, как не надо делатьПочему? Ведь имеется в виду, что доступ к почте постороннему невозможен.
Сам стараюсь не ограничивать.
Я бы ещё предложил такое правило для создателей окошек с вводом пароля: Если Вы всё же решили, что надо наложить на пароль пользователя кучу тупых требований вроде символов, не повторяющихся символов, букв разного регистра при регистрации, то дайте уже зарегистрированному пользователю при входе вспомнить все эти правила. Что-то вроде не ввёл пользователь пару раз пароль правильно, то помимо сообщения о неверном пароле покажите, что не исключена возможность, что при регистрации на пароль было наложено некое правило, а введённый пароль этому правилу не соответствует.
Зачем это нужно: стабильно раз в пару месяцев восстанавливаю пароль от "госуслуги" из-за того, что там куча нелепых требований к паролю и я его не могу вспомнить, но если при входе видеть какие требования на меня налагали при регистрации, то можно будет легко вспомнить какой пароль был в итоге установлен.
Короче, красота и икебана!
Проблема в том, что никто уже не верит, что «Войти с помощью Google|Facebook|Apple|etc» были сделаны именно для того, чтобы повысить безопасность и удобство пользователя, и не надоить еще бабла. Так что имеем то, что имеем.
Хотя в корпоративных условиях не иметь SSO через федерацию в 2020 — это позор. У нас в конторе это один из критериев отбора сервисов, чего и вам желаю.
один аккаунт защищенный по самое нехочу для доступа ко всем сервисам (в идеале так, что ни в какие страницы не нужно вводить пароль вообще)… Войти с помощью Google
Доооо.
А потом гугль внезапно банит тебя потому что ему не понравилось твое местоположение(а вот нечего за границу на отпуск ездить!), и ты лишаешься разом доступа ко всему вообще…
Нахер-нахер.
А давайте заставим пользователя использовать безопасный пароль