Чтобы придумать надежный, но запоминающийся пароль, можно взять несколько слов и объединить их в последовательность, напоминающую сюжет. А после — отформатировать и добавить специальные символы. Все просто, но задачу можно автоматизировать — написать Telegram-бота, который будет генерировать пароли прямо в мессенджере. В статье рассказываем, как это сделать.

Требования к работе бота


Прежде чем приступить к написанию кода, определим правила, по которым бот должен работать.

  1. Длина пароля должна быть от 2 до 8 слов. Так мы усложним задачу злоумышленнику — подобрать связку слов намного сложнее, чем одно слово.
  2. Между словами могут быть разделители в виде цифр и спецсимволов. Это увеличит энтропию и затруднит подбор пароля. Пароль с разделителями может выглядеть, например, так: unmovable8ENCRUST=macho.
  3. Дополнительно в пароле могут использоваться спецсимволы в начале (префиксы) и в конце (суффиксы) слова, которые также помогут увеличить сложность подбора.
  4. Количество слов, разделителей, префиксов и суффиксов должно настраиваться пользователем. Пользователю предоставляется интерфейс в виде сообщения с кнопками, нажатием на которые включаются и выключаются отдельные настройки
  5. Пользовательские настройки должны сохраняться в Redis и не сбрасываться при перезагрузке сервера с ботом. Выбор Redis обусловлен тем, что нам не требуются «фичи» реляционных СУБД — схемы, транзакции, миграции и другие — поэтому можно обойтись более простым в развертывании решением. Также мы будем использовать особенность aiogram — механизм конечных автоматов, который нативно поддерживает Redis как бэкенд.

Теперь посмотрим, что понадобится для разработки бота.

Что понадобится для разработки


Перед началом нужно подготовить среду разработки, установить нужные библиотеки и программы, а именно:

  • Python — от версии 3.9 и выше,
  • aiogram — асинхронный фреймворк для работы с Telegram Bot API,
  • Redis — быстрое key-value хранилище,
  • redis-py — клиент для работы с Redis,
  • XKCD-password-generator — библиотека для генерации паролей,
  • pydantic — библиотека для валидации данных и формирования настроек приложения.

И самое главное — репозиторий на GitHub. Его нужно импортировать в свое рабочее окружение и настроить.


Как настроить бота


Запустим бота локально. На этом этапе можем обойтись без Redis, но важно учитывать, что пользовательские настройки не будут сохранены между перезапусками.

Если вы пишете на Python и используете среду разработки PyCharm, то запустить бота будет максимально просто. После клонирования репозитория переключитесь на ветку article-tweaks (git checkout article-tweaks) и создайте новую конфигурацию запуска (Run Configuration). А затем установите параметры:

— BOT_TOKEN — укажите токен бота, его можно получить у @BotFather.

— STORAGE_MODE — выберите memory.

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

Должно получится, как на скриншоте:


После этого запустите созданную конфигурацию. Вы увидите в консоли следующий текст:

INFO:aiogram.dispatcher.dispatcher:Start polling

Если вы используете не PyCharm, то процесс запуска несколько отличается. Создайте виртуальное окружение bot (python3 -m venv bot) и установите зависимости (pip install -r requirements.txt), а после — запустите бота следующей командой:

BOT_TOKEN=ключ от BotFather STORAGE_MODE=memory 
WORDS__WORDFILE=/path/to/words.txt python -m bot

Теперь попробуйте отправить в личные сообщения с ботом команду /start. Если в ответ получили текстовое приветствие, бот работает.

При вводе символа / вы должны увидеть список команд. Попробуйте вызвать их и изучить различные конфигурации. По умолчанию поддерживаются следующие пресеты:

  • /generate_weak — два случайных слова без каких-либо дополнительных символов.
  • /generate_normal — три случайных слова, каждое из которых случайным образом может состоять из всех прописных или всех строчных букв, в качестве разделителей используются числа.
  • /generate_strong — то же, что и в предыдущем случае, но слов четыре, а в качестве разделителей, помимо цифр, возможны спецсимволы.


При нажатии на команду бот сразу же отправляет в чат сгенерированный пароль.

Кроме этого, есть команда /settings — она приводит к отправке сообщения с настройками. А также команда /generate — отправляет сгенерированный пароль с учетом новой конфигурации:


