İçeriğe atla
0 XP 0
← Blog
Güvenlik

Şifreler Nasıl Kırılır? Parolalar Neden Hızlı Düşer

Şifreler nasıl kırılır, neden bazıları saniyeler içinde düşer? Hash, tuzlama, brute force ve sözlük saldırısını öğren, kırılmayan şifreyi kur.

Yazan: AltaySec AkademiSon güncelleme: 6 dk okuma

Şifreler nasıl kırılır sorusunun kısa cevabı şu: saldırgan şifreni tahmin etmez, sızmış bir veritabanındaki şifre özetlerini ele geçirir ve milyarlarca tahmini kendi bilgisayarında dener. Kısa, tahmin edilebilir ya da başka sitede de kullanılmış şifreler bu denemede hızla düşer. Uzun, rastgele ve yavaş bir özet fonksiyonuyla saklanan şifre ise pratikte kırılamaz hâle gelir.

Şifreler nasıl kırılır, saldırgan neyi ele geçirir?

Şifre kırma iki farklı ortamda olur. Hangisinde olduğu, saldırganın hızını belirler.

TürNasıl olurSınırı ne
Çevrim içi tahminSaldırgan giriş ekranına şifre denerSitenin deneme sınırı, kilitleme ve iki adımlı doğrulama
Çevrim dışı kırmaSızan veritabanındaki şifre özetleri saldırganın bilgisayarında denenirYalnız donanımın gücü ve özet fonksiyonunun yavaşlığı
Kimlik bilgisi doldurmaBaşka sitede sızmış e-posta ve şifre çifti doğrudan denenirHer hesapta farklı şifre kullanılması

Çevrim içi tahmin yavaştır. NIST, doğrulayıcıların art arda en çok 100 başarısız denemeye izin vermesini şart koşar. Asıl tehlike çevrim dışı kırmadır. Veritabanı bir kez sızdığında saldırgan istediği kadar deneme yapar ve sitenin hiçbir haberi olmaz.

Kimlik bilgisi doldurma ise kırma bile gerektirmez. Bir sitede sızan şifren, aynı şifreyi kullandığın her hesabı açar. Sızıntıda geçip geçmediğini şifre sızıntısı kontrol rehberiyle öğrenebilirsin.

Sistemler şifreni nasıl saklar?

İyi tasarlanmış bir sistem şifreni olduğu gibi saklamaz. Şifreyi tek yönlü bir fonksiyondan geçirir ve çıkan özeti, yani hash değerini saklar. Girişte yazdığın şifrenin özeti yeniden hesaplanır ve kayıtlı özetle karşılaştırılır.

Tek yönlü olmak, özetten şifreye doğrudan dönülemeyeceği anlamına gelir. Ama saldırgan geri dönmeye çalışmaz. Olası şifreleri tek tek özetler ve sonucu çalınan özetle karşılaştırır. Eşleşme bulduğu anda şifren ortaya çıkar. Özetin nasıl çalıştığını ve MD5 ile SHA farkını hashing nedir yazısında anlattık.

Brute force nedir, sözlük saldırısından farkı ne?

Saldırgan tahminlerini rastgele seçmez. Yöntemler en olası şifreden en zora doğru sıralanır:

  • Sözlük saldırısı: Önceki sızıntılardan derlenmiş milyonlarca gerçek şifre denenir. "123456", "qwerty" ya da bir takım adı ilk dakikada düşer.
  • Kurallı sözlük: Aynı liste, insanların sık yaptığı değişikliklerle genişletilir: sona yıl eklemek, ilk harfi büyütmek, "a" yerine "@" yazmak.
  • Brute force (kaba kuvvet): Belirli uzunluktaki bütün karakter birleşimleri sırayla denenir. Yalnız kısa şifrelerde pratiktir.
  • Parola püskürtme: Az sayıda yaygın şifre, çok sayıda hesaba denenir. Hesap kilitleme sınırına takılmamak için kullanılır.

Bu saldırıların giriş ekranına karşı nasıl yürütüldüğünü ve savunulduğunu Hydra ve brute-force yazısında bulabilirsin. Başkasına ait bir sisteme izinsiz şifre denemek suçtur. Bu teknikleri yalnız kendi laboratuvarında ya da izinli ortamlarda öğren.

Uzunluk neden karmaşıklıktan daha önemli?

