v0.3.0 — v0.6.0 Mobile & Sync 10 мин 18 сентября 2026, 19:30 — 19 сентября 2026, 03:40

Акт IV: Zero-Knowledge — свой E2EE-сервер и мобильный Android

Отказ от облаков: запуск собственного E2EE-релея синхронизации на VPS, честная ротация мастер-пароля Argon2id, ловушка GlobalKey в IndexedStack и Android с тач-панелью.

BUG-015 BUG-018 BUG-021 #e2ee #sync #argon2id #android #zero-knowledge
Стенограмма крипто-аудита: Проверка сквозного шифрования
19 сентября 2026, 02:25
Развернуть
Архитектор
я не понял, пароль хранится в открытом виде?
Antigravity
Пароли ни в коем случае не хранятся в открытом виде. Мастер-пароль пользователя никогда не покидает локальное устройство. Из него через Argon2id (память: 64 МБ, итерации: 3, параллелизм: 4) на лету генерируется 256-битный ключ, которым локально зашифровывается вся база данных (AES-256-GCM). На сервер синхронизации уходят исключительно криптографические шифротексты — даже имея полный доступ к серверу синхронизации, восстановить учетные данные без мастер-пароля невозможно.
Контекст акта: Никакой передачи ключей чужим корпорациям. В этом акте Shellit реализует собственный легковесный сервер сквозного шифрования (E2EE) для развертывания на личном VPS, решает баг ротации мастер-пароля на Argon2id, вылечивает фантомные ключи в IndexedStack и выпускает полноценный Android-клиент с тактильной клавиатурой.

Запись 18. Синхронизация для гиков: E2EE-сервер на VPS с нулевым разглашением

⏱️ Время: 18 сентября 2026, 19:30 — 20:30 (~60 минут)

В коммерческих продуктах вас загоняют в закрытое корпоративное облако: ваши списки серверов и метаданные лежат на чужих серверах. Мы выбрали бескомпромиссный принцип Zero-Knowledge:

  • Разработан легковесный сервер синхронизации shellit-sync-server (разворачивается в Docker за 2 минуты).
  • Сквозное шифрование (E2EE): Все данные (хосты, сниппеты, теги) шифруются на клиенте алгоритмом AES-256-GCM. Ключ деривируется из секретного пароля синхронизации через Argon2id.
  • Релейный сервер на VPS видит исключительно зашифрованные бинарные блобы. Даже если сервер взломают — злоумышленник получит только случайный белый шум.
  • Автоматическое разрешение конфликтов версий по векторным часам (Vector Clocks).

Записи 21–25. Исправление смены мастер-пароля (BUG-018) и ловушка GlobalKey

⏱️ Время: 18 сентября 2026, 21:00 — 23:30 (~150 минут)

При глубоком тестировании защищенного хранилища вскрылись две серьезные проблемы:

  1. BUG-018: Фиктивная смена мастер-пароля.
    В прототипе диалог смены мастер-пароля выдавал красивый снэкбар «Пароль успешно изменен», но на самом деле база данных Drift/SQLCipher оставалась зашифрована старым ключом! Мы реализовали честную процедуру ротации: чтение сырых данных через транзакцию памяти, перешифрование всех записей новым ключом Argon2id и безопасный сброс ключа в Keychain.
  2. BUG-021: Ловушка GlobalKey в IndexedStack.
    При переключении между вкладками терминала и SFTP консоль внезапно заливалась красным экраном ошибки Flutter: Duplicate GlobalKey detected in widget tree. Оказалось, контейнер IndexedStack удерживал в памяти дерево виджетов фоновых табов, где использовались одинаковые сгенерированные ключи. Заменили глобальные ключи на локальные ValueKey(sessionId).

Записи 26–28. Мобильный ренессанс: Shellit на Android с тач-панелью

⏱️ Время: 19 сентября 2026, 01:00 — 03:40 (~160 минут)

Мобильный терминал часто превращается в мучение из-за отсутствия клавиш Ctrl, Esc и стрелок на экранной клавиатуре смартфона.

Мы адаптировали Shellit под Android:

  • Выдвижная сенсорная панель: Прямо над стандартной клавиатурой Android монтируется эргономичный ряд спецклавиш (Esc, Tab, Ctrl, Alt, стрелки вверх/вниз для листания истории bash, пайп | и тильда ~).
  • Тактильный виброотклик (Haptic Feedback): Каждое касание спецклавиши подтверждается мягким вибро-импульсом, создавая ощущение физической клавиатуры.
  • Изоляция десктопного легаси: Все компоненты WebView2 и FFI-плагинов жестко отсечены через условные экспорты — APK-пакет получился ультракомпактным и летает даже на бюджетных устройствах.
📖 Типографика статьи выровнена по алгоритму Кнута — Пласса с помощью mcp-typography-server на базе Justif.
Knuth-Plass • TeX Style