Деплой бота


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

Поскольку затраты процессора на генерацию пароля и отправку его в Telegram минимальны, нам подойдет сервер линейки Shared Line. Это линейка облачных серверов с возможностью оплаты только части ядра, например 10, 20 или 50%. Shared Line позволяет использовать все преимущества облака и не переплачивать за неиспользуемые ресурсы.

Для начала зарегистрируемся в панели управления и создадим новый сервер в разделе «Облачная платформа». Затем — настроим его.


Боту подойдет ОС Ubuntu 22.04 LTS, 2 виртуальных ядра с минимальной границей в 10% процессорного времени, 2 ГБ оперативной памяти, а также 10 ГБ на сетевом диске (базовый HDD).

С учетом выделенного IP-адреса такая конфигурация выйдет примерно в 28 ₽/день. При желании можно обойтись без маршрутизируемого IP-адреса, поскольку Telegram-бот может принимать события методом опроса (поллинга), даже находясь за NAT.

После подключения к серверу по SSH, бота необходимо перенести. Для этого выполните следующие шаги:

  1. Откройте консоль сервера и обновите систему с помощью команды:
  2. Создайте отдельного пользователя для нашего бота и добавьте его в группу sudoers:


    Дальнейшие действия выполняйте от лица созданного пользователя.
  3. Установите Redis и присоедините его к systemd, воспользовавшись
    удобной инструкцией от DigitalOcean. Шаги 4 и 5 можно пропустить.
  4. Клонируйте репозиторий и переключитесь на нужную ветку:


  5. Настройте виртуальное окружение:

    python3 -m venv venv && source /venv/bin/activate && pip install -r requirements.txt

  6. Создайте файл systemd-службы по пути /etc/systemd/system/passgenbot.service со следующим содержимым:

    [Unit]
    Description=Telegram Password Generator Bot
    Requires=redis.service
    After=network.target redis.service
    
    [Service]
    Type=simple
    WorkingDirectory=/home/bot/passgenbot
    ExecStart=/home/bot/passgenbot/venv/bin/python -m bot
    User=bot
    Group=bot
    EnvironmentFile=/home/bot/passgenbot/.env
    KillMode=process
    Restart=always
    RestartSec=10
    
    [Install]
    WantedBy=multi-user.target
    

  7. Обратите внимание на директиву EnvironmentFile. Создайте этот файл и поместите туда необходимые переменные окружения:
  8. Убедитесь, что Redis запущен (systemctl status redis) и включите бота с добавлением его в автозапуск:

    sudo systemctl enable passgenbot --now

Готово!

Разбираемся вместе


Возможности бота можно в любой момент персонализировать под себя. Если в какой-то момент пресетов станет недостаточно — добавить новые или изменить существующие. Это сделать достаточно просто.

За генерацию паролей по заданным пресетам отвечает класс XKCD. Под капотом наш бот выглядит так:

from random import choice
from xkcdpass import xkcd_password

class XKCD:
    # Весь список разделителей, отдельно цифры, отдельно – спецсимволы
    delimiters_numbers = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
    delimiters_full = ["!", "$", "%", "^", "&", "*", "-", "_", "+", "=", ":", "|", "~", "?", "/", ".", ";"] + delimiters_numbers

    def __init__(self, filename: str):
        # Загрузка словаря в память
        self.wordlist = xkcd_password.generate_wordlist(
            wordfile=filename, valid_chars="[a-z]", 
            min_length=4, max_length=10,
        )

    def weak(self):
        # Слабый пароль: 2 слова без раздетилей
        return xkcd_password.generate_xkcdpassword(
               self.wordlist, numwords=2, 
               delimiter="", )

    def normal(self):
        # Средний пароль: 3 слова, разделитель 
        # в виде случайной цифры
        return xkcd_password.generate_xkcdpassword(
            self.wordlist, numwords=3, case="random", random_delimiters=True,
            valid_delimiters=self.delimiters_numbers
        )

    def strong(self):
        # Сильный пароль: 4 слова и большой выбор разделителей  
        return xkcd_password.generate_xkcdpassword(
            self.wordlist, numwords=4, case="random", random_delimiters=True,
            valid_delimiters=self.delimiters_full
        )

    def custom(self, count: int, separators: bool, prefixes: bool):
        # Произвольный пароль: 
        # сложность зависит от настроек пользователя
        pwd = xkcd_password.generate_xkcdpassword(
            self.wordlist, numwords=count, case="random", 
            delimiter="", random_delimiters=separators, 
            valid_delimiters=self.delimiters_full
        )
        if prefixes == separators:
            return pwd
        elif separators and not prefixes:
            return pwd[1:-1]
        elif prefixes and not separators:
            return f"{choice(self.delimiters_full)}{pwd}{choice(self.delimiters_full)}"