Her eklenen karakter, olası birleşim sayısını çarpar. Aşağıdaki tabloda bir varsayım kullandık: hızlı ve tuzsuz bir özet fonksiyonuna karşı saniyede 10 milyar tahmin yapan bir saldırgan. Süreler, bütün olasılıkları denemek için gereken en uzun süredir ve yalnız rastgele seçilmiş şifreler için geçerlidir.

ŞifreOlası birleşimBütün olasılıkları denemek
8 küçük harfyaklaşık 2,1 × 10¹¹yaklaşık 21 saniye
8 karakter, tüm klavyeyaklaşık 6,6 × 10¹⁵yaklaşık 8 gün
12 küçük harfyaklaşık 9,5 × 10¹⁶yaklaşık 110 gün
5 rastgele kelime (7.776 kelimelik listeden)yaklaşık 2,8 × 10¹⁹yaklaşık 90 yıl
15 küçük harfyaklaşık 1,7 × 10²¹yaklaşık 5.300 yıl

Tablo iki şeyi gösterir. Birincisi, uzunluk karmaşıklıktan çok daha fazla korur. İkincisi, bu hesap yalnız rastgele şifreler için geçerlidir. İnsanın seçtiği "Galatasaray1905*" gibi bir şifre on altı karakter olsa da sözlükte ve kurallarda saniyeler içinde bulunur.

NIST'in güncel rehberi de bu yüzden tek başına kullanılan şifreler için en az 15 karakter ister ve karakter türü karıştırma zorunluluğunu yasaklar.

Tablodaki süreler en kötü saklama yöntemi için hesaplandı. Şifre Argon2id ya da bcrypt gibi yavaş bir fonksiyonla saklanıyorsa her tahmin bilerek pahalı hâle gelir. Saldırganın saniyedeki deneme sayısı birkaç kat değil, büyüklük mertebeleriyle düşer ve aynı şifre çok daha uzun süre dayanır.

Tuzlama ve yavaş özet fonksiyonları neyi değiştirir?

Şifrenin kırılma hızını kullanıcı kadar onu saklayan sistem de belirler.

Saklama yöntemiNe olurSızıntıda sonuç
Düz metinŞifre olduğu gibi tutulurHemen okunur
Tuzsuz hızlı özet (MD5, SHA-256)Aynı şifre aynı özeti üretirHazır tablolar ve hızlı donanımla toplu kırılır
Tuzlu hızlı özetHer kayda rastgele tuz eklenirHazır tablolar işe yaramaz, deneme hâlâ hızlı
Tuzlu yavaş özet (Argon2id, scrypt, bcrypt)Her deneme bilerek pahalı yapılırDeneme maliyeti katlanarak artar

OWASP'ın parola saklama rehberi, SHA-256 gibi hızlı özet fonksiyonlarının parola için uygun olmadığını yazar, çünkü grafik işlemciler bu hesaplamayı çok ucuza yapar. Önerilen ilk seçenek Argon2id'dir: en az 19 MiB bellek, 2 yineleme ve 1 paralellik derecesi. Eski sistemlerde bcrypt kullanılıyorsa iş faktörü en az 10 olmalıdır. bcrypt çoğu uygulamada 72 baytı aşan girdiyi dikkate almaz. FIPS uyumu gerekiyorsa PBKDF2-HMAC-SHA256 için 600.000 yineleme önerilir.

NIST de şifrelerin tuzlanıp uygun bir parola özetleme yöntemiyle saklanmasını ve tuzun en az 32 bit olmasını şart koşar. Bu işi uygulamalı görmek istersen laboratuvarda bir veritabanı kaydındaki şifrenin gerçek hâlini inceleyebilirsin.

Geliştiriciysen şifreleri nasıl saklamalısın?

Kendi uygulamanda kullanıcı şifresi tutuyorsan kırılma hızının büyük kısmı senin kararlarına bağlıdır. NIST ve OWASP rehberlerinden çıkan kısa kontrol listesi:

  • Şifreyi asla geri açılabilir biçimde şifreleme ve düz metin tutma. Tuzlu, yavaş bir özet kullan. Argon2id ilk tercihtir.
  • Kendi özetleme yöntemini icat etme. Dilinin olgun bir kütüphanesini kullan.
  • Yeni şifreleri sızmış ve yaygın şifreler listesiyle karşılaştır, listedeyse reddet.
  • En az 64 karakterlik şifreye izin ver, girilen şifreyi kırpma.
  • Başarısız denemeleri sınırla ve şüpheli girişleri günlüğe yaz. Şifrenin kendisini hiçbir günlüğe yazma.
  • Eski ve hızlı özetlerle saklanan kayıtları, kullanıcı bir sonraki girişini yaptığında modern yönteme taşı.

