Безопасность
Как NexTerm защищает ваши ключи
Пароли, SSH-ключи и список серверов защищены сквозным шифрованием: они шифруются и расшифровываются только на вашем устройстве. Ниже — схема целиком, без упрощений, и то, что можно проверить самостоятельно.
Схема шифрования
Хранилище построено по модели «конверта»: мастер-пароль шифрует не данные, а ключ хранилища.
- Мастер-пароль → ключ шифрования ключей (KEK). Вывод через Argon2id: не меньше 19 МиБ памяти и двух проходов, соль уникальна для каждого хранилища. Параметры версионированы и хранятся рядом с данными.
- KEK → ключ хранилища. Случайный 256-битный ключ, созданный при создании хранилища. Смена мастер-пароля перешифровывает только его — одной транзакцией, поэтому прерванная смена ничего не портит.
- Ключ хранилища → ключи записей. У каждой записи (хост, пароль, ключ, заметка, сниппет) свой случайный 256-битный ключ; при каждой записи он создаётся заново. Ключи записей оборачиваются через HKDF-SHA256 и XChaCha20-Poly1305.
- Ключ записи → данные. XChaCha20-Poly1305 со свежим nonce из системного генератора случайных чисел на каждую операцию.
Собственной криптографии в клиенте нет: используются поддерживаемые библиотеки с названными алгоритмами.
Что лежит на диске открытым
Имена серверов, логины, адреса и названия ключей зашифрованы наравне с паролями. В открытом виде остаются только служебные поля: тип записи (например, «подключение» или «сниппет»), время создания и изменения, номера версий. Отдельно в списке хранилищ хранятся их отображаемые имена.
Синхронизация
В публичной бете синхронизации между устройствами нет. Когда она появится, она будет сквозной: сервер получает только зашифрованные конверты и не знает ни мастер-пароля, ни ключей.
Версии формата хранилища
У хранилища две независимые версии: схемы данных и криптографии. Клиент открывает свои и более старые версии, а версию из будущего честно отказывается открывать — вместо того, чтобы молча испортить данные.
Проверка обновлений и сборок
Клиент скачивает манифест обновления и его подпись, проверяет подпись Ed25519 ключом, встроенным в клиент при сборке, и только потом скачивает установщик. Установщик сверяется с SHA-256 из подписанного манифеста. Если подпись или сумма не сходятся, установка не начинается.
Сборки публичной беты пока не подписаны сертификатом разработчика Apple и Microsoft, поэтому Gatekeeper и SmartScreen попросят подтверждения. Целостность установщика проверяется по контрольной сумме:
# Linux: установщик и SHA256SUMS-linux.txt в одной папке
sha256sum --ignore-missing -c SHA256SUMS-linux.txt
# macOS
shasum -a 256 -c SHA256SUMS-macos.txt
# Windows (PowerShell): сравните со строкой из SHA256SUMS-windows.txt
Get-FileHash .\NexTerm-*-windows-x64-setup.exe -Algorithm SHA256
Файлы контрольных сумм публикуются рядом с установщиками в разделе Загрузка.
Куда обращается клиент
Ни телеметрии, ни аналитики, ни отчётов о падениях. Полный список адресов:
| Адрес | Зачем | Когда |
|---|---|---|
storage.yandexcloud.net/nexterm-prod-updates | Манифест обновления, его подпись и установщик новой версии | Автоматически при запуске и периодически. Выключается в настройках обновлений: «Проверять и скачивать автоматически». Установка — только по вашему решению |
sync.nexterm.ru | Учётная запись и синхронизация | Только если вы сами вошли в учётную запись |
| Ваши серверы | SSH и SFTP | Когда вы подключаетесь |
Адреса можно занести в allowlist; в закрытом контуре клиент работает без сети — хранилище лежит на вашем диске.
Секреты и журналы
Пароли, ключи и расшифрованные данные не попадают в журналы, отладочный вывод и тексты ошибок; отчётов о падениях клиент не отправляет. Это требование к коду, зафиксированное в правилах проекта и проверяемое на ревью каждого изменения.
Запись сеанса терминала идёт, только если вы её запустили. Такая запись сохраняется на диск без шифрования и может содержать всё, что было на экране.