Beveiliging en gegevens
Vertrouwde hosts (known_hosts)
De eerste verbinding met een host legt de vingerafdruk van de publieke sleutel (SHA-256) vast en slaat die op nadat je bevestigt. Volgende verbindingen vergelijken de vingerafdruk — als die ooit verandert, krijg je een duidelijke melding.
Beheer de lijst bij Instellingen → Beveiliging → Vertrouwde hosts — elke vermelding toont de host, het sleutelalgoritme (Ed25519, RSA, ECDSA…) en de vingerafdruk, en kan worden verwijderd.
Hoe de verbinding wordt beschermd
DR-Terminal gebruikt een eigen SSH-implementatie, gehard tegen actieve aanvallers en vijandige servers:
- De hostsleutel wordt tijdens de handshake gecontroleerd, voordat er iets geheims wordt verzonden. Als een man-in-the-middle de verkeerde sleutel presenteert, wordt de verbinding bij de sleuteluitwisseling afgebroken — je wachtwoord of privésleutel verlaat nooit het apparaat.
- Standaard alleen sterke algoritmen. Verouderde, voor downgrade vatbare algoritmen — SHA-1-handtekeningen en -MAC's,
ssh-rsa, 1024-bits Diffie-Hellman — zijn uitgeschakeld. Verbindingen gebruiken moderne sleuteluitwisseling (Curve25519, ECDH, Diffie-Hellman ≥ 2048-bits), ciphers (AES-GCM, ChaCha20-Poly1305, AES-CTR) en hostsleuteltypen (Ed25519, ECDSA, RSA-SHA2). Een server die alleen iets zwakkers aanbiedt, kan geen verbinding maken. - Geen stille downgrade. De handtekening die de server gebruikt, moet overeenkomen met wat is onderhandeld, zodat hij niet buiten je medeweten kan terugvallen op een zwakkere.
- Terrapin (CVE-2023-48795) wordt beperkt via strikte sleuteluitwisseling.
- Bestand tegen een vijandige of buggy server. Pakketlengtes, berichtvelden en kanaalvensters die van het netwerk komen, worden allemaal op grenzen gecontroleerd, zodat een kwaadwillende server de app niet kan laten crashen of het geheugen ervan kan uitputten — zelfs niet voordat je je authenticeert.
Deze beschermingen staan automatisch aan. Je hebt er alleen mee te maken via de bovenstaande prompt voor vertrouwde hosts.
Geëxporteerde sleutels
Wanneer je een privésleutel converteert of exporteert (SSH-sleutels → Converteren) en een wachtwoordzin instelt, gebruikt de versleuteling een sterke sleutelafleidingsfunctie die per formaat wordt gekozen — bcrypt voor OpenSSH, PBKDF2 voor PKCS#8, Argon2id voor PuTTY PPK v3 — en elke salt en IV komt van een cryptografisch veilige generator voor willekeurige getallen. De converter leest en schrijft OpenSSH, PKCS#8, PKCS#1 en PuTTY PPK (v2/v3), zowel vanuit PEM als binaire DER.
Waar geheimen leven
Wachtwoorden, privésleutels en wachtwoordzinnen worden nooit in de verbindings-JSON geserialiseerd. Ze gaan rechtstreeks naar de beveiligde opslag van het platform:
- Android — EncryptedSharedPreferences, ondersteund door de hardware-Keystore.
- iOS — Keychain (biometrisch beschermd als je dat hebt ingeschakeld).
- Desktop — met AES-256-GCM versleuteld bestand, sleutel afgeleid van het gebruikersprofiel.
Versleutelde configuratieback-up
Instellingen → Configuratie → Back-up exporteren maakt een met een wachtwoord beschermd .drterminal-bestand. Het bevat: verbindingen (met inloggegevens), groepen, vertrouwde hosts, SSH-sleutels, SFTP-bladwijzers, opdrachtgeschiedenis, markeringsregels, snippets, seriële en Telnet-profielen, terminalweergave en instellingen, en (op mobiel) de configuratie van het DevOps-toetsenbord. Back-up importeren herstelt dezelfde bundel — handig bij het verhuizen tussen machines.
Formaat: JSON versleuteld met AES-256-GCM. Het wachtwoord wordt nooit in het bestand opgeslagen — het leidt alleen de versleutelingssleutel af (PBKDF2, 100 000 iteraties van SHA-256).
~/.ssh/config importeren
Op Desktop kun je hosts in bulk importeren uit een bestaande OpenSSH-config. De importeur ontleedt de vermeldingen Host, HostName, User, Port, IdentityFile en ProxyJump en voegt ze toe als opgeslagen verbindingen. Sleutelbestanden waar IdentityFile naar verwijst, worden van schijf in SecureStorage geladen.
Logniveaus
Kies bij Instellingen → Terminal → Bestandslogniveau wat er in ~/.dr-terminal/logs/ (Desktop) of het equivalent op mobiel terechtkomt. Standaard: ERROR — minimale ruis. Schakel voor diagnostiek over naar DEBUG.