Şifreni kırılmaktan nasıl korursun?

Sistemin şifreni nasıl sakladığını seçemezsin. Ama kendi payını tamamen kontrol edebilirsin:

  1. Her hesaba ayrı şifre ver. Kimlik bilgisi doldurmayı tek başına durdurur.
  2. Uzun ve rastgele şifre kullan. Parola yöneticisinin ürettiği 20 karakterlik rastgele bir şifre ya da birbiriyle ilgisiz beş kelime yeterlidir. Yöneticileri parola yöneticisi rehberinde karşılaştırdık.
  3. İki adımlı doğrulamayı aç. Şifren kırılsa bile ikinci adımı geçemeyen kişi giremez.
  4. Destekleyen hesaplarda passkey kullan. Passkey'de kırılacak bir şifre özeti yoktur.
  5. Sızıntı uyarılarını takip et. Şifren bir sızıntıda çıkarsa o şifreyi her yerde değiştir.

Şifreyi takvime göre değiştirmek bu listede yok. NIST bunu artık yasaklıyor. Nedenini ve hangi durumda değiştirmen gerektiğini şifre ne sıklıkla değiştirilmeli yazısında anlattık.

Bir şirketin veritabanı sızdıysa şirketin de yükümlülükleri vardır. Türkiye'de veri sorumlusu ihlali öğrendikten sonra gecikmeksizin ve en geç 72 saat içinde Kurul'a bildirir. Ayrıntıları KVKK veri ihlali bildirimi yazısında bulabilirsin.

Kaynaklar

Sık sorulan sorular

Brute force nedir?

Brute force, yani kaba kuvvet saldırısı, bir şifreyi bulmak için olası bütün karakter birleşimlerini sırayla denemektir. Kısa şifrelerde hızlı sonuç verir, uzunluk arttıkça gereken süre katlanarak büyür. Gerçek saldırılarda genellikle önce sızmış şifre listeleri ve onların türevleri denenir. Başkasına ait sisteme izinsiz denemek suçtur.

Hash ile şifreleme aynı şey mi?

Değil. Şifrelemede veri anahtarla geri açılabilir. Hash ise tek yönlü bir özettir ve geri çevrilmesi amaçlanmaz. Bu yüzden iyi tasarlanmış bir sistem şifreni saklamaz, onun tuzlanmış özetini saklar. Girişte yazdığın şifrenin özeti yeniden hesaplanır ve kayıtlı özetle karşılaştırılır. Şifreni unutursan sistem eskisini söyleyemez, yenisini belirlemeni ister.

Tuz (salt) şifremi nasıl korur?

Tuz, her şifreye özetlenmeden önce eklenen rastgele bir değerdir. Aynı şifreyi kullanan iki kişinin kaydı bu sayede farklı özet üretir. Saldırgan hazır özet tablolarını kullanamaz ve her kaydı ayrı ayrı denemek zorunda kalır. NIST, tuzun en az 32 bit olmasını şart koşar. Tuzun gizli olması gerekmez, benzersiz olması yeter.

Kimlik bilgisi doldurma (credential stuffing) nedir?

Bir sitenin sızıntısından çıkan e-posta ve şifre çiftlerinin, otomatik araçlarla başka sitelerde denenmesidir. Şifre kırmaya gerek kalmaz, çünkü kullanıcı aynı şifreyi birçok yerde kullanmıştır. En etkili korunma her hesaba ayrı şifre vermek ve iki adımlı doğrulama açmaktır. Hizmet sağlayıcılar da sızmış şifreleri kayıt sırasında reddetmelidir.

Şifremi düzenli olarak değiştirmem kırılmasını önler mi?

Önlemez. Sızan bir şifre genellikle hemen denenir, aylar sonra yapılan değişim zararı geri almaz. NIST güncel rehberinde takvime bağlı zorunlu değişimi yasaklar ve değişimi ele geçirilme kanıtına bağlar. Kırılmayı asıl önleyen şey uzun, rastgele ve yalnız o hesaba ait bir şifre ile iki adımlı doğrulamadır.

  • parola kırma
  • hash
  • tuzlama
  • brute force
  • Argon2
  • parola güvenliği

İlgili yazılar

Okuduğunu uygula.
Yollarda ders ders ilerle, alıştırmalarla pekiştir.
Başla