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 Cài đặt → Bảo mật → Máy chủ tin cậy — 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 (ưu tiên các thuật toán lai hậu lượng tửsntrup761x25519-sha512vàmlkem768x25519-sha256, rồi đến 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 — trừ khi bạn cố ý bật lại một thuật toán cũ trong Thuật toán SSH (bên dướ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.
Thuật toán SSH (nâng cao)
Cài đặt → Bảo mật → Thuật toán SSH cho phép bạn tinh chỉnh những gì máy khách đề xuất với máy chủ — cho một thiết bị cũ chỉ hiểu một mật mã cũ, hoặc để cố định thứ tự mà bạn tin cậy. Trang này có một mục cho mỗi danh mục thương lượng:
- Trao đổi khóa, Mật mã, MAC (tính toàn vẹn) — bật hoặc tắt từng thuật toán và di chuyển nó lên hoặc xuống; thứ tự này là thứ tự ưu tiên được gửi tới máy chủ (thuật toán đầu tiên mà cả hai bên đều hỗ trợ sẽ được chọn).
- Khóa máy chủ — chỉ bật/tắt.
- Nén dữ liệu — một công tắc có/không (mặc định tắt). Có đề xuất
[email protected]trước, vớinonelàm phương án dự phòng cho các máy chủ không có zlib; Không chỉ đề xuấtnone, nên máy chủ không thể bật nén. Nén giúp ích trên các đường truyền chậm và tốn CPU ở cả hai đầu.
Các thuật toán mà thư viện cung cấp ở trạng thái tắt mang một nhãn legacy nhỏ màu hổ phách — chúng vẫn tắt cho đến khi bạn bật lên. Một danh mục không bao giờ có thể trống: thuật toán được bật cuối cùng không thể bị tắt. Đặt lại bên cạnh tiêu đề mục sẽ đưa mục đó về mặc định của thư viện.
Mỗi kết nối đã lưu có thể ghi đè lựa chọn toàn cục: trong biểu mẫu kết nối, Thuật toán SSH → Tùy chỉnh mở cùng trình chỉnh sửa đó chỉ cho máy chủ ấy (Mặc định theo cài đặt toàn cục). Xác nhận trong trình chỉnh sửa sẽ cập nhật biểu mẫu — sau đó hãy Lưu kết nối. Những gì thực sự được thương lượng — trao đổi khóa, khóa máy chủ, mật mã, MAC, nén — được hiển thị trong Thông tin kết nối của menu phiên.
Cài đặt mới áp dụng cho các kết nối mở sau đó. Một tab thứ hai tới cùng máy chủ sẽ dùng lại kết nối SSH đang hoạt động và do đó cả thuật toán của nó — hãy ngắt kết nối rồi kết nối lại để thương lượng lại.
Cảnh báo hậu lượng tử
Kẻ tấn công kiểu “store now, decrypt later” ghi lại lưu lượng hôm nay và giải mã nó khi máy tính lượng tử có thể phá vỡ trao đổi khóa cổ điển. DR-Terminal ưu tiên trao đổi khóa lai hậu lượng tử (sntrup761x25519-sha512, mlkem768x25519-sha256 — cùng những thuật toán mà OpenSSH cung cấp) và, giống OpenSSH, cảnh báo khi một phiên rơi vào thuật toán cổ điển: một hộp thoại xuất hiện một lần cho mỗi kết nối, cho biết trao đổi khóa không phải hậu lượng tử và máy chủ có thể cần nâng cấp. Không hiển thị lại tắt hẳn cảnh báo này; nó nằm trong Cài đặt → Bảo mật → Cảnh báo hậu lượng tử (mặc định bật).
Khóa đã xuất
Khi bạn chuyển đổi hoặc xuất một khóa riêng (Khóa SSH → Chuyển đổi) 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
Cài đặt → Cấu hình → 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, tùy chọn thuật toán SSH, 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 Cài đặt → Terminal → Mức nhật ký tệp 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.