Как безопасно использовать одинаковые пароли

Как использовать одинаковые пароли

В настоящее время очевидна необходимость использования уникальных сложных паролей для каждого сервиса. Однако, многие, даже будучи технически подкованными людьми, все равно предпочитают использовать одинаковые. Причин этому много, но основная — люди хотят иметь доступ к своему аккаунту всегда и везде, не заботясь о том, есть ли у них под рукой база данных.

Еще по теме: Перебор пароля на Python

У меня возникла идея генерировать пароли, используя мастер-ключ и адрес сайта. Изначально алгоритм был написан на golang, но в статье я покажу реализацию на python, в связи с большей популярностью этого языка.

Для генерации пароля нам понадобится медленная хеш функция, которая максимально усложнит возможность перебора мастер-ключа, в случае, если один из сгенерированных паролей все же попадет не в те руки. Я решил не изобретать велосипед и воспользоваться стандартом PBKDF2. Его реализация уже есть в стандартной библиотеке python.

Предположим, что в переменной master уже содержится мастер-ключ, а в url — адрес сайта. В iter мы храним количество итераций, а в length — желаемую длину пароля.

key = list(hashlib.pbkdf2_hmac(
    'sha256', master.encode('utf-8'), url.encode('utf-8'), iter, length))

Теперь в key содержится список чисел от 0 до 255 длиной length, который мы и будем преобразовывать в пароль. Для этого нам понадобится строка, содержащая все допускаемые символы

chars = string.ascii_uppercase + string.ascii_lowercase + \
    string.digits + string.punctuation

Каждое число в списке будет преобразовано в символ, последовательность которых и послужит нам в качестве пароля.

password = ''.join([chars[i % len(chars)] for i in key])

Протестировать алгоритм можно прямо в браузере. Генерация происходит на стороне клиента.

Исходный код реализации на golang доступен на github.

Еще по теме: Взлом WiFi на Python

ВКонтакте
OK
Telegram
WhatsApp
Viber

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *