Başlıca Kriptografik Yanlış Kullanım Kalıpları
En yaygın geliştirici hatalarını inceleyin: ECB kipi, zayıf PRNG tohumlama ve kendi kriptonuzu yazmak.
Başlıca Kriptografik Yanlış Kullanım Kalıpları, CoddyKit'te ücretsiz bir Cryptology Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Cryptology Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cryptology Academy kursu toplamda 4 dersten oluşur.
ECB Kipi Blok Örüntülerini Ortaya Çıkarır
Elektronik Kod Kitabı (ECB) kipi, her bloğu aynı anahtarla bağımsız olarak şifreler. Özdeş düz metin blokları özdeş şifreli metin blokları üretir. Klasik gösterim "ECB pengueni"dir: bir bit eşlem görüntüsünü ECB ile şifrelemek, görüntünün blok düzeyindeki yapısını koruyarak penguenin ana hatlarını şifreli metinde açıkça görünür bırakır. ECB kipi anlamsal güvenlik sağlamaz ve hiçbir pratik şifreleme amacı için asla kullanılmamalıdır.
Kendi Kriptografinizi Geliştirmek
Kriptografik ilkelleri sıfırdan uygulamak, yazılım geliştirmedeki en tehlikeli uygulamalardan biridir. Kriptografi, saldırgan koşullar altında kusursuz doğruluk gerektirir: ince bir zamanlama sızıntısı, dolgudaki bir eksik veya fazla hatası ya da güvenlik gereksinimlerinin yanlış anlaşılması, normal testlerde doğru davranıştan ayırt edilemeyen ve kullanılabilir güvenlik açıkları oluşturabilir. Uzman kriptograflar bile uygulama hataları yapabilir; uygulama geliştiricileri yalnızca denetimden geçmiş kitaplıkları kullanmalıdır.
Güvenlik Amacıyla MD5 ve SHA-1 Kullanımı
MD5, 2004'ten beri çakışma saldırılarına karşı kırılmış durumdadır; aynı MD5 özetine sahip iki dosya oluşturmak hesaplama açısından önemsizdir. SHA-1 çakışma saldırıları, Google'ın 2017'deki SHAttered saldırısıyla pratikte gösterilmiş ve aynı SHA-1 özetine sahip iki PDF dosyası oluşturulmuştur. Bunların hiçbiri hiçbir güvenlik amacıyla kullanılmamalıdır: sayısal imzalar, içerik bütünlüğü, parola depolama veya HMAC için. Modern sistemlerde SHA-256, SHA-3 veya BLAKE2 kullanın.
Öngörülebilir PRNG Tohumlama
Bir sözde rastgele sayı üretecini tohumlamak için time() veya başka öngörülebilir değerler kullanmak, PRNG çıktısı güvenlik amacıyla kullanıldığında kritik bir güvenlik açığıdır. Bir anahtarın yaklaşık olarak ne zaman üretildiğini bilen saldırgan, tohumu kurtarmak için tohum uzayındaki tüm olası zaman damgalarını küçük bir zaman aralığında kaba kuvvetle deneyebilir. Klasik örnek şudur: Netscape'in ilk sürümleri, SSL anahtarı üretimini her ikisi de aynı makinedeki saldırgan tarafından gözlemlenebilen zaman ve işlem kimliğiyle tohumluyordu.
Zayıf PRNG Seçimi
C'deki rand(), java.util.Random ve Python'ın random modülü, güvenlik için değil benzetimlerde istatistiksel kalite için tasarlanmış deterministik doğrusal eşlenik üreteçler veya Mersenne Twister kullanır. Bu üreteçlerden yeterli sayıda çıktı gözlemleyen bir saldırgan, iç durumlarını yeniden oluşturabilir ve gelecekteki tüm çıktıları tahmin edebilir. Güvenlik amacıyla işletim sistemi tarafından sağlanan CSPRNG'leri kullanın: Python'da secrets.token_bytes(), Node.js'te crypto.randomBytes() veya Linux'ta /dev/urandom.
Kimlik Doğrulamadan Şifreleme
Kimlik doğrulama olmadan şifreleme yalnızca gizlilik sağlar, bütünlük sağlamaz. Düz metni okuyamayan bir saldırgan bile şifreli metni değiştirebilir ve bunun sonucunda düz metinde öngörülebilir değişikliklere yol açabilir (özellikle CTR veya CBC kipinde). Bu değiştirilebilirlik saldırıları mümkün kılar: şifrelenmiş bir banka işlemini ele geçiren saldırgan, düz metni bilmeden bitleri değiştirerek transfer tutarını veya hedef hesabı değiştirebilir. Her zaman kimlik doğrulamalı şifreleme (AEAD) kullanın.
Anahtarları ve IV'leri Koda Sabitleme
Şifreleme anahtarlarını veya başlatma vektörlerini kaynak koduna sabitlemek kritik bir güvenlik açığıdır. Kaynak kodu genellikle sürüm denetimi depolarına, bazen herkese açık olanlara, işlenir. Özel depolarda bile kod erişimi olan herkes anahtara sahip olur. Sabit kodlanmış anahtarlar, tüm örneklerin aynı anahtarı kullanması ve anahtar döndürmenin yeniden dağıtım gerektirmesi anlamına gelir. Anahtarlar ortam değişkenlerinde, gizli bilgi yönetimi sistemlerinde (HashiCorp Vault, AWS Secrets Manager) veya donanım güvenlik modüllerinde saklanmalıdır.
Başlatma Vektörlerini Yeniden Kullanma
Aynı anahtarla yapılan birden çok şifrelemede aynı başlatma vektörünü kullanmak ciddi güvenlik açıkları oluşturur. CTR kipinde IV'nin yeniden kullanılması aynı anahtar akışını oluşturur ve XOR aracılığıyla düz metnin kurtarılmasına olanak tanır. CBC kipinde IV'nin yeniden kullanılması, saldırganın iki iletinin aynı düz metin bloklarıyla başlayıp başlamadığını belirlemesine olanak tanır. GCM'de tek kullanımlık değerin (IV) yeniden kullanılması felakettir (tek kullanımlık değerlerin yeniden kullanılması dersine bakın). Her şifreleme işlemi için yeni ve rastgele bir IV üretin; şifre çözme bağlamıyla birlikte depolamak üzere bunu şifreli metnin başına ekleyin.
Hızlı Özet İşlevleriyle Parola Özetleme
MD5, SHA-256 veya başka herhangi bir hızlı kriptografik özetle özetlenmiş parolaları depolamak yetersizdir. Modern GPU'lar saniyede milyarlarca SHA-256 özeti hesaplayabilir; bu da çalınan özet veritabanlarına yönelik çevrimdışı kaba kuvvet saldırılarını son derece hızlı ve kolay hâle getirir. Parola özetleme, amaca özel yavaş ve belleğe dayanıklı işlevler gerektirir: bcrypt, scrypt veya Argon2id. Bunlar, özel donanımla bile kaba kuvvet saldırılarını pahalı hâle getirmek ve çevrimdışı saldırıları hesaplama açısından uygulanamaz kılmak üzere tasarlanmıştır.
Sertifika Doğrulamasını Yok Sayma
SSL/TLS sertifika doğrulamasını devre dışı bırakmak (Python'da ssl.CERT_NONE ayarlamak, curl'e -k geçirmek veya Android'de trustAllCerts=true ayarlamak), araya girme saldırılarına karşı korumayı ortadan kaldırır. Bir saldırgan herhangi bir sertifika sunabilir ve tüm iletişimi ele geçirebilir. Bu uygulama, kendinden imzalı sertifika hatalarını atlamak için geliştirme sırasında ortaya çıkar; ancak çoğu zaman üretim ortamına da taşınır. Her zaman uygun sertifika doğrulaması kullanın ve altta yatan sertifika sorunlarını doğru biçimde düzeltin.
Dönüş Değerlerini Denetlememek
Kriptografik işlevler başarısızlıkları dönüş değerleri veya özel durumlar aracılığıyla bildirir. Bunları yok saymak, yürütmenin geçersiz bir durumla sürmesine olanak tanır: anlamsız veri üreten bir şifre çözme işlemi, başarısız bir doğrulama veya hata veren bir anahtar üretimi. OpenSSL gibi C tabanlı API'lerde dönüş değerlerini yok saymak özellikle tehlikelidir; çünkü program başlatılmamış bellekle çalışmayı sürdürebilir. Kriptografik işlevlerden dönen her değeri her zaman denetleyin ve başarısızlıkları güvenli biçimde ele alın.
ECB Kipinin Zayıflığı
Verileri şifrelemek için ECB (Elektronik Kod Kitabı) kipi neden güvensiz kabul edilir?
Kriptografik Yanlış Kullanımın Özeti
Kaçınılması gereken başlıca yanlış kullanım kalıpları: ECB kipini asla kullanmayın (blok desenlerinin sızmasına yol açar), kriptografik temel işlevleri kendiniz asla uygulamayın, güvenlik amacıyla MD5 ve SHA-1 kullanmayı reddedin, PRNG'leri time() yerine CSPRNG ile başlatın, güvenliğe duyarlı tüm rastgelelik için CSPRNG kullanın, şifrelenmiş verileri her zaman doğrulayın (AEAD), anahtarları veya IV'leri asla sabit kodlamayın, her şifreleme işleminde yeni bir IV üretin, parolalar için hızlı özet işlevleri yerine Argon2id kullanın, TLS sertifikalarını her zaman doğrulayın ve her kriptografik dönüş değerini kontrol edin.
Sıkça Sorulan Sorular
“Başlıca Kriptografik Yanlış Kullanım Kalıpları” dersi ücretsiz mi?
Evet — “Başlıca Kriptografik Yanlış Kullanım Kalıpları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Cryptology Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cryptology Academy kursu toplamda 4 dersten oluşur.
“Başlıca Kriptografik Yanlış Kullanım Kalıpları” dersinde ne öğreneceğim?
En yaygın geliştirici hatalarını inceleyin: ECB kipi, zayıf PRNG tohumlama ve kendi kriptonuzu yazmak. Cryptology Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Cryptology Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Cryptology Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Başlıca Kriptografik Yanlış Kullanım Kalıpları” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Cryptology Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Cryptology Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Ayrıntılı Dolgu Oracle Saldırıları
- Tekrar Oynatma Saldırıları ve Nonce Yeniden Kullanım Güvenlik Açıkları
- Uygulama Düzeyindeki Kodda Zamanlama Saldırıları
- Başlıca Kriptografik Yanlış Kullanım Kalıpları