Ugrás a tartalomhoz
← Blog'a dön

Denetimden geçen alan düzeyinde AES-256-GCM şifreleme

Veritabanı genelinde şifreleme yeterli değildir. İşte yalnızca gereken alanları nasıl şifrelediğimiz — ve şifreli verinin içinde nasıl arama yapmaya devam ettiğimiz.

Kötü şifreleme, hiç şifreleme olmamasından daha kötüdür — sahte bir güvenlik hissi verir.

Çoğu “bekleyen veri şifrelemesi” çözümü diski şifreler. Bu, çalınan bir sabit diske karşı işe yarar ama diğer tüm tehdit modellerinde faydasızdır — veritabanına erişildiği anda saldırgan her alanı düz metin olarak görür. Çözüm alan düzeyinde şifrelemedir: her hassas alan veritabanının içinde şifrelenir ve yalnızca uygulama çözebilir.

Kısaca desen

  • AES-256-GCM, çünkü kimlik doğrulamalı şifrelemedir (bütünlük + gizlilik)
  • Her alan kendi rastgele 96 bit IV'sini alır
  • Anahtar hiyerarşisi: KEK → DEK, KEK ise KMS'te saklanır
  • Bir TypeORM transformer'ı şifreleme ve çözmeyi otomatik yapar
  • Şifreli sütun, GCM ek yükünü sığdırmak için en az VARCHAR(1024)'tür
  • Sonradan eklemelerde ayrı bir migration, şifreleme başlamadan önce sütunu genişletir

Şifreli alanlarda nasıl arama yapıyoruz

“Şifreli veride arama yapılamaz” şeklindeki klasik cevap yeterli değil. İki desen kullanıyoruz: tam eşleşme için hash sütunları (örneğin e-posta → ayrı bir sütunda SHA-256 hash) ve LIKE sorguları için n-gramlardan oluşturulan kör indeks. İkisi de mükemmel değildir, ama birlikte düz metne hiç dönmeden aramaların %95'ini karşılarlar.

Netorigo backend'i ve lojistik servisi bu deseni zaten canlı ortamda çalıştırıyor; her birinde geçiş bir günden kısa sürdü. Etkilenen 200'ü aşkın satırın tamamı tek bir günde yeniden yazıldı — çünkü tek temas noktası TypeORM transformer'ı.

Anahtar rotasyonu: kimsenin konuşmadığı konu

Şifrelemeyi yazmak işin kolay kısmıdır. Zor kısım, 18 ay sonra ilk anahtarın süresi dolduğunda ve elinizde hâlâ şifreli veri varken ne yapacağınızdır. Desenimiz her kaydı, şifrelendiği KEK sürümüyle etiketler. Yeni bir anahtar devreye alındığında, arka planda çalışan bir geçiş 2-3 hafta içinde her şeyi yeniden şifreler; bu sırada hem eski hem yeni sürüm okunabilir kalır. Şifre çözme hiç durmaz, kesinti olmaz, “gece yarısı bakım penceresi” olmaz.

Bir denetim gerçekte neyi sorar

  • Veriyi kim çözebilir? (Cevap: yalnızca uygulama, veritabanı yöneticisi değil)
  • KEK nerede ve kimin erişimi var? (KMS'te, bir IAM politikası altında)
  • Canlı ortamda kaç anahtar sürümü var? (Satır düzeyinde kayıtlı)
  • Bir anahtar ele geçirilirse ne olur? (Rotasyon runbook'u, 24 saatte tam değişim)
  • Acil geri yüklemede şifre çözme test edilebilir mi? (Evet, her gün staging'de çalışıyor)

Denetçiler şifrelemenizin matematiğiyle asla ilgilenmez. Sorular her zaman erişim ve anahtar yönetimiyle ilgilidir. Bu ikisini belgelenmiş ve test edilmiş prosedürlerle çözün, denetimin %80'i zaten tamamlanmış olur.

Bir konuyu ele almamızı ister misiniz?

Bize yazın — bu konuda gerçek deneyimimiz varsa yayımlarız.