Sekiz karakterli, büyük harf-rakam-özel karakter içeren bir şifre üretebilirsiniz. Görünüşe göre güçlü. Gerçekte ne kadar güçlü olduğu üç koşula bağlıdır: üretim algoritmasının kalitesi, toplam entropi değeri ve nerede saklandığı. Bu üç koşuldan herhangi biri zayıfsa, karakter çeşitliliği hiçbir şeyi kurtarmaz.
Sözde rastgele ile kriptografik rastgele arasındaki mesafe
Çoğu programlama dilindeki standart random() fonksiyonları deterministik algoritmalar kullanır. Başlangıç değeri (seed) sabitse üretilen çıktı dizisi de sabit; yeterli sayıda çıktı gözlemlenirse sonraki değerler tahmin edilebilir. JavaScript'te Math.random(), V8 motorunun kullandığı xorshift128+ algoritmasıyla çalışır; bu algoritma istatistiksel testleri geçer ama bir saldırgan için geleceği öngörülebilir kılar. Şifre üretimi için bu davranış kabul edilemez.
Kriptografik olarak güvenli rastgele sayı üreticiler (CSPRNG), işletim sisteminin entropi havuzundan beslenir. Linux'ta /dev/urandom, Windows'ta CryptGenRandom, modern tarayıcılarda ise crypto.getRandomValues() bu kategoridedir. CSPRNG'nin temel özelliği, tüm önceki çıktıya sahip olunsa bile gelecek değerin hesaplanamamasıdır. Bu fark salt teorik değil; 2013 yılında Android'in Bitcoin cüzdanı uygulamasındaki PRNG zafiyeti, kullanıcıların gerçek finansal kayıp yaşamasına neden oldu.
Peki bu fark en çok nerede önem taşır? Sunucu taraflı token üretiminde, şifreleme anahtarı türetmede ve parola üretiminde. Kullanıcı arayüzüne gömülü "şifre öner" özelliği taşıyan sistemlerin Math.random() kullandığı görülür; bu üreticilerin çıktıları istatistiksel analizle sınırlandırılabilir hale gelir. OAuth token üretimi veya oturum anahtarı oluşturma gibi kritik akışlarda CSPRNG zorunluluğu çoğu güvenlik framework'ünün dokümantasyonunda açıkça belirtilir.
Entropi hesabı: bit sayısı gerçekte neyi ölçer?
Bir şifrenin gücünü sayısal olarak ifade etmek için entropi kullanılır. Temel formül: H = L × log₂(N). Burada L şifre uzunluğu, N ise kullanılan karakter kümesinin büyüklüğüdür. Yalnızca küçük harflerden oluşan 8 karakterli şifre 37.6 bit entropi taşır. Bu değer 2010'lu yılların başında bile orta düzey donanımlarla brute force için ulaşılabilirdi.
Karakter kümesini genişletmenin etkisine bakalım: 26 küçük harf yerine 95 baskılanabilir ASCII karakteri kullanıldığında 8 karakterlik şifre 52.6 bite çıkar. 12 karaktere uzatıldığında 78.9 bit olur. Pratik eşik olarak yaygın kabul gören 72-80 bit, modern GPU kümelerine karşı brute force'u hesaplama dışına taşır; ancak bu yalnızca tam kapsamlı kombinasyon taramasına karşı geçerlidir, sözlük saldırısına değil.
Kritik nokta şu: İnsan seçimi entropiyi matematiksel değerin çok altına iter. İsim artı doğum tarihi kombinasyonu, büyük harfle başlama alışkanlığı, sonuna ünlem işareti ekleme refleksi; bunlar gerçek karakter uzayını dramatik biçimde daraltır. Rastgele üretilmiş şifrede bu önyargı yoktur. Her kombinasyon eşit olasılıkla seçilir ve bu, aynı uzunluktaki insan seçiminden ölçülebilir biçimde üstündür.
Karakter seti ve uzunluk: ikisi artırılırsa hangisi öncelikli?
Matematiksel olarak uzunluk, entropi üzerinde daha güçlü etkiye sahiptir. Her ek karakter, mevcut setin büyüklüğünden bağımsız olarak sabit bir bit değeri ekler: log₂(95) ≈ 6.57 bit/karakter. 12 karakterden 16'ya çıkmak yaklaşık 26 bit kazandırırken, karakter setini 62'den (alfanümerik) 95'e genişletmek 8 karakterlik şifrede yaklaşık 14 bit kazandırır. Uzunluk, karakter çeşitliliğine oranla daha verimli bir entropi kaynağıdır.
Ama pratik sınırlar var. Bazı sistemler maksimum parola uzunluğunu kısıtlar; çoğunlukla güvenlik kararından değil, eski veritabanı şema limitlerinden ötürü. Bu durumda karakter setini genişletmek tek seçeneğe dönüşür. Özel karakterleri reddeden sistemlerde ise küme fiilen küçülür; o zaman uzunluğu en az 20'ye çıkarmak, özel karakterli 12 karakterlik şifreden daha yüksek entropi sağlar. Kural basit: sisteminizin desteklediği kümede maksimum uzunluğa gidin.
Özel karakterlerin kullanımını zorlaştıran başka bir etken daha var: tuş düzeni bağımlılığı. Mobil klavyeden giriş gerektiren sistemlerde özel karakter ekstra adım demektir; bu yüzden bazı kullanıcılar özel karakterli kısa şifreden uzun alfanümerik şifreye geçiş yapar. Bu işlemi bir üretici aracına bırakarak bu sürtünmeyi ortadan kaldırabilirsiniz; ancak aracın CSPRNG kullandığından emin olmak, uzunluk kadar kritiktir.
Brute force, rainbow table ve hangi hash algoritmasının kullanıldığı
Güçlü şifre, güçlü hash olmadan anlamsızdır. Bunun neden böyle olduğunu görmek için MD5'e bakın: üst düzey GPU donanımı, MD5 ile hash'lenmiş şifreler için saniyede yüzlerce milyar deneme yapabilir; 8 karakterli alfanümerik şifrenin tüm kombinasyonları bu hızda dakikalar içinde tüketilir. Şifre güvenliği yalnızca üretim tarafıyla bitmez, saklama tarafı en az o kadar belirleyicidir: bcrypt, Argon2 ve scrypt gibi parola hash algoritmaları kasıtlı olarak yavaş çalışır, iterasyon sayısı ayarlanabilirdir ve GPU hızlanmasına dirençlidir.
Rainbow table saldırıları farklı bir vektörden gelir: önceden hesaplanmış hash değerlerini gerçek şifrelerle eşleştiren tablolar. Savunma salt mekanizmasıdır. Her parola kaydına benzersiz rastgele bir değer (salt) eklenmesi, özdeş şifrelerin bile farklı hash değerleri üretmesini sağlar. Salt olmadan aynı şifrenin hash değeri tabloda tek satır olarak yer alır; salt eklendiğinde her kullanıcı için ayrı hesaplama gerekir ve önceden hazırlanmış tablo geçersizleşir.
Credential stuffing saldırıları hash kırmayı gerektirmez. Başka servislerde sızdırılmış şifre-e-posta çiftleri hedef servise sistematik biçimde denenir. Tüm servislerde aynı şifre kullanılıyorsa, tek bir sızıntı zincirleme hesap erişimine kapı açar. Bu saldırıya karşı tek etkili önlem servis bazında benzersiz şifredir. Credential stuffing'in bir alt varyantı ise sahte DNS yönlendirmesiyle çalışır: kullanıcı doğru adresi girer, ancak manipüle edilmiş bir DNS kaydı kimlik bilgilerini saldırganın sunucusuna yönlendirir. Alan adınızın kayıtlarını düzenli aralıklarla sorgulamak bu vektörü erken tespit etmenin temel adımıdır.
Parola yöneticisi olmadan güçlü şifre sürdürülemez
Yüksek entropili rastgele şifreler ezberlenemez. Bu bir zayıflık değil, tasarım gereğidir. Ezberlenemeyen şifre kaydedilmeyi zorunlu kılar; kaydetme yöntemi güvenlik denkleminin ikinci değişkenidir. Not defterine veya ekran görüntüsüne alınmış 24 karakterlik şifre, fiziksel erişimde ya da senkronize cihaz üzerinden sızdırılabilir.
Parola yöneticisi bu problemi çözer: tüm şifreler tek bir master parola ile şifrelenmiş bir vault'ta tutulur. Vault'un master parolası hem güçlü hem ezberlenebilir olmak zorundadır. Diceware yöntemi bu gereksinimi karşılar: gerçek rastgelelikle seçilmiş 6-7 sözcük, 77 bit artı entropi taşır ve hafıza dostudur. Sözcüklerin anlamlı olması güvenliği düşürmez; güvenlik, seçim sürecinin rastgeleliğinden kaynaklanır, kelimelerin anlamından değil.
Tarayıcı otomatik doldurma ile bağımsız parola yöneticisi arasındaki fark da dikkate alınmalıdır. Tarayıcı vault'u çoğunlukla işletim sistemi şifrelemesine güvenir, ayrı bir master parola gerektirmez; bu, cihaza fiziksel erişimde veya oturumu açık bırakılan tarayıcıda tam erişim anlamına gelir. Bağımsız parola yöneticisi ise kendi şifreleme katmanını uygular ve master parola olmadan vault'a erişim mümkün değildir. Hangisinin kullanılacağı, tehdit modeline ve cihaz ortamına göre değişir.
İki faktörlü doğrulama, güçlü şifrenin yerini almaz; tamamlar. TOTP (zamana dayalı tek kullanımlık kod) uygulaması kullanan bir hesap, şifre sızdırılsa bile ikinci faktör olmadan ele geçirilemez. Ancak SMS tabanlı ikinci faktör, SIM değiştirme saldırısına karşı zayıftır; banka veya kritik altyapı gibi yüksek değerli hesaplarda uygulama tabanlı TOTP tercih edilmelidir. Kimlik bilgilerinin iletim güvenliği de bu zincirin parçasıdır: sertifikası sona ermiş veya güvensiz bir bağlantı üzerinden girilen bilgiler MITM saldırısına açık hale gelir; sertifika durumunu periyodik olarak doğrulamak bu riski erken tespit etmenin en pratik yoludur.
Üretim algoritması denetlenmezse güçlü görünüm yanıltır
Bir şifre üreticisinin gerçekten CSPRNG kullandığını nasıl doğrularsınız? Açık kaynaklı araçlarda kaynak kodu incelenebilir; web tabanlı araçlarda ise developer tools üzerinden JavaScript'in crypto.getRandomValues() veya window.crypto nesnesini kullanıp kullanmadığı gözlemlenebilir. Kapalı kaynaklı uygulamalarda bu doğrulama yapılamaz; güven tamamen sağlayıcının beyanına kalır.
Yerel çalışan araçlar, ağ tabanlı araçlara kıyasla ek bir avantaj taşır: üretilen şifre sunucuya iletilmez. Ağ üzerinden şifre üretip gönderen bir servis, teorik olarak çıktıyı loglayabilir ya da iletim sırasında bir araya girme noktasında açığa çıkabilir. Tarayıcı içinde çalışan ve ağ isteği göndermeyen araçlar, bu saldırı vektörünü ortadan kaldırır. Araç tercihinde bu fark değerlendirmeye alınmalıdır.
Üretim kalitesine eşit önemde bir başka faktör daha vardır: çıktının kopyalanma davranışı. Otomatik panoya kopyalayan araçlar kolaylık sağlar; ancak pano içeriği diğer uygulamalar tarafından okunabilir. Hassas ortamlarda şifrenin elle kopyalanması veya doğrudan parola yöneticisine aktarılması daha güvenlidir. Mobil cihazlarda arka plan uygulamalarının pano erişimi kısıtlanabilir; bu ayar işletim sistemi bazında yapılandırılabilir bir güvenlik katmanıdır.
Kriptografik rastgelelik, yeterli entropi ve güvenli saklama üçlüsü bir arada sağlandığında, rastgele şifre üretimi gerçek bir güvenlik katmanına dönüşür. Bu üçlüden herhangi biri eksik kaldığında, şifrenin görünür karmaşıklığı gerçek direnci yansıtmaz; matematiksel olarak hesaplanabilir bir hedef olmaya devam eder.