Приветствую, друзья! В этой статье я хочу поделиться своим опытом создания расширения для браузера, которое превращает обычный, запоминающийся пароль в надежный 65-символьный хэш на основе SHA‑256 (да-да, я помню, что SHA-256 генерирует 64-символьную строку). Признаюсь честно, я не являюсь фронтенд-разработчиком и у меня весьма скудный опыт в JavaScript
Откуда появилась идея?
Наблюдая, как многие пользователи часто используют один и тот же пароль на разных сайтах (или имеют одинаковый паттерн создания паролей, я, кстати, тоже отношусь к этим людям), я задумался: а почему бы не сделать процесс автоматического усиления пароля?
Идея проста – вместо того, чтобы придумывать длинный и сложный пароль, пользователь вводит привычное слово, а расширение на его основе генерирует длинный хэш. Более того, с учетом требований многих сайтов (наличие хотя бы одной заглавной буквы и спецсимвола), хэш дополнительно форматируется: первая встреченная латинская буква становится заглавной, а в конце добавляется точка, как спец. символ (это и есть 65-ый символ)
Чем это может помочь?
Удобство: Вы помните только свой привычный пароль, а хэш генерируется автоматически
Безопасность: Хэш размером 65 символов, полученный по алгоритму SHA‑256, значительно сложнее для перебора, чем стандартный пароль длиной 8-12 символов.
Локальное хранение: Все данные хранятся только на клиенте с использованием localStorage – никаких централизаций и рисков утечки через серверы. Запоминает последний пароль, так как часто полтзователи используют один и тот же пароль
Копирования: С кнопкой копирования хэш можно быстро вставить в нужное поле на сайте, что экономит время.
Если везде одинаковый пароль, то будет везде одинаковый хэш
Действительно, это здравая мысль. Но по-моему скромному мнению перебрать пароль из 65-и символов довольно таки сложно, по крайней мере кратно сложнее, чем тот же 8-12 символьный пароль
Тем более для пользователя мало что меняется, то есть ему не нужно запоминать все 65 символов. Он помнит стандартный пароль, а, например, через любое API может построить хэш
НО, тут стоит помнить о тех условиях, которые применяются в том проекте: специальный символ в конце хэша и первая встречная буква - заглавная, а также стоит помнить алгоритм, который использовался для вычисления хэша
Хоть это и не решает проблему того, что везде будет один и тот же хэш, тут у меня есть пара мер минимизации, так сказать
Минимизация
Хочу в автоматическую часть добавить получение домена текущего сайта, на котором было запущено расширение. Я не уверен, что такое возможно встроенными средствами, но суть в том, что домен сайта, где пользователь хочет использовать пароль будет служить "солью". Данная мера должна помочь избежать "один и тот же хэш везде"
Добавить настройки для продвинутых пользователей. Можно будет выбирать алгоритмы вычисления хэшей, длину, сложность, ввести кастомную "соль", которая будет использоваться вместе с доменом
Заключение
Код я представил в репозитории
Первые минуты использования пока что радуют меня. Но насколько это удобно на горизонте продолжительного времени использования, пока непонятно