Безопасность

Как NexTerm защищает ваши ключи

Пароли, SSH-ключи и список серверов защищены сквозным шифрованием: они шифруются и расшифровываются только на вашем устройстве. Ниже — схема целиком, без упрощений, и то, что можно проверить самостоятельно.

Схема шифрования

Хранилище построено по модели «конверта»: мастер-пароль шифрует не данные, а ключ хранилища.

  1. Мастер-пароль → ключ шифрования ключей (KEK). Вывод через Argon2id: не меньше 19 МиБ памяти и двух проходов, соль уникальна для каждого хранилища. Параметры версионированы и хранятся рядом с данными.
  2. KEK → ключ хранилища. Случайный 256-битный ключ, созданный при создании хранилища. Смена мастер-пароля перешифровывает только его — одной транзакцией, поэтому прерванная смена ничего не портит.
  3. Ключ хранилища → ключи записей. У каждой записи (хост, пароль, ключ, заметка, сниппет) свой случайный 256-битный ключ; при каждой записи он создаётся заново. Ключи записей оборачиваются через HKDF-SHA256 и XChaCha20-Poly1305.
  4. Ключ записи → данные. 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; в закрытом контуре клиент работает без сети — хранилище лежит на вашем диске.

Секреты и журналы

Пароли, ключи и расшифрованные данные не попадают в журналы, отладочный вывод и тексты ошибок; отчётов о падениях клиент не отправляет. Это требование к коду, зафиксированное в правилах проекта и проверяемое на ревью каждого изменения.

Запись сеанса терминала идёт, только если вы её запустили. Такая запись сохраняется на диск без шифрования и может содержать всё, что было на экране.