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: puedes eliminar entradas, ver el algoritmo (Ed25519, RSA, ECDSA…) y la fecha en que se vio por primera vez.
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 (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 requiere una aceptación explícita. - 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.
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, grupos, hosts de confianza, claves y ajustes. Importar copia de seguridad restaura el mismo paquete, útil al cambiar de máquina.
Formato: JSON cifrado con AES-256-GCM, con una cabecera de metadatos (versión, fecha). La contraseña nunca se guarda en el archivo, solo se usa para derivar la clave (PBKDF2).
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 o TRACE.