bot/pwdgen.py

Для добавлении нового пресета достаточно скопировать существующий, изменить его название и настроить параметры метода generate_xkcdpassword под себя.

И последним этапом — добавить в обработчик commands функцию для вызова своего пресета, чтобы программа знала, в какой ситуации его вызывать. Это можно сделать по аналогии с существующими пресетами.

from aiogram import types, Dispatcher
from aiogram.utils.markdown import hcode
from bot.pwdgen import XKCD

async def cmd_generate_weak(message: types.Message):
    # вызов пресета weak
    pwd: XKCD = message.bot.get("pwd")
    await message.answer(hcode(pwd.weak()))

async def cmd_generate_normal(message: types.Message):
    # вызов пресета normal
    pwd: XKCD = message.bot.get("pwd")
    await message.answer(hcode(pwd.normal()))

async def cmd_generate_strong(message: types.Message):
    # вызов пресета strong
    pwd: XKCD = message.bot.get("pwd")
    await message.answer(hcode(pwd.strong()))

# вот здесь можно добавить свою функцию для вызова пресета

# регистрация команд
def register_commands(dp: Dispatcher):
    # обработчик вызывает пресет weak по команде generate_weak
    dp.register_message_handler(cmd_generate_weak, commands="generate_weak")

    # обработчик вызывает пресет normal по команде generate_normal
    dp.register_message_handler(cmd_generate_normal, commands="generate_normal")

    # обработчик вызывает пресет strong по команде generate_strong
    dp.register_message_handler(cmd_generate_strong, commands="generate_strong")

    # вот здесь можно добавить свою команду

bot/handlers/commands.py

Заключение


Несмотря на то, что разработанный бот работает и выполняет свои прямые задачи по генерации сложных паролей, это далеко не предел его возможностей. В качестве дополнений и улучшений можно реализовать добавление новых языков, автоудаление записей по таймеру, генерацию KeePass-совместимых баз данных, создание нескольких паролей одновременно и другое.

Возможно, эти тексты тоже вас заинтересуют:

Сколько стоит содержать виртуальную девушку? Создаем подругу, записывающую кружочки в Telegram, с помощью 4 нейросетей
Tinder по интересам, «Морской Boy» и сегментация КТ-снимков: 10 студенческих идей, которые стали проектами
Китайская электроника и «запрещенка»: как Поднебесная обходит санкции США, закупая литографические машины

