Krypton

0

Описание

Веб-мессенджер с архитектурой Zero Trust и сквозным шифрованием (E2EE) на базе Rust/WebAssembly

https://gitverse.ru/DexLightwood/Krypton

Релизы
1

Все релизы

Языки

  • TypeScript48%
  • Go22,5%
  • CSS9,9%
  • HTML8,3%
  • Rust8,2%
  • Makefile2,1%
  • Остальные1%
2 месяца назад
2 месяца назад
README.md

Krypton — E2EE Secure Web Messenger

GitVerse License: AGPL-3.0 Landing

Репозиторий: 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 (только зашифрованные блобы)

Стек технологий

КомпонентТехнология
FrontendReact 18, TypeScript, Vite, Zustand, Framer Motion
DesktopTauri 2 — macOS (.dmg/.app), Windows (.msi/.exe), Linux (.deb/.AppImage)
КриптографияRust → WebAssembly (x25519-dalek, aes-gcm, hkdf)
BackendGo (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, создайте пользователя и базу (один раз):

Либо задайте свою строку подключения:

export DATABASE_URL="postgres://пользователь:пароль@localhost:5432/база?sslmode=disable"
.

Сборка

Тестирование и линтинг

Docker

Очистка

Создание релиза

Полный список команд:

make help

Ручная сборка десктоп-клиента

Для всех платформ используется Tauri 2. Для автоматической сборки используйте

make build-desktop
.

macOS

Требования: Rust (https://rustup.rs), wasm-pack (

cargo install wasm-pack
), Node.js, Xcode Command Line Tools. Результат:
dist-desktop/macos/
.app
и
.dmg
.

Windows

Требования: Visual Studio Build Tools (MSVC), WebView2. Результат:

.exe
(NSIS),
.msi

Linux

Требования:

libwebkit2gtk-4.1-dev
,
libgtk-3-dev
,
libayatana-appindicator3-dev
,
librsvg2-dev
,
patchelf
. Результат:
.deb
,
.AppImage

Протокол безопасности

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

Подключение:

ws://host/ws?token=JWT

Типы сообщений:

encrypted_message
,
x3dh_init
,
delivery_receipt
,
read_receipt
,
typing

Безопасность

Обнаружили уязвимость? Не создавайте публичную Задачу. Отправьте отчёт на krypton-security@proton.me. Подробнее — в SECURITY.md.

Участие в разработке

Мы приветствуем вклад сообщества. Перед отправкой Запроса на слияние ознакомьтесь с:

  • CONTRIBUTING.md — правила участия, стандарты кода, процесс ревью.
  • CODE_OF_CONDUCT.md — кодекс поведения участников.

Как начать

  1. Форкните репозиторий на GitVerse: DexLightwood/Krypton.
  2. Клонируйте свой форк:
    git clone https://gitverse.ru/<ваш_логин>/Krypton.git
  3. Создайте ветку, внесите изменения, откройте Запрос на слияние.

Подробнее — в CONTRIBUTING.md.

Лицензия

Krypton распространяется под лицензией GNU Affero General Public License v3.0.

Это означает: если вы модифицируете Krypton и предоставляете доступ к нему по сети (как сервис), вы обязаны опубликовать исходный код ваших модификаций под той же лицензией.