CB2FA — двухфакторная аутентификация через сообщество (без телефонов и кодов)

В большинстве реализаций 2FA всё держится на устройствах и секретах: телефонах, кодах, токенах. Это удобно, пока не теряешь доступ. А что если бы вторая проверка шла не через устройство — а через людей, которым ты доверяешь?

Так появилась CB2FA (Community-Based Two-Factor Authentication) — проект, где вход подтверждается живыми людьми в Matrix-чате. Без телефонов. Без TOTP. Без внешних сервисов.


? Как это работает

  1. Пользователь вводит логин и пароль (как обычно)

  2. Вместо выдачи токена, запрос уходит в Matrix-комнату, где сидят доверенные участники

  3. Они видят таблицу с деталями запроса и голосуют: y или n

  4. После кворума (или 1 ответа, если настройка такова) — доступ разрешается или отклоняется


? Архитектура

  • Bot — Deno-приложение, отправляющее запросы в Matrix

  • Middleware — перехватывает логин в Synapse и запускает 2FA-процесс

  • Очередь — чтобы не спамить комнату, обрабатывается один запрос за раз

  • Интернационализация — 7 языков, переключаются через переменные среды


? Где это уже работает

  • Matrix — полноценная реализация через Synapse + nginx + bot + middleware

  • Telegram / Discord / Slack / Webhook — в планах


? Установка (Matrix-режим)

git clone https://github.com/EPTLLC/cb2fa.com
cd cb2fa
cp .env.example .env
# правим настройки, запускаем:
deno run --allow-net --allow-env --allow-read src/main.ts
# отдельно — middleware:
deno run --allow-net --allow-env --allow-read middleware/middleware.ts

nginx перенаправляет /login на middleware, который всё координирует.


? Зачем это нужно

  • Нет зависимости от устройств и приложений

  • Можно использовать в airgapped-сетях

  • Можно поставить в командных или корпоративных средах

  • Идеально для закрытых Matrix-инстансов


? Лицензия и поддержка

MIT License. Проект свободен, открыт и не сопровождается.
Нет поддержки. Нет объяснений. Но есть документация — и пулреквесты приветствуются.

GitHub: https://github.com/EPTLLC/cb2fa.com

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


  1. home14352
    30.06.2025 14:16

    А вдруг что-то не так им сделал, и бам! Сразу потерял доступ ко всем аккаунтам


    1. easyprotech Автор
      30.06.2025 14:16

      Даже затрудняюсь что либо ответить) Что можно не так сделать отпраляя в чат Y или N? ) После отправки N - пользователь может повторить запрос повторно, нажмете Y)


      1. arokettu
        30.06.2025 14:16

        можно поссориться с людьми и они не пустят вас в ваш аккаунт