NebulaEncrypt — расширение для Chrome/Chromium и Firefox для локального шифрования и расшифровки сообщений в Telegram Web и MAX. Все операции выполняются на вашем устройстве, ключи не покидают компьютер.
Важно: проект предназначен только для личного обучения и общения. Не используйте в незаконных целях и не полагайтесь на него в production.
- Только локальное шифрование — шифрование и расшифровка на устройстве, ключи не передаются по сети.
- Ключи по URL — отдельные ключи для каждого сайта (Telegram, MAX); расширение подставляет нужный ключ по адресу вкладки.
- Два ключа — «ваш ключ» (для исходящих сообщений) и «ключ собеседника» (для входящих).
- Соль по URL — один и тот же пароль на разных сайтах даёт разные ключи (PBKDF2 с уникальной солью).
- Шифрование и расшифровка — горячие клавиши, кнопки в попапе и автоматическая расшифровка при появлении сообщений.
- Поддержка сервисов — Telegram Web (A и K) и MAX; автоопределение версии/сайта, ключи хранятся по домену.
- Click-to-decrypt — зашифрованные сообщения в ленте помечаются; по клику расшифровываются при настроенных ключах.
- Защищённый экспорт и импорт ключей — резервная копия сохраняется в JSON, зашифрованном отдельным паролем.
- Индикатор в иконке — зелёный «✓», если для текущего сайта есть ключи; оранжевый «!», если ключей нет. Счётчик расшифрованных сообщений.
- Тёмная и светлая тема — попап подстраивается под системную тему.
- Скачайте или клонируйте репозиторий.
- В Chrome откройте
chrome://extensions/. - Включите «Режим разработчика» и нажмите «Загрузить распакованное расширение».
- Укажите папку с файлами расширения.
- Откройте
about:debugging#/runtime/this-firefox. - Нажмите «Загрузить временное дополнение».
- Выберите
manifest.jsonиз папки проекта.
Для Manifest V3 используется кросс-браузерный фон: Chrome запускает background.service_worker, Firefox 121+ запускает background.scripts.
-
Настройка ключей
Нажмите на иконку расширения. Выберите сервис (Telegram или MAX) или откройте нужную вкладку — URL подставится автоматически. Введите «Ваш ключ» и «Ключ собеседника», при необходимости сгенерируйте их кнопкой (🎲) или оцените силу по полоске. Нажмите «Сохранить ключи». -
Шифрование
Введите текст в поле ввода чата и нажмите горячую клавишу или кнопку «Зашифровать» в попапе. Текст в поле заменится на зашифрованный; отправьте сообщение как обычно. -
Расшифровка
Новые зашифрованные сообщения расшифровываются автоматически. Можно нажать горячую клавишу или кнопку «Расшифровать» в попапе. Сообщения, которые ещё не расшифрованы, помечены в ленте — нажмите по ним для расшифровки (click-to-decrypt). -
Экспорт/импорт
В попапе введите пароль резервной копии. «Экспорт бэкапа» скачиваетnebula-encrypt-backup.jsonс ключами, зашифрованными AES-GCM. «Импорт бэкапа» расшифровывает файл тем же паролем и добавляет корректные записи к уже сохранённым. Старые plaintext 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на устройстве. - Резервные копии: AES-GCM с ключом из пароля бэкапа через PBKDF2-HMAC-SHA-256, 210 000 итераций, случайная соль и IV.
- Сервисы и DOM: автоопределение Telegram (A/K) и MAX; отдельные селекторы для полей ввода и пузырьков сообщений (в т.ч. Lexical-редактор в MAX).
- Бейдж: при смене вкладки/загрузке страницы проверяется наличие ключей для текущего URL; при расшифровке обновляется счётчик в бейдже.
- Сообщение не шифруется — убедитесь, что для текущего URL сохранены ключи (иконка зелёная). Откройте чат и снова нажмите «Зашифровать» или горячую клавишу.
- Не расшифровывается — проверьте, что для этого сайта сохранён правильный «ключ собеседника». Без него расшифровка невозможна.
- «Поле ввода не найдено» — откройте конкретный чат и убедитесь, что страница полностью загружена; при необходимости перезагрузите вкладку.
- «Перезагрузите страницу» — после установки или обновления расширения перезагрузите страницу Telegram/MAX.
manifest.json— манифест расширения (Manifest V3), разрешения, команды, content script для Telegram и MAX, настройки Firefox.extension-api.js— тонкий слой совместимостиbrowser.*/chrome.*для Firefox и Chromium.popup.html/popup.js— попап: выбор сервиса, URL, два ключа, сила пароля, экспорт/импорт, список сохранённых сайтов, кнопки шифровать/расшифровать.background.js— обработка горячих клавиш, уведомления, обновление бейджа (наличие ключей и счётчик).content.js— определение сервиса, работа с DOM, шифрование/расшифровка, click-to-decrypt, наблюдатель за новыми сообщениями.
Проект распространяется под лицензией MIT — см. файл LICENSE.
NebulaEncrypt — шифрование в веб-чатах под вашим контролем.
