Sözlük saldırısı – Kapsamlı Operasyon

Project reference document Time2Crack
Recipients: geliştiricileri, güvenlik araştırmacıları, gelişmiş kullanıcılar

İçerikler

  • Genel Bakış Genel Bakış Genel Bakış Genel Bakış Genel Bakış Genel Bakış Genel Bakış Genel Bakış
  • Tarihsel ve akademik arka plan
  • Kavramsal temeller: Neden sözlükler çalışma
  • Modern bir sözlük saldırısının mimarisi
  • Gerçek şifrelerin korpusu
  • K-Anonymity HIBP doğrulama: Gerçek zamanlı bir saldırı
  • Time2Crack Language Wordlists
  • Time2Crack'de Çeviri: isDictWord()
  • De-leetification: saldırgan decodes substitutions
  • Kırılma süresini hesaplamak: addDictionaryAttacks()
  • Yüksek sadakat kalibrasyonu: applyHighFidelityCalibration()
  • Örnekleme ve güven puanı
  • Bloom filtre RockYou: yaygın şifrelerin yerel tespiti
  • Türlü saldırıların karşılaştırması
  • Saldırı sözlüğü
  • Etkili savunmalar
  • Referanslar Referanslar

  • 1. Genel bakış

    Sözlük saldırısı, en eski şifre çatlakları yöntemi, en basit kavramsal olarak ve istatistiksel olarak en etkili gerçek insan şifrelerinin çoğunluğu üzerinde test etmektir. prensibi test etmektir, olasılık sıralaması, adayların önceden belirlenmiş bir listesi - ham güç olarak tüm olası kombinasyonlar.

    Neden korkunç etkili İnsanlar şifrelerini rastgele seçmez.Veri sızıntılarının Decadesleri, şifrelerin gerçek dağılımının son derece yoğun olduğunu ortaya çıkarır: en yaygın 1.000 şifre, tüm online hesapların yaklaşık 5 ila% 10'unu temsil eder.En yaygın 1 milyon kapak 40 ila 60.

    Time2Crack, sözlük saldırı modelleri iki ayrı ama tamamlayıcı mekanizmalar:

  • HIBP doğrulama (Pwnedildim: Şifrenin -14 milyar eşsiz kimliklerin tarihsel veri sızıntılarından silinmesi. Eğer şifre varsa, bir saldırgan bunu ikinci bir parçada keşfedecektir.
  • Dil Bilgisi Ortak bir dil kelimesi - "sun" veya "sunshine" - HIBP'de olmasa bile savunmasızdır.
  • Bu iki algılama bağımsız ve tamamlayıcıdır: HiBP tam uzlaşma bilgilerini kapsar, kelime listesi henüz sızdırılmamış olan ortak kelimeleri kapsar.


    2. Tarihsel ve akademik arka plan

    2.1 Origins

    Sözcü saldırı, bilgisayar güvenliğinin modern çağından önce gelir. İlk Unix sistemleri açık dilde parolaları depoladı /etc/passwdDosyanın erişilebilir olduğu kadar herhangi bir sözlük saldırısı yapmak.

    Chronology ofroads : YılEvent Event Event - ►- !!! 1979 1979 1979Morris & Thompson: İlk akademik makale Unix şifre güvenliği üzerinde. Şifrenin 1/3'ünün ortak İngilizce kelimeleri seçmediğini görün 1988 1988 1988Morris Worm: kısmen 432 kelime sözlüğü + host /usr/share/dict/words 1993 1993 1993 1993 1993 1993Crack 5.0 (Alec Muffett): İlk kamu sözlüğü Unix üzerinde saldırı aracı, mutasyon kuralları içerir 2000 2000 2000 2000John the Ripper: hashcat kuralları (wordlist + kurallar modu) ile birleştirilmiş kelime listelerini popülerleştiriyor 2009 2009 2009RockYou sızıntı: 14.3 milyon açık şifre insan seçimlerinin gerçek dağıtımını ortaya koyuyor 2012 2012 2012I Been Pwned (Troy Hunt): İlk kamu denetim hizmeti uzlaşmak için 2013 2013 2013 2013Adobe molası: 153 milyon hesap – üst şifreler, belirsiz hashs üzerinde bile frekans analizi ile tanımlanabilir 2016Hashcat açık kaynak v3.0: GPU'daki kelime listelerinin büyük optimizasyonu (MD5: 2 TH /s on 8 GPU küme) 2019 2019 2019 2019Koleksiyon #1-5: 2.7 milyar giriş / kelime çiftleri derlenmiş, halka açık dağıtılmış 2024HIBP v8: -14 milyar eşsiz şifre indekslendi

    2.2

    Bazı sızıntılar, insan şifrelerinin gerçek dağıtımını ortaya koyan sözlüğün görünümünü değiştirdi:

    RockYou (2009) Bir geliştirici, standart dilde 14.3 milyon şifre depoladı.
  • İlk 10 şifreyi kapladı - hesapların% 5'i
  • İlk 1.000: - hesapların% 20'si
  • Dağıtım bir güç kanununu takip eder – insanların “aynıyı düşünmesini” onaylayın
  • LinkedIn (2012) - 6.5 milyon dolarlık SHA-1. Adobe (2013) - 153 milyon hesap. I Been Pwned (2013-günüm) - Halk sızıntılarının progresyonu, Troy Hunt'ın dünya çapında kullanılan bir referans üssü oluşturmasına izin veriyor.

    2.3 Words Attack için Referans Benchmarks

    Bir RTX 4090 hızında test edilen 200.000 giriş listesi:

    AlgorithmHız Hız Hız Hız200k aday için zaman - !!!►- !!! MD5168.9 GH /s~1,2 nanosaniye SHA-150.86 GH /s~3.9 nanosaniye SHA-25622.68 GH /s~8.8 nanosaniye NTLM288.5 GH /s-0,7 nanosaniye bcrypt (cost 5)184 kH /s~1.09 ikinci Argon2id~67 H /s~50 dakika

    Sözlük saldırısı bu nedenle MD5, SHA-1 ve NTLM için neredeyse anındadır - ve küçük listelerde bile çok hızlı kalır.


    3. Kavramsal temeller: Neden sözlük işleri

    3.1 İnsan Şifrelerinin Güç Yasası

    Tüm ampirik çalışmalar aynı gözleme yakınlaşır: insan şifrelerinin dağılımı üniforma değildir - takip eder Güç yasası (Zipf) Bazı şifreler seçimin disproportionate bir kısmını yoğunlaştırır.

    Formally : Tüm şifreler frekansı azaltarak sınıflandırılırsa, sıralama parolasının frekansı r orantılıdır. ^ (-α) ile birlikte α 1.5 ila 2 Korpus'a göre.

    Doğrudan sonuç: En yaygın 10 şifre Sadece 10 adayı test eden bir saldırgan, 20'de başarılı olma şansına sahiptir - istatistiksel olarak, üretilen gürültü miktarı için büyük.

    3.2 Şifre Yaratılışında Bilişsel Bias

    İnsanlar rastgele seçim yapmazlar. Şifrelerini öngörülebilir hale getiren sezgiselleri sistematik olarak uygularlar:

  • Memory Bias : Hatırlamak kolay kelimeler (ortak isimler, ilk isimler, popüler kültür koşulları) aşırı temsil edilir
  • Kullanılabilirlik Bias Şifre hemen çevreyi yansıtıyor (domestic hayvan adı, spor takımı, seri karakter)
  • Predictable substitution önyargılar : "e" → "3", "a" → "@", "o" → "0" - kullanıcı, şifrenin güçlü olduğuna inanıyor, ancak bu kurumlar tam olarak saldırganın yapmaya çalıştığı ilk şeydir.
  • Tamam Bias Bir kelimenin sonunda bir sayı veya sembolün eklenmesi (password1, güneş!)
  • Kültürel önyargı Yaygın şifreler kullanıcının dili ve kültürü ile bağlantılıdır ("Soleil123", Almanya'da "Sommer123").
  • 3.3 Listelerde zaten "password" kavramı

    Bir şifre iki farklı nedenden ötürü bir saldırı listesinde olabilir:

    Sebep 1 - O HIBP'de Son bir sızıntıda tam teşhir edilmiştir. saldırganın tahmin etmesi gerekmez - bir tane tarafından bilinen kimlikleri test eder, frekans siparişinde.Eğer hedef sunucu haçlı kabul ederse, bitti. Sebep 2 - Bir dilsel kelime listesinde Şifre sıradan bir kelime kelimesidir. Hiç kaçmıyor olsa bile, tüm saldırı kelime listelerindedir, çünkü açık bir adaydır. "Paillon" HiBP'de olmayabilir, ancak Fransız kelime listesinde ciddi bir çatlaklar aracı değildir.

    Bu iki vaka farklı bir doğanın saldırılarına karşılık gelir, farklı hızlarla - ve bu tam olarak Time2Crack modellerinin ne olduğudır.


    4 Modern bir sözlük saldırısının mimarisi

    4.1 Genel boru hattı

    Modern bir sözlük saldırısı birkaç aşamada gerçekleşir:

    Phase 1 : Constitution de la wordlist
        ├── Mots de passe fuités (HIBP, RockYou, Collections)
        ├── Wordlists linguistiques (dictionnaires, prénoms, lieux)
        ├── Wordlists thématiques (sport, pop culture, tech, religion)
        └── Wordlists contextuelles (domaine de l'entreprise cible, noms d'employés)
    

    2. Aşama 2: Wordlist Preprocessing - Sık sık (en büyük olasılıkla ilk) - Deduplication (aynı adayı iki kez değil) - Uzunluk filtrasyon (hedef uzunluğu + ±2) - Standardizasyon (düşük, Unicode NFC)

    Aşama 3: Candidate Hashs Her aday için kelime listesinde: hashaday = hashAlgo (w) Promosyon │ eğer varsaAday== hashhHedef: FINDED - Hız: RTX 4090'da MD5 için 168 GH /s

    Aşama 4: Sonuçlar Analizi Çevik şifreler Raporu, kapsama istatistikleri

    4.2 Donanım optimizasyonu

    Modern sözlük saldırıları GPU üzerinde çok paraleldir:

  • Hashcat (reference aracı): GPU'nun CUDA çekirdeklerini milyarlarca paralelleştirmek için kullanır
  • Vector Boru Hattı : RTX 4090'da, tek bir SIMD talimat 8 ila 16 MD5 paralellik hesaplar
  • GPU önbelli : Kelime listesi VRAM'da bellek gecikmesini en aza indirmek için yüklenir
  • Batching Batching : Adaylar, akışı en üst seviyeye çıkarmak için GPU'ya gönderilir
  • Bir kelime listesi için 14 milyar giriş (HIBP büyüklüğü) 12× RTX 4090:

  • MD5: 14e9 / (168.9e9 × 12) 6.9 saniye
  • bcrypt 5 maliyeti: 14e9 / (184000 × 12) 6,337 yıl
  • MD5 ile bcrypt arasındaki büyüklüğün 9 siparişinin bu farkı neden hash algoritmasının seçiminin kritik olduğunu açıklıyor.

    4.3 Adayların Test siparişi

    Kelime listesi alfabetik sırayla test edilmez - bu olasılık azaltılabilir :

  • En yaygın kaçış şifreleri (RockYou top 100)
  • Common multi-fault şifreleri (HIBP önceliği listesi)
  • Hedef dilinin ortak sözleri
  • Doğru isimler (ilk isimler, şehirler, ünlüler)
  • Hedefle ilgili tematik terimler
  • Variations and conjugations
  • Bu tür, şifrenin "düşü" olup, ilk milisaniyelerde bulunulmasını sağlar - ne olursa olsun hız.


    5. Gerçek şifrelerin korpusu

    5.1 (HIBP)

    Boyut Boyutu -14 milyar eşsiz şifre (2024) Kaynak Kaynağı : 2013 yılından beri kamu sızıntılarının birleştirilmesi. Format Format : SHA-1 görünüşe göre sıralandı Public access : k anonim API, savunucuları için mevcut full hash indir

    HiBP küresel referanstır çünkü:

  • Neredeyse tüm büyük kamu sızıntılarını kapsar
  • Kargalar frekans tarafından sıralanır - en yaygın şifreler ilk önce test edilir
  • Aktif olarak korunur (yeni sızıntılar sürekli eklenir)
  • Tam HIBP çöpe sahip bir saldırgan ilk olarak frekans siparişinde ~14 milyar adayı test edebilir. Olmayan algoritmalar için (MD5, SHA-1), bu liste tüm gerçek online şifrelerin% 50'sini kapsar.

    5.2 RockYou (2009) – Korpus

    Boyut Boyutu 14.3 milyon açık şifre Anahtar özellikleri : Rank Rank Rank Rank Rank RankŞifre ŞifreOccurrencesKorpus % - ►---- ►---- ►---- ► 1 1 1123456290 7312.03% 2 21234579% 0,5 3 312345678976 790% 0.54% 4 4 4şifre şifre şifre59 4620.42% 5 5iloveyou49 9520.35% Top 10– –-650,000~4.5% Top 100– –~1 200 0008.4% Top 1 000– –~2 500 000 000~17.5% Top 10.000– –~4 500 000~31.5% Eğitim Eğitimi Sadece 10.000 adayı test edin (100 μs MD5 hız) uzlaşmalar - MD5 koruma hesabının veri tabanının% 31'i.

    5.3 Özel kelime listeleri

    SecLists (Daniel Miessler): 4 GB kelime listelerinin açık kaynak koleksiyonu:
  • Şifreler (RockYou, üst şifreler çeşitli sızıntılar)
  • Mevcut kullanımlar
  • Şifreler dil tarafından sıralanır
  • Teknik terimler, ürün isimleri, ünlüler
  • Kaonashi : 1.3 milyar giriş kelime listesi kamu sızıntılarından bu yana derlenmiş Crackstation : Tüm Wikipedia sözlüklerinden gelen kelimeler dahil 1.5 milyar giriş Weakpass : ~8 milyar tek gerçek şifre girişi

    Bu korpuslar halka açık olarak indirilebilir - onların varlığı saldırgan güvenliğin kurulmuş bir gerçeğidir.


    6. K-Anonymity Verification HIBP: Gerçek Zamanlı Saldırı

    6.1 Protokolü k anonim

    Time2Crack, bir saldırganın HIBP veritabanı ile ne yapacağını tam olarak tekrarlayan gerçek zamanlı bir HIBP kontrol içerir - ancak asla parolayı düz dilde veya tam hash ile iletmez.

    K-anonymity protokolü aşağıdaki gibi çalışır:

    1. Calculer SHA-1(password)      → par exemple "CBFDAC6008F9CAB4083784CBD1874F76618D2A97"
    
  • Sadece HIBP API'ye ilk 5 karakter gönderin: "CBFDA"
  • API, "CBFDA" ile başlayan TÜM SHA-1 eklerini döndürür (yaklaşık 400-600 hashes)
  • Arama yerel olarak eğer geri kalanlar ise (C6008F9CAB4083784CBD1874F76618D2A97) listededir.
  • Eğer bulunursa: şifre uzlaşmaz sayılır (HIBP aynı zamanda sızıntı sayısını döndürür)
  • Gizlilik Garantisi HIBP sunucusu asla tam hash'ı görmez (bu yüzden şifreyi tanımlayamaz), açık şifreyi yalnız bırakın. Son hesaplama yerel olarak yapılır. Bu saldırı için ne anlama geliyor : HIBP yüksek bir sayıyla bir maç döndürürse (örneğin 9,547,236 "123456" için görünüşler), bu, HIBP veritabanı testi ile bir saldırganın onu listedeki çok yüksek bir pozisyonda bulduğu anlamına gelir - nanosaniyelerin bir kısmında.

    6.2 Time2Crack'de Uygulama (app.js)

    HIBP check, asynchronous and non-blocking. şifre hemen yerel yöntemler tarafından analiz edilir ve HIBP kontrolü sonucu tamamlar:

    // Pseudo-code simplifié
    async function checkHIBP(password) {
      const sha1 = await sha1Hash(password);
      const prefix = sha1.substring(0, 5);   // 5 premiers chars
      const suffix = sha1.substring(5);       // reste du hash
    

    Sınırlı yanıt = bekleme ((() https://api.pwnedpasswords.com/range/${prefix} ); Sınırlı hatlar = yanıt bekliyor.text();

    (Sekiz hattı) için [hashSuffix, sayı] = line.split () If (hashSuffix.toLowerCase() = suffix.toLowerCase()) Geri dönüş parseInt (saygı); // sızıntı sayısı } } iade 0; // bulunamadı }

    HIBP performans verileri :
  • Tipik API latency: 50-200 ms (network)
  • Suf eklerinin hacmi geri döndü: ~400-600 per query
  • Yanlış pozitif: 0 (SHA-1 deterministic)
  • Yanlış negatif: 0 (Eğer HiBP’de olursa, her zaman geri döndü)
  • 6.3 Kont HIBP

    HiBP tarafından iade edilen sayı, bu tam şifrenin indekslenmiş sızıntılarda ortaya çıktığını gösteriyor:

    KontYorumCrack zamanı (MD5, 12× RTX 4090) - ►-- !!! > 1 000 000 000Top 100 World< 1 nanosaniye 10.000-1,000,000Çok yaygın< 10 nanosaniye 1 000-10 000Common Common Common Common Common< 100 nanosaniye 100-1,000Uncommon ama bilinen< 1 mikrosaniye 1–100Nadir ama uzlaşmacı< 10 mikrosaniye

    1'in bir sayısı bile (kullanıcı sadece bir kez ortaya çıktı) bir kırılganlığa işaret ediyor: Bir saldırgan bu hesabı özellikle hedef alıyorsa ve sorudaki sızıntının kimliklerine sahip olacak, onu bulacak.


    7. Time2Crack Language Wordlists

    7.1 Neden dil kelime listeleri HIBP'ye ek olarak

    HiBP tam uzlaşma bilgilerini kapsar - ancak ortak kelimeler henüz tükenmez. Bir frankophone kullanıcısı, bir şifre olarak "ephemeral"i seçen bir kullanıcı HiBP'de olmayabilir (söz anglophone kimliklerinde olası değildir), ancak bir frankofon sistemini hedef alan herhangi bir saldırıcunun Fransızca kelime listesindedir.

    Time2Crack'in dil kelime listeleri bu boşluğu kaplar:

    Dil DiliKaynak KaynağıTahmin edilen boyut --- ►--- ►- İngilizce İngilizce İngilizce EnglishSecLists Wikipedia EN~200,000 giriş Fransız (fr)SecLists Wikipedia EN~150.000 giriş İspanyolca İspanyolca İspanyolcaSecLists Wikipedia ES~150.000 giriş Portekiz (pt)SecLists Wikipedia PT1.000 giriş Alman Alman AlmanDinle Wikipedia DE~180.000 giriş Türkçe (tr)SecLists Wikipedia TR~100,000 girişi İtalyan (it)kkrypt0nnnn~100,000 girişi Polonya (pl)kkrypt0nnnn~80 000 giriş Hollanda (nl)kkrypt0nnnn~80 000 giriş Uygulanan Filtreleme Sadece ≥ 4 karakterin sözleri korunmuştur ( 1-3 karakter gerçekçi bir şifre olmak için çok kısadır ve onların dahil edilmesi listeyi ek değer olmadan şişirecektir).

    7.2 Lazy yükleme

    Wordlists koda dahil edilmez - dil değiştiğinde, ağ bütçesiyle tanışmak için talep üzerine yüklenir:

    // app.js - loadDictionary()
    async function loadDictionary(lang) {
      if (DICTlang & DICTWORDS) return;  // Déjà chargé
      if (DICTLOADING)
    DICTPENDINGLANG = lang; // Dosyayı Bekliyor
    Geri dönüş;
    }
    DICTLOADING = true;
    

    Kısıt res = Beklenirdata/wordlists/${lang}.txt); Sınırlı metin = res.text();

    // Set<string> for O(1) lookup DICTWORDS = yeni Set(((Yeni Setler) metin.split("\n") .map(wken w.normalize("NFC")trim().toLowerCase()) .filter(wlan w.long >= 4) ); DICTLANG = Lang; DICTLOADING = false; }

    Neden Bir Şey Set ?? Yapı Yapısı Set JavaScript, O(1) görünümleri garanti eder - sözlük büyüklüğüne bakılmaksızın (50.000 veya 200.000 giriş), doğrulama doğrulama DICTWORDS.has(word) Aynı sürekli zaman alır. Array O(n) per lookup, i.e. up to 200,000 karşılaştırmas per check.

    Yükleniyor kuyruk

    The The The The The The The The DICTPENDINGLANG Hızlı dil değişiklikleri sırasında yarış koşullarını önlemek:

    Scénario : l'utilisateur switche rapidement EN → FR → DE
    ├── EN demandé : DICTLOADING = false → getin başlangıcı EN
    Satın alma sırasında talep edilen DICTLOADING = true → DICTPENDINGLANG = "fr"
    ├── DE demandé pendant fetch EN : DICTLOADING = true → DICTPENDINGLANG = "de" (crash "fr")
    - Fetch Ends: DICTLANG = "en", puis lance loadDictionary("de")
    └── Résultat : seule la dernière langue demandée est chargée

    Bu davranış kasıtlıdır: Son zamanlarda istenen dil yüklenir, tüm orta diller değil.


    8. Time2Crack içinde Sözlük: isDictWord()

    8.1. Tespit işlemi

    fonksiyon isDictWord(pw) Bir şifrenin mevcut bir sözlüğe ait olup olmadığını belirler:

    // app.js - ligne 2181
    function isDictWord(pw) {
      if (!DICT(WORDS) sahte geri döner;
    

    // Standardizasyon: NFC + Lowercase l = pw.normalize("NFC")toLowerCase();

    // Doğrudan doğrulama Eğer (DICT)

    WORDS.has(l) || DICTWORDS.has(deLeet(pw) gerçek geri döndü;

    // Morpholojik varyasyonlar Cont deleetWord = deLeet(pw); Karşılaştırmalar = getMorphVariations (deleetWord);

    Çünkü (konst varyasyonu) { Eğer (DICT)

    WORDS.has(variation)) return true; }

    Sahte geri dönüş; }

    3 katman algılama hattı :
  • Doğrudan yazışma : Sözlükteki standart şifre, olduğu gibi mi?
  • "sun" → doğrudan hit
  • "SOLEIL" → "sun" → hit
  • After-leetification yazışma Şifre standart ayrıcalıklar içeriyor mu?
  • "s0l3il" → deLeet → "sun" → hit
  • "p@sw0rd" → deLeet → "password" → hit
  • Morpholojik varyasyonlar : Bilinen morfolojik bir değişken midir?
  • "sun" → "sun"un çoğu varyasyonu
  • "passwords" → "password" → hit
  • 8.2 Unicode Standardizasyon (NFC)

    Standartlaştırma normalize("NFC") aksanlı karakterlerin sürekli tedavi edilmesini sağlar:

  • "e" tek bir nokta kodu (U+00E9) veya "e" + aksan (U+0065 + U+0301) olarak Unicode'da temsil edilebilir.
  • Standartlaştırma olmadan, "coffee" ve "coffee" (farklı kodlamalar) eşleşmeyecekti
  • Bu standartlaşma hem sözlüğü hem de kontrol ederken uygulanır - aksan dilleri için doğru yazışmalar sağlar (FR, ES, DE, PT vs.).

    8.3 kırılganlık üzerindeki etkisi tespit edildi

    When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When When isDictWord() Go back back back trueBirkaç saldırı uygulanabilir:

  • Sözlük saldırısı Kendi: güven puanı 0.85 (vs 0 yok)
  • Hibrit saldırı : hybridVuln = true → sözlük temelinde test edilen 1000 mutasyon
  • PCFG saldırısı : Artan güven puanı (lexical base detect)
  • Morpholojik saldırı : morfolojik değişken tespit edilirse yüksek öncelik

  • 9. De-leetification: saldırgan decodes substitutions

    9.1 Leetspeak ve sınırlamaları koruma olarak

    Leetspeak (veya "1337 konuşma") görsel benzer sayılar veya sembollerle mektupların değiştirilmesi uygulamasıdır: a→@, e→3, i→1 veya !, o→0, s→$. Kullanıcılar bunu "güçlü" ortak kelimeler için kullanır.

    Örnek Örnek Örnek Örnek Örnek Örnek Örnek "password" → "p@$w0rd"

    Gerçek: Bu alt kurumlardır Uygulanan ilk kurallar Herhangi bir sözlükte mutasyon kuralları ile saldırıya uğrarlar. yetkili bir saldırgana karşı gerçek bir savunma oluştururlar.

    9.2 Uygulamanın uygulanması deLeet() Time2Crack

    // app.js - ligne 3622
    const LEETBASE = {
    A: ["@", "4"]
    E: ["3"]
    O: ["0"]
    s: ["$", "5"]
    T: ["+", "7"]
    ["#"]
    ["9"]
    =
    

    LeetWith(pw, oneMap) r = pw.normalize("NFC")toLowerCase(); (Resimler, geri dönüşler)

    BASE)) for (const c of reps) r = r.split(c).join(ch); // Appliquer la résolution ambiguë (i ou l) en dernier for (const [ch, reps] of Object.entries(oneMap)) for (const c of reps) r = r.split(c).join(ch); return r; }

    Leet(pw) işlevi // Belirsizlik: "1" veya "l" olabilir I = deLeetWith(pw, { i: "1!", l: " L = deLeetWith(pw, { l: "1", i: "!"

    // Eğer sözlük yüklenirse, bu maçları tercih edin Eğer (DICT)WORDS) Eğer (DICT)WORDS.has (L ile)L ile geri döndü; Eğer (DICT)WORDS.has(WithI) I ile geri döndü; }

    // Aksi takdirde: en az kalan sayılarla değişkeni tercih edin I = (WithI.match (/\d/g) s.) Geri dönüş sayısal L < = sayısal I? withL: withI; }

    9.3 Belirsizlik Yönetimi "1" → "i" veya "l"

    Alt kurum "1" belirsizdir: "1" "i" (örneğin "1nfo" → "info" veya "l" (as in "p1ayer" → "player") Time2Crack bu belirsizliği çözebilir:

  • Her iki çeşidi de test edin ("WithI" ve "WithL")
  • Eğer sözlük yüklenirse, bir sözlük maçı veren değişkeni tercih edin
  • Bir sözlük olmadan, en az ikamet edilen sayıları terk eden varyantları tercih edin (asism: complete de-leetification is more likely)
  • Örnek Örnek Örnek Örnek Örnek Örnek Örnek :
  • "b1ue" → withI = "biue" (törüntüde değil),L = "mavi" (in dict) → "mavi" döndürür
  • "f1le" → withI = "file" (in dict) withL = "flle" (görünmezde değil) → "file" döndürür
  • 9.4 Kurumlar kaplı değildir (aslında)

    Time2Crack, LIABASE modellerinin ötesinde nadir veya belirsiz alt yerleri kapsamaz.Bu bir tasarım seçimidir: çok fazla vakayı kapsayan sahte pozitifleri artırmak (şu anda bir kelime olarak bir şifreyi tespit etmek).


    10. Yoğun zaman hesaplaması: addDictionaryAttacks()

    Hesaplama mantığı

    // app.js - ligne 3848
    function addDictionaryAttacks(rows, common, weak, dictWord) {
      for (const a of ALGOS) {
        let sec;
        if (weak)     sec = 100 / a.rate;     // Top ~100 entrées
        else if (common) sec = 10000 / a.rate; // HIBP priority list ~10k
        else if (dictWord) sec = 200000 / a.rate; // Scan wordlist complète ~200k mots
        else sec = null;                        // Non applicable
    

    Not = zayıf mı? t("nWeakPassword") : yaygın ? t("nInLeaks") : dictWord? t(nDictHit) T(nAbsentLeaks);

    satırlar.push({ atk: t("aDict") hash: a.name, spleen: a.rate, sec, not, kedi: "dict" } }

    10.2 Üç kırılganlık seviyesi

    Seviye 1 - Ultra-weak (weak = true) : ~100 / spleen Şifre dünyanın En Top 100 ("password", "123456", "qwerty"...) Bu 100 öncelikli adayın ilk geçişte olduğunu test ediyor. MD5: 100 / 168.9e9 0.6 nanosaniye. Seviye 2 - Common Common (common = true) : ~ 10 000 / spleen Şifre, ~10.000 en sık şifrenin referans HIBP listesindedir. Bu adaylar ilk mikrosaniyede test edilir. MD5: 10.000 / 168,9e9 59 nanosaniye. Seviye 3 - DictWord (dictWord = true) : ~200,000 / spleen Şifre şu anki dil sözlüğünden bir kelimedir (yerel kelime listesi -50k-200k girişler). Kelime listesinin tam taraması neredeyse hızlı algoritmaları için anındadır. MD5 için: 200 000 / 168,9e9 1.18 mikrosaniye. Seviye 4 - Geçerli Değil (sec = null) : Şifre ne ultra-weak, ne de ortak, ne de mevcut sözlerden gelen bir kelime geçerli değildir - diğer saldırılar (gross kuvveti, Markov, PCFG) ana tehdit haline gelir.

    10.3 Neden bu sayılar (100, 10.000, 200.000)?

    Bu değerler gerçek verilere kalibre edilir:

  • 100 100 100 100 İlk 100 RockYou şifresi, korpus'un% 10'unu temsil eder. Tüm ciddi araçlar onları öncelikli olarak test eder.
  • 10 000 000 : HiBP, frekans tarafından ~14 milyar girişini bir tür. En iyi 10.000 kullanımdaki gerçek şifrelerin yaklaşık% 30-40'ı kapsar. Herhangi bir yetkili saldırgan bu alt setle başlar.
  • 200 000 000 : Filtreden sonra tam bir dil kelime listesinin tipik boyutu. Bu, hafızadaki makul yük kapasitesi aşmadan bir dilin mevcut kelimeyi kapsamak yeterlidir.
  • Referans Weir et al. (2009), sözlüğün iyi sipariş edilen bir saldırıda ilk 200.000 girişimde bulunduğunu gösteriyor. Ur et al. (2012), ortak şifrelerin ilk 10.000 denemede bulunduğunu doğrulamaktadır.

    10.4 Tamam sayısal örnek

    "sun" şifresi için (şimdi Fransız kelimesi, tespit edilen gibi dictWord)

    AlgorithmHız (12× RTX 4090)Formula Formula Formula FormulaZaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman Zaman - !!!- !!!►- ► NTLM3,462 GH /s200 000 / 3 462e957.8 picoiyes MD52 027 GH /s200 000 / 2 027e998.7 picosans SHA-1610 GH /s200 000 / 610e9327.9 picoiyes SHA-256272 GH /s200 000 / 272e9735 picoiyes bcrypt (cost 5)2.2 MH /200 000 / 2 200 00090.9 milisaniye Argon2id800 H /s200 000 / 800250 saniye

    Argon2id için bile, 250 saniye 5 dakikadan daha az - Fransızca sözlüğünden basit bir kelime için.


    11. Yüksek sadakat kalibrasyonu: applyHighFidelityCalibration()

    11.1 Neden ek kalibrasyon?

    brüt hesaplama addDictionaryAttacks() “En kötü durumda” bir tahmin verir - saldırgan tüm kelime listesini üniformalı olarak test ederse. Muhtarya tarafından sipariş edilen : En yaygın şifreler ilk gelir.

    Yüksek sadakat kalibrasyonu, ampirik gözlemlere dayanan düzeltici bir multiplier uygular:

    // app.js - ligne 4442
    case "dict":
      // Ur et al. 2012 : mots communs trouvés dans les 100-10k premiers essais
      // Weir 2009 : mots dict trouvés dans les 200k premiers essais (scan ordonné)
      m = context.common? 0.15: context.dictWord? 0,5: 1.0;
    Bölüm;
    Multiplier common (0.15) : Eğer şifre ortak öncelik listesinde ise, listenin yüzde 15'inde ortalama olarak bulunur – bu - 10.000 listedeki 1.500 testtir. Zaman, 0.15 → 6.7 × üniforması ile çarpılır. Multiplier dictWord (0.5) : Ortak bir sözlük kelimesi iyi sipariş edilen bir listenin ortalama orta vadede bulunur. Multiplier 0,5 → üniformalı taramadan daha hızlı.

    11.2 Kalibrasyonun Akademik Kaynakları

  • Ur et al. (2012) - Parolanız Nasıl Ölçür? (USENIX Security): Gerçek korpus'taki şifrelerin dağılımının analizi: vakaların% 95'inde ilk 10.000 denemede bulundu.
  • Weir et al. (2009) - Şifre Probabilistic Context-Free Grammars Kullanımı (IEEE S&P): Bir siparişli saldırının ilk 200.000 denemesinde Saf söz kelimeler bulunur.

  • 12. Uygunluk ve güven puanının aslilığı

    12.1 Scoring sistemi

    Time2Crack sadece bir zaman hesaplamaz - aynı zamanda sözlük saldırısının aslında çok faktörlü bir puanlama sistemi aracılığıyla en hızlı saldırı olduğunu da değerlendirmektedir:

    // Score d'applicabilité (0-1)
    case "dict":
      return context.common ? 0.99 : context.dictWord ? 0.85 : 0;
  • 0.99 if if if if if if if if if if if common Şifre HIBP'de → sözlük saldırısı maksimum güven ile uygulanır.
  • 0.85 if if if if if if if if if if if dictWord Sadece: yüksek olasılık. Bir sözlük kelimesi kırılgandır, ancak bir saldırganın doğru dil kelime listesine sahip olması gerekir.
  • 0 0 0 0 Aksi takdirde: Sözel saldırı uygulanmaz (gösterilen lexical vulnerabilities tespit edilmez).
  • 12.2 Kanıt puanı

    Applicability puanı ile paralel olarak, gözlemlenen sinyalleri kaydeder:

    case "dict":
      return Number(!!context.common) + Number(!!context.dictWord);
      // 0 : aucun signal
      // 1 : un signal (common OU dictWord)
      // 2 : deux signaux (common ET dictWord)

    2'nin kanıt puanı (her iki HIBP ve dil sözlüğü) 0.08'in son güvenini artırır (2 × 0.04).

    12.3 Final Güven Puanı

    const base = confidenceBase["dict"] || 0.6;  // confiance de base
    const evidenceBoost = Math.min(0.12, row.evidenceScore  0.04);
    const speculativePenalty = speculativeCats.has("dict") ? 0.08 : 0;  // dict n'est pas spéculatif
    

    Doğruluk = Math.max (0, Math.min (1, Math.max (applicability, base) + kanıtlarBoost - spesifikPenalty )

    Bir şifre için common ile birlikte dictWord Ayrıca tespit edildi:

  • applicability = 0.99
  • evidenceBoost = min(0.12, 2 × 0.04) = 0.08
  • confidence = min(1, max(0.99, 0.6) + 0.08) = min(1, 1.07) = 1.0
  • Maksimum güven: Sözcü saldırı, belirsiz bir şekilde birincil saldırıdır.


    13. Bloom filtre RockYou: yaygın şifrelerin yerel tespiti

    13.1 Arka plan

    HIBP doğrulamanın yanı sıra (bir ağ çağrısı gerektiriyor), Time2Crack bir araya getiriyor çiçekli filtre Bir çiçekli filtre, elementleri depolamadan bir sete ait bir yanlış pozitif olasılığı ile test etmenizi sağlayan bir olasılıktır.

    13.2 çiçekli filtrenin Faydaları

    KriterleriHIBP k- anonimBloom filtre yerel yerel ►----- * Coverage~14 milyar~14 milyon (RockYou) Latency50-200 ms (network)<1 ms (yerel) GizlilikK- anonimlik (5 SHA-1 tankları)% 100 yerel, hiçbir şey bulayamıyor Yanlış pozitif% 0% 0-%1% Boyut BoyutuAPI API API API~2-5 MB (bloom filtresi ikili)

    13.3 Çiftin Operasyonu

    // app.js - ligne 1962
    function bloomHas(filter, word) {
      if (!filter) return false;
      const { bitArray, m, k } = filter;
      const w = word.toLowerCase();
    

    // Double-hashing: h1 ve h2 iki bağımsız hash işlevleridir K1 = fnv1a32 (w, 2166136261); // FNV1a standart tohum ile standart tohum {2 = fnv1a32 (w, 0x811c9dc5); // FNV1a alternatif tohumla

    (le i = 0; i < k; i++) eksi = (h1 + (i) (h2) >>> (0))% m; // k pozisyonları biraz dizi Cont byteIdx = Math.floor (pos / 8); BirazIdx = % 8;

    // Eğer biraz 0 ise: kelime DEFINITLY yok Eğer (bitArray[baytIdx) ve (1 << bitIdx) = 0) geri dönüş false; } // Tüm bitler 1'dedir: kelime PROBABLY hediyedir ( FP'nin% 1'i ile) Doğru geri dönüş; }

    FNV1a Double-hashing, biraz dizideki pozisyonların üniformasını sağlar, minimizleme çarpışmaları ve false pozitif oranı% 1'e yakın tutar.

    13.4 Yük ve ikili format

    Çiçekler filtre depolanır data/rockyou.bloom - ikili bir dosya ile:

  • Header [Kaçlar): Sihirli sayı (0x424c4f = "BLOO") sürüm, m (bit dizi büyüklüğü), k (sabit işlevlerin sayısı), n ( elementlerin sayısı)
  • Payload : biraz dizi (m/8 bytes)
  • Yük, kullanıcı tarafından manuel olarak tetiklenir (button in the UI), sayfa yüklemesinde otomatik olarak değil - ilk performansı korumak için.


    Türlü saldırıların 14. Karşılaştırma

    "pure" sözlük saldırısı, tüm ortak bir kök paylaştığı bir saldırının ilkidir: bir lexical wordlist. Time2Crack 7 çevrimdışı çatlakları uygular (gross güç, sözcü, hibrit, maske, PCFG, Markov, ssper), her bir şifreyi farklı bir açıdan saldırır.

    14.1 Dictionary vs Hybrid

    KriterleriSözlükHybrid (dict+rules) ►---- ►- !!! Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday AdaySözlüklerKelimeler + ~1000 mutasyonlar kelime başına Keyspace200.000 aday~200 milyon aday Cracked örnekler"password", "sun""P@sw0rd!", "s0l3il2024" Relative speed1000× daha hızlıÇok daha geniş kapsama alanı Uygulayırsa eğerListede tam kelimeBir dict kelimeden elde edilen şifre

    Hibrit saldırı saf sözlüğün durduğu yerde başlar: Her kelimeyi listeden alır ve sistematik mutasyon kuralları uygular (hashcat "best64.rule" akılda).

    14.2 Dictionary vs PCFG

    KriterleriSözlükPCFGGG ►---- ►- ► Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model Model ModelAdayların sabit listesiOlasılıksal yapı grameri Kuvvet GücüDoğru kelimelerWord+Digits yapıları, Cap+lower+sym Örnek Örnek Örnek Örnek Örnek Örnek Örnek"password" →"Password123" → ✓ (yapı tespit) CoverageBilinen Kelime Kelime Kelime KelimesiGenric insan yapıları

    "Password123" gibi bir şifre, bir sözlükte (gerçek kelime "Password123" olarak listelenebilir) ancak yapıyı tanıyan PCFG tarafından çok hızlı bir şekilde kırılabilir [Majuscule][minuscules][digits].

    14.3 Markov

    KriterleriSözlükMarkov ►---- ►--- ► Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday Aday AdayPre-compiled listesiStatik model tarafından oluşturulan Fly- CoverageBilinen Kelime Kelime Kelime KelimesiHerhangi bir olası "insan" dizisi Avantaj avantajlarıTam kelimeler üzerinde çok hızlıBilinmeyen kelime kelimeler Örnek Örnek Örnek Örnek Örnek Örnek Örnek"sunshine" →"sunsh1ne" potansiyel olarak ✓

    Markov, şifrenin herhangi bir listede olmadan insan kelimesi gibi göründüğünü kapsar.

    14.4 Dictionary vs Credential Thingsing

    KriterleriSözlükCredential Thingsing ►---- ►- !!! Objektif HedefBir hashBelirli bir giriş test edin MechanismHash local computationUzaktan bağlantı deneme girişimleri Kaynak KaynağıGenric WordlistPair Giriş/password sızıntıları Savunma Savunma SavunmaGüçlü hash algoritmasıLimit, MFA, IP bloke

    Credential thingsing bir hash saldırmaz - doğrudan uzaktan hizmetler üzerinde giriş / anahtar kelime çiftlerine çalışır. Bu, çatlaklardan kavramsal olarak farklıdır, ancak aynı veri kaynağını paylaşır (HIBP/fail).


    15. Saldırı Sözlüğü

    15.1 Intrinsic limitleri

    1. Bilinen kelime sadece sadece sadece Mevcut herhangi bir kelimeyi benzemeyen ve HiBP'de olmayan icat edilmiş bir şifre, saf sözcü saldırıya karşı şüphelidir. "Xqz7mK9pL" asla bir kelime listesinde olmayacaktır. 2. Dil kapsamı Fransızca konuşan bir kullanıcıyı Fransız kelime listesi olmadan hedef alan bir saldırgan, "ephemeral", "grenouille" veya standart İngilizce kelime listelerinde olmayan "bricolage" kelimeleri özleyecek. 3. Yeni şifreler Sadece yaratılmış bir haçlı ve asla HiBP'de olmayacak - çok yaygın olsa bile, bunu bulmak için bir sonraki sızıntıya kadar beklemek zorunda kalacak. 4. Çok uzun şifreler Uzun bir icat edilen cümleden oluşan bir şifre ("MaGrandeAventure2024SousLesEtoiles") hiçbir kelime listesinde olmayacak - her kelime ayrı ayrı alındığında, diğer saldırılar tarafından tedavi edilen bu fikir (Combinator, PRINCE).

    15.2 What Time2Crack's Hesapion Model Değil

    Context Wordlists Belirli bir sektör hedefleyen bir saldırgan, oyun platformları için uygun kelime listeleri inşa edecektir. Time2Crack genel kelime listelerini kullanır. Kombi kuvvet Wordlists : CeWL (Müşteri Listesi Jeneratör) gibi araçlar, özel bir kelime listesi oluşturmak için hedef web sitesinden terim çıkarabilir. Bu hedefleme seviyesi modellemez. Son sızıntılar henüz HIBP'de değil Şu an arasında bir sızıntı meydana gelir ve HIBP'ye entegrasyonu, kamu API'si aracılığıyla erişilemeyen özel forumlarda yapılan uzlaşmalar. Hash algoritmaları kaplı değil Time2Crack modelleri 6 algoritmaları (MD5, SHA-1, SHA-256, NTLM, bcrypt, Argon2id) SHA-512, scrypt veya PBKDF2 gibi Algoritmalar farklı profillere sahiptir.

    16. Etkili Savunmalar

    16.1 Sözcü saldırıya karşı koruyan şey

    Modern hash algoritması (bcrypt, Argon2id) Bu, sunucu tarafında en etkili savunmadır.
  • MD5: ~1 mikrosaniyede çatlaklar
  • bcrypt 12'ye mal oldu: çatlaklar 35 saat 35 saat
  • Argon2id (recommended parametreler): çatlaklar içinde Yıllar yıllar yıllar yıllar yıllar
  • MD5 ve Argon2id arasındaki 10+ büyüklüğün farkı, Argon2id tarafından korunan pratikte sözel şifre "sun" bağışıklıkını yapar - saldırganın Fransız bir kelime olduğunu biliyorsa bile.

    Hesap başına tek tuz Bir tuz, önceden hesaplanan masa saldırılarını ve saldırganları her hesap için bireysel olarak yeniden hesaplamak için engeller. Hedeflenen kelime listesini korumaz ( saldırgan hala tuzla 200.000 kelime test edebilir), ancak büyük veritabanlarında büyük saldırıları geçersiz kılar. Şifre uzunluğu Tek bir sözlük kelimesinin şifresi (8-10 karakter) kırılgandır. 4-5 kelimeden oluşan bir geçiştir ("cheval-lumière-forest-voyage") saf sözlüğe dayanıklıdır, ancak Combinator saldırıya karşı değildir - bu nedenle uzunluğun ve rastgeleliğin önemi. Rastgele olarak oluşturulan şifreler Gerçek çözüm: uzun rastgele şifre üreten bir şifre yöneticisi kullanın (20+ her tür karakter). Bu şifreler asla herhangi bir sözlükte olmayacak. Çok faktörlü doğrulama (MFA) MFA, çatlakları çevrimdışı engellemez (tahdit geri kazanılır ve çevrimdışı kırılır), ancak haçlı şeylere karşı koruma sağlar (bağlantılı kimliklere bağlanmak için). Limitleme ve anomalileri tespit etmek Online saldırılarına karşı korumalar (yönemli bağlantı girişimleri), çalınan hashlerin çevrimdışı çatlaklarına karşı değil.

    16.2 Ne korumuyor

    Basit leet substitutions : "password" → "p@ssw0rd" - bölüm 9. Sonunda sayıları eklendi : "password" → "password1" - ilk kurallar arasında test edilmiştir. İlk ödeme : "password" → "Password" - standart sermayeleştirme kuralı. Şekiller ve semboller eğer kelime tanınabilir "sunshine!", temel kurallarla "sunshine" içeren herhangi bir kelime listesindedir. Kompleksi uzun süre olmadan uygulanmış "P@s1w" karmaşık kriterleri karşılar (maj, min, sayı, sembolü) ancak "korrecthorsebaterystaple"dan daha kısa ve daha öngörülebilirdir.

    16.3 Pratik Tavsiye

  • Bir şifre yöneticisi kullanın (Bitwarden, 1Password, KeePass) - rastgele şifreler üretir, sadece master şifresini hatırlamak zorundasınız.
  • Enable MFA her yerde - Şifre uzlaşmaz olsa bile, saldırgan bağlanamaz.
  • HIBP'yi düzenli olarak kontrol edin - e-postasının bilinen sızıntıları olup olmadığını.
  • Asla bir şifreyi yeniden kullanmayın – credential thingsing, haç servislerini yeniden kullanır.
  • Memorizable şifreler için : 5+ kelime geçer rastgele rastgele rastgele (Not "horse-correct-battery-agre-violet" değil, kelimeler gerçekten çok çizilir).

  • 17. Referanslar

    birincil kaynaklar (academik çalışmalar)

    Morris, R., & Thompson, K. (1979). Şifre güvenliği: Bir vaka tarihi. ACM, 22(11), 594-597.
  • Unix şifre dağıtımının ilk akademik analizi
  • ~1/3 şifrenin ortak İngilizce kelimeler olduğunu tanır
  • Klein, D.V. (1990).
    Viskiyi dengelemek: Bir anket ve gelişmeler, şifre güvenliği. UNIX Security Symposium Proceedings, 5-14.
  • 15,000 Unix şifresi kırıldı: Birkaç saat içinde yüzde 25 kırıldı
  • İlk kelime listeleri ve mutasyon kuralları
  • Weir, M., Aggarwal, S., de Medeiros, B., & Glodek, B. (2009).
    Şifre olasılıksal bağlamsız gramer kullanarak kırılır. IEEE Güvenlik ve Gizlilik Sempozyumu.
  • PCFG saldırısı ve saf sözcü saldırı ile karşılaştırıldığında temel referans
  • Sözlüğün kelimelerinin bir siparişli saldırının ilk 200.000 denemesinde bulunulmasını belirler
  • In Time2Crack Sözel saldırının HF kalibrasyonu için (multiplier 0,5)
  • Ur, B., Kelley, P. G., Komanduri, S., Lee, J., Maase, M., Shay, R., Vaniea, K., Bauer, L., & Cranor, L. F. (2012).
    Parolanız Nasıl Ölçür? Güç Ölçümlerinin Kripto Kullanıcı Seçimi Üzerine Etkisi. 21st USENIX Güvenlik Sempozyumu.
  • Gerçek korpusta ortak kelimelerin dağılımının analizi
  • İlk 100-10 000 denemesinde bulunan ortak kelimeler
  • In Time2Crack HF kalibrasyon için common ? 0.15 (top 10k seviyesi)
  • Bonneau, J (2012).
    Şarkının bilimi: 70 milyon şifrenin anonim bir korpusunu analiz edin. IEEE Güvenlik ve Gizlilik Sempozyumu.
  • 70 milyon anonim Yahoo şifresi Çalışması
  • Şifrenin gerçek dağılımını sayısallaştırır, güç kanununu doğrular
  • Çarpıcı şeylerin etkinliğini ölçmek (2-5% hit oranı gerçek hesaplarda)
  • Ma, J., Yang, W., Luo, M., & Li, N. (2014).
    Olasılıksal şifre modellerinin incelenmesi. IEEE Güvenlik ve Gizlilik Sempozyumu.
  • Olasılıksal modellerin karşılaştırması (dictionary, Markov, PCFG) gerçek korpusta
  • En İyi64.rule, sözcü kelimeler için ortalama olarak% 40 azaltıldı
  • In Time2Crack Hibrit saldırının HF kalibrasyonu
  • Wheeler, D.L. (2016).
    zxcvbn: Low-budget şifre gücü tahmin. 25. USENIX Güvenlik Sempozyumu, 157-173.
  • Kuvvet tahmin sistemi kelime listeleri ve desenleri kullanarak
  • Şifre yaratımında bilişsel önyargıların analizi
  • Kelime listelerinin brüt güçle ilgili etkinliğini ölçül
  • Pasquini, D., Cian soğutuculia, M., Ateniese, G., & Bernaschi, M. (2021).
    Gerçek dünya şifre gücünü derin öğrenme ve dinamik sözlükler aracılığıyla modellemede önyargıyı azaltmak. 30. USENIX Güvenlik Sempozyumu.
  • Gerçek saldırılar için tahmin modelleri değerlendirme
  • Sözlüklerin ortak insan şifreleri için en etkili araç olduğunu onaylar
  • Endüstriyel kaynaklar

    Ben de Pwned'e sahip oldum. (2024).
    Pwned Passwords. https://haveibeenpwned.com/Passwords
  • Basis of ~14 milyar benzersiz şifre belgelenmiş sızıntılardan
  • Zaman2Crack tarafından gerçek zamanlı doğrulama için kullanılan anonim API
  • Hive Systems. (2025).
    2025 Hive Systems Password Table.
  • Benchmarks 12× RTX 4090: MD5 2,027 GH /s, NTLM 3,462 GH /s, bcrypt maliyeti 5: 2,2 MH/s
  • Zaman2Crack'de kullanılan hash oranlarının ana kaynağı
  • Hashcat. (2025).
    Hashcat - Gelişmiş şifre kurtarma.
  • GPU karşılaştırmaları için referans aracı
  • mutasyon kurallarının belgelendirilmesi (en iyi64.rule, OneRuleToRuleThemAll)
  • Gosney, J (2012).
    Lee ve al. ve Probabilistic Password Cracking. Şifrelercon işlemleri.
  • İlk halka açık olarak çok-GPU kriterlerini belgeledi
  • Kural tabanlı saldırıların kalibrasyonu için referans
  • Miessler, D. (2024).
    SecLists - Güvenlik değerlendirmeleri sırasında kullanılan birçok liste koleksiyonu. GitHub.
  • Time2Crack'de kullanılan Wikipedia dil kelime listelerinin kaynağı
  • İngilizce, Fransızca, İspanyolca, Portekiz, Almanca, Türkçe
  • Orta kaynaklar (context)

    Troy Hunt. (2013).
    Giriş 306 Milyon Freely Downloadable Pwned Passwords. Troyhunt.com.
  • HIBP servisinin ilk kurulması ve k-anonymity protokolünin açıklaması
  • Thomas, K., et al. (2019).
    Hesapları şifre molası ile zorlanan şeylerden korumak. 28. USENIX Güvenlik Sempozyumu.
  • Google/Stanford uzlaşmalı kimliklerin korunması üzerine çalışıyor
  • Bir gizlilik mekanizması olarak k-anonymity etkinliğini doğrular
  • Wang, D., Cheng, H., Wang, P., Huang, X., & Jian, G. (2016).
    Zipf'in şifreleri yasası. IEEE Transactions on Information Forensics and Security, 12(11), 2775-2791.
  • Güç yasasının şifre dağıtımında resmileştirilmesi
  • Zipf dağıtımının tüm bilinen büyük korpusta olduğunu onaylar
  • Web kaynakları Time2Crack uygulamasında atıfta bulundu

    IEEE Xplore (dikal referans). https://iee blastre.ieee.org/document/6234435
  • İlgili kaynak descDict (app.js) üst sözlüklerin kapsamı için.
  • HIBP API aralığı (k- anonimlik). https://api.pwnedpasswords.com/range /
  • Endpoint aslında Time2Crack tarafından k-anonymity doğrulama için kullanılır (sha1 ek talep).
  • HIBP kodda desen çağır. https://api.pwnedpasswords.com/range/${prefix}
  • URL'nin tam formu belge kodu örneklerinde (interpolated SHA-1 ek).

  • Time2Crack Project için üretilen doküman - Version 1.0 - 2026-04-01 Kaynak kodu: app.js (işlevler) addDictionaryAttacks, isDictWord, deLeet, loadDictionary, applyHighFidelityCalibration, bloomHas)*