256
bit encryption
X25519
Key Exchange
JWT
Authentication
SHA-256
Checksums

הצפנה מקצה לקצה (E2E)

כל התקשורת בין ה-Client ל-Agent מוצפנת מקצה לקצה. השרת לא יכול לקרוא את תוכן ההודעות - הוא רק מעביר נתונים מוצפנים. גם אם השרת נפרץ, המידע נשאר מוגן.

אלגוריתמים בשימוש

החלפת מפתחות:

X25519 (Curve25519 ECDH)

החלפת מפתחות אליפטית מאובטחת - 128 bit security level

הצפנה סימטרית:

XChaCha20-Poly1305

AEAD cipher עם 256 bit key ו-192 bit nonce

תהליך יצירת Session מאובטח
// 1. Client יוצר זוג מפתחות var clientKeyPair = PublicKeyBox.GenerateKeyPair(); // 2. Agent יוצר זוג מפתחות var agentKeyPair = PublicKeyBox.GenerateKeyPair(); // 3. החלפת מפתחות ציבוריים דרך השרת // 4. חישוב Shared Secret בכל צד var sharedSecret = ScalarMult.Mult( clientKeyPair.PrivateKey, agentPublicKey ); // 5. הצפנת כל ההודעות var encrypted = SecretAeadXChaCha20Poly1305.Encrypt( message, nonce, sharedSecret );
שכבה 1: TLS 1.3
הצפנת התעבורה בין כל הרכיבים
שכבה 2: E2E
הצפנה ישירה Client ↔ Agent
שכבה 3: JWT
אימות וזיהוי משתמשים

אימות והרשאות (JWT)

המערכת משתמשת באימות מבוסס JWT (JSON Web Tokens) עם מנגנון Refresh Token לשמירה על אבטחה מקסימלית תוך שמירה על חוויית משתמש נוחה.

Access Token
  • תוקף קצר: 15 דקות
  • מכיל: User ID, Roles, Permissions
  • חתימה: HMAC-SHA256
  • נשלח בכל בקשה ב-Header
Refresh Token
  • תוקף ארוך: 7 ימים
  • נשמר בצורה מאובטחת במסד הנתונים
  • Token rotation בכל חידוש
  • יכולת ביטול מיידי (Revocation)
מבנה ה-JWT
{ "sub": "user-id-123", "name": "John Doe", "roles": ["Admin", "User"], "permissions": ["view:agents", "control:agents"], "exp": 1699999999, "iat": 1699998999, "iss": "levor-remote-desktop" }

הגבלת קצב ואימות נתונים

המערכת מיישמת מנגנוני הגנה רבים כנגד ניצול לרעה והתקפות DoS.

הגבלת קצב (Rate Limiting)
פקודות קלט 1,000 / שנייה
גודל פריים מקסימלי 10 MB
גודל קובץ מקסימלי 10 GB
Timeout ל-Session 60 דקות
אימות נתונים
  • בדיקת גודל פריימים לפני עיבוד
  • אימות Session ID בכל בקשה
  • בדיקת Checksum להעברות קבצים
  • סניטיזציה של נתיבי קבצים
// Rate Limiter Implementation private class InputRateLimiter { private const int WindowSeconds = 1; private const int MaxCommands = 1000; public bool TryAcquire() { lock (_lock) { if (_count >= MaxCommands) return false; _count++; return true; } } }

הגנה מפני Path Traversal

שירות העברת הקבצים מיישם הגנה מקיפה מפני התקפות Directory Traversal שמטרתן לגשת לקבצים מחוץ לתיקיות המורשות.

בדיקות שמבוצעות
  • המרה לנתיב מלא (GetFullPath)
  • בדיקה שהנתיב בתיקיה מורשית
  • חסימת רצפי ".."
  • בדיקת תווים לא חוקיים
  • חסימת null bytes
// Path Sanitization private string? SanitizePath(string? path) { var fullPath = Path.GetFullPath(path); // Check allowed roots if (!_allowedRoots.Any(root => fullPath.StartsWith(root))) return null; // Block traversal if (path.Contains("..")) return null; return fullPath; }

מודל איומים והגנות

איום חומרה הגנה סטטוס
Man-in-the-Middle גבוהה TLS 1.3 + E2E Encryption מוגן
Replay Attack גבוהה Nonce ייחודי לכל הודעה מוגן
Session Hijacking גבוהה JWT + Session validation מוגן
Brute Force בינונית Rate limiting + Account lockout מוגן
DoS Attack בינונית Rate limiting + Frame size validation מוגן
Path Traversal גבוהה Path sanitization + Allowed roots מוגן
Token Theft בינונית Short-lived tokens + Refresh rotation מוגן
Server Compromise גבוהה E2E encryption - server can't read data מוגן

המלצות אבטחה

לשרת
  • השתמש ב-HTTPS עם תעודה תקפה
  • הגדר JWT secret חזק (256+ bit)
  • הפעל logging לכל הפעולות הרגישות
  • עדכן תלויות באופן שוטף
  • הגבל גישת רשת לפורטים נדרשים בלבד
ל-Agent
  • הרץ עם הרשאות מינימליות
  • הגבל תיקיות מורשות להעברת קבצים
  • וודא שהשרת מזוהה נכון (Certificate pinning)
  • השבת גישה כש-Agent לא בשימוש
  • שמור logs מקומיים לביקורת