אבטחה ונתונים
מארחים מהימנים (known_hosts)
החיבור הראשון למארח לוכד את טביעת האצבע של המפתח הציבורי שלו (SHA-256) ושומר אותה לאחר שתאשר. חיבורים עוקבים משווים את טביעת האצבע — אם היא תשתנה אי פעם תקבל התראה ברורה.
נהל את הרשימה ב-Settings → Security → Trusted hosts — כל רשומה מציגה את המארח, את אלגוריתם המפתח (Ed25519, RSA, ECDSA…) ואת טביעת האצבע, וניתן להסיר אותה.
כיצד החיבור מוגן
DR-Terminal משתמש במימוש SSH משלו, מוקשח כנגד תוקפים פעילים ושרתים עוינים:
- מפתח ה-host נבדק במהלך לחיצת היד, לפני שנשלח כל דבר סודי. אם man-in-the-middle מציג מפתח שגוי, החיבור מבוטל בשלב חילופי המפתחות — הסיסמה או המפתח הפרטי שלך לעולם אינם עוזבים את המכשיר.
- אלגוריתמים חזקים בלבד, כברירת מחדל. אלגוריתמים מיושנים ונוטים להורדת רמה — חתימות ו-MAC מסוג SHA-1,
ssh-rsa, Diffie-Hellman של 1024 סיביות — מושבתים. חיבורים משתמשים בחילופי מפתחות מודרניים (Curve25519, ECDH, Diffie-Hellman ≥ 2048 סיביות), צפנים (AES-GCM, ChaCha20-Poly1305, AES-CTR) וסוגי מפתחות host (Ed25519, ECDSA, RSA-SHA2). שרת שמציע רק משהו חלש יותר אינו יכול להתחבר. - אין הורדת רמה שקטה. החתימה שהשרת משתמש בה חייבת להתאים למה שהוסכם במשא ומתן, כך שאינו יכול לחזור לחתימה חלשה יותר מאחורי גבך.
- Terrapin (CVE-2023-48795) ממותן באמצעות חילופי מפתחות קפדניים.
- עמיד בפני שרת עוין או פגום. אורכי חבילות, שדות הודעה וחלונות ערוצים המגיעים מהרשת נבדקים כולם מול גבולותיהם, כך ששרת זדוני אינו יכול לקרוס את האפליקציה או למצות את הזיכרון שלה — אפילו לא לפני שאתה מתאמת.
הגנות אלה פעילות אוטומטית. אתה מקיים איתן אינטראקציה רק דרך הבקשה למארחים מהימנים שלמעלה.
מפתחות מיוצאים
כאשר אתה ממיר או מייצא מפתח פרטי (SSH keys → Convert) ומגדיר passphrase, ההצפנה משתמשת בפונקציית גזירת מפתח חזקה הנבחרת לפי פורמט — bcrypt עבור OpenSSH, PBKDF2 עבור PKCS#8, Argon2id עבור PuTTY PPK v3 — וכל salt ו-IV מגיעים ממחולל מספרים אקראיים מאובטח קריפטוגרפית. הממיר קורא וכותב OpenSSH, PKCS#8, PKCS#1 ו-PuTTY PPK (v2/v3), הן מ-PEM והן מ-DER בינארי.
היכן הסודות חיים
סיסמאות, מפתחות פרטיים ו-passphrases לעולם אינם מסודרים לתוך JSON של החיבור. הם הולכים ישירות לאחסון המאובטח של הפלטפורמה:
- Android — EncryptedSharedPreferences, מגובה ב-Keystore חומרתי.
- iOS — Keychain (מוגן ביומטריה אם הפעלת זאת).
- מחשב שולחני — קובץ מוצפן AES-256-GCM, מפתח הנגזר מפרופיל המשתמש.
גיבוי תצורה מוצפן
Settings → Configuration → Export backup יוצר קובץ .drterminal מוגן בסיסמה. הוא מכיל: חיבורים (כולל פרטי התחברות), קבוצות, מארחים מהימנים, מפתחות SSH, סימניות SFTP, היסטוריית פקודות, כללי הדגשה, סניפטים, פרופילי serial ו-Telnet, מראה הטרמינל והגדרות, ובנייד גם את תצורת מקלדת DevOps. Import backup משחזר את אותה חבילה — שימושי במעבר בין מכונות.
פורמט: JSON מוצפן ב-AES-256-GCM. הסיסמה לעולם אינה נשמרת בקובץ — היא רק גוזרת את מפתח ההצפנה (PBKDF2, 100,000 איטרציות של SHA-256).
ייבוא ~/.ssh/config
במחשב השולחני אתה יכול לייבא בכמות מארחים מתצורת OpenSSH קיימת. המייבא מנתח רשומות Host, HostName, User, Port, IdentityFile ו-ProxyJump ומוסיף אותן כחיבורים שמורים. קבצי מפתח שאליהם מפנה IdentityFile נטענים מהדיסק אל SecureStorage.
רמות לוג
ב-Settings → Terminal → File log level בחר מה מגיע אל ~/.dr-terminal/logs/ (מחשב שולחני) או המקבילה בנייד. ברירת מחדל: ERROR — רעש מינימלי. לאבחון עבור ל-DEBUG.