Bảo mật và dữ liệu
Máy chủ tin cậy (known_hosts)
Lần kết nối đầu tiên tới một máy chủ sẽ thu lấy dấu vân tay khóa công khai của nó (SHA-256) và lưu lại sau khi bạn xác nhận. Các lần kết nối tiếp theo so sánh dấu vân tay — nếu nó từng thay đổi bạn sẽ nhận được một cảnh báo rõ ràng.
Quản lý danh sách trong Settings → Security → Trusted hosts — mỗi mục hiển thị máy chủ, thuật toán khóa (Ed25519, RSA, ECDSA…) và dấu vân tay, và có thể bị xóa.
Kết nối được bảo vệ như thế nào
DR-Terminal dùng triển khai SSH riêng của mình, được tăng cường chống lại kẻ tấn công chủ động và máy chủ thù địch:
- Khóa máy chủ được kiểm tra trong quá trình bắt tay, trước khi bất cứ điều gì bí mật được gửi đi. Nếu một kẻ đứng giữa (man-in-the-middle) trình ra khóa sai, kết nối bị hủy ngay tại bước trao đổi khóa — mật khẩu hoặc khóa riêng của bạn không bao giờ rời khỏi thiết bị.
- Chỉ các thuật toán mạnh, theo mặc định. Các thuật toán cũ, dễ bị hạ cấp — chữ ký và MAC dựa trên SHA-1,
ssh-rsa, Diffie-Hellman 1024 bit — đều bị tắt. Các kết nối dùng trao đổi khóa hiện đại (Curve25519, ECDH, Diffie-Hellman ≥ 2048 bit), mật mã (AES-GCM, ChaCha20-Poly1305, AES-CTR) và các loại khóa máy chủ (Ed25519, ECDSA, RSA-SHA2). Một máy chủ chỉ cung cấp thứ yếu hơn sẽ không thể kết nối. - Không hạ cấp âm thầm. Chữ ký mà máy chủ dùng phải khớp với những gì đã thương lượng, nên nó không thể quay lại một chữ ký yếu hơn sau lưng bạn.
- Terrapin (CVE-2023-48795) được giảm thiểu thông qua trao đổi khóa nghiêm ngặt.
- Chống chịu được máy chủ thù địch hoặc lỗi. Độ dài gói tin, các trường thông điệp và cửa sổ kênh đến từ mạng đều được kiểm tra giới hạn, nên một máy chủ độc hại không thể làm sập ứng dụng hoặc làm cạn kiệt bộ nhớ của nó — kể cả trước khi bạn xác thực.
Các biện pháp bảo vệ này được bật tự động. Bạn chỉ tương tác với chúng qua lời nhắc máy chủ tin cậy ở trên.
Khóa đã xuất
Khi bạn chuyển đổi hoặc xuất một khóa riêng (SSH keys → Convert) và đặt một passphrase, việc mã hóa dùng một hàm suy dẫn khóa mạnh được chọn theo từng định dạng — bcrypt cho OpenSSH, PBKDF2 cho PKCS#8, Argon2id cho PuTTY PPK v3 — và mọi salt và IV đều đến từ một bộ tạo số ngẫu nhiên an toàn về mật mã. Trình chuyển đổi đọc và ghi OpenSSH, PKCS#8, PKCS#1 và PuTTY PPK (v2/v3), từ cả PEM và DER nhị phân.
Nơi các bí mật nằm
Mật khẩu, khóa riêng và passphrase không bao giờ được tuần tự hóa vào JSON kết nối. Chúng đi thẳng tới kho lưu trữ an toàn của nền tảng:
- Android — EncryptedSharedPreferences, được Keystore phần cứng hỗ trợ.
- iOS — Keychain (được bảo vệ bằng sinh trắc học nếu bạn đã bật).
- Desktop — tệp được mã hóa AES-256-GCM, khóa được suy ra từ hồ sơ người dùng.
Sao lưu cấu hình được mã hóa
Settings → Configuration → Export backup tạo một tệp .drterminal được bảo vệ bằng mật khẩu. Nó chứa: các kết nối (kèm thông tin đăng nhập), nhóm, máy chủ tin cậy, khóa SSH, dấu trang SFTP, lịch sử lệnh, quy tắc tô sáng, đoạn lệnh, hồ sơ serial và Telnet, giao diện terminal và cài đặt, cùng (trên di động) cấu hình bàn phím DevOps. Import backup khôi phục cùng gói đó — hữu ích khi chuyển giữa các máy.
Định dạng: JSON được mã hóa bằng AES-256-GCM. Mật khẩu không bao giờ được lưu trong tệp — nó chỉ dùng để suy ra khóa mã hóa (PBKDF2, 100 000 vòng lặp SHA-256).
Nhập ~/.ssh/config
Trên Desktop bạn có thể nhập hàng loạt các máy chủ từ một cấu hình OpenSSH hiện có. Trình nhập phân tích các mục Host, HostName, User, Port, IdentityFile và ProxyJump và thêm chúng như các kết nối đã lưu. Các tệp khóa được tham chiếu bởi IdentityFile được tải từ đĩa vào SecureStorage.
Mức ghi log
Trong Settings → Terminal → File log level chọn nội dung nào đến ~/.dr-terminal/logs/ (Desktop) hoặc tương đương trên di động. Mặc định: ERROR — ít nhiễu nhất. Để chẩn đoán, hãy chuyển sang DEBUG.