Skip to content

JeBance/SOVA

Repository files navigation

SOVA - Secure Over VK Application

PWA-мессенджер со сквозным шифрованием (E2EE) поверх ВКонтакте.

🔐 Особенности

  • Сквозное шифрование - X25519 (ECDH) + AES-256-GCM
  • Seed-фраза - восстановление ключей на любом устройстве
  • PWA - установка на домашний экран, офлайн-режим
  • Локальное хранение - все данные в IndexedDB

🚀 Быстрый старт

Установка зависимостей

npm install

Запуск разработки

npm run dev

Сборка для продакшена

npm run build

Деплой на GitHub Pages

npm run deploy

📱 Использование

Первый запуск

  1. Авторизуйтесь через ВКонтакте
  2. Создайте или восстановите ключи шифрования
  3. Запишите seed-фразу - без неё нельзя восстановить ключи!

Обмен ключами

  1. Откройте Профиль → QR-код вашего публичного ключа
  2. Покажите QR контакту при личной встрече
  3. Контакт сканирует QR через ПрофильДобавить ключ контакта

Отправка сообщений

  • Обычные сообщения - для контактов без ключа
  • Зашифрованные - автоматически для контактов с ключом (🔒)

🔧 Настройка VK API

Получите Client ID в VK Developers:

  1. Создайте приложение типа "Standalone"
  2. Скопируйте ID приложения
  3. Замените VK_CLIENT_ID в src/views/Auth.vue

📂 Структура проекта

SOVA/
├── public/
│   ├── icons/          # Иконки PWA
│   ├── manifest.json   # Манифест PWA
│   └── sw.js           # Service Worker
├── src/
│   ├── services/
│   │   ├── crypto.js       # Seed, ключи X25519
│   │   ├── encryption.js   # Шифрование сообщений
│   │   ├── storage.js      # IndexedDB
│   │   ├── vk.js           # VK API
│   │   └── qr.js           # QR-коды
│   ├── stores/
│   │   └── index.js        # Pinia stores
│   ├── views/
│   │   ├── Auth.vue        # Авторизация
│   │   ├── Conversations.vue
│   │   ├── Chat.vue
│   │   ├── Profile.vue
│   │   ├── Settings.vue
│   │   └── SeedSetup.vue
│   ├── App.vue
│   ├── main.js
│   ├── router.js
│   └── style.css
├── index.html
├── package.json
├── vite.config.js
└── README.md

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

Криптография

  • Ключевая пара: X25519 (32 байта)
  • Шифрование сообщений:
    1. Генерация эфемерного ключа
    2. ECDH → общий секрет
    3. HKDF-SHA256 → ключ AES
    4. AES-256-GCM шифрование

Хранение

  • Приватный ключ: IndexedDB (локально)
  • Seed-фраза: только у пользователя
  • История сообщений: IndexedDB

Важные предупреждения

⚠️ Seed-фраза = ваши ключи
При потере seed-фразы и очистке данных ключи невозможно восстановить!

⚠️ История не синхронизируется
При смене устройства история остаётся на старом устройстве

🛠 Технологии

  • Vue 3 (Composition API)
  • Vite
  • Pinia
  • Vue Router
  • @noble/curves (X25519)
  • bip39 (seed-фразы)
  • idb (IndexedDB)
  • qrcode-generator
  • html5-qrcode

📄 Лицензия

MIT

👤 Автор

Олег Прудков (@JeBance)

🔗 Ссылки

About

Secure Over VK Application

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors