Перейти к содержимому

Криптография и безопасность (Zero-Trust Architecture)

Shellit использует модель Zero-Knowledge безопасности: все учетные данные, приватные SSH-ключи, пароли и настройки шифруются локально на вашем устройстве до записи на диск.

1. Локальный криптографический стек Vault

  1. Деривация ключей Argon2id (RFC 9106):
    • Мастер-пароль пользователя никогда не сохраняется на диск и не передается по сети.
    • При разблокировке хранилища пароль обрабатывается криптографической функцией формирования ключа Argon2id с уникальной 256-битной солью, высокими требованиями к оперативной памяти и итерациям для математической защиты от перебора на GPU/ASIC.
  2. SQLCipher (AES-256):
    • Локальная база данных Drift шифруется на уровне страниц с помощью библиотеки SQLCipher.
    • Каждая страница проверяется на целостность аутентифицированным HMAC, предотвращая оффлайн-модификацию зашифрованного файла.
  3. Гигиена оперативной памяти в Dart (Zeroization):
    • Для предотвращения утечек в куче сборщика мусора Dart приватные ключи, пароли и производные мастер-ключи обрабатываются в виде изменяемых байтовых массивов Uint8List.
    • Сразу после использования или при автоблокировке хранилища буферы памяти принудительно зануляются (.fillRange(0, length, 0)), а у криптографических ключей вызывается SecretKey.destroy(), исключая извлечение секретов из crash dump или файла подкачки.

2. Защита от Man-in-the-Middle (SSH TOFU & Known Hosts)

При установке SSH-соединения Shellit реализует модель Trust On First Use (TOFU) со строгим принципом Fail-Closed:

  1. Строгий Fail-Closed (Запрет по умолчанию):
    • При первом подключении к хосту отпечаток ключа сверяется с таблицей known_hosts. Если хост неизвестен или коллбэк верификации недоступен, соединение немедленно блокируется (return false).
    • Никакого молчаливого обхода проверки ключей серверов.
  2. Каноничные отпечатки OpenSSH SHA-256:
    • Бинарный 32-байтный дайджест ключа хоста форматируется по каноническому стандарту OpenSSH: SHA256:<base64-without-padding>.
  3. Визуализация Randomart («Пьяный епископ»):
    • В диалоге подтверждения хоста отпечаток дополнительно отображается в виде графической ASCII-матрицы алгоритма OpenSSH Drunken Bishop, что позволяет оператору мгновенно визуально заметить подмену сервера.
  4. Оповещение об атаке MitM:
    • Если отпечаток хоста изменился по сравнению с ранее сохраненным, Shellit выводит критическое предупреждение о возможной атаке перехвата (Host Key Mismatch) и блокирует ввод.

3. Песочница Desktop Plugin SDK

Сторонние плагины (.shellit) выполняются в строго изолированной среде:

  1. Валидация JSON-RPC 2.0: все сообщения от плагинов проверяются по строгой схеме протокола с белым списком разрешённых методов API.
  2. Предотвращение инъекций: строгий запрет null-byte (\x00) и path-traversal последовательностей (.., /, \) в операциях с изолированным хранилищем плагина.
  3. Content Security Policy (CSP): встроенный веб-сервер отдаёт все ресурсы с заголовками default-src 'self', frame-ancestors 'none', исключая несанкционированные сетевые запросы из контекста расширений.

Связка ключей и сертификатов

В интерфейсе Primary Vault вы можете управлять приватными ключами (ED25519, RSA), просматривать их контрольные суммы SHA-256, задавать passphrase-защиту и разворачивать публичные ключи на серверы в один клик:

Связка ключей SSH и сертификаты в Primary Vault