Parola Entropy’si: Parola Gücünüzü Nasıl Ölçer ve Maksimuma Çıkarırsınız
Size muhtemelen “güçlü bir parolanın” büyük harfler, rakamlar ve özel karakterler içermesi gerektiği söylenmiştir. Ancak P@$$w0rd! bu kuralların hepsine uyar — ve bir saniyenin altında kırılabilir.
Parola gücünün gerçek ölçüsü hangi karakterleri kullandığınız değildir. Entropy’dir: parolanızın gerçekte ne kadar öngörülemez olduğunu nicelendiren, bilgi kuramından gelen bir kavram.
Bu rehberde, parola entropy’sinin tam olarak nasıl çalıştığını, nasıl hesaplanacağını ve gerçekten zor kırılan parolaları nasıl üreteceğinizi öğreneceksiniz.
Parola Entropy’si Nedir?
Parola entropy’si, bir parolanın ne kadar öngörülemez olduğunu bit cinsinden ölçer. Eklenen her bir bit entropy, bir saldırganın kaba kuvvetle parolayı kırmak için ihtiyaç duyduğu tahmin sayısını ikiye katlar.
Bunu zar gibi düşünün. 6 yüzlü bir zar, atış başına yaklaşık 2,6 bit entropy içerir — yalnızca 6 olası sonuç vardır. 20 yüzlü bir zarın yaklaşık 4,3 biti vardır — daha fazla yüz, daha fazla belirsizlik anlamına gelir.
Parolalar da aynı şekilde çalışır: daha fazla olası karakter (daha büyük “zarlar”) ve parolada daha fazla karakter (daha fazla “atış”) entropy’yi artırır.
Entropy’nin karmaşıklık kurallarından daha iyi bir ölçü olmasının nedeni budur. Bir parola karmaşık görünebilir (Tr0ub4dor&3) ancak öngörülebilir desenler izlediği için düşük entropy taşıyabilir. Buna karşılık, basit görünen bir parola öbeği (correct horse battery staple) geniş bir olasılık havuzundan çekildiği için yüksek entropy taşıyabilir.
Formül: Parola Entropy’si Nasıl Hesaplanır
Formül oldukça basittir:
E = L × log₂(R)
Burada:
- E = bit cinsinden entropy
- L = parola uzunluğu (karakter sayısı)
- R = havuz boyutu (konum başına olası karakter sayısı)
Karakter Havuzu Boyutları
| Karakter Türü | Havuz Boyutu (R) | Karakter Başına Bit |
|---|---|---|
| Yalnızca küçük harf (a-z) | 26 | 4,70 |
| Küçük harf + rakam | 36 | 5,17 |
| Büyük + küçük harf + rakam | 62 | 5,95 |
| Tam yazdırılabilir ASCII | 94 | 6,55 |
| Diceware kelime listesi | 7.776 | Kelime başına 12,92 |
Kodda Hesaplayın
// JavaScript'te parola entropy'sini hesapla
const entropy = (length, poolSize) =>
length * Math.log2(poolSize);
entropy(8, 26); // → 37,60 bit (yalnızca küçük harf)
entropy(12, 62); // → 71,45 bit (alfasayısal)
entropy(16, 94); // → 104,87 bit (tam karakter kümesi)
import math
def entropy(length: int, pool_size: int) -> float:
return length * math.log2(pool_size)
entropy(8, 26) # → 37,60 bit
entropy(12, 62) # → 71,45 bit
entropy(16, 94) # → 104,87 bit
Önemli: bu formül, her karakterin tekdüze biçimde rastgele seçildiğini varsayar. Parolayı bir insan, desenler veya sözlük kelimeleri kullanarak seçerse, gerçek entropy kuramsal maksimumdan çok daha düşüktür.
Ne Kadar Entropy Yeterlidir?
Cevap, neyi koruduğunuza ve bir saldırganın ne kadar hızlı tahmin edebildiğine bağlıdır.
Modern GPU’lar, MD5 gibi hızlı algoritmalara karşı saniyede 10¹² (bir trilyon) parola özetinden fazlasını test edebilir. Pratikte bunun anlamı şudur:
| Entropy (bit) | Güç | 10¹² tahmin/sn’de Kırılma Süresi | Önerilen Kullanım |
|---|---|---|---|
| < 40 | Zayıf | 1 saniyenin altında | Asla kullanmayın |
| 40–59 | Orta | Saniyelerden saatlere | Tek seferlik hesaplar |
| 60–79 | Güçlü | Günlerden yüzyıllara | Olağan hesaplar |
| 80–99 | Çok güçlü | Bin yıl ve üzeri | E-posta, bankacılık |
| 100+ | Aşırı | Evrenin ısı ölümünün ötesi | Şifreleme anahtarları, ana parolalar |
Tam yazdırılabilir ASCII kümesini kullanan 16 karakterlik bir parola size yaklaşık 105 bit entropy verir — “aşırı” aralığının çok içinde. Şifre Üretici aracımızla anında bir tane üretebilirsiniz; üretici, her parola için gerçek zamanlı entropy analizini de gösterir.
NIST Ne Diyor (2024 Güncellemesi)
NIST SP 800-63B, 2024’te güncellenerek parola yönergelerinde önemli değişiklikler yaptı:
- Zorunlu karmaşıklık kurallarını kaldırdı (artık zorla özel karakter dayatması yok)
- Zorunlu periyodik parola değişikliklerini kaldırdı
- Minimum uzunluğu 15 karaktere yükseltti (önceki sürümlerdeki 8’den)
- Bilinen sızdırılmış parolalara karşı tarama yapılmasını vurguladı
- Karmaşıklık yerine uzunluk ve rastgeleliği tercih ediyor
Bu değişiklikler, entropy matematiğinin her zaman gösterdiği şeyi yansıtıyor: uzunluk ve rastgelelik, karakter çeşitliliğinden daha önemlidir.
Uzunluk Neden Karmaşıklığı Geçer
Matematiğe bakalım. 12 karakterlik bir parolanın entropy’sini artırmanın iki yolunu düşünün:
Seçenek A — 12 karakteri koruyup alfasayısaldan (62) tam ASCII’ye (94) geçin:
- 12 × log₂(94) - 12 × log₂(62) = 78,66 - 71,45 = +7,21 bit
Seçenek B — Alfasayısalı (62) koruyup bir karakter daha ekleyin (12 → 13):
- 13 × log₂(62) - 12 × log₂(62) = 77,40 - 71,45 = +5,95 bit
Tek bir karakter eklemek, çok daha geniş bir karakter kümesine geçmenin sağladığı entropy’nin neredeyse tamamını verir. İki karakter eklerseniz onu aşmış olursunuz.
Şimdi P@$$w0rd! (9 karakter) parolasını düşünün. Tam ASCII havuzunu kullanır ama çok kısadır. Daha kötüsü, sözlük saldırılarının zaten kapsadığı öngörülebilir “leet speak” desenini izler; dolayısıyla etkin entropy’si kuramsal 59 bitin çok altındadır.
Çıkarım: gerçekten rastgele parolalar için uzunluk eklemek, karakter türü eklemekten daha verimlidir. Ama gerçek düşman kısalık değil, öngörülebilirliktir.
Parola Öbeği ile Rastgele Parola Karşılaştırması
| Boyut | Rastgele Parola | Parola Öbeği (Diceware) |
|---|---|---|
| Örnek | kX#9mP$2vL!nQ7wR | correct horse battery staple |
| Birim başına bit | Karakter başına 6,55 | Kelime başına 12,92 |
| ~78 bit için uzunluk | 12 karakter | 6 kelime |
| Akılda tutulabilirlik | Kötü | İyi |
| Mobilde yazma | Acı verici | Kolay |
| Şu işe en uygundur | Parola yöneticisi girdileri | Ana parolalar, ezberlenen oturum açmalar |
Diceware Nasıl Çalışır
Diceware, 7.776 girdilik bir kelime listesi kullanır (6⁵ = 7.776). Her kelimeyi seçmek için beş zar atarsınız; bu da kelime başına tam olarak 12,92 bit entropy verir.
Dört kelime ~51 bit, altı kelime ~77 bit verir.
Hangisini Kullanmalısınız?
- Bir yönetici içinde saklanan parolalar için: tam karakter kümeleriyle 16+ karakterlik rastgele parolalar kullanın. Bunları asla manuel olarak yazmadığınız için akılda tutulabilirlik önemli değildir. Şifre Üretici aracımız, bir kerede 50’ye kadar toplu üretim yapabilir.
- Ana parolanız için: 5-6 kelimelik bir Diceware parola öbeği kullanın. 64-77 bit entropy sağlarken, her gün yazılabilecek kadar akılda kalıcıdır.
- API anahtarları ve token’lar için: insan tarafından akılda tutulma gereksinimi olmadan maksimum entropy için
openssl randveyacrypto.randomBytes()kullanın.
Pratikte Entropy: Geliştirici Araçları ve Kod
Geliştiricilerin yüksek entropy’li sırlar üretmek için en sık kullandığı yollar şunlardır:
Tarayıcı (Web Crypto API)
// Kriptografik olarak güvenli parola üretimi
function generatePassword(length, charset) {
const array = new Uint32Array(length);
crypto.getRandomValues(array);
return Array.from(array, v => charset[v % charset.length]).join('');
}
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*';
generatePassword(16, chars);
// → 'kX#9mP$2vL!nQ7wR' (her seferinde rastgele)
Node.js
const crypto = require('crypto');
const token = crypto.randomBytes(32).toString('base64url');
// → 'Ql2Hj8xK9mNp3rVw5tYz7uBa0cEf4gIk' (43 karakter, 256 bit)
Python
import secrets
token = secrets.token_urlsafe(32) # 256 bit entropy
password = secrets.token_hex(16) # 128 bit, hex biçim
Komut Satırı
# 192 bit entropy, base64 kodlanmış
openssl rand -base64 24
# 256 bit, hex kodlanmış
openssl rand -hex 32
Yönteme Göre Entropy Karşılaştırması
| Yöntem | Çıktı Uzunluğu | Entropy (bit) |
|---|---|---|
| UUID v4 | 36 karakter | 122 |
openssl rand -base64 24 | 32 karakter | 192 |
| 16 karakterlik tam ASCII | 16 karakter | 105 |
| 6 kelimelik Diceware | ~30 karakter | 78 |
| 4 kelimelik Diceware | ~20 karakter | 52 |
Güvenlikle ilgili herhangi bir şey için asla
Math.random()kullanmayın. Kriptografik olmayan bir PRNG kullanır — saldırgan tohumu biliyorsa çıktı öngörülebilirdir. Tarayıcıda her zamancrypto.getRandomValues(), Node.js’te isecrypto.randomBytes()kullanın. Üretim seviyesinde rastgelelik için CSPRNG temel zorunluluktur.
Parola Saklama: Entropy Tek Başına Neden Yetmez
Sunucu, parolayı düz bir MD5 özet olarak saklıyorsa 128 bitlik bir parola bile değersizdir. Bir veritabanı sızdığında, saldırganlar tek bir GPU üzerinde saniyede trilyonlarca MD5 özet test edebilir.
İşte burada yavaş özet algoritmaları devreye girer. Her tahmini bilinçli olarak pahalı kılarlar:
| Algoritma | GPU’da Hız | Etkin Yavaşlama |
|---|---|---|
| MD5 | ~10 milyar/sn | Temel (kullanmayın) |
| SHA-256 | ~5 milyar/sn | ~2× daha yavaş |
| bcrypt (cost=12) | ~5/sn | ~2 milyar× daha yavaş |
| Argon2id | ~2/sn | ~5 milyar× daha yavaş |
bcrypt’in iş faktörü parametresi özellikle zariftir: her artış gereken işi ikiye katlar. 12’lik bir iş faktörü 2¹² = 4.096 tur özetleme anlamına gelir. Bu, parolanın kendi entropy’sinin üstüne etkin olarak 12 bit “saklama entropy’si” ekler. bcrypt, scrypt ve Argon2’nin tümü yerleşik salt kullanır; bu, önceden hesaplanmış rainbow table saldırılarını ortadan kaldırır.
İkili koruma modeli: yüksek entropy’li parolalar çevrimdışı kaba kuvvete karşı korur, yavaş özetleme ise veritabanı sızıntılarına karşı korur. İkisine de ihtiyacınız vardır.
Özet algoritmaları hakkında daha fazlası için MD5 ve SHA-256 karşılaştırmamıza bakın ve farklı algoritmaların nasıl farklı çıktılar ürettiğini keşfetmek için MD5 Özet Üretici aracını deneyin.
Çürütülen Yaygın Parola Mitleri
”Parolanızı her 90 günde bir değiştirin”
NIST’in 2024 yönergeleri, zorunlu periyodik değişiklikleri açıkça önermemektedir. Sık döngüler kullanıcıları daha zayıf, daha öngörülebilir parolalar seçmeye iter — sona bir rakam eklemek, küçük bir küme arasında dönmek gibi. Parolaları yalnızca tehlikeye girdiklerini düşünmek için bir nedeniniz olduğunda değiştirin.
”a→@, e→3 onu güçlendirir”
Leet speak ikameleri, sözlük saldırılarının ilk denediği desenler arasındadır. password içindeki a yerine @ koymak neredeyse hiç entropy eklemez; çünkü saldırganlar bunu zaten beklemektedir.
Gerçek rastgelelik — zekice ikameler değil — entropy’yi artıran şeydir.
”8 karakter ve sembol yeter”
Tam 94 karakterlik ASCII kümesiyle bile 8 karakter yalnızca 52 bit entropy verir. Saniyede 10¹² tahminde, bu yaklaşık 75 dakikada kırılır.
En az 12 karakter, önemli hesaplar için 16+ karakter kullanın.
”Ne kadar karmaşık görünürse o kadar güvenlidir”
Görsel karmaşıklık ile entropy farklı şeylerdir. Tr0ub4dor&3 karmaşık görünür ama öngörülebilir bir taban-kelime-artı-ikameler desenini izler. mfYq8kL2nR daha basit görünür ama gerçekten rastgele olduğu için daha yüksek entropy taşır.
Kapsamlı bir güvenlik stratejisi oluşturma hakkında daha fazlası için Web Güvenliği Temelleri’ne bakın.
SSS
Kaç bit entropy güvenli sayılır?
Çoğu çevrimiçi hesap için 60-80 bit güçlü koruma sağlar. Ana parolalar veya şifreleme anahtarları gibi yüksek değerli hedefler için 100+ bit hedefleyin. Eklenen her bir bit, saldırganın gereken çabasını ikiye katlar.
Özel karakter eklemek her zaman entropy’yi artırır mı?
Yalnızca karakterler tam havuzdan rastgele seçilirse. a yerine @ veya sondaki ! gibi öngörülebilir ikameler neredeyse hiç entropy eklemez; çünkü saldırganlar bu desenleri sözlüklerinde zaten hesaba katmıştır.
4 kelimelik bir Diceware parola öbeğinin entropy’si nedir?
Standart 7.776 kelimelik Diceware listesi kullanıldığında her kelime 12,92 bit katar. Dört kelime yaklaşık 51,7 bit verir — düşük güvenlikli kullanımlar için yeterli. Önemli hesaplar için 5-6 kelime kullanın (64-78 bit).
Math.random(), parola üretimi için güvenli midir?
Hayır. Math.random() kriptografik olarak güvenli olmayan bir sözde rastgele sayı üreticisidir. Güvenliğe duyarlı rastgele üretim için tarayıcıda crypto.getRandomValues(), Node.js’te crypto.randomBytes() kullanın.
bcrypt’in iş faktörü güvenliği nasıl etkiler?
bcrypt’in iş faktöründeki her artış, bir parolayı özetlemek (ve dolayısıyla kaba kuvvetle kırmak) için gereken hesaplamayı ikiye katlar. 12’lik bir iş faktörü 2¹² = 4.096 yineleme anlamına gelir; bu, parolanın kendi entropy’sinin üstüne etkin olarak 12 bitlik bir zorluk ekler.
NIST’in 2024 parola yönergelerinde ne değişti?
NIST SP 800-63B, zorunlu karmaşıklık gereksinimlerini (zorla özel karakter, karışık büyük/küçük harf) ve periyodik parola döngüsünü kaldırdı. Yeni rehberlik daha uzun parolaları (15+ karakter önerilir), sızdırılmış parola veritabanlarına karşı taramayı ve boşluk dahil tüm yazdırılabilir karakterlere izin vermeyi tercih ediyor.
Temel Noktalar
- Entropy = L × log₂(R) — eklenen her bir bit gereken tahmin sayısını ikiye katlar
- Uzunluk > karmaşıklık — bir karakter eklemek, karakter kümesini genişletmekten daha etkilidir
- Kripto API’leri kullanın —
crypto.getRandomValues()veyacrypto.randomBytes(); aslaMath.random()değil - Parola yöneticisi + rastgele üretim, çoğu kişi için en iyi uygulamadır
- Sunucu tarafı da önemlidir — bcrypt veya Argon2 kullanın; parolaları asla MD5 ile saklamayın
Yüksek entropy’li bir parola üretmeye hazır mısınız? Şifre Üretici aracımızı deneyin — oluşturduğunuz her parola için gerçek zamanlı entropy analizi gösterir.