Segurança e dados
Hosts confiáveis (known_hosts)
A primeira conexão a um host captura a impressão digital de sua chave pública (SHA-256) e a armazena depois que você confirma. As conexões seguintes comparam a impressão digital — se ela mudar, você recebe um alerta claro.
Gerencie a lista em Configuraçõ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 conexão é protegida
O DR-Terminal usa sua própria implementação de SSH, reforçada contra atacantes ativos e servidores hostis:
- A chave do host é verificada durante o handshake, antes que qualquer segredo seja enviado. Se um intermediário (man-in-the-middle) apresentar a chave errada, a conexão é abortada na troca de chaves — sua senha ou chave privada nunca sai do dispositivo.
- Somente algoritmos fortes, por padrão. Algoritmos legados e propensos a downgrade — assinaturas e MACs SHA-1,
ssh-rsa, Diffie-Hellman de 1024 bits — estão desativados. As conexões usam 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 conectar — a menos que você reative deliberadamente um algoritmo legado em Algoritmos SSH (abaixo). - Sem downgrade silencioso. A assinatura usada pelo servidor deve corresponder ao que foi negociado, então ele não pode recorrer a uma mais fraca sem você saber.
- Terrapin (CVE-2023-48795) é mitigado por meio de troca de chaves estrita.
- Resistente a um servidor hostil ou com defeitos. Comprimentos de pacote, campos de mensagem e janelas de canal que chegam da rede são todos verificados quanto a limites, de modo que um servidor malicioso não pode travar o aplicativo nem esgotar sua memória — nem mesmo antes de você se autenticar.
Essas proteções estão ativas automaticamente. Você só interage com elas por meio do aviso de hosts confiáveis acima.
Algoritmos SSH (avançado)
Configurações → Segurança → Algoritmos SSH permite ajustar 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 você confia. A página tem uma seçã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 (vence o primeiro algoritmo suportado pelos dois lados).
- Chaves de host — apenas ligado/desligado.
- Compressão — uma chave sim/não (desligada por padrão). Sim propõe primeiro
[email protected], comnonecomo alternativa para servidores sem zlib; Não propõe apenasnone, então o servidor não pode ativar a compressão. A compressão ajuda em links lentos e custa CPU nas duas pontas.
Algoritmos que a biblioteca entrega desativados trazem uma pequena etiqueta âmbar legacy — ficam desligados até você ligá-los. Uma categoria nunca pode ficar vazia: o último algoritmo ativo não pode ser desligado. Redefinir, ao lado do título de uma seção, retorna aos padrões da biblioteca.
Cada conexão salva pode sobrescrever a escolha global: no formulário da conexão, Algoritmos SSH → Personalizado abre o mesmo editor apenas para esse host (Padrão segue a configuração global). Confirmar o editor atualiza o formulário — Salvar a conexão em seguida. O que foi de fato negociado — troca de chaves, chave de host, cifra, MAC, compressão — aparece em Informações da conexão, no menu da sessão.
As novas configurações valem para conexões abertas depois. Uma segunda aba para o mesmo host reutiliza a conexão SSH ativa e, portanto, seus algoritmos — desconecte e reconecte para renegociar.
Aviso pós-quântico
Um atacante do tipo “armazenar agora, decifrar depois” grava o tráfego de hoje e o decifra quando 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, como o OpenSSH, avisa quando uma sessão acaba em uma troca clássica: um diálogo aparece uma vez por conexão dizendo 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 de vez; ele fica em Configurações → Segurança → Aviso pós-quântico (ligado por padrão).
Chaves exportadas
Quando você converte ou exporta uma chave privada (Chaves SSH → Converter) e define uma passphrase, a criptografia usa 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 vem de um gerador aleatório criptograficamente seguro. O conversor lê e escreve OpenSSH, PKCS#8, PKCS#1 e PuTTY PPK (v2/v3), tanto de PEM quanto de DER binário.
Onde residem os segredos
Senhas, chaves privadas e passphrases nunca são serializadas no JSON da conexão. Elas vão direto para o armazenamento seguro da plataforma:
- Android — EncryptedSharedPreferences, sustentado pelo Keystore de hardware.
- iOS — Keychain (protegida por biometria se você a habilitou).
- Desktop — arquivo criptografado com AES-256-GCM, chave derivada do perfil do usuário.
Backup de configuração criptografado
Configurações → Configuração → Exportar backup cria um arquivo .drterminal protegido por senha. Ele contém: conexões (com credenciais), grupos, hosts confiáveis, chaves SSH, favoritos SFTP, histórico de comandos, regras de destaque, snippets, perfis serial e Telnet, preferências de algoritmos SSH, aparência e configurações do terminal e (no celular) a configuração do teclado DevOps. Importar backup restaura o mesmo pacote — útil ao mudar entre máquinas.
Formato: JSON criptografado com AES-256-GCM. A senha nunca é armazenada no arquivo — ela apenas deriva a chave de criptografia (PBKDF2, 100 000 iterações de SHA-256).
Importar ~/.ssh/config
No Desktop, você pode importar em massa hosts de uma configuração OpenSSH existente. O importador analisa as entradas Host, HostName, User, Port, IdentityFile e ProxyJump e as adiciona como conexões salvas. Os arquivos de chave referenciados por IdentityFile são carregados do disco para o SecureStorage.
Níveis de log
Em Configurações → Terminal → Nível de log em arquivo, escolha o que vai para ~/.dr-terminal/logs/ (Desktop) ou o equivalente no celular. Padrão: ERROR — ruído mínimo. Para diagnósticos, mude para DEBUG.