Krypton
Описание
Веб-мессенджер с архитектурой Zero Trust и сквозным шифрованием (E2EE) на базе Rust/WebAssembly
Релизы1
Все релизыЯзыки
- TypeScript48%
- Go22,5%
- CSS9,9%
- HTML8,3%
- Rust8,2%
- Makefile2,1%
- Остальные1%
Krypton — E2EE Secure Web Messenger
Репозиторий: https://gitverse.ru/DexLightwood/Krypton
Безопасный веб-мессенджер со сквозным шифрованием (End-to-End Encryption). Архитектура «толстый клиент — тонкий сервер»: вся криптография выполняется на устройстве, сервер обрабатывает только зашифрованные данные. В приложении: профиль (имя, био, аватар, ссылки на сайт и соцсети), чаты с доставкой сообщений, отправка файлов, поиск пользователей.
Проект размещён на GitVerse — российской платформе для работы с исходным кодом.
Архитектура
Frontend (React + TypeScript)
│
├── Rust/Wasm криптомодуль
│ ├── X3DH (обмен ключами)
│ ├── Double Ratchet (обновление ключей)
│ └── AES-256-GCM (шифрование)
│
└── WebSocket ──► Go Backend ──► PostgreSQL
(только зашифрованные блобы)
Стек технологий
| Компонент | Технология |
|---|---|
| Frontend | React 18, TypeScript, Vite, Zustand, Framer Motion |
| Desktop | Tauri 2 — macOS (.dmg/.app), Windows (.msi/.exe), Linux (.deb/.AppImage) |
| Криптография | Rust → WebAssembly (x25519-dalek, aes-gcm, hkdf) |
| Backend | Go (stdlib net/http, gorilla/websocket) |
| База данных | PostgreSQL 16 |
| Очередь | Redis 7 |
| Контейнеризация | Docker Compose |
Быстрый старт
Требования
- Git
- Docker & Docker Compose
- Node.js 20+
- Go 1.25+
- Rust + wasm-pack (
)cargo install wasm-pack - Make
Установка (одна команда)
Разработка
Локальный PostgreSQL без Docker. Если запускаете бэкенд без Docker, создайте пользователя и базу (один раз):
Либо задайте свою строку подключения: .
Сборка
Тестирование и линтинг
Docker
Очистка
Создание релиза
Полный список команд:
make help
Ручная сборка десктоп-клиента
Для всех платформ используется Tauri 2. Для автоматической сборки используйте .
macOS
Требования: Rust (https://rustup.rs), wasm-pack (), Node.js, Xcode Command Line Tools. Результат: — и .
Windows
Требования: Visual Studio Build Tools (MSVC), WebView2. Результат: (NSIS),
Linux
Требования: , , , , . Результат: ,
Протокол безопасности
E2EE (End-to-End Encryption)
- X3DH (Extended Triple Diffie-Hellman) — начальный обмен ключами
- Double Ratchet — обновление ключей с каждым сообщением
- AES-256-GCM — симметричное шифрование сообщений
- Padding — скрытие реальной длины сообщений
Что знает сервер
- Кто зарегистрирован (username, хеш пароля)
- Кому адресовано сообщение (recipient_id)
- Зашифрованный blob (без возможности расшифровки)
Что НЕ знает сервер
- Содержимое сообщений
- Ключи шифрования
- Открытый текст
Структура проекта
Krypton/
├── frontend/ # React + TypeScript + Vite
│ └── src/
│ ├── components/ # UI компоненты (Auth, ChatList, ChatWindow, etc.)
│ ├── crypto/ # JS-обёртки над Wasm
│ ├── services/ # API клиент + WebSocket
│ ├── store/ # Zustand state management
│ └── styles/ # Glassmorphism тема
├── crypto/ # Rust → WebAssembly
│ └── src/
│ ├── x3dh.rs # Extended Triple DH
│ ├── double_ratchet.rs # Double Ratchet Algorithm
│ ├── aead.rs # AES-256-GCM
│ └── keys.rs # Управление ключами
├── backend/ # Go backend
│ ├── cmd/server/ # Точка входа
│ └── internal/
│ ├── api/ # HTTP хендлеры
│ ├── ws/ # WebSocket hub
│ ├── auth/ # Аутентификация (Argon2id + JWT)
│ ├── storage/ # PostgreSQL
│ └── middleware/ # CORS, Rate Limiting, JWT
├── index.html # Лендинг для GitVerse Pages (корень репозитория)
├── scripts/ # Скрипты автоматизации (build-wasm.sh)
├── Makefile # Единая точка входа: make help
└── docker-compose.yml # PostgreSQL + Redis
API
REST
| Метод | Путь | Описание |
|---|---|---|
| POST | /api/auth/register | Регистрация |
| POST | /api/auth/login | Вход |
| POST | /api/keys/upload | Загрузка PreKey Bundle |
| GET | /api/keys/:user_id | Получение PreKey Bundle |
| GET | /api/users/search?q= | Поиск пользователей |
| GET | /api/chats | Список чатов |
| GET | /api/me | Текущий пользователь |
WebSocket
Подключение:
Типы сообщений: , , , ,
Безопасность
Обнаружили уязвимость? Не создавайте публичную Задачу. Отправьте отчёт на krypton-security@proton.me. Подробнее — в SECURITY.md.
Участие в разработке
Мы приветствуем вклад сообщества. Перед отправкой Запроса на слияние ознакомьтесь с:
- CONTRIBUTING.md — правила участия, стандарты кода, процесс ревью.
- CODE_OF_CONDUCT.md — кодекс поведения участников.
Как начать
- Форкните репозиторий на GitVerse: DexLightwood/Krypton.
- Клонируйте свой форк: git clone https://gitverse.ru/<ваш_логин>/Krypton.git
- Создайте ветку, внесите изменения, откройте Запрос на слияние.
Подробнее — в CONTRIBUTING.md.
Лицензия
Krypton распространяется под лицензией GNU Affero General Public License v3.0.
Это означает: если вы модифицируете Krypton и предоставляете доступ к нему по сети (как сервис), вы обязаны опубликовать исходный код ваших модификаций под той же лицензией.