Segurança e dados
Hosts confiáveis (known_hosts)
A primeira ligação a um host capta a impressão digital da respetiva chave pública (SHA-256) e armazena-a depois de confirmada. As ligações seguintes comparam a impressão digital — se ela mudar, é apresentado um alerta claro.
Faça a gestão da lista em Definições → Segurança → Hosts confiáveis — cada entrada mostra o host, o algoritmo da chave (Ed25519, RSA, ECDSA…) e a impressão digital, e pode ser removida.
Como a ligação é protegida
O DR-Terminal utiliza a sua própria implementação de SSH, reforçada contra atacantes ativos e servidores hostis:
- A chave do host é verificada durante o handshake, antes de qualquer segredo ser enviado. Se um intermediário (man-in-the-middle) apresentar a chave errada, a ligação é interrompida na troca de chaves — a palavra-passe ou a chave privada nunca sai do dispositivo.
- Apenas algoritmos fortes, por predefinição. Algoritmos legados e propensos a downgrade — assinaturas e MACs SHA-1,
ssh-rsa, Diffie-Hellman de 1024 bits — estão desativados. As ligações utilizam troca de chaves moderna (Curve25519, ECDH, Diffie-Hellman ≥ 2048 bits), cifras (AES-GCM, ChaCha20-Poly1305, AES-CTR) e tipos de chave de host (Ed25519, ECDSA, RSA-SHA2). Um servidor que ofereça apenas algo mais fraco não consegue ligar-se. - Sem downgrade silencioso. A assinatura utilizada pelo servidor tem de corresponder ao que foi negociado, pelo que não pode recorrer a uma mais fraca sem que isso seja detetado.
- Terrapin (CVE-2023-48795) é mitigado através de troca de chaves estrita.
- Resistente a um servidor hostil ou com defeitos. Os comprimentos de pacote, os campos de mensagem e as janelas de canal que chegam da rede são todos verificados quanto a limites, de modo que um servidor malicioso não consegue bloquear a aplicação nem esgotar a memória — nem mesmo antes da autenticação.
Estas proteções estão ativas automaticamente. A única interação visível é o aviso de hosts confiáveis acima.
Chaves exportadas
Ao converter ou exportar uma chave privada (Chaves SSH → Converter) e definir uma passphrase, a encriptação utiliza uma função de derivação de chave forte escolhida por formato — bcrypt para OpenSSH, PBKDF2 para PKCS#8, Argon2id para PuTTY PPK v3 — e cada salt e IV provém de um gerador aleatório criptograficamente seguro. O conversor lê e escreve OpenSSH, PKCS#8, PKCS#1 e PuTTY PPK (v2/v3), tanto a partir de PEM como de DER binário.
Onde residem os segredos
As palavras-passe, chaves privadas e passphrases nunca são serializadas no JSON da ligação. Vão diretamente para o armazenamento seguro da plataforma:
- Android — EncryptedSharedPreferences, sustentado pelo Keystore de hardware.
- iOS — Keychain (protegida por biometria, se estiver ativada).
- Desktop — ficheiro encriptado com AES-256-GCM, chave derivada do perfil do utilizador.
Backup de configuração encriptado
Definições → Configuração → Exportar backup cria um ficheiro .drterminal protegido por palavra-passe. Contém: ligações (com credenciais), grupos, hosts confiáveis, chaves SSH, favoritos SFTP, histórico de comandos, regras de destaque, snippets, perfis série e Telnet, aparência e definições do terminal e (no telemóvel) a configuração do teclado DevOps. Importar backup restaura o mesmo pacote — útil ao mudar entre máquinas.
Formato: JSON encriptado com AES-256-GCM. A palavra-passe nunca é armazenada no ficheiro — serve apenas para derivar a chave de encriptação (PBKDF2, 100 000 iterações de SHA-256).
Importar ~/.ssh/config
No Desktop, é possível importar em massa hosts a partir de uma configuração OpenSSH existente. O importador analisa as entradas Host, HostName, User, Port, IdentityFile e ProxyJump e adiciona-as como ligações guardadas. Os ficheiros de chave referenciados por IdentityFile são carregados do disco para o SecureStorage.
Níveis de log
Em Definições → Terminal → Nível de log em ficheiro, escolha o que vai para ~/.dr-terminal/logs/ (Desktop) ou o equivalente no telemóvel. Predefinição: ERROR — ruído mínimo. Para diagnósticos, mude para DEBUG.