Комментарии (31)


  1. Lev3250
    00.00.0000 00:00
    +18

    Как узнать, есть ли твой пароль в интернете? Надо его загуглить.

    Ответ

    Теперь есть


    1. kaiu
      00.00.0000 00:00
      -3

      гуглить надо часть пароля, где-то внутри, а если его нет, то скорее и всего длинного пароля нет.


  1. spam312sn
    00.00.0000 00:00
    +12

    <...>
    — Учитель, я подобрал хороший пароль, которого не может быть в словарях.
    Инь Фу Во кивнул.
    — Я ввёл его в Гугле, — продолжал Сисадмин, — и убедился, что в Сети такого сочетания нет.
    — Теперь есть.

    Федотов Николай Николаевич "Суждения об информационной безопасности мудреца и учителя Инь Фу Во, записанные его учениками"

    https://readli.net/suzhdeniya-ob-informatsionnoy-bezopasnosti-mudretsa-i-uchitelya-in-fu-vo-zapisannyie-ego-uchenikami/


  1. Mirzaev
    00.00.0000 00:00
    +1

    Разрабатывая агрегатор по продаже запчастей для спецтехники я внедрил систему генерации паролей в формате таких вот предложений понятных человеку. Я написал простейший генератор где берётся четыре псевдослучайных числа и используя их как индекс смещения ищутся соответствующие слова в четырёх массивах. Слова я подобрал соответствующие тематике сайта - запчасти. Примером паролей было что-то типа "скоба лопнула куплю в скиллпартс" или "ремень взорвался найду в скиллпартс". Я очень гордился своим "внедрением новых технологий", только вот мой начальство кринжануло и сказало мне сделать привычный всем генератор кракозябр, что я и сделал по итогу.


    1. kaiu
      00.00.0000 00:00
      +1

      Запомнить легко вам, запомнить легко проходившему мимо и прочитавшему письмо от рассылки паролей. Но метод такой хорош, многие и вводят слова...если не устанут столько слов вводить, так как многие не обладают скоростным набором.


      1. edo1h
        00.00.0000 00:00

        на самом деле более-менее знакомому с с компьютером проще набирать слова, чем «кракозябры».


        но вот с мнемоничностью, во всяком случае для меня, не работает. 1-2 таких пароля ещё можно запомнить, если часто пользоваться — немного больше; но при любом реальном использовании так или иначе приходим к менеджеру паролей, а там уже неважно «кракозябры» это, или фразы.


        1. kaiu
          00.00.0000 00:00

          да я сам такой, прочитайте последний коммент мой к этой статье, там частично раскрывается мой метод работы с паролями


  1. kemsky
    00.00.0000 00:00
    +7

    Телега только позиционирует себя как супер безопасная, по факту доверять мессенджеру такие вещи нельзя.


    1. Doctor_IT Автор
      00.00.0000 00:00
      -1

      Телеграм здесь выступает в качестве интерфейса. Можно взять сам генератор и прикрутить его, где безопасно


      1. saboteur_kiev
        00.00.0000 00:00
        +4

        Затем снова возникнет вопрос о безопасности интерфейса. веб? телега? сигнал? ssh?


  1. Borjomy
    00.00.0000 00:00
    +1

    С точки зрения энтропии каждое слово представляет собой число в два или три байта, причем с нелинейным распределением. Мало того, в данном случае слова выбираются из ограниченного словаря. Принципиально это не увеличивает надежность


    1. kaiu
      00.00.0000 00:00
      +2

      4 слова из словаря...ну, пусть будет в 3000 слов, а это 3000^4 = 81 000 000 000 000 вариантов, что соответствует примерно паролю из алфавита в 33 символа длиной log33(81 000 000 000 000) = 10 (всего 1531 578 985 264 449 вариантов, что даже больше в 18 раз ) То есть по сути эти 4 слова заменяют тупой пароль в нижнем регистре только русские символы и их 10. Если же сравнить с паролем в разном регистре, англ. 26+26+10 цифр = 62 знака, то длина такого пароля будет всего 8 символов или 62^8 = 218 340 105 584 896 Так что надежность из 4 слов примерно как пароль «уже обычный» из 8 символов. Просто для амеров увидеть пароль вида «vjqjxtymghjcnjqgfhjkm», то он им ничего не скажет, а для русского «мойоченьпростойпароль» будет понятен. Методов усложнения придумано много, а упрощение тоже давно есть, а то от этих паролей голова пухнет. Я тоже использую программу для паролей, доверяю гуглЦРУ свои пароли и т.д., так как кому из спецслужб надо, то взломать нас не сложно.


      1. shadwar
        00.00.0000 00:00

        Сдается мне, что в этих расчетах закралось маленькое такое допущение - злоумышленнику заранее известно, что в подбираемом пароле 4 именно осмысленных слова.

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


  1. netricks
    00.00.0000 00:00
    +13

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


    1. develmax
      00.00.0000 00:00

      Чего люди не придумают, чтобы двухфакторной аутентификацией не пользоваться.


  1. SrYZr
    00.00.0000 00:00

    Казалось бы, такая простая мысль, но почему-то я использую рандомные 8 символов, вместо комбтнаций слов


    1. voidMan
      00.00.0000 00:00

      8 мало


  1. khe404
    00.00.0000 00:00

    Простите наболело

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

    Мой доступ к компьютеру родители ограничивали паролем на BIOS, так как пароль в Win 3.11 и Win 95 особо не работал.

    Когда я устроился на работу мой доступ к компьютеру был неограничен но раз в месяц я должен был придумать пароль из 8 символов в разном регистре с использованием букв и цифр и не повторяющий 20 предыдущих.

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

    А еще у меня появились дети и мне нужно ограничивать их доступ к компьютерам и телефонам придумывая пароли которые они очень эффективно подсматривают и взламывают.

    После смены пароля на одном устройстве, и заходе с другого приходится использовать сервис восстановления пароля для того чтобы пароль скинуть. И уже следующий пароль должен придумать оригинальный не повторявшийся... А еще некоторые умники требуют пароль только из цифр или нельзя использовать символ % или нельзя использовать буквы из своего имени или только буквы алфавита или вообще последовательность движений. А в некоторых менеджерах паролей не удается увидеть сам пароль, но его можно использовать для входа.

    Я ненавижу пароли.

    Парольный менеджер это достаточно хорошее решение, кроме того факта что оно централизует всю информацию о сотнях логин парольных пар и выкладывает все это в интернет, а смс коды раздражают, дороги и недоступны если телефон остался дома.

    В менеджер отпечатков пальцев и faceid дети эффективно подкидывают свои отпечатки и изображения.

    Они легко скидывают пароль с помощью процедуры восстановления.

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

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


    1. kaiu
      00.00.0000 00:00

      а радикально другой подход к разграничению доступа.

      Авторизация через сервис который вас уже опознал, давно использует большинство сайтов получая информацию с социальных сетей. Если вам надо отдельный доступ к приложению, то как оно будет знать, что за компьютером вы? Есть системы, что отслеживают нажатия клавиш, движения по экрану более типичные вам и др.

      Когда я устроился на работу мой доступ к компьютеру был неограничен но раз в месяц я должен был придумать пароль из 8 символов в разном регистре с использованием букв и цифр и не повторяющий 20 предыдущих.

      В своей программе я реализовал глобальный пароль, это может быть год или год и номер месяца. Пароли на каждое приложение очень простые — это сам адрес сайта или какое-то ключевое слово которое никогда не меняется. Меняем глобальный пароль и меняем раз в месяц или год все пароли у приложений и живем дальше. Так что если мне система сама высылает пароль, то я его не запоминаю даже, все на почте для спецслужб хранится :), если я создаю пароль сам, то его ключевое слово никогда не меняется, а меняется глобальный пароль. Так что имея уникальную и недоступную другим программу, то и алгоритм с нее подобрать не смогут. Как быть обычным людям? Да просто, придумываете общее ключевое слово, допустим «пароль», ключевое слово «хабр», добавляете допустим год и получаете строку «парольхабр2023» и идете на онлайн, допустим md5 первый же нашедший дал по этой строке e00437a366ad9b7ec9d79a64d36c0e41, так что беру это все или всегда какую-то часть и использую как пароль. Так как глобальное слово вы никогда не будете менять, то его забыть сложно, но лучше записать. Второе слово просто название сайта, приложение, и др, что перед глазами и вводите. Год это уже по желанию, если требуется менять часто. И все, забыть невозможно, требования от безопасности вы мол выполнили.


      1. khe404
        00.00.0000 00:00

        Авторизация через сервис который вас уже опознал это хороший вариант. Не всегда применим, опять таки все яйца складываются в общую корзину, да еще и глобально распространенную и только и ждущую очередного слива и он тоже требует своей авторизации. И еще он связывает ваши предпочтения в единое целое.

        Разновидность сервиса authenticator который просто генерирует ключ для входа даже не знает от чего пожалуй самая надежная, но рушится как только вы забыли телефон или села батарейка или кто то получил доступ к вашему девайсу...

        Хранение в почте - это разновидность менеджера паролей.

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

        Система запоминания с датой рушится когда ваш пароль компрометируется чаще одного раза в год / месяц.

        Система записывания на бумаге легко компрометируется подсматриванием.

        Хорошая система у банка, если вы вводите номер своей карты, вас перекидывают на сайт вашего банка и вы ему свою идентичность подтверждаете. Вот пожалуй это идеально. Вы выбираете свой собственный надежный сервис ( Может быть разворачиваете свой), и говорите ВСЕМ, а моим доступом к вашим услугам занимаются тут. И вот тогда у вас будет не 101 отдельный пароль для каждого сайта, а один, который можно поменять сразу везде и делать это очень легко или даже не пароль.

        Да еще система с указанием имени сайта тоже имеет неприятные особенности в виде изменившегося имени домена или альтернативных имен вроде google.eu и google.com ...


        1. kaiu
          00.00.0000 00:00

          вроде google.eu и google.com

          Это просто google. Бывало сайт менял название, это да, но и вы меняете пароль намного чаще.

          Хорошая система у банка

          Хорошая система у нас только в дублировании, просто не достаточно самого входа, еще подтверждение, что вы ответите на sms. По сути вас могут насильно заставить все это сделать, но у банка должна быть система двойного пароля, где второй на случай вашего захвата и тогда вход по нему уходит особо в службу безопасности. Увы, здесь ни в одном банке я это не вижу.

          Авторизация через сервис который вас уже опознал это хороший вариант.

          Ну так все за всеми следят. Одна почта у меня для ЦРУ, другая для КГБ — и все накормлены. Но если ты не публичная личность и всем до тебя никакого дела, то нормально все работает. Так что большинство не имеет ваших проблем.

          Система запоминания с датой рушится когда ваш пароль компрометируется чаще одного раза в год / месяц.

          А через что он у вас так часто утекает? Ну введите ввод даты, но вы не задолбаетесь менять пароли?

          весь доступ хранится в одном месте с указанием какой пароль от чего

          Ни чего не хранится, это прошлый век, тут и на сайтах ваши пароли не хранятся, а только хеш от них. И в программе своей я ничего не храню, все очень просто до безобразия и я описал выше. Ваше дело только чтобы не утекла программа или алгоритм получения, у кого-то это смещение в клавишах выше или ниже, у других еще что-то хитрое :)

          Хранение в почте - это разновидность менеджера паролей.

          Ну да, но делаем сейчас и проще, доверяем гуглу и все почти храним в браузере. Это же удобно, что все пароли у ЦРУ :) ну почти все.


          1. khe404
            00.00.0000 00:00

            Это просто google. Бывало сайт менял название, это да, но и вы меняете пароль намного чаще.

            Да, нерешаемых проблем нет. Просто выбираете для себя удобный вариант наименования. Не в этом суть, а скорее в том что могут появляться альтернативы и сайт может одновременно работать под разными именами и порой и не вспомнишь какой применил. ( А задача ведь вспомнить потом, через пару лет)

            Увы, здесь ни в одном банке я это не вижу.

            Говорят пин код наоборот действует в таком ключе. В случае интернет платежа по карте это все не сильно актуально. И служба безопасности банка не сильно вам поможет и платеж либо пройдет либо нет по данным получателя. (Опять таки СБ вам тут не поможет)

            Но я привел банк не как действующую сейчас систему авторизации а как удачный алгоритм. Когда в форме любого оператора принимающего платеж ( требующего авторизации ) вы переходите на сайт некоего вашего собственного агента ( В указанном случае вашего банка ) И там совершаете процедуру авторизации. ( Не всегда смс, порой это звонок или даже контрольный вопрос с датой вашего рождения и проч.. И получаете одобрение. При этом программист оператора не предусматривал переход исключительно на сайт вашего банка, но любого который укажете вы введя номер карты.

            На данный момент бывают варианты openid, facebook, vk, mail.ru .microsoft но что мешает сделать такого агента полностью на ваше усмотрение. ( Не из вариантов, а вообще в виде ссылки на сервис со стандартным интерфейсом) И тогда вы поставите свою собственную программу для вашей собственной авторизации.

            А через что он у вас так часто утекает? Ну введите ввод даты, но вы не задолбаетесь менять пароли?

            Я же пишу, что уже задолбался. ( Пароли дети подсматривают, заставляют придумать новые. ) И да, это решаемо, но в случае стандартной привычной системы. Утечь она должна один раз.

            Посему я и ратую за стандартизацию и унификацию. 1 Человек много сервисов 1 пароль. Но сервис 1 не может пароль от сервиса 2... Утечка адреса вашего авторизатора ничего не дает. Компроментирование на стороне авторизационного сервиса может не укажет на логин и еще много возможных плюшек.

            Так что большинство не имеет ваших проблем.

            Все имеют мои проблемы. Именно поэтому в 2023 году все еще актуальны темы о генерации сложных паролей. При этом очевидно что сложность должна быть обусловлена только математической сложностью перебора а не широтой человеческой фантазии в придумывании, запоминании и 100 раз напечатывании бестолковой последовательностей.

            Ни чего не хранится, это прошлый век,

            Если не хранится и я не могу посмотреть, то такой менеджер паролей не удобен, сменится апи ввода пароля и пароль автоматом забыт. (Хеш хранится в браузере для осуществления доступа, генерируется при условии вввода правильного пароля.

            В общем и целом, как мне кажется мне не удалось объяснить понятным языком что современная система авторизации крайне неудобна. На мой взгляд удобно когда вам нужно помнить максимум 1 пароль а может и не пароль вовсе.


            1. khe404
              00.00.0000 00:00

              Даже изобретать ничего не нужно.

              Публикуете открытый ключик. Например в DNS. Заходите на сайт с токеном который генерируется с использованием закрытого ключика. И вуаля вы авторизованы. Сложность любая. Можно хоть эллиптические кривые, хоть ГОСТ хоть что.

              Решили сменить пароль, опубликовали новый открытый ключик и все старая авторизация протухла.

              Хотите разные авторизации для разных сайтов опубликовали два ключика.

              Хотите ничего не публиковать, прямо открытый ключик сообщили сервису...

              Хотите чтобы браузер не мог авторизоваться генерируете токен самостоятельно....

              Хотите чтобы никто не мог авторизоваться, опубликовали пустую запись.

              Хотите отслеживать использование записываете кто когда откуда запрашивал ваш открытый ключик. ( С ДНС не будет работать, но монжо ведь и не в ДНС публиковать)

              Прощай менеджер паролей.

              Остается только риск подмены открытого ключа. ( Вам может приходить смс о том что открытый ключ сменился )

              Возможна двухфакторная аутентификация.

              Все просто понятно и только математика ограничивает доступ к вашим ресурсам, а не фантазия.


  1. Maccimo
    00.00.0000 00:00
    +3

    Telegram-бота
    для генерации сложных паролей

    Такие рацпредложения нужно или 1 апреля или 20 декабря выкладывать.


    1. selivanov_pavel
      00.00.0000 00:00
      +1

      +много. Мне вот прямо сложно представить, что такое непонятное должно случиться, чтобы человек захотел генерировать свой пароль в онлайн утилите и добавлять бесплатно получать риски по компрометации самой утилиты или среды передачи. При том что оффлайн-генерилок паролей целая куча, и есть уже встроенные в менеджеры паролей и в браузеры.


      1. s207883
        00.00.0000 00:00

        А чем таким опасным грозит генерация пароля в сети? Сервис узнает, что какой-то 127.0.0.1 сделал себе пароль вида sjcbtovhwg1

        Это не даёт вообще никакой информации о том, куда он его поставил и поставил ли. Да, пароль может попасть в базы для подбора, но это настолько раздует ее, что она станет бессмысленной.

        С такой погоней за приватностью можно захотеть какой-нибудь аналоговый генератор паролей с выводом информации на бумажную ленту, ведь оффлайн программа выводит информацию на монитор, а ее тоже можно перехватить.


        1. selivanov_pavel
          00.00.0000 00:00

          Грозит бессмысленным увеличением поверхности атаки.


        1. iamkisly
          00.00.0000 00:00

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


  1. mSnus
    00.00.0000 00:00

    4 слова подбираются по словарю, а не брутфорсом. И это будет на порядки быстрее, где-то 2*10^6


    1. shadwar
      00.00.0000 00:00

      Я выше уже написал про допущение, что при подборе известно, что там конкретно 4 осмысленных и безошибочных слова.

      Заменяем пробелы и буквы на спецсимволы, не случайные для конкретного человека, но которые ему очень легко запомнить и готово - привет старый добрый брутфорс с миллионами лет.

      Например:

      "ехал грека через реку" -> "@[!k1uh@r!2x@h@p3h@r%"

      Пароль легко запомнить, принцип замены также простой - пробелы заменены цифрой с инкрементом, гласные заменены спецсимволом по порядку.


  1. fortyseven
    00.00.0000 00:00

    Почему не на Selectel serverless? )