Bezpieczeństwo i dane
Zaufane hosty (known_hosts)
Pierwsze połączenie z hostem przechwytuje odcisk jego klucza publicznego (SHA-256) i zapisuje go po Twoim potwierdzeniu. Kolejne połączenia porównują odcisk — jeśli kiedykolwiek się zmieni, otrzymasz wyraźny alert.
Listą zarządzasz w Ustawienia → Bezpieczeństwo → Zaufane hosty — każdy wpis pokazuje hosta, algorytm klucza (Ed25519, RSA, ECDSA…) i odcisk, a także można go usunąć.
Jak chronione jest samo połączenie
DR-Terminal używa własnej implementacji SSH, utwardzonej przeciw aktywnym atakującym i wrogim serwerom:
- Klucz hosta jest sprawdzany podczas handshake, zanim cokolwiek tajnego zostanie wysłane. Jeśli man-in-the-middle przedstawi zły klucz, połączenie jest zrywane na wymianie kluczy — Twoje hasło ani klucz prywatny nigdy nie opuszczają urządzenia.
- Domyślnie tylko mocne algorytmy. Przestarzałe, podatne na downgrade algorytmy — podpisy i MAC-i SHA-1,
ssh-rsa, 1024-bitowy Diffie-Hellman — są wyłączone. Połączenia używają nowoczesnej wymiany kluczy (najpierw postkwantowe hybrydysntrup761x25519-sha512imlkem768x25519-sha256, potem Curve25519, ECDH, Diffie-Hellman ≥ 2048-bit), szyfrów (AES-GCM, ChaCha20-Poly1305, AES-CTR) i typów kluczy hosta (Ed25519, ECDSA, RSA-SHA2). Serwer oferujący tylko coś słabszego nie nawiąże połączenia — chyba że celowo włączysz z powrotem przestarzały algorytm w Algorytmy SSH (poniżej). - Brak cichego downgrade'u. Podpis użyty przez serwer musi zgadzać się z wynegocjowanym, więc serwer nie zejdzie po cichu na słabszy.
- Mitygacja Terrapin (CVE-2023-48795) przez strict key exchange.
- Odporność na wrogi lub wadliwy serwer. Długości pakietów, pola wiadomości i okna kanałów przychodzące z sieci są sprawdzane pod kątem zakresu, więc złośliwy serwer nie zawiesi aplikacji ani nie wyczerpie jej pamięci — nawet zanim się uwierzytelnisz.
Te zabezpieczenia działają automatycznie. Stykasz się z nimi tylko przez prośbę o zaufanie hosta powyżej.
Algorytmy SSH (zaawansowane)
Ustawienia → Bezpieczeństwo → Algorytmy SSH pozwala dostroić to, co klient proponuje serwerom — dla starego urządzenia, które obsługuje tylko przestarzały szyfr, albo żeby ustalić kolejność, której ufasz. Strona ma po jednej sekcji na każdą kategorię negocjacji:
- Wymiana kluczy, Szyfry, MAC (integralność) — każdy algorytm włączasz lub wyłączasz i przesuwasz w górę lub w dół; kolejność to kolejność preferencji wysyłana do serwera (wygrywa pierwszy algorytm obsługiwany przez obie strony).
- Klucze hosta — tylko włącz/wyłącz.
- Kompresja — przełącznik tak/nie (domyślnie wyłączony). Tak proponuje najpierw
[email protected], anonejako zapas dla serwerów bez zlib; Nie proponuje wyłącznienone, więc serwer nie może włączyć kompresji. Kompresja pomaga na wolnych łączach, a kosztuje CPU po obu stronach.
Algorytmy, które biblioteka dostarcza wyłączone, noszą małą bursztynową etykietę legacy — pozostają wyłączone, dopóki ich nie włączysz. Kategoria nigdy nie może zostać pusta: ostatniego włączonego algorytmu nie da się wyłączyć. Resetuj obok tytułu sekcji przywraca domyślne ustawienia biblioteki.
Każde zapisane połączenie może nadpisać wybór globalny: w formularzu połączenia Algorytmy SSH → Własne otwiera ten sam edytor tylko dla tego hosta (Domyślny podąża za ustawieniem globalnym). Potwierdzenie edytora aktualizuje formularz — potem Zapisz połączenie. To, co faktycznie wynegocjowano — wymiana kluczy, klucz hosta, szyfr, MAC, kompresja — widać w menu sesji w Informacje o połączeniu.
Nowe ustawienia obowiązują dla połączeń otwieranych później. Druga karta do tego samego hosta wykorzystuje ponownie żywe połączenie SSH, a więc i jego algorytmy — rozłącz się i połącz ponownie, aby renegocjować.
Ostrzeżenie postkwantowe
Atakujący w modelu „zapisz teraz, odszyfruj później” nagrywa dzisiejszy ruch i odszyfrowuje go, gdy komputery kwantowe będą w stanie złamać klasyczną wymianę kluczy. DR-Terminal preferuje postkwantową hybrydową wymianę kluczy (sntrup761x25519-sha512, mlkem768x25519-sha256 — te same, które dostarcza OpenSSH) i, tak jak OpenSSH, ostrzega, gdy sesja wyląduje na klasycznej: raz na połączenie pojawia się okno z informacją, że wymiana kluczy nie jest postkwantowa i że serwer może wymagać aktualizacji. Nie pokazuj ponownie wyłącza ostrzeżenie na stałe; mieszka ono w Ustawienia → Bezpieczeństwo → Ostrzeżenie postkwantowe (domyślnie włączone).
Wyeksportowane klucze
Gdy konwertujesz lub eksportujesz klucz prywatny (Klucze SSH → Konwertuj) i ustawisz hasło, szyfrowanie używa mocnej funkcji wyprowadzania klucza dobranej do formatu — bcrypt dla OpenSSH, PBKDF2 dla PKCS#8, Argon2id dla PuTTY PPK v3 — a każda sól i IV pochodzą z kryptograficznie bezpiecznego generatora liczb losowych. Konwerter odczytuje i zapisuje OpenSSH, PKCS#8, PKCS#1 i PuTTY PPK (v2/v3), z PEM i binarnego DER.
Gdzie żyją sekrety
Hasła, klucze prywatne i hasła zabezpieczające (passphrase) nigdy nie są serializowane do JSON-a połączenia. Trafiają prosto do bezpiecznego magazynu platformy:
- Android — EncryptedSharedPreferences, oparte na sprzętowym Keystore.
- iOS — Keychain (chroniony biometrią, jeśli ją włączyłeś).
- Komputer — plik szyfrowany AES-256-GCM, klucz pochodny z profilu użytkownika.
Szyfrowana kopia zapasowa konfiguracji
Ustawienia → Konfiguracja → Eksportuj kopię zapasową tworzy plik .drterminal chroniony hasłem. Zawiera: połączenia (z danymi logowania), grupy, zaufane hosty, klucze SSH, zakładki SFTP, historię poleceń, reguły podświetlania, snippety, profile szeregowe i Telnet, preferencje algorytmów SSH, wygląd terminala i ustawienia oraz (na urządzeniach mobilnych) konfigurację klawiatury DevOps. Importuj kopię zapasową przywraca ten sam pakiet — przydatne przy przenoszeniu się między maszynami.
Format: JSON szyfrowany AES-256-GCM. Hasło nigdy nie jest przechowywane w pliku — służy jedynie do wyprowadzenia klucza szyfrującego (PBKDF2, 100 000 iteracji SHA-256).
Import ~/.ssh/config
Na komputerze możesz zbiorczo zaimportować hosty z istniejącej konfiguracji OpenSSH. Importer parsuje wpisy Host, HostName, User, Port, IdentityFile oraz ProxyJump i dodaje je jako zapisane połączenia. Pliki kluczy wskazywane przez IdentityFile są wczytywane z dysku do SecureStorage.
Poziomy logowania
W Ustawienia → Terminal → Poziom logowania do pliku wybierz, co trafia do ~/.dr-terminal/logs/ (komputer) lub odpowiednika na urządzeniach mobilnych. Domyślnie: ERROR — minimum szumu. Do diagnostyki przełącz na DEBUG.