Kural
Şunu kullanma eski karıştırma algoritmalarını kullanmayın bağlamsal olarak
gerekçelendirilmedikçe. kullanmaktan eski karıştırma algoritmalar (MD5, SHA-1)
kullanılması herhangi bir güvenlik açısından hassas bağlamda. Bunlar şunlardır kriptografik olarak
kırılmış, kolay bir kırılabilir, ve zarar sistem bakım kolaylığı.
Desteklenen diller: 45+Giriş
MD5 ve SHA-1, on yıllardır kriptografik olarak kırılmış olmalarına rağmen üretim kod tabanlarında hâlâ yaygın olarak kullanılmaktadır. MD5, 2004 yılından beri; SHA-1 ise 2017 yılından beri güvenli olmadığı kabul edilmektedir. Yine de geliştiriciler, çarpışma saldırıları ve ön görüntü saldırılarının gerçek güvenlik riskleri oluşturduğu şifre karma işlemleri, dijital imzalar ve bütünlük doğrulaması için bu algoritmaları kullanmaya devam etmektedir. MD5 çarpışmaları oluşturmanın hesaplama maliyeti artık önemsiz düzeydedir ve SHA-1 çarpışma saldırıları, bulut bilişim kaynakları kullanılarak pratik olarak gerçekleştirilebilmektedir.
Neden önemli?
Güvenlik etkileri: MD5 ve SHA-1, iki farklı girdinin aynı hash çıktısını ürettiği çarpışma saldırılarına karşı savunmasızdır. Saldırganlar bunu, meşru dosyalarla aynı hash değerine sahip kötü amaçlı dosyalar oluşturarak bütünlük kontrollerini atlatmak için kullanır. Şifre depolama açısından bu algoritmalar, hızlı olmaları nedeniyle son derece zayıftır; bu da kaba kuvvet ve gökkuşağı tablosu saldırılarını çocuk oyuncağı haline getirir. Modern bir GPU, saniyede milyarlarca MD5 hash değeri hesaplayabilir; bu da 8 karakterlik bir şifrenin birkaç saat içinde kırılabileceği anlamına gelir.
Uyum ve yasal risk: PCI DSS, HIPAA ve SOC 2 gibi güvenlik standartları, şifreleme amaçlı olarak MD5 ve SHA-1 kullanımını açıkça yasaklamaktadır. Düzenlemelere tabi ortamlarda bu algoritmaların kullanılması, denetim başarısızlıklarına ve yasal sorumluluğa yol açar. Önemli tarayıcılar artık SHA-1 sertifikalarıyla karşılaştıklarında kullanıcıları uyarıyor; bu durum güveni zedeliyor ve hizmetlerinize erişimin engellenmesine yol açabilir.
Kodun bakım kolaylığı: Kodda güncel olmayan karma algoritmaları tespit edildiğinde, bunların derhal düzeltilmesi gerekir. Bu durum, zamanla artan bir teknik borç yaratır; zira veri birikimi arttıkça geçiş süreci daha da zorlaşır. Güvenli algoritmaların erken aşamada benimsenmesi, gelecekte maliyetli geçiş süreçlerini ve acil güvenlik yamalarını önler.
Saldırı yüzeyinin genişlemesi: Zayıf karma algoritmaları, çok sayıda saldırı vektörü yaratır. Şifre veritabanları, çevrimdışı kırılma saldırılarına karşı savunmasız hale gelir. Dijital imzalar taklit edilebilir. Dosya bütünlüğü sistemleri atlatılabilir. MD5 veya SHA-1’in her kullanımı, gerçekleşmesi an meselesi olan potansiyel bir güvenlik olayıdır.
Kod örnekleri
❌ Uygun değil:
const crypto = require('crypto');
function hashPassword(password) {
return crypto.createHash('md5')
.update(password)
.digest('hex');
}
function verifyFileIntegrity(fileContent, expectedHash) {
const hash = crypto.createHash('sha1')
.update(fileContent)
.digest('hex');
return hash === expectedHash;
}
Neden güvenli değil: Şifre karma işlemi için kullanılan MD5, modern kırma araçlarına karşı hiçbir güvenlik sağlamaz. Dosya bütünlüğü için kullanılan SHA-1, çarpışma saldırılarıyla aşılabilir ve bu da kötü amaçlı dosyaların doğrulama sürecinden geçmesine olanak tanır. Her iki algoritma da brute-force saldırıları açısından hesaplama açısından ucuzdur.
✅ Uygunluk:
const crypto = require('crypto');
async function hashPassword(password) {
const salt = crypto.randomBytes(16);
return new Promise((resolve, reject) => {
crypto.pbkdf2(password, salt, 310000, 32, 'sha256', (err, key) => {
if (err) reject(err);
resolve({ salt: salt.toString('hex'), hash: key.toString('hex') });
});
});
}
function verifyFileIntegrity(fileContent, expectedHash) {
const hash = crypto.createHash('sha256')
.update(fileContent)
.digest('hex');
return hash === expectedHash;
}Neden güvenlidir: SHA-256 ve yüksek yineleme sayısı (310.000) ile PBKDF2, şifre kırma işlemini katlanarak yavaşlatır. Dosya bütünlüğü için kullanılan SHA-256, çarpışma direncine sahiptir ve bilinen hiçbir pratik saldırıya maruz kalmaz. Her iki algoritma da güncel güvenlik standartlarını ve uyumluluk gereksinimlerini karşılar.
Sonuç
MD5 ve SHA-1’in güvenlik açısından hassas kodlarda yeri yoktur. Bu algoritmaların güvenlik açıkları ayrıntılı bir şekilde belgelenmiştir, bu açıkları istismar eden kodlar herkese açıktır ve tüm başlıca programlama dillerinde güvenli alternatifler mevcuttur. Geçiş süreci açıktır: Şifreler için bcrypt, scrypt veya Argon2’yi, bütünlük doğrulaması için ise SHA-256 veya SHA-3’ü kullanın. Bu zayıf algoritmaların üretim ortamında kalmaya devam ettiği her gün, saldırı yüzeyiniz artar.

