NebulaEncrypt
Local encrypt and decrypt MAX and telegram messages using secret keys.
Install / Use
/learn @dmitrymalakhov/NebulaEncryptREADME
NebulaEncrypt — расширение Chrome для локального шифрования в веб-чатах
<p align="center"> <img src="./assets/NebulaEncrypt.gif" alt="NebulaEncrypt Demo"> </p>NebulaEncrypt — расширение Chrome для локального шифрования и расшифровки сообщений в Telegram Web и MAX. Все операции выполняются на вашем устройстве, ключи не покидают компьютер.
Важно: проект предназначен только для личного обучения и общения. Не используйте в незаконных целях и не полагайтесь на него в production.
Основные возможности
- Только локальное шифрование — шифрование и расшифровка на устройстве, ключи не передаются по сети.
- Ключи по URL — отдельные ключи для каждого сайта (Telegram, MAX); расширение подставляет нужный ключ по адресу вкладки.
- Два ключа — «ваш ключ» (для исходящих сообщений) и «ключ собеседника» (для входящих).
- Соль по URL — один и тот же пароль на разных сайтах даёт разные ключи (PBKDF2 с уникальной солью).
- Шифрование и расшифровка — горячие клавиши, кнопки в попапе и автоматическая расшифровка при появлении сообщений.
- Поддержка сервисов — Telegram Web (A и K) и MAX; автоопределение версии/сайта, ключи хранятся по домену.
- Click-to-decrypt — зашифрованные сообщения в ленте помечаются; по клику расшифровываются при настроенных ключах.
- Экспорт и импорт ключей — сохранение и загрузка ключей в JSON для резервной копии или переноса.
- Индикатор в иконке — зелёный бейдж, если для текущего сайта есть ключи; оранжевый «!», если ключей нет. Счётчик расшифрованных сообщений.
- Тёмная и светлая тема — попап подстраивается под системную тему.
Установка
- Скачайте или клонируйте репозиторий.
- В Chrome откройте
chrome://extensions/. - Включите «Режим разработчика» и нажмите «Загрузить распакованное расширение».
- Укажите папку с файлами расширения.
Использование
-
Настройка ключей
Нажмите на иконку расширения. Выберите сервис (Telegram или MAX) или откройте нужную вкладку — URL подставится автоматически. Введите «Ваш ключ» и «Ключ собеседника», при необходимости сгенерируйте их кнопкой (🎲) или оцените силу по полоске. Нажмите «Сохранить ключи». -
Шифрование
Введите текст в поле ввода чата и нажмите горячую клавишу или кнопку «Зашифровать» в попапе. Текст в поле заменится на зашифрованный; отправьте сообщение как обычно. -
Расшифровка
Новые зашифрованные сообщения расшифровываются автоматически. Можно нажать горячую клавишу или кнопку «Расшифровать» в попапе. Сообщения, которые ещё не расшифрованы, помечены в ленте — нажмите по ним для расшифровки (click-to-decrypt). -
Экспорт/импорт
В попапе: «Экспорт ключей» — скачиваетсяnebula-encrypt-keys.json; «Импорт ключей» — выбор JSON-файла, ключи добавляются к уже сохранённым.
Горячие клавиши
| Действие | Windows/Linux | macOS |
|-----------------------|-----------------|-------------|
| Зашифровать текст | Ctrl+Alt+E | Ctrl+Shift+E |
| Расшифровать сообщения | Ctrl+Alt+D | Ctrl+Shift+D |
Сочетания можно изменить в chrome://extensions/ → «Сочетания клавиш» для NebulaEncrypt.
Технические детали
- Шифрование: AES-GCM, ключ 256 бит.
- Ключ из пароля: PBKDF2-HMAC-SHA-256, 210 000 итераций, соль
NebulaEncrypt-v1-<URL>(поддержка старых форматов при расшифровке). - Хранение ключей: только в
chrome.storage.localна устройстве. - Сервисы и DOM: автоопределение Telegram (A/K) и MAX; отдельные селекторы для полей ввода и пузырьков сообщений (в т.ч. Lexical-редактор в MAX).
- Бейдж: при смене вкладки/загрузке страницы проверяется наличие ключей для текущего URL; при расшифровке обновляется счётчик в бейдже.
Устранение неполадок
- Сообщение не шифруется — убедитесь, что для текущего URL сохранены ключи (иконка зелёная). Откройте чат и снова нажмите «Зашифровать» или горячую клавишу.
- Не расшифровывается — проверьте, что для этого сайта сохранён правильный «ключ собеседника». Без него расшифровка невозможна.
- «Поле ввода не найдено» — откройте конкретный чат и убедитесь, что страница полностью загружена; при необходимости перезагрузите вкладку.
- «Перезагрузите страницу» — после установки или обновления расширения перезагрузите страницу Telegram/MAX.
Структура проекта
manifest.json— манифест расширения (Manifest V3), разрешения, команды, content script для Telegram и MAX.popup.html/popup.js— попап: выбор сервиса, URL, два ключа, сила пароля, экспорт/импорт, список сохранённых сайтов, кнопки шифровать/расшифровать.background.js— обработка горячих клавиш, уведомления, обновление бейджа (наличие ключей и счётчик).content.js— определение сервиса, работа с DOM, шифрование/расшифровка, click-to-decrypt, наблюдатель за новыми сообщениями.
Лицензия
Проект распространяется под лицензией MIT — см. файл LICENSE.
NebulaEncrypt — шифрование в веб-чатах под вашим контролем.
