Güçlü Şifre Nasıl Oluşturulur (Uzunluk Karmaşıklıktan Daha Önemlidir)
Güçlü bir şifre uzun, rastgele ve başka hiçbir yerde kullanılmamış olandır. Karmaşıklıktan çok uzunluk belirleyicidir: dört karakter türünü de içeren 8 karakterlik bir şifre birkaç gün içinde kırılabilirken, aynı karışımı kullanan 16 karakterlik bir şifre, günümüz saldırı hızlarında evrenin yaşından daha uzun sürede kırılır.
Çoğu kayıt formu hâlâ “en az bir büyük harf, bir rakam, bir sembol” diye ısrar ediyor ve kullanıcıya karmaşıklığın güvenliğin anahtarı olduğunu düşündürüyor. Sayılar başka bir şey söylüyor: aynı kural setini karşılayan kısa bir şifre ile birkaç karakter daha uzun bir şifre arasındaki fark, kırılma süresinde saniyeler ile yüzyıllar kadar açılabiliyor.
Neden uzunluk karmaşıklıktan daha önemli
Şifre gücü aslında entropiye dayanır: bir saldırganın doğru şifreyi bulana kadar ortalama kaç tahmin yapması gerektiğine. Entropiyi iki şey belirler. Birincisi her karakter konumunda kaç olası karakter bulunduğu, yani karakter kümesi. İkincisi şifrenin kaç karakterden oluştuğu, yani uzunluk.
Bir karakter türü daha eklemek karakter kümesini pek de büyütmez. Sadece küçük harfler kullanırsanız her pozisyon için 26 seçeneğiniz olur. Büyük harf ve rakam eklediğinizde bu 62’ye çıkar. Sembolleri de dahil ederseniz yaklaşık 95’e ulaşırsınız. Sadece küçük harften tam 95 karakterlik kümeye geçmek, pozisyon başına seçenek sayısını yaklaşık 3,7 kat artırır.
Şifreye bir karakter daha eklemek ise farklı işler. Toplam kombinasyon sayısını 3,7 kat değil, doğrudan karakter kümesinin tamamı kadar çarpar. 95 karakterlik bir kümede her ek karakter, toplam kombinasyonları 95 ile çarpar. Bu yüzden daha dar bir karakter kümesiyle yazılmış uzun bir şifre, her sembolü açık tutan kısa bir şifreden daha güvenli olabilir. Uzunluk katlanarak büyür, karakter başına karmaşıklık öyle büyümez.
Bu aynı zamanda gerçek saldırıların nasıl işlediğiyle de örtüşüyor. Saldırganların büyük çoğunluğu, milyonlarca olası kombinasyonu sırayla denemek yerine önce sızmış şifre listelerini, yaygın kalıpları ve sözlük kelimelerini dener; kaba kuvvet (brute force) yalnızca bunlar işe yaramadığında devreye girer. Şifreniz gerçekten rastgele üretildiyse ve hiçbir tanıdık kalıba benzemiyorsa, saldırgan er ya da geç kaba kuvvete geçmek zorunda kalır. İşte tam o noktada uzunluk, karakter türü sayısından çok daha fazla fark yaratır.
Kırılma süresi örneği
Aşağıdaki tablo, saldırganın saniyede 10 milyar (10.000.000.000) tahmin yapabildiği bir senaryoyu varsayıyor. Bu, hash’lenmiş şifrelerin çevrimdışı bir kopyasına karşı çalışan modern bir GPU kırma düzeneği için gerçekçi bir rakam. Ortalama tahmin sayısının, toplam olası kombinasyon uzayının yarısı kadar olduğu kabul ediliyor, çünkü saldırgan şanslıysa doğru şifreyi aramanın başında bulur, şanssızsa sonuna doğru; ortalama, ikisinin ortasında bir yerde oturur.
| Uzunluk | Sadece küçük harf (26 karakter) | Tam karışım: büyük + küçük harf + rakam + sembol (95 karakter) |
|---|---|---|
| 8 | 10,4 saniye | 3,8 gün |
| 10 | 2,0 saat | 94,9 yıl |
| 12 | 1,8 ay | 8.567 yüzyıl |
| 16 | 691 yüzyıl | 697,8 milyar yüzyıl |
İki şey dikkat çekiyor. Birincisi, 8 karakterlik bir şifre çevrimdışı kırma saldırılarına karşı hiçbir zaman güvenli değil, dört karakter türünün tamamı açık olsa bile: 3,8 gün, hesabınızı gerçekten ele geçirmek isteyen biri için ulaşılabilir bir süre. İkincisi, tam karakter kümesinde 12’den 16 karaktere çıkmak sadece küçük bir iyileştirme değil; şifreyi “bu yüzyıl içinde kırılabilir” durumundan, pratikte hiçbir anlamı olmayan bir zaman dilimine taşıyor.
Tablonun arkasındaki matematik şöyle işliyor: bit cinsinden entropi, uzunluk × log2(karakter kümesi boyutu) formülüyle hesaplanır. Dört karakter türünün tamamını kullanan 16 karakterlik bir şifre, 16 × log2(95) ≈ 105 bit entropiye sahiptir. Her ek bit, gereken tahmin sayısını ikiye katlar. Bu yüzden uzunluk arttıkça entropi doğrusal değil, katlanarak yükselir.
Pratikte bunun anlamı şu: karakter türü seçimini doğru yapmak elbette işe yarıyor, ama gerçek kazancı uzunluktan alıyorsunuz. Şifrenizi 8 karakterden 12’ye, oradan 16’ya çıkarmak, sembol ya da büyük harf eklemekten çok daha büyük bir güvenlik sıçraması sağlıyor. Bu yüzden bir şifre politikası tasarlarken ya da kendi şifrelerinizi oluştururken önce uzunluğa, sonra karakter çeşitliliğine odaklanmak mantıklı.
Güçlü bir şifre oluşturun
16 veya üzeri bir uzunluk seçin ve karakter başına maksimum entropi için dört karakter türünün tamamını işaretli bırakın. Aşağıdaki araç, sitenin kendi şifre üreticisinin gömülü hâli; ayarları değiştirip anında yeni bir şifre üretebilirsiniz. Şifre tamamen tarayıcınızda, Web Crypto API kullanılarak üretilir; hiçbir şey sunucuya gönderilmez, dolayısıyla üretilen şifre hiçbir noktada ağ üzerinden geçmez.
Sık yapılan hatalar
Öngörülebilir harf değişimleri. “a” yerine ”@”, “o” yerine “0” kullanmak entropiyi neredeyse hiç artırmaz, çünkü şifre kırma araçları bu değişimleri sözlüklerindeki her kelimeye zaten standart kural olarak uygular. “P@ssw0rd1” şifresi, “password1” ile hemen hemen aynı hızda kırılır.
Güçlü bir şifreyi birden fazla sitede kullanmak. On farklı sitede kullanılan tek bir güçlü şifre, o on sitenin en zayıfı kadar güvenlidir. Sitelerden biri veri sızıntısı yaşadığında, kimlik bilgisi doldurma botları aynı e-posta ve şifre kombinasyonunu saatler içinde bankalara, e-posta sağlayıcılarına ve sosyal medya hesaplarına karşı dener. Her site için ayrı üretilmiş benzersiz bir şifre, olası zararı tek bir hesapla sınırlar.
Asgari şartı hedef sanmak. Birçok site “en az 8 karakter, bir rakam, bir sembol” ister. Bu bir taban, hedef değil. Yukarıdaki tablonun gösterdiği gibi, sadece bu şartı karşılayan 8 karakterlik bir şifre çevrimdışı kırma saldırılarına günler içinde yenik düşebilir. Kaybetmek istemeyeceğiniz her şey için 16 karakteri pratik asgari kabul edin.
Şifreleri sadece hafızada tutmak. Bir düzine benzersiz, 16 karakterlik rastgele diziyi ezberlemeye çalışmak çoğu insanı zayıf, tekrarlanan ya da hafifçe değiştirilmiş şifrelere geri götürür. Bir şifre yöneticisi, her site için benzersiz ve güçlü bir şifre üretip saklayarak bu sorunu çözer; geriye tek hatırlamanız gereken bir ana şifre kalır.
Kişisel bilgilere dayanan şifreler. Doğum tarihi, evcil hayvan adı, çocukluk sokağı gibi bilgiler size özel gelse de, çoğu zaman sosyal medya profilinden ya da yakın çevrenizden tahmin edilebilir. Bu tür bilgiler klasik brute force saldırılarına karşı bile bir avantaj sağlamaz, çünkü şifre gerçekten rastgele değildir; saldırganın deneme listesini daraltmasına yarar. Şifreyi hedefleyen kişi tanıdığınız biriyse risk daha da büyür.
Sıkça sorulan sorular
20 karakterlik, sadece harf ve rakamlardan oluşan bir şifre, sembol içeren 10 karakterlik bir şifreden daha mı güvenli? Evet, oldukça büyük bir farkla. Entropi formülünde belirleyici olan uzunluktur. 20 karakterlik alfanümerik bir şifrenin entropisi yaklaşık 119 bit iken, tüm sembol kümesini kullanan 10 karakterlik bir şifrenin entropisi yaklaşık 66 bittir. Bu da 20 karakterlik şifrenin, yaklaşık 9 katrilyon kat daha fazla olası kombinasyona sahip olduğu anlamına gelir.
Güçlü ve benzersiz bir şifreyi ne sıklıkla değiştirmeliyim? Şifre rastgele üretilmişse, sadece o hesaba özgüyse ve ortada bir sızıntı belirtisi yoksa, belirli aralıklarla değiştirmenin güvenlik açısından bir faydası yok. Bir hizmet veri sızıntısı bildirdiğinde, şifreyi benzersiz hale getirmeden önce başka bir yerde de kullandıysanız ya da şifrenin ele geçirildiğinden şüpheleniyorsanız (oltalama, omuz sörfü, ele geçirilmiş bir cihaz), şifreyi hemen değiştirin.
Çevrimiçi şifre oluşturucular güvenli mi? Bu, üretimin nerede yapıldığına bağlı. Bu araç şifreyi tamamen tarayıcınızda, Web Crypto API’nin kriptografik olarak güvenli rastgele sayı üreticisiyle oluşturur. Şifre hiçbir yere iletilmez, dolayısıyla bir sunucunun kaydedebileceği ya da sızdırabileceği hiçbir şey yoktur. Şifreyi sunucu tarafında üretip size sonradan gösteren oluşturuculardan kaçının.
Parola cümlesi nedir ve rastgele bir şifreden daha mı iyidir? Parola cümlesi, rastgele karakterler yerine, diceware yöntemindeki gibi, birbiriyle ilgisiz birkaç rastgele kelimeyi bir araya getirir. Yaklaşık 7.776 kelimelik geniş bir kelime listesinden seçilen, kelime başına yaklaşık 12,9 bit taşıyan dört kelimelik bir parola cümlesi, 40-50 bit veya üzerinde entropiye ulaşabilir. Bunu yazmak ve hatırlamak, eşdeğer rastgele bir diziden çok daha kolaydır. Bir şifre yöneticisini koruyan ana şifre gibi akılda kalıcı bir ana şifre için iyi bir seçenektir; diğer tüm hesaplar için o yöneticide saklanan, üretilmiş rastgele bir şifre aynı uzunlukta daha basit ve daha güçlüdür.
16 karakter yeterince uzunsa sembollere hâlâ ihtiyacım var mı? Entropi formülü açısından bakıldığında evet, sembol karakter kümesini büyüttüğü için her karakterin taşıdığı bit miktarını artırır. 16 karakterlik bir şifrede tüm dört türü kullanmak entropiyi yaklaşık 105 bide çıkarırken, aynı 16 karakteri sadece küçük harfle yazmak çok daha düşük bir entropiye karşılık gelir, tablodaki “691 yüzyıl” ile “697,8 milyar yüzyıl” arasındaki fark tam da bundan kaynaklanıyor. Ama bir site sembollere izin vermiyorsa ya da siz elle yazmak zorundaysanız, uzunluğu birkaç karakter daha artırmak kaybı büyük ölçüde telafi eder.