Bir Parolayı Güçlü Yapan Nedir
Güçlü bir makine tarafından oluşturulmuş parolanın iki özelliği vardır: yüksek entropi (tahmin edilemezlik) ve desen yok (sözlük kelimeleri, klavye yürüyüşleri, ikameler yok).
Entropi bit cinsinden ölçülür. Her bit, bir saldırganın denemesi gereken olası parola sayısını ikiye katlar. N olası karakterden oluşan bir setten tekdüze rastgele seçilen bir parola, karakter başına log2(N) bit entropiye sahiptir.
| Karakter seti | Kullanılabilir karakterler | Karakter başına entropi |
|---|---|---|
| Yalnızca küçük harf | 26 | 4,7 bit |
| Küçük harf + rakam | 36 | 5,2 bit |
| Karışık harf + rakam | 62 | 5,9 bit |
| Tam yazdırılabilir ASCII | 95 | 6,6 bit |
Tam yazdırılabilir ASCII setinden 20 karakterlik bir parola yaklaşık 130 bit entropiye sahiptir. Yalnızca küçük harflerle sınırlı 20 karakterlik bir parola 94 bit’e sahiptir. Karakter seti önemlidir, ancak uzunluk daha da önemlidir: 95 karakterlik bir setten bir karakter eklemek 6,6 bit entropi ekler. Karakter setini 26’dan 95’e ikiye katlamak, karakter başına yalnızca yaklaşık 1,9 bit ekler.
NIST SP 800-63B Parolalar Hakkında
NIST yönergeleri (2024’te güncellenmiştir), parola politikaları hakkındaki eski geleneksel bilgelikle çeliştikleri için bilinmeye değerdir:
- Uzunluk en önemli faktördür. NIST, parolaları en az 64 karaktere kadar desteklemeyi önerir.
- Karmaşıklık kuralları (büyük harf, sembol, rakam gerektiren) zorunlu olduğunda ters etki yapar çünkü tahmin edilebilir desenler üretirler (Password1! kanonik bir “karmaşık” ancak zayıf parola örneğidir).
- Periyodik zorunlu döndürme, kullanıcıları küçük, tahmin edilebilir değişiklikler yapmaya eğiterek güvenliği zayıflatır (Password1!, Password2! olur).
- Parola kara listeleri (bilinen ele geçirilmiş parolaları engelleme) karmaşıklık kurallarından daha etkilidir.
Bir yöneticide saklanan makine tarafından oluşturulmuş parolalar için bu politika kısıtlamalarının hiçbiri önemli değildir. Tam entropi ve maksimum uzunluk kullanın.
Parola ve Passphrase Entropisi
20 karakterlik rastgele bir parola ve bir passphrase, farklı durumlar için farklı araçlardır.
4 kelimelik bir Diceware passphrase (7776 kelimeden rastgele seçilmiş):
correct horse battery staple
Entropi: log2(7776^4) ≈ 51,7 bit/kelime × 4 = yaklaşık 207 bit. 20 karakterlik rastgele bir paroladan daha fazla entropi.
6 kelimelik bir Diceware passphrase yaklaşık 310 bit’e sahiptir. Bu kırılamaz. Ayrıca yazılabilir ve ezberlenebilir, bu da onu şunlar için doğru seçim yapar:
- Parola yöneticisi ana parolaları
- Tam disk şifreleme passphrase’leri
- SSH anahtarı passphrase’leri
- Otomatik doldurma olmadan ezberlemeniz veya yazmanız gereken her şey
Yöneticinizde saklanan her şey için rastgele karakter parolaları kullanın. Hatırlamanız veya düzenli olarak yazmanız gereken bir avuç kimlik bilgisi için passphrase’ler kullanın.
Web Crypto API vs Math.random()
Uygulama farkı ince değildir:
// YANLIŞ: Math.random() kriptografik olarak güvenli değil
function insecurePassword(length) {
const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
return Array.from({ length }, () => chars[Math.floor(Math.random() * chars.length)]).join("");
}
// DOĞRU: crypto.getRandomValues() bir CSPRNG'dir
function securePassword(length) {
const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*";
const array = new Uint32Array(length);
crypto.getRandomValues(array);
return Array.from(array, (n) => chars[n % chars.length]).join("");
}
% chars.length işlemi, karakter seti boyutu 2^32’ye eşit olarak bölünmediğinde küçük bir modülo yanlılığı ekler. 95 karakterlik bir set ve 32-bit rastgele değer için, yanlılık pratikte ihmal edilebilir düzeydedir (en yaygın karakterler, en az yaygın olanlardan yaklaşık %0,002 daha sık görünür). Güvenlik açısından kritik bir uygulama için, bu küçük yanlılığı bile ortadan kaldırmak için reddetme örneklemesi kullanın.
Bu Araç Parolaları Nasıl Oluşturur
Oluşturucu tamamen tarayıcınızda çalışır. Hiçbir parola herhangi bir sunucuya gönderilmez. Rastgelelik kaynağı, tüm modern tarayıcıların sunduğu ve işletim sistemi CSPRNG’sinden çekim yapan Web Crypto API’den crypto.getRandomValues() yöntemidir.
Oluşturduktan sonra, parolayı doğrudan parola yöneticinize kopyalayın. Değerin kaydedilebileceği veya senkronize edilebileceği ara konumlara (e-posta taslakları, not uygulamaları, sohbet pencereleri) yapıştırmaktan kaçının.