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 (primeiro os híbridos pós-quânticossntrup761x25519-sha512emlkem768x25519-sha256, depois 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 — a menos que reative deliberadamente um algoritmo legado em Algoritmos SSH (abaixo). - 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.
Algoritmos SSH (avançado)
Definições → Segurança → Algoritmos SSH permite afinar o que o cliente propõe aos servidores — para um equipamento legado que só fala uma cifra antiga, ou para fixar a ordem em que confia. A página tem uma secção por categoria de negociação:
- Troca de chaves, Cifras, MAC (integridade) — ligue ou desligue cada algoritmo e mova-o para cima ou para baixo; a ordem é a ordem de preferência enviada ao servidor (ganha o primeiro algoritmo suportado por ambos os lados).
- Chaves de anfitrião — apenas ligado/desligado.
- Compressão — um interruptor sim/não (desligado por predefinição). Sim propõe primeiro
[email protected], comnonecomo alternativa para servidores sem zlib; Não propõe apenasnone, pelo que o servidor não pode ativar a compressão. A compressão ajuda em ligações lentas e custa CPU em ambas as extremidades.
Os algoritmos que a biblioteca fornece desativados trazem uma pequena etiqueta âmbar legacy — ficam desligados até os ligar. Uma categoria nunca pode ficar vazia: o último algoritmo ativo não pode ser desligado. Repor, ao lado do título de uma secção, devolve-a às predefinições da biblioteca.
Cada ligação guardada pode sobrepor-se à escolha global: no formulário da ligação, Algoritmos SSH → Personalizado abre o mesmo editor apenas para esse host (Predefinição segue a definição global). Confirmar o editor atualiza o formulário — Guardar a ligação em seguida. O que foi efetivamente negociado — troca de chaves, chave de host, cifra, MAC, compressão — é mostrado em Informação da ligação, no menu da sessão.
As novas definições aplicam-se às ligações abertas depois. Um segundo separador para o mesmo host reutiliza a ligação SSH ativa e, portanto, os seus algoritmos — desligue e volte a ligar para renegociar.
Aviso pós-quântico
Um atacante do tipo «guardar agora, decifrar depois» grava o tráfego de hoje e decifra-o quando os computadores quânticos conseguirem quebrar a troca de chaves clássica. O DR-Terminal prefere a troca de chaves híbrida pós-quântica (sntrup761x25519-sha512, mlkem768x25519-sha256 — as mesmas que o OpenSSH inclui) e, tal como o OpenSSH, avisa quando uma sessão acaba numa troca clássica: aparece uma caixa de diálogo, uma vez por ligação, a dizer que a troca de chaves não é pós-quântica e que o servidor pode precisar de uma atualização. Não mostrar novamente desliga o aviso definitivamente; ele vive em Definições → Segurança → Aviso pós-quântico (ligado por predefinição).
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, preferências de algoritmos SSH, 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.