כאשר מסד נתונים דולף, תוקף מקבל SQL dump עם אלפי שורות — ת.ז., דרכונים, רשומות רפואיות. אם הנתונים מאוחסנים כטקסט רגיל, זו קטסטרופה: קנסות לפי 152-FZ עד $4.5k–6.5k, או לפי GDPR עד 4% מהמחזור השנתי הגלובלי. עלות פרצת נתונים עומדת בממוצע על $3.86 מיליון בעולם (IBM Cost of a Data Breach Report 2022). הצפנה ברמת היישום היא הדרך היחידה להפחית מערך הנתונים עבור תוקף. גם אם הם ישיגו את מסד הנתונים, ללא המפתחות הטקסט המוצפן חסר תועלת. אנו מיישמים הצפנה בפרויקטים עם דרישות אבטחה גבוהות: פינטק, מדטק, ממשל. ב-5 שנים בשוק, השלמנו מעל 30 פרויקטים להגנת מידע אישי. המהנדסים שלנו מחזיקים בהסמכות CISSP, ואנו מבטיחים עמידה ב-152-FZ ו-GDPR. נבצע ביקורת למערכת שלך תוך 2-3 ימים.
אתן דוגמה אמיתית מהפרקטיקה שלנו: הצפנה ב-CRM רפואי עם 50,000 מטופלים.
למה להצפין נתונים ברמת היישום?
הצפנה ברמת מסד הנתונים (TDE) אינה מגנה מפני מנהלי מסדי נתונים או SQL injections. היישום עצמו מנהל את המפתחות: הנתונים מוצפנים לפני כתיבה ומפוענחים רק באמצעות שאילתות מורשות. זה מספק בקרת גישה גרעינית ומבודד את הנתונים מהתשתית.
הצפנת נתונים לעומת Hashing
נתונים להצפין
- ת.ז., SNILS, סדרת/מספר דרכון
- נתונים רפואיים, אבחנות
- נתונים פיננסיים, מספרי כרטיסים (PCI DSS דורש גישה נפרדת)
- ביומטריה
נתונים ל-Hash
- סיסמאות → bcrypt, Argon2id
- טוקנים סודיים, מפתחות API
לחיפוש בשדות מוצפנים, אנו משתמשים בהצפנה דטרמיניסטית או בטוקניזציה — עוד על כך בהמשך.
בחירת אלגוריתם: AES-256-GCM לעומת ChaCha20-Poly1305
| אלגוריתם | סוג | אימות | מהירות | האצת חומרה |
|---|---|---|---|---|
| AES-256-GCM | סימטרי | כן (GCM) | גבוהה | כן (AES-NI) |
| ChaCha20-Poly1305 | סימטרי | כן (Poly1305) | גבוהה | לא (אך מהיר בתוכנה) |
| RSA-OAEP | אסימטרי | כן | נמוכה | כן (חלקי) |
AES-256-GCM הוא התקן להצפנת נתונים במנוחה. עם AES-NI, הוא מהיר פי 3 מ-ChaCha20-Poly1305. אם השרת חסר תמיכה ב-AES-NI, ChaCha20-Poly1305 הוא חלופה אמינה. RSA-OAEP משמש להצפנת מפתחות או כאשר פענוח לא יכול להתבצע על השרת. עוד על AES-GCM.
בהתבסס על המלצות OWASP ו-NIST.
יישום מעשי של הצפנה ב-Laravel
כלי ההצפנה של Laravel מספקים הגנה שקופה על נתונים. אנו משתמשים ב-casts מותאמים אישית כדי להצפין שדות רגישים אוטומטית.
דוגמת Cast להצפנת שדות
// app/Casts/EncryptedCast.php
class EncryptedCast implements CastsAttributes
{
public function get($model, string $key, $value, array $attributes): ?string
{
if (is_null($value)) return null;
try {
return Crypt::decryptString($value);
} catch (DecryptException) {
return null;
}
}
public function set($model, string $key, $value, array $attributes): ?string
{
if (is_null($value)) return null;
return Crypt::encryptString($value);
}
}
// В модели
class Patient extends Model
{
protected $casts = [
'passport_number' => EncryptedCast::class,
'medical_notes' => EncryptedCast::class,
'snils' => EncryptedCast::class,
];
}
// Использование — прозрачно для кода
$patient->passport_number = '4510 123456'; // автоматически шифруется
$decrypted = $patient->passport_number; // автоматически расшифровывается
יתרונות של Envelope Encryption
אחסון מפתחות הצפנה במסד הנתונים לצד נתונים מוצפנים הוא חסר טעם. השיטה המומלצת היא envelope encryption: הנתונים מוצפנים עם מפתח הצפנת נתונים (DEK), ה-DEK מוצפן עם מפתח הצפנת מפתחות (KEK), וה-KEK מאוחסן ב-KMS/Vault. זה מאפשר הצפנה מחדש של נתונים ללא גישה ל-KEK ומפשט את תהליך הרוטציה.
אינטגרציה עם HashiCorp Vault:
$vault = new Vault([
'address' => 'https://vault.internal:8200',
'token' => env('VAULT_TOKEN'),
]);
$keyData = $vault->read('secret/data/app-encryption-key');
$encryptionKey = $keyData['data']['key'];AWS KMS:
use Aws\Kms\KmsClient;
$kms = new KmsClient(['region' => 'eu-west-1']);
$result = $kms->encrypt([
'KeyId' => 'arn:aws:kms:eu-west-1:123456:key/abc-123',
'Plaintext' => $sensitiveData,
]);
$encryptedData = base64_encode($result['CiphertextBlob']); חיפוש בנתונים מוצפנים
AES-GCM סטנדרטי מייצר טקסט מוצפן שונה עבור אותו ערך. חיפוש בשדה מוצפן הוא בלתי אפשרי. פתרונות:
אפשרות 1: Hash לחיפוש + הצפנה לאחסון:
class PersonalDataRepository {
public function findByPassport(string $passport): ?Patient
{
$hash = hash_hmac('sha256', $passport, config('app.search_key'));
return Patient::where('passport_hash', $hash)->first();
}
public function store(string $passport): void
{
Patient::create([
'passport_data' => Crypt::encryptString($passport),
'passport_hash' => hash_hmac('sha256', $passport, config('app.search_key')),
]);
}
}אפשרות 2: PostgreSQL pgcrypto:
INSERT INTO patients (passport) VALUES (pgp_sym_encrypt('4510 123456', current_setting('app.encryption_key')));
SELECT pgp_sym_decrypt(passport::bytea, current_setting('app.encryption_key')) FROM patients WHERE id = 1; השוואת שיטות הגנת נתונים
| שיטה | הפיכה | חיפוש | מהירות | אבטחת מפתחות |
|---|---|---|---|---|
| AES-256-GCM | כן | לא | גבוהה | תלוי באחסון |
| הצפנה דטרמיניסטית | כן | כן | בינונית | גבוהה עם HMAC |
| טוקניזציה | לא (החלפה) | כן | גבוהה | גבוהה מאוד |
| Hashing (bcrypt) | לא | לא | נמוכה | גבוהה |
מקרה בוחן: הצפנה ב-CRM רפואי (מהפרקטיקה שלנו)
הלקוח — רשת מרפאות עם 50,000 מטופלים. דרישה: להצפין נתוני דרכון, SNILS, אבחנות. בחרנו ב-AES-256-GCM + envelope encryption עם HashiCorp Vault. יישמנו Laravel Casts להצפנה שקופה. הוספנו HMAC hash לחיפוש לפי מספר פוליסה. תוצאה: זמן התגובה לא השתנה, ביקורת האבטחה עברה, התקבל תעודת עמידה ב-152-FZ. הפתרון מתקנה לכל מספר רשומות.
מה כלול בעבודה
- תכנון ארכיטקטורת ההצפנה תוך התחשבות בלוגיקה העסקית
- בחירת אלגוריתמים ותוכנית ניהול מפתחות (envelope encryption)
- אינטגרציה עם HashiCorp Vault או AWS KMS
- יישום הצפנה שקופה ברמת ORM (Laravel, Doctrine וכו')
- הגדרת הצפנה דטרמיניסטית לחיפוש
- רוטציית מפתחות ללא זמן השבתה
- ביקורת גישה ורישום פעולות
- תיעוד לצוות והדרכת מפתחים
- העברת גישה ותרחישי בדיקה
תמחור: מ-$3,000 לפרויקטים קטנים, $10,000+ לארגונים עם אינטגרציה מותאמת אישית.
תהליך היישום ולוח זמנים
- תכנון סכמת הצפנה וניהול מפתחות (1-2 ימים).
- יישום הצפנה ברמת המודל (2-3 ימים).
- אינטגרציה עם מאגרי מפתחות חיצוניים (5-7 ימים).
- הצפנה דטרמיניסטית לחיפוש (+3 ימים).
- יישום רוטציית מפתחות ללא זמן השבתה (+2 ימים).
- ביקורת גישה ורישום פעולות (+1-2 ימים).
- תיעוד והדרכת צוות (+1 יום).
לוח זמנים סופי — משבועיים עד חודשיים, תלוי בנפח הנתונים ובמורכבות הלוגיקה העסקית. השקעה זו בדרך כלל מחזירה את עצמה על ידי הימנעות מקנס אחד גדול על פרצת נתונים – חיסכון של עד $500,000 לפי 152-FZ או מיליונים לפי GDPR.
אנו מציעים יישום turnkey החל מ-$3,000. צור קשר להערכה חינמית של הפרויקט שלך.







