Güncellendi

Sunucu Taraflı ve İstemci Taraflı Şifreleme: Hangi Modele Güvenmelisin?

Yazan

Sunucu taraflı şifreleme, düz metni aldıktan sonra verileri sunucuda şifreler; bu da hizmet sağlayıcıya güvenmeyi gerektirir. İstemci taraflı şifreleme, verileri gönderilmeden önce tarayıcında şifreler; böylece sunucu hiçbir zaman düz metni görmez. Gizli paylaşım için istemci taraflı şifreleme daha güvenlidir çünkü hizmeti bir güven noktası olmaktan çıkarır — ele geçirilmiş bir sunucu bile verilerini okuyamaz.

Bu yazı her iki yaklaşımı karşılaştırır: nasıl çalıştıklarını, her birinin senden ne güvenmeni beklediğini ve gerçek ödünleşimlerin nerede yattığını. Bu bir tarafın savunuculuğu değil — hangi modelin tehdit modeline uyduğunu değerlendirmek için bir çerçevedir.

İstemci taraflı şifrelemenin neden önemli olduğuna dair hızlı bir genel bakış için önceki yazımıza bakabilirsin. Vaulted'ın özel uygulamasına ayrıntılı bir bakış için sıfır bilgi derinlemesine göz at.

Sunucu taraflı şifreleme nasıl çalışır

Sunucu taraflı modelde, hizmet şifrelemeyi senin adına gerçekleştirir. Tipik akış şöyledir:

  1. Tarayıcıya bir gizli girersin
  2. Tarayıcın düz metni TLS üzerinden sunucuya gönderir
  3. Sunucu, kendi yönettiği bir anahtar kullanarak veriyi şifreler
  4. Şifreli metin veritabanında saklanır
  5. Alıcı gizliyi talep ettiğinde, sunucu onu şifresini çözer ve düz metni döndürür

Şifreleme anahtarı hiçbir zaman sunucuyu terk etmez. Bir donanım güvenlik modülünde (HSM), bir bulut anahtar yönetim hizmetinde (KMS) ya da bir yapılandırma dosyasında bulunabilir — ancak sunucu onu tamamen kontrol eder.

Sunucu taraflı güven modeli

Sunucu taraflı şifrelemeyle şunlara güveniyorsun:

  • Hizmet operatörünün verilerini okumayacağına (şifreleme/şifre çözme sırasında anahtara ve düz metne bellekte sahiptir)
  • Altyapının ele geçirilmeyeceğine (ele geçirilmiş bir sunucu hem anahtarları hem de verileri açığa çıkarır)
  • Operatörün çalışanlarının erişimi kötüye kullanmayacağına (sunucu erişimi olan herkes potansiyel olarak gizlileri okuyabilir)
  • Yasal yetki alanının ifşaatı zorlamayacağına (operatör anahtarları elinde tuttuğundan veri teslim etmeye zorlanabilir)
  • Sunucu günlükleri ve izlemenin düz metni kaydetmeyeceğine (loglama çerçeveleri yanlışlıkla hassas veri kaydedebilir)

Bu mutlaka kötü bir model değildir. Pek çok hizmet bunu başarıyla kullanır — bulut depolama, e-posta sağlayıcıları ve veritabanı hizmetlerinin tamamı sunucu taraflı şifrelemeye dayanır. Soru, bu ödünleşimin kullanım senaryona uyup uymadığıdır.

İstemci taraflı şifreleme nasıl çalışır

İstemci taraflı modelde şifreleme, herhangi bir veri sunucuya ulaşmadan önce tarayıcıda gerçekleşir. Akış farklıdır:

  1. Tarayıcıya bir gizli girersin
  2. Tarayıcı bir şifreleme anahtarı oluşturur ve veriyi yerel olarak şifreler
  3. Sunucuya yalnızca şifreli metin gönderilir
  4. Şifreleme anahtarı alıcıya ayrı bir kanal üzerinden iletilir (genellikle URL parçası)
  5. Alıcının tarayıcısı şifreli metni yerel olarak çözer

Sunucu hiçbir zaman düz metni görmez ve şifreleme anahtarını hiçbir zaman elinde tutmaz. Şifreli veri bloklarını depolar ve geri alır — bundan fazlası değil.

