main
v1.1.2: понятный выбор личного чата и комнаты
bare
сообщения шифруются в браузере · история остаётся на устройстве · сервер доставляет шифротекст
открыть bare · философия · модель угроз
что это
Bare — маленький независимый E2EE-чат, а не платформа. Он умеет личные чаты и комнаты, работает как PWA, присылает уведомления и переносит локальную историю через зашифрованный файл .bare.
Клиент — HTML, CSS и vanilla JS без npm и сборки. Сервер — Go + SQLite, статика встроена в один бинарь.
- без аккаунтной обвязки — только ник и пароль, без email, телефона и OAuth;
- локальная история — сообщения после доставки живут в IndexedDB текущего устройства, а не в облачном архиве;
- сервер-реле — сервер хранит метаданные и временную очередь недоставленных шифротекстов, удаляя сообщения после подтверждения устройства;
- криптография в браузере — пароль не покидает клиент, личные чаты и комнаты шифруются через WebCrypto;
- простая поверхность аудита — клиент состоит из читаемых ES-модулей без бандлера и скрытого шага сборки.
внутри
| слой | решение |
|---|---|
| клиент | HTML, CSS, vanilla JS, PWA, IndexedDB |
| сервер | Go, SQLite, HTTPS, SSE |
| ключи | ECDH P-256, PBKDF2, HKDF, AES-GCM |
| доверие | TOFU и сверка отпечатков при смене ключа |
| история | только на устройстве; ручной экспорт и импорт .bare |
запустить локально
Нужен Go 1.27.
git clone https://github.com/xmatic-squad/bare.git
cd bare
go run ./cmd/bare serve
Откройте http://127.0.0.1:8411. Без переменных окружения Bare создаст bare.db в текущей папке, разрешит регистрацию и запустится без пушей.
go test ./...
Production-настройка, VAPID, nginx и systemd описаны в руководстве по развёртыванию.
честные ограничения
- Забыл пароль — значит забыл: восстановления нет, потому что пароль участвует в выводе ключей.
- История в IndexedDB не зашифрована at rest и доступна коду, работающему на устройстве.
- E2EE не скрывает метаданные, не защищает скомпрометированное устройство и не спасает от оператора, который подменил веб-клиент.
- Forward secrecy в v1 нет. На iOS пуши работают только у PWA, установленного на экран «Домой».
Полная граница обещаний и допущений — в модели угроз.
документация
- Философия, архитектура, модель угроз
- Криптография, HTTP-протокол, хранение
- Интерфейс, айдентика, архитектурные решения
- Деплой, план v1, открытые вопросы
лицензия
Languages
Go
56.3%
JavaScript
40.4%
CSS
3.1%
HTML
0.2%
