Comments 32
Это техническая статья или что?
Или аудитория хавает?
Современные GPU чрезвычайно хорошо вычисляют хеши SHA-1. Например, одна видеокарта Nvidia GTX 1080 вычисляет 8,5 млрд SHA-1 хешей в секунду. По данным исследования Microsoft, сложность пароля рядового пользователя составляет порядка 40 бит. Получается, что для его подбора нужно около 2^39 попыток — это означает, что подбор пароля средней сложности займет около минуты.
Значит, 10-значный пароль (60бит) на одной видеокарте нужно перебирать в среднем 2 года, а в худшем случае 4 года?
2^59 / 2^33 ≈ 67млн. с ≈ 770 дней.
Можно запомнить рандомный пароль в ~12 символов и пока спать спокойно.
Самое забавное, что те 100тыс. итераций в lastpass перебираются на условных 1000 видеокартах за 2 часа, ну или на сотне видеокарт за сутки.
Можно запомнить рандомный пароль в ~12 символов и пока спать спокойно.
Вы несёте бред. 12 символьный полностью рандомный пароль по алфавиту из 95 символов (все знаки пунктуации, цифры, заглавные и строчные буквы) переберётся на 1 млрд видеокарт всего лишь за 15 часов.
А если Вы используете алфавит только 62 символа, то хватит 5 минут.
Если алфавит 36 символов (a-z и цифры), то хватит пол секунды.
Надо использовать как минимум 15-символьный полностью рандомный пароль по алфавиту 95 символов — его перебор займёт 1470 лет, т. е. это пароль низкой сложности — самая минимальная длина, которую можно использовать.
Но если бы Mozilla улучшила менеджер, то эта длина могла бы сократиться на 2.5 символа, что ОЧЕНЬ много.
переберётся на 1 млрд видеокарт всего лишь за 15 часов.
Сожрав при этом 3ТВт*ч энергии? Не все пароли настолько ценны, чтобы так платить.
Через 20 лет снизится в 1024 раза — потребовалось бы всего лишь 1 млн видеокарт. 1 млн видеокарт на 15 часов — вполне реально.
Электроэнергия при этом тоже может серьёзно подешеветь. Например, стоимость перебора такого пароля может составить 2 млн рублей.
Далее, если бизнес может предложить видеокарты по какой-то стоимости, нельзя исключать, что на самом деле кто-то располагает более высокими технологиями. Ему конечно было бы выгодно продать их, но всё-равно.
В общем, 1 млрд видеокарт берётся для того, чтобы покрыть всякие такие риски, ведь неизвестно, как будут развиваться технологии в будущем. Даже сейчас в статье написано, что nvidia считает 10 млрд хэшей в секунду. Но где гарантии, что кто-то не считает больше? А может даже существуют специализированные устройства, оптимизированные под подсчёт хэшей.
Вы теоретизируете или знаете реальную возможность обеспечить необходимую производительность?
Конечно это не отменяет того факта, что реальность будет лучше теории. Это хорошо, значит у нас есть какой-то запас. Можно спать спокойно.
Тогда я снова добавлю пару символов в пароль.
Я понимаю, что устаревший sha1 не есть хорошо, и лучше бы его чем-то заменить, но риторика типа "нужно хэшировать 100тыс.раз, как делают нормальные люди" или это ваше "вы несёте бред, миллиарды видеокарт" — сама по себе ересь.
Но если Вы так хотите, сократите до 1 млн видеокарт и получится всё-равно 625 дней. Но здесь уже заметно вырастают риски. Видите, удобнее брать 1 млрд — и запас на будущее есть, и запас на то, что кому-то пароль будет сильно нужен. Это не какая-то завышенная цифра.
Тогда я снова добавлю пару символов в пароль.Но кто получил старые данные, всё-равно сможет их расшифровать. Хотя если брать браузерный менеджер паролей, то здесь можно просто поменять пароли на всех сайтах.
Я понимаю, что 12-значные пароли рано или поздно можно будет разгадать, равно как и 16-значные (но чуть позже). В этом свете мне кажется более простым добавить N символов в пароль, чем городить алгоритмы с итерациями.
Добавление символов экспоненциально увеличивает сложность подбора, добавление итераций — линейно.
Ну и, я считаю 2 года вычислений слишком большим сроком, чтобы затратить их на мои пароли. Когда-нибудь это будет уже совсем не 2 года, но я считаю, что это будет достаточно не скоро. И тогда можно будет просто поменять пароль на более длинный.
P.S.: эта логика не относится к хранению паролей неразумных пользователей, которым может быть удобно использовать 6 цифр как пароль.
добавление итераций — линейноЭто невероное утверждение. Сегодня мы сделали 10 итераций, через 4 года 100 итераций, ещё через 4 — 1000 итераций, потом 10 тыс — на лицо экспоненциальная зависимость.
С таким же успехом, как Вы постепенно добавляете 2-3 символа, можно постепенно умножать количество итераций на 10-800 тыс. При этом длину пароля увеличивать уже не придётся.
Ну и само итерирование — это мощная вещь. Сравните: перебрать пароль за 1 час или за 114 лет. Потратить 10 рублей на электричество или 10 млн рублей.
> добавление итераций — линейно
Это невероное утверждение. Сегодня мы сделали 10 итераций, через 4 года 100 итераций, ещё через 4 — 1000 итераций, потом 10 тыс — на лицо экспоненциальная зависимость.
Верное.
Пароль длиной N символов по 6 бит — 64^N проверок для полного перебора. Добавляем P символов: 64^(N+P) — получаем увеличение сложности в 64^P раз.
K итераций для М символов — увеличивают сложность в K раз: K(64^М). Добавляем P итераций: (K+P)(64^М) — получаем увеличение сложности в (K+P)/K раз.
Тогда следует сравнивать с добавлением 2^k символов.
Но попробуйте сами рассчитать, как при этом меняется соотношение "наших" затрат и затрат "взломщика". И как меняется при добавлении символов.
Нет конечно! Мне достаточно добавить k символов, тогда как вам — 2^k итераций. Это и есть экспоненциальная разница.
Такая же разница будет в соотношении объёмов "моих" расчётов и объёмов "взломщика".
Добавление символов экспоненциально увеличивает сложность подбора, добавление итераций — линейно.Ладно, добавление итераций линейно увеличивает сложность, Вы правы. Но я имел ввиду то, что мы можем без проблем добавлять итерации экспоненциально, а вот Вы можете только линейно.
В общем выразился я до этого абсолютно неверно, но сами по себе способы аналогичные. Точнее добавление символов хуже: сложность запоминания и ввода увеличивается, а вот в итерациях физическое время вычисления не меняется.
Но… на самом деле может и меняться, потому что пользователь может со временем тратить меньше денег на видеокарту, а вот злоумышленник тратить меньше не станет. В этом случае придётся комбинировать оба метода.
Плюс вы не учитываете тот факт что в KeePass не один метод шифрования для всех БД. Почитайте про ChaCha20 и Argon и вы поймете что вы не правы. Вы сами хозяин своей БД и сами выбираете насколько много итераций на ней выставить.
А Asa Dotzler уже неделю назад внёс корректировку в план развития Firefox на 2018 год.
wiki.mozilla.org/Firefox/Roadmap
Lockbox integration with Firefox: Mozilla's new password manager will integrate with Firefox and Firefox accounts allowing users to take their passwords beyond the browser. (2018)
WebBrowserPassView
Mail PassView
Ну в этой ситуации мы… просто наше это самое… мы уже… здесь наши полномочия все… окончены. Так что если вы такой же параноик как я: юзайте уникальные пароли на каждый сайт\сервис, используйте двухфакторку где это нужно если это возможно.
P.S. Сам пользуюсь KeePass хоть и знаю что и с него можно своровать пароли но куда сложнее: только если он находится в разблокированном состоянии через инъекцию библиотеки в процесс и вызова функции экспорта паролей в csv например — исходники на github проект KeeFarce. Но так как это инъекция, а не банальное считывание файла с %USERNAME%\AppData (так считываются пароли с бд браузеров) то такое поведение может хотя бы антивирус словить по эвристике и по сигнатурам если он есть.
Version 1.70: WebBrowserPassView now automatically detect the passwords of Yandex Web browser. Скорее всего это относится к той версии что еще с менеджером паролей от Chromium. А тестировать я не буду потому как все равно менеджер паролей в браузере мне не подходит по ряду причин:
1. он менее надежный: KeePass имеет историю паролей, и если что я могу вернуть случайно измененный пароль назад за два клика мышки. Так же KeePass хранится в Dropbox в котором есть версионирование, а плагин KeeAnywhere для работы с Dropbox сохраняет базу в Dropbox и еще хранит настраиваемое количество копий локально в нужном мне месте — а это дает мне гарантию того что если я потеряю доступ к Dropbox я не потеряю саму базу — ее 10 копий у меня на ПК, и если я забуду новый мастер пароль через даже десять дней или месяц, но буду помнить предыдущий я могу востановить более старую версию базы с резервной копии на ПК или Dropbox;
2. менее безопасный: я прочитал статью от Yandex и все равно AES-256-GSM это вам не ChaCha20. Да и если как то взломают учетку Yandex ваши пароли от туда могут просто удалить из-за злости того что не смогли с ними ничего сделать, хотя 2FA может тут спасти. С Dropbox есть 2FA да и если случится чудо и кто то как то его уведет будет еще локальная версия. Плюс с KeePass я уверен в том что пока база открыта пароли не могут быть прочитаны кем попало с оперативной памяти даже программой с правами администратора — украсть их можно только через DLL инъекцию и нативную функцию экспорта паролей, если база захлопнута с ней вообще ничего не сделать, и эти настройки я делаю сам. А как работает браузер Yandex не понятно, как долго он хранит базу паролей открытой и как работает защита от перехвата в оперативной памяти и тд.
3. и что самое главное он не универсальный: в отличии от менеджера паролей в браузере KeePass может хранить любые пароли: в поле URL может быть совсем пусто и это будет пароль не от веб-приложения, или быть указана ссылка на rdp:// или ssh:// etc.., а в настройках ассоциации указана программа для запуска с параметрами передачи логина\пароля и других кастомных полей, плюс можно хранить дополнительные атрибуты в паролях: файлы (например приватные сертификаты PGP\ OpenSSH ключи и тд, или конфигурации для тех же OpeVPN), или другие кастомные поля защищенные в памяти (для одноразовых паролей 2FA или для ключи API для доступа к каким либо сервисам).
Новая старая уязвимость: менеджер паролей Firefox уже 9 лет использует устаревший SHA-1