Vaulted bu modeli kullanır. Her gizli, taze bir AES-256-GCM anahtarı alır. Anahtar, RFC 3986 uyarınca tarayıcıların HTTP isteklerine hiçbir zaman dahil etmediği URL parçasına (#) yerleştirilir. Sunucu depolama için şifreli metni ve 12 baytlık rastgele bir IV alır, ancak anahtar yalnızca gönderici ile alıcı arasında paylaşılan bağlantıda kalır.

İstemci taraflı güven modeli

İstemci taraflı şifrelemeyle şunlara güveniyorsun:

  • Tarayıcının kriptografiyi doğru uygulamasına (Web Crypto API, BoringSSL veya NSS gibi yerel kripto motorlarına delege eder)
  • Uygulama kodunun şifrelemeyi gerçekten istemci tarafında gerçekleştirmesine (bunu ağ isteklerini inceleyerek doğrulayabilirsin)
  • Bağlantı iletim kanalının güvenli olmasına (parça dahil tam URL'ye sahip olan herkes gizliyi çözebilir)
  • Alıcının cihazının ele geçirilmemiş olmasına (şifre çözme sonrasında zararlı yazılım veya ekran görüntüsü düz metne erişebilir)

Sunucuya, hizmet operatörüne, çalışanlarına ya da yasal yetki alanına güvenmiyorsun. Sunucu, okuyamadığı şifreli veriler için bir depolama aktarıcısıdır.

Ödünleşimlerin karşılaştırması

Hiçbir model evrensel olarak daha iyi değildir. Her biri güvenlik, kullanılabilirlik ve özellik zenginliği arasında farklı ödünleşimler yapar.

Güvenlik özellikleri

ÖzellikSunucu taraflıİstemci taraflı
Sunucu ihlalinde maruz kalmaAnahtarlar + şifreli metin açığa çıkarYalnızca şifreli metin açığa çıkar (anahtarsız işe yaramaz)
Operatör veriyi okuyabilir miEvet (anahtarlara sahiptir)Hayır (hiçbir zaman anahtara sahip değildir)
Yasal zorlama riskiOperatör uyabilir (erişime sahiptir)Operatör uyamaz (erişimi yoktur)
Bağlantı ele geçirme riskiGeçerli değil (bağlantıda anahtar yok)Tam URL = tam erişim (parola ile azaltılmış)
Ortadaki adam saldırısıTLS transit'i korur; sunucu düz metni görürTLS şifreli metni korur; parçadaki anahtar hiçbir zaman gönderilmez

Kullanılabilirlik özellikleri

ÖzellikSunucu taraflıİstemci taraflı
Anahtar yönetimi yüküKullanıcı için sıfır (sunucu halleder)Kullanıcı bağlantıyı güvenli şekilde paylaşmalı
Parola kurtarmaMümkün (sunucu anahtarları tutar)Mümkün değil (anahtarlar yalnızca bağlantıda)
Arama ve dizinlemeSunucu düz metinde arama yapabilirŞifre çözme olmadan mümkün değil
Paylaşım esnekliğiSunucu yeni alıcılar için yeniden şifreleyebilirAlıcı başına yeni bağlantı gerekir
Çevrimdışı erişimŞifre çözme için sunucu bağlantısı gerekirŞifreli metin ve anahtar yerel olarak önbelleğe alınmışsa mümkün

Özellik ödünleşimleri

ÖzellikSunucu taraflıİstemci taraflı
İçerik denetim günlüğüMümkünMümkün değil (sunucu içeriği okuyamaz)
İçerik tabanlı politikalarMümkün (DLP, uyumluluk taraması)Şifre çözme olmadan mümkün değil
Anahtar rotasyonuSunucu yeni anahtarlarla yeniden şifreleyebilirBağlantıların yeniden oluşturulup paylaşılmasını gerektirir
Çok taraflı erişim kontrolüSunucu kullanıcı başına anahtarları yönetebilirHer alıcının anahtara doğrudan sahip olması gerekir
Sıfır bilgi garantisiHayırEvet

Sunucu taraflı şifrelemenin kabul edilebilir olduğu durumlar

Sunucu taraflı şifreleme makul bir seçimdir:

  • Hizmet operatörüne ve güvenlik uygulamalarına güvendiğinde
  • Verilere sunucu taraflı erişim gerektiren özellikler gerektiğinde (arama, paylaşım, uyumluluk taraması)
  • Veri hassasiyeti istemci taraflı şifrelemenin kullanılabilirlik maliyetini haklı kılmadığında
  • Operatörün uyumluluk sertifikalarının sıfır bilgi garantilerinden daha önemli olduğu düzenlenmiş bir ortamda çalıştığında
  • Anahtar yönetimi karmaşıklığının kullanıcı tarafından değil, hizmet tarafından üstlenilmesi gerektiğinde

Bulut depolama hizmetleri, kurumsal e-posta ve yönetilen veritabanı şifrelemesi bu modeli etkin biçimde kullanır.

İstemci taraflı şifrelemenin zorunlu olduğu durumlar

İstemci taraflı şifreleme şu durumlarda zorunlu hale gelir:

  • Hizmet operatörüne verilerini emanet edemediğinde ya da etmemen gerektiğinde
  • Veri, bir sunucu ihlalinin düz metni açığa çıkarmaması için yeterince hassas olduğunda
  • Sıfır bilgi garantisine ihtiyaç duyduğunda — sunucunun verilerini okuyamayacağına dair matematiksel kanıt
  • Yasal ya da uyumluluk gereksinimleri, hizmet operatörünün içeriğe erişiminin olmamasını zorunlu kıldığında
  • Hizmet sağlayıcıdaki içeriden gelen tehditlere karşı koruma istediğinde

Gizli paylaşım, istemci taraflı şifrelemenin en güçlü kullanım senaryolarından biridir. Veriler özünde hassastır (parolalar, API anahtarları, kimlik bilgileri), paylaşım geçicidir (görüntüleme limitli, zamana sınırlı) ve güven ilişkisi asgaridir (hizmet operatörünü tanımıyor ya da güvenmek zorunda olmayabilirsin).

Vaulted bunu nasıl ele alır

Vaulted yalnızca istemci taraflı şifreleme kullanır. Her gizli, herhangi bir veri sunucuya ulaşmadan önce tarayıcıda taze bir AES-GCM anahtarıyla şifrelenir. Anahtar yalnızca URL parçasında seyahat eder; isteğe bağlı parola koruması ise PBKDF2 anahtar türetme ve AES-KW anahtar sarma aracılığıyla ikinci bir katman ekler.

Sunucu, şifreli metni bir yaşam süresi ve bir görüntüleme sayacıyla birlikte saklar. İçeriği çözemez, arayamaz ya da inceleyemez. Tam bir veritabanı ihlali yalnızca şifreli veri blokları sağlar — yalnızca paylaşılan bağlantılarda var olan anahtarlar olmadan hesaplama açısından işe yaramaz.

Tam kriptografik ayrıntılar için — anahtar üretimi, IV işleme, parola sarma ve tam Web Crypto API çağrıları — sıfır bilgi şifreleme derinlemesine yazımıza bakabilirsin.

Seçimini yapmak

Doğru şifreleme modeli, neyi koruduğuna ve kime güvenmeye hazır olduğuna bağlıdır.

Arama, kurtarma veya merkezi anahtar yönetimi gibi özelliklere ihtiyaç duyuyorsan, sunucu taraflı şifreleme pratik seçimdir. Kimsenin — hizmetin, çalışanlarının ya da bir mahkeme emrinin — verilerini okuyamayacağına dair bir garanti istiyorsan, istemci taraflı şifreleme bunu sağlayan tek modeldir.

Gizli paylaşımda cevap nettir: veriler hassastır, etkileşim kısadır ve düz metne erişebilecek taraf sayısı ne kadar azsa o kadar iyidir.


Sıfır bilgi şifrelemeyle bir gizli paylaşmaya hazır mısın? Vaulted'da bir gizli oluştur — veriler tarayıcından şifrelenmemiş olarak hiçbir zaman çıkmaz.


İlgili yazılar