Örnek sorular
As Crypto Implementation PitfallsZorluk 1
CBC modunda aynı anahtarla aynı IV'yi (başlatma vektörü) tekrar kullanmak neden bir güvenlik sorunudur?
- aŞifreleme algoritmasının anahtar planını yeniden hesaplaması gerektiğinden şifrelemeyi yavaşlatır
- bŞifreli metnin düz metinden daha kısa olmasına neden olur ve formatı bozar
- cYalnızca şifre çözme hızını etkiler, gizliliği etkilemez
- dAynı anahtar/IV çifti altında şifrelenen aynı düz metin blokları aynı şifreli metin bloklarını üretir ve yapıyı sızdırır✓
Açıklama:IV, ilk bloğun girdisini rastgeleleştirmek için vardır, böylece aynı düz metinler her seferinde farklı şekilde şifrelenir. Aynı anahtar ile aynı IV'yi tekrar kullanmak bu rastgeleleştirmeyi ortadan kaldırır; aynı anahtar/IV çifti altında üretilmiş iki şifreli metni gören bir saldırgan, altta yatan düz metin bloklarının ne zaman eşleştiğini fark edebilir.
As Crypto Implementation PitfallsZorluk 1
ECB (Electronic Codebook) modu neden çoğu gerçek dünya verisini şifrelemek için güvensiz kabul edilir?
- aECB modu her blok için ayrı bir anahtar gerektirir ve bu da anahtar yönetimini yönetilemez hale getirir
- bHer düz metin bloğu bağımsız şifrelenir, bu yüzden aynı bloklar her zaman aynı şifreli metni üretir ve desenleri açığa çıkarır✓
- cECB modu AES ile uygulanamaz, yalnızca DES gibi eski şifrelerle kullanılabilir
- dECB modu çıktı şifreli metnin boyutunu girdiye göre her zaman iki katına çıkarır
Açıklama:ECB, her sabit boyutlu bloğu zincirleme veya rastgeleleştirme olmadan bağımsız olarak şifreler, bu yüzden aynı düz metin blokları her zaman aynı şifreli metin bloklarına eşlenir. Bu, yalnızca şifreli metni gören bir saldırganın orijinal verideki yapısal desenleri çıkarmasına izin verir; klasik 'şifrelenmiş görüntüde hâlâ ana hatlar görünüyor' örneği bu kusuru gösterir.
As Crypto Implementation PitfallsZorluk 1
Bir geliştirici AES şifreleme anahtarını doğrudan uygulama kaynak koduna bir string literal olarak gömüyor. Ana risk nedir?
- aString literal olarak saklanan AES anahtarları çoğu derleyici tarafından otomatik olarak kısaltılır
- bKaynak koda veya derlenmiş ikili dosyaya erişimi olan herkes anahtarı çıkarıp korunan tüm verinin şifresini çözebilir✓
- cGömülü anahtarlar, bir yapılandırma dosyasından okumaya göre şifreleme algoritmasını yavaşlatır
- dUygulama derlenemez çünkü şifreleme anahtarları string olarak temsil edilemez ve çoğu dil string literal'leri yalnızca kullanıcıya gösterilen metinler için ayırır.
Açıklama:Kaynak koda gömülü bir anahtar artık bir sır değildir — kodun veya ikili dosyanın her kopyasıyla birlikte gönderilir, sürüm kontrol geçmişinde görünür ve artefaktı okuyabilen ya da tersine çevirebilen herkes tarafından çıkarılabilir. Anahtarlar kaynak kodda değil, bir secrets manager veya KMS'de tutulmalıdır.
As Crypto Implementation PitfallsZorluk 1
Bir ekip hassas veriyi saklamadan önce Base64 ile kodluyor ve buna verinin 'şifrelenmesi' diyor. Bu iddianın sorunu nedir?
- aBase64, anahtar içermeyen geri döndürülebilir bir kodlamadır; bunu gören herkes hiçbir anahtara ihtiyaç duymadan tek satırda düz metne geri çözebilir✓
- bBase64 çıktısı metin tabanlı bir veritabanı sütununda saklanamaz
- cBase64 yalnızca orijinal veri önceden şifrelenmişse geri döndürülebilir
- dBase64 verinin byte uzunluğunu değiştirir, bu teknik olarak şifreleme sayılır
Açıklama:Base64, ikili veriyi metin olarak temsil etmek için bir kodlama şemasıdır — anahtarı ve gizlilik amacı yoktur. Base64 metnini gören herkes bunu tek satırda çözebilir, bu yüzden ifşaya karşı sıfır koruma sağlar; oysa şifreleme geri döndürmek için gizli bir anahtar gerektirir.
As Crypto Implementation PitfallsZorluk 2
Şifreleme anahtarları ve oturum token'ları neden Math.random() gibi standart kütüphane rastgele fonksiyonu yerine kriptografik olarak güvenli bir sözde rastgele sayı üreteci (CSPRNG) kullanılarak üretilmelidir?
- aStandart PRNG'ler öngörülemezlik için değil istatistiksel dağılım için optimize edilir, bu yüzden çıktıları bazen tahmin edilebilir.✓
- bCSPRNG'ler her zaman standart PRNG'lerden daha kısa çıktı üretir ve depolamadan tasarruf sağlar
- cStandart kütüphane rastgele fonksiyonları 32 bitten büyük sayı üretemez
- dKullanıcı verisi işleyen çoğu uygulama için CSPRNG'ler çoğu ülkede yasal olarak zorunludur
Açıklama:Math.random() gibi genel amaçlı PRNG'ler hız ve istatistiksel dağılım için optimize edilmiştir, tahmine karşı direnç için değil. Bazıları öyle tohumlanır veya uygulanır ki yeterince çıktı (veya tohum) gözlemleyen bir saldırgan gelecekteki değerleri tahmin edebilir; bu çıktı bir oturum token'ı veya anahtar olduğunda felaket olur. CSPRNG'ler özellikle geçmiş çıktının gelecekteki çıktıyı tahmin etmede hiçbir avantaj sağlamayacağı şekilde tasarlanmıştır.
As Crypto Implementation PitfallsZorluk 2
İki taraf, hiç yüz yüze görüşmeden güvenilmeyen bir ağ üzerinden paylaşılan bir simetrik anahtar oluşturmak istiyor. Hangi yaklaşım bunu güvenli şekilde çözer?
- aTaraflardan biri bir simetrik anahtar seçip düz metin olarak gönderir; ağın 'muhtemelen güvenli' olduğuna güvenilir
- bYalnızca teknik personelin okuyabilmesi için anahtarı iletmeden önce Base64 ile kodlamak
- cHer iki tarafın saatleri senkronize olduğundan, her iki taraf bağımsız olarak güncel tarihi hashleyerek aynı anahtarı üretir
- dSimetrik anahtarı alıcının genel anahtarıyla şifrelemek için asimetrik kriptografi kullanmak veya Diffie-Hellman gibi bir anahtar değişim protokolü uygulamak✓
Açıklama:Asimetrik şifreleme yalnızca alıcının (açıkça paylaşılabilen) genel anahtarını gerektirdiğinden, gönderenin önceden paylaşılan bir sır olmadan iletim sırasında simetrik bir anahtarı korumasına olanak tanır. Diffie-Hellman gibi anahtar değişim protokolleri, her iki tarafın da anahtarı doğrudan hiç iletmeden paylaşılan bir sır türetmesine izin vererek aynı amaca ulaşır.