Seguridad y datos
Hosts de confianza (known_hosts)
La primera conexión a un host captura la huella de su clave pública (SHA-256) y la guarda tras tu confirmación. Las conexiones posteriores comparan la huella: si alguna vez cambia, recibes una alerta clara.
Gestiona la lista en Ajustes → Seguridad → Hosts de confianza: cada entrada muestra el host, el algoritmo de la clave (Ed25519, RSA, ECDSA…) y la huella, y se puede eliminar.
Cómo se protege la conexión
DR-Terminal usa su propia implementación de SSH, reforzada frente a atacantes activos y servidores hostiles:
- La clave del host se comprueba durante el handshake, antes de enviar nada secreto. Si un intermediario (man-in-the-middle) presenta la clave equivocada, la conexión se aborta en el intercambio de claves: tu contraseña o clave privada nunca sale del dispositivo.
- Solo algoritmos fuertes, por defecto. Los algoritmos heredados y propensos a la degradación —firmas y MAC con SHA-1,
ssh-rsa, Diffie-Hellman de 1024 bits— están desactivados. Las conexiones usan intercambio de claves moderno (primero los híbridos poscuánticossntrup761x25519-sha512ymlkem768x25519-sha256, después Curve25519, ECDH, Diffie-Hellman ≥ 2048 bits), cifrados (AES-GCM, ChaCha20-Poly1305, AES-CTR) y tipos de clave de host (Ed25519, ECDSA, RSA-SHA2). Un servidor que solo ofrezca algo más débil no puede conectarse, a menos que reactives deliberadamente un algoritmo heredado en Algoritmos SSH (más abajo). - Sin degradación silenciosa. La firma que usa el servidor debe coincidir con lo que se negoció, de modo que no pueda recurrir a una más débil a tus espaldas.
- Terrapin (CVE-2023-48795) está mitigado mediante el intercambio de claves estricto.
- Resistente ante un servidor hostil o defectuoso. Las longitudes de paquete, los campos de mensaje y las ventanas de canal que llegan desde la red se comprueban todos contra sus límites, de modo que un servidor malicioso no pueda bloquear la app ni agotar su memoria, ni siquiera antes de que te autentiques.
Estas protecciones están activas automáticamente. Solo interactúas con ellas a través del aviso de hosts de confianza anterior.
Algoritmos SSH (avanzado)
Ajustes → Seguridad → Algoritmos SSH te permite ajustar lo que el cliente propone a los servidores: para un dispositivo heredado que solo habla un cifrado antiguo, o para fijar el orden en el que confías. La página tiene una sección por categoría de negociación:
- Intercambio de claves, Cifrados, MAC (integridad) — activa o desactiva cada algoritmo y muévelo arriba o abajo; el orden es el orden de preferencia que se envía al servidor (gana el primer algoritmo que ambas partes admiten).
- Claves de host — solo activado/desactivado.
- Compresión — un interruptor sí/no (desactivado por defecto). Sí propone primero
[email protected]connonecomo alternativa para servidores sin zlib; No propone solonone, de modo que el servidor no puede activar la compresión. La compresión ayuda en enlaces lentos y cuesta CPU en ambos extremos.
Los algoritmos que la biblioteca entrega desactivados llevan una pequeña etiqueta ámbar legacy: permanecen desactivados hasta que los actives. Una categoría nunca puede quedar vacía: el último algoritmo activado no se puede desactivar. Restablecer junto al título de una sección la devuelve a los valores por defecto de la biblioteca.
Cada conexión guardada puede anular la elección global: en el formulario de conexión, Algoritmos SSH → Personalizado abre el mismo editor solo para ese host (Predeterminado sigue el ajuste global). Confirmar el editor actualiza el formulario — Guardar la conexión después. Lo que realmente se negoció (intercambio de claves, clave de host, cifrado, MAC, compresión) se muestra en Info de conexión del menú de sesión.
Los ajustes nuevos se aplican a las conexiones abiertas después. Una segunda pestaña al mismo host reutiliza la conexión SSH activa y, por tanto, sus algoritmos: desconecta y vuelve a conectar para renegociar.
Advertencia poscuántica
Un atacante de tipo «store now, decrypt later» graba el tráfico de hoy y lo descifra cuando los ordenadores cuánticos puedan romper el intercambio de claves clásico. DR-Terminal prefiere el intercambio de claves híbrido poscuántico (sntrup761x25519-sha512, mlkem768x25519-sha256, los mismos que incluye OpenSSH) y, como OpenSSH, avisa cuando una sesión acaba en uno clásico: aparece un diálogo una vez por conexión indicando que el intercambio de claves no es poscuántico y que puede que el servidor necesite una actualización. No mostrar de nuevo desactiva la advertencia para siempre; vive en Ajustes → Seguridad → Advertencia poscuántica (activada por defecto).
Claves exportadas
Cuando conviertes o exportas una clave privada (Claves SSH → Convertir) y estableces una frase de contraseña, el cifrado usa una función de derivación de clave fuerte elegida según el formato —bcrypt para OpenSSH, PBKDF2 para PKCS#8, Argon2id para PuTTY PPK v3— y cada salt e IV proviene de un generador de números aleatorios criptográficamente seguro. El conversor lee y escribe OpenSSH, PKCS#8, PKCS#1 y PuTTY PPK (v2/v3), tanto desde PEM como desde DER binario.
Dónde viven los secretos
Las contraseñas, las claves privadas y las frases de contraseña nunca se serializan en el JSON de la conexión. Van directos al almacén seguro de la plataforma:
- Android — EncryptedSharedPreferences, respaldado por el Keystore por hardware.
- iOS — Keychain (protegido por biometría si la activaste).
- Escritorio — archivo cifrado con AES-256-GCM, con clave derivada del perfil del usuario.
Copia de seguridad de configuración cifrada
Ajustes → Configuración → Exportar copia de seguridad crea un archivo .drterminal protegido por contraseña. Contiene: conexiones (con credenciales), grupos, hosts de confianza, claves SSH, marcadores SFTP, historial de comandos, reglas de resaltado, snippets, perfiles serie y de Telnet, preferencias de algoritmos SSH, apariencia del terminal y ajustes, y (en móvil) la configuración del teclado DevOps. Importar copia de seguridad restaura el mismo paquete, útil al cambiar de máquina.
Formato: JSON cifrado con AES-256-GCM. La contraseña nunca se guarda en el archivo: solo deriva la clave de cifrado (PBKDF2, 100 000 iteraciones de SHA-256).
Importar ~/.ssh/config
En escritorio puedes importar hosts en bloque desde una configuración OpenSSH existente. El importador analiza las entradas Host, HostName, User, Port, IdentityFile y ProxyJump y las añade como conexiones guardadas. Los archivos de clave referenciados por IdentityFile se cargan desde disco a SecureStorage.
Niveles de log
En Ajustes → Terminal → Nivel de log de archivo elige qué llega a ~/.dr-terminal/logs/ (escritorio) o al equivalente en móvil. Por defecto: ERROR — mínimo ruido. Para diagnósticos cambia a DEBUG.