Comments 16
Среди знакомых мне современных функций PBKDF2, bcrypt и scrypt лучше всего выглядела scrypt
хотел написать про Argon2, но
Оригинал опубликован в моём блоге 7.08.15
понятно, его тогда просто не было)
Кроме указанной проблемы с требованиям к паролям, совершенно не ясно, что делать с сервисами, просящими сменить пароль. Это может быть как тупой таймер (менять пароль каждые XX дней), так и принудительная смена пароля из-за утечек и подобного...
Вводить как одну из переменных номер? По умолчанию будет twitter0, но после очередной утечки сменить на twitter1 — с учётом что это хеш то этот один символ даст очень большое отличие. И надо будет через время просто вспомнить сколько примерно раз менял пароль (ну и перебрать несколько вариантов, если уж совсем никак).
И ещё одна проблема — смена названий. Miro раньше назывался realtime board и я лично вообще случайно узнал что это оказывается один проект (думал два разных). Или ещё был сервис удобный для быстрых видео звонков без приложений appear.in с удобными короткими ссылками — отсудили домен. Помню ещё сервис для создания мультиков с готовыми шаблонами — тоже переименоваться и сменил домен… Вот потом мороки вспоминать как он раньше назывался...
Ну и есть ещё кейс когда у человека несколько учёток на одном сервисе. Тоже, видимо, надо или нумерацию подключать, или ещё логин как переменную.
зачастую программы-менеджеры откровенно плохо защищены
это возможно велосипед, но я храню пароли просто в заметках телефона.
криптую в уме.
есть базовая комбинация клавиш на клавиатуре которую я просто помню наизусть и не требуется записывать (ее никто, как я думаю :), не знает, потому что она никогда не использовалась в базовом виде).
генерирую пароли смещением от базовой комбинации, при этом записываю только базовую начальную или конечную точку (определяется требуемой длинной пароля на ресурсе) — это также признак длины пароля.
также ее можно поворачивать и зеркалить добавляя информирующие об этом признаки в открытую запись
есть базовая комбинация клавиш на клавиатуре
Я встрял с этим когда надо было ввести на устройстве со своей уникальной раскладкой)
Пришлось учить символы.
Мне не нравились существующие менеджеры паролей: неудобно синхронизировать базу паролей между различными устройствами и операционными системами, к тому же, зачастую программы-менеджеры откровенно плохо защищены.
В той же статье keepass прошел все проверки.
Сейчас актуален более свежий keepassxc.
Для синхронизации использую обычный Я.Диск. На файле стоит пароль и ключ, копии которого вручную копирую на нужные устройства. На андроиде, линукс и винде. Есть плагины для браузеров и защищенная клавиатура для телефона, с автоподставкой логина и пароля.
Важно настроить чтоб сохранял файл только при изменении данных и закрытии, и без временного файла, иначе синхронизация ломает основной файл.
Стараюсь пароли генирировать через него. Кроме тех что приходится иногда вводить вручную.
Итого:
0. В качестве алгоритма взят pbkdf2 со 100 итерациями, но этот шаг повторяется несколько раз, чтобы в результате была хотя бы одна цифра, одна малая буква и одна большая.
1. Пароль нельзя подсмотреть или снять скриншотом — показываются только первые 4 знака, чтобы визуально понимать что сгенерировалось, не допущена ли ошибка.
2. Пароль не проходит через буфер обмена, а вставляется напрямую в поле, выделенное перед активацией расширения (F8).
3. Пароль зависит ещё и от соли, которая хранится в настройках расширения и не набирается вручную каждый раз — защита от кейлоггеров.
4. Чтобы не носить с собой браузер я сделал и приложение под Андроид — оно не имеет разрешений использовать сеть, так что ничего не утечёт в сеть.
Три почты отечественных
Одна почта импортная.
Банк 1
Банк 2
Квартиры своя, родителей — электрика. вода. тепло
комп на работе
комп дома
Куча форумов.
4 компа с которых работаю
В общем просто лежат в файлике с паролем.
В процессе использования я наткнулся на проблему: некоторые сайты имеют интересные требования к паролям
А это на самом деле — главное. Даже один из самых первых JS-хеширующих-букмарклетов (лет 12 ему, если не больше)
https://github.com/chriszarate/supergenpass, сразу заморачивался этой проблемой (насколько помню, продолжал хешировать пока не выпадет большая+малая+цифра).
Это как раз решает данный кейс:
Ну и есть ещё кейс когда у человека несколько учёток на одном сервисе. Тоже, видимо, надо или нумерацию подключать, или ещё логин как переменную.
А по поводу суффиксов:
Всё так! Можно заменить «twitter» на «twitter2» и т.д., но это очень не удобно.
Первая идея была — сделать генерацию по цепочке. Т.е. первая генерация — генерация с введенными данными, вторая генерация — хеш от первого пароля и тд. Но проблема остается.
Вторая идея — можно все таки завести бд и хранить там название ресурса, юзернейм и таймстемп генерации пароля. Таймстемп так же будет использоваться для генерации.
В интерфейсе можно сделать 2 кнопки: «Сгенерировать новый» и «Сгенерировать текущий».
«Сгенерировать новый» — создаст в бд новую запись с текущим таймстемпом и сгенерирует на основе этих данных пароль.
«Сгенерировать текущий» — сгенерирует пароль на основе введены данных + таймстемп с последней записи для данного ресурса и юзернейма.
Но это уже противоречит задумке — менеджер паролей без бд…
Как я сделал себе менеджер паролей