Криптография и безопасность (Zero-Trust Architecture)
Shellit использует модель Zero-Knowledge безопасности: все учетные данные, приватные SSH-ключи, пароли и настройки шифруются локально на вашем устройстве до записи на диск.
1. Локальный криптографический стек Vault
- Деривация ключей Argon2id (RFC 9106):
- Мастер-пароль пользователя никогда не сохраняется на диск и не передается по сети.
- При разблокировке хранилища пароль обрабатывается криптографической функцией формирования ключа
Argon2idс уникальной 256-битной солью, высокими требованиями к оперативной памяти и итерациям для математической защиты от перебора на GPU/ASIC.
- SQLCipher (AES-256):
- Локальная база данных Drift шифруется на уровне страниц с помощью библиотеки SQLCipher.
- Каждая страница проверяется на целостность аутентифицированным HMAC, предотвращая оффлайн-модификацию зашифрованного файла.
- Гигиена оперативной памяти в Dart (Zeroization):
- Для предотвращения утечек в куче сборщика мусора Dart приватные ключи, пароли и производные мастер-ключи обрабатываются в виде изменяемых байтовых массивов
Uint8List. - Сразу после использования или при автоблокировке хранилища буферы памяти принудительно зануляются (
.fillRange(0, length, 0)), а у криптографических ключей вызываетсяSecretKey.destroy(), исключая извлечение секретов из crash dump или файла подкачки.
- Для предотвращения утечек в куче сборщика мусора Dart приватные ключи, пароли и производные мастер-ключи обрабатываются в виде изменяемых байтовых массивов
2. Защита от Man-in-the-Middle (SSH TOFU & Known Hosts)
При установке SSH-соединения Shellit реализует модель Trust On First Use (TOFU) со строгим принципом Fail-Closed:
- Строгий Fail-Closed (Запрет по умолчанию):
- При первом подключении к хосту отпечаток ключа сверяется с таблицей
known_hosts. Если хост неизвестен или коллбэк верификации недоступен, соединение немедленно блокируется (return false). - Никакого молчаливого обхода проверки ключей серверов.
- При первом подключении к хосту отпечаток ключа сверяется с таблицей
- Каноничные отпечатки OpenSSH SHA-256:
- Бинарный 32-байтный дайджест ключа хоста форматируется по каноническому стандарту OpenSSH:
SHA256:<base64-without-padding>.
- Бинарный 32-байтный дайджест ключа хоста форматируется по каноническому стандарту OpenSSH:
- Визуализация Randomart («Пьяный епископ»):
- В диалоге подтверждения хоста отпечаток дополнительно отображается в виде графической ASCII-матрицы алгоритма OpenSSH Drunken Bishop, что позволяет оператору мгновенно визуально заметить подмену сервера.
- Оповещение об атаке MitM:
- Если отпечаток хоста изменился по сравнению с ранее сохраненным, Shellit выводит критическое предупреждение о возможной атаке перехвата (Host Key Mismatch) и блокирует ввод.
3. Песочница Desktop Plugin SDK
Сторонние плагины (.shellit) выполняются в строго изолированной среде:
- Валидация JSON-RPC 2.0: все сообщения от плагинов проверяются по строгой схеме протокола с белым списком разрешённых методов API.
- Предотвращение инъекций: строгий запрет null-byte (
\x00) и path-traversal последовательностей (..,/,\) в операциях с изолированным хранилищем плагина. - Content Security Policy (CSP): встроенный веб-сервер отдаёт все ресурсы с заголовками
default-src 'self',frame-ancestors 'none', исключая несанкционированные сетевые запросы из контекста расширений.
Связка ключей и сертификатов
В интерфейсе Primary Vault вы можете управлять приватными ключами (ED25519, RSA), просматривать их контрольные суммы SHA-256, задавать passphrase-защиту и разворачивать публичные ключи на серверы в один клик:
