Безопасность и данные
Доверенные хосты (known_hosts)
При первом подключении к хосту фиксируется отпечаток его открытого ключа (SHA-256) и сохраняется после вашего подтверждения. Последующие подключения сравнивают отпечаток — если он когда-либо изменится, вы получите чёткое оповещение.
Управляйте списком в Настройки → Безопасность → Доверенные хосты — каждая запись показывает хост, алгоритм ключа (Ed25519, RSA, ECDSA…) и отпечаток, и её можно удалить.
Как защищено соединение
DR-Terminal использует собственную реализацию SSH, устойчивую к активным атакующим и враждебным серверам:
- Ключ хоста проверяется во время рукопожатия, до отправки чего-либо секретного. Если посредник (man-in-the-middle) предъявляет неверный ключ, соединение прерывается на этапе обмена ключами — ваш пароль или приватный ключ никогда не покидает устройство.
- Только надёжные алгоритмы по умолчанию. Устаревшие, подверженные понижению алгоритмы — подписи и MAC на SHA-1,
ssh-rsa, 1024-битный Diffie-Hellman — отключены. Соединения используют современный обмен ключами (Curve25519, ECDH, Diffie-Hellman ≥ 2048 бит), шифры (AES-GCM, ChaCha20-Poly1305, AES-CTR) и типы ключей хоста (Ed25519, ECDSA, RSA-SHA2). Сервер, предлагающий только что-то более слабое, подключиться не сможет. - Без тихого понижения. Подпись, используемая сервером, должна соответствовать согласованной, поэтому он не может втайне переключиться на более слабую.
- Terrapin (CVE-2023-48795) устранён благодаря строгому обмену ключами.
- Устойчивость к враждебному или ошибочному серверу. Длины пакетов, поля сообщений и окна каналов, приходящие из сети, проверяются на границы, поэтому вредоносный сервер не может обрушить приложение или исчерпать его память — даже до вашей аутентификации.
Эти средства защиты включены автоматически. Вы взаимодействуете с ними только через запрос о доверенных хостах выше.
Экспортированные ключи
Когда вы преобразуете или экспортируете приватный ключ (SSH-ключи → Конвертировать) и задаёте парольную фразу, для шифрования используется надёжная функция вывода ключа, выбранная для каждого формата — bcrypt для OpenSSH, PBKDF2 для PKCS#8, Argon2id для PuTTY PPK v3 — а каждая соль и IV берутся из криптографически стойкого генератора случайных чисел. Конвертер читает и записывает OpenSSH, PKCS#8, PKCS#1 и PuTTY PPK (v2/v3), как из PEM, так и из двоичного DER.
Где хранятся секреты
Пароли, приватные ключи и парольные фразы никогда не сериализуются в JSON подключений. Они отправляются прямо в защищённое хранилище платформы:
- Android — EncryptedSharedPreferences, на основе аппаратного Keystore.
- iOS — Keychain (с защитой биометрией, если вы её включили).
- Desktop — файл, зашифрованный AES-256-GCM, ключ выводится из профиля пользователя.
Зашифрованная резервная копия конфигурации
Настройки → Конфигурация → Экспортировать резервную копию создаёт защищённый паролем файл .drterminal. Он содержит: подключения (с учётными данными), группы, доверенные хосты, ключи SSH, закладки SFTP, историю команд, правила подсветки, сниппеты, профили serial и Telnet, внешний вид терминала и настройки, а также (на мобильных) конфигурацию клавиатуры DevOps. Импортировать резервную копию восстанавливает тот же набор — полезно при переезде между машинами.
Формат: JSON, зашифрованный AES-256-GCM. Пароль никогда не хранится в файле — он только выводит ключ шифрования (PBKDF2, 100 000 итераций SHA-256).
Импорт ~/.ssh/config
На Desktop можно массово импортировать хосты из существующей конфигурации OpenSSH. Импортёр разбирает записи Host, HostName, User, Port, IdentityFile и ProxyJump и добавляет их как сохранённые подключения. Файлы ключей, на которые ссылается IdentityFile, загружаются с диска в SecureStorage.
Уровни логирования
В Настройки → Терминал → Уровень логирования в файл выберите, что попадает в ~/.dr-terminal/logs/ (Desktop) или его эквивалент на мобильных. По умолчанию: ERROR — минимум шума. Для диагностики переключитесь на DEBUG.