4 dk okumaGüncellendi

Parolalarda kriptografik rastgele ve sahte rastgelelik (geliştiricilerin neyi yanlış anladığı)

Yazar: Safe Local Tools Editör

Bir parola yalnızca onu oluşturan rastgele süreç kadar güçlüdür. Bu süreç istatistiksel olarak bile tahmin edilebilirse, saldırganlar arama alanını daraltır. Geliştiriciler, okuma garantisi olmadan "rastgele" işlevleri içe aktarır; çekişmeli gözlem altında öngörülemezliği değil, simülasyonu ve tekrarlanabilirliği optimize ederler. Burada PRNG'yi CSPRNG, entropi bütçeleme ve tarayıcıdaki Crypto.getRandomValues() uygulamasıyla karşılaştırıyoruz ve neden Safe Local Tools ile yerel olarak şifreleri kazımanın politikalarla denemeler yaparken ağ üzerinden aday göndermekten kaçındığını görüyoruz.

OG illustration

Sade dildeki tanımlar

PRNG'ler küçük bir durumu deterministik matematikle genişletir; Durum veya örneklerin sızdırılmasıyla gelecekteki çıktılar artık sürpriz değil. CSPRNG'ler saldırı altındaki varsayımları güçlendirir: Rakip, standart şifreleme varsayımları dahilinde önceki çıktıları görmüş olsa bile çıktılar, tekdüze bitlerden hesaplama açısından ayırt edilemez olmalıdır.

Felaketler nadiren "bariz aptal böceklerdir"; Çoğu zaman bir istatistik PRNG, geçişli bağımlılık nedeniyle kriptografik dikişe girmiştir.

'Math.random' neden sır olarak iyi değil?

'Math.random()' gibi API'ler, oyunlar için hıza ve "tekdüze" değişkenliklere öncelik verir; kısmen gözlemlenen çıktıyla tersine mühendisliğe direnmez. "Karışık görünen" dizeler, biçimlendirmeden sonra hala çok küçük bir durumdan gelebilir.

// Padrão INSEGURO para segredos (ilustrativo):
const tokenRuim = Math.random().toString(36).slice(2);
 
const buf = new Uint8Array(16);
crypto.getRandomValues(buf);

Yararlı tehdit ve entropi modellemesi

Sor: Saldırgan hash sızdırdıktan sonra çevrimdışı mı kesiliyor veya kullanıcı arayüzünde hız sınırı ile tahmin mi ediliyor? Birden fazla ilişkili çıktı mı gözlemliyorsunuz? Şifrenin ezberlenmesi gerekiyor mu yoksa yöneticiye mi gidiyor? Cevaplar uzunluğu, alfabeyi ve rotasyonu yönlendirir; rastgelelik tek başına insan lojistiğini düzeltmez.

A boyutunda bir alfabe ve tek tip uzunluk L ile olasılıklar ≈ A^L — dolayısıyla gerçek uzunluk, estetik yazı tiplerini değiştirmekten daha önemlidir. İnsan şifreleri kültürel olarak kümelenir (P@ssw0rd); eğer nesil gerçekten genişse, tek tip makine örneklemesi sözlüklerden kaçınır.

Modül tuzağı ve sunucu tarafı karma

Rastgele baytların yama yapılmamış "%n" ile küçültülmesi önyargıya neden olur; bazı harfler biraz daha fazla görünüyor; büyük karma sızıntılarında küçük kenar boşlukları önemlidir.

Sunucuda kullanıcı şifrelerinin yavaş işlevlerden (Argon2id, bcrypt, scrypt) geçmesi gerekir; Opak oturum/API belirteçleri, ezberleme kısıtlamaları olmaksızın saf sekizli olabilir; jeneratör, insanlarla ve makinelerle farklı şekilde konuşur.

{
  "minLength": 16,
  "requireUpper": false,
  "requireDigits": true,
  "charset": "subconjunto-seguro-base94"
}

İstemci tarafı oluşturma ve Safe Local Tools'un rolü

Tarayıcı, uygun olduğunda arka uçtaki düzenleme düzenleme ve iptal kontrollerini değiştirmek için değil, taslak hazırlamak ve prova yapmak içindir. Yine de denetim sırasında adayları Slack veya e-posta yoluyla göndermekten kaçınmak gereksiz sızıntıyı azaltır; yöneticilerin, uzantıların ve pano geçmişinin de verileri sakladığını unutmayın.

Safe Local Tools, dahili politikalarla uyumlu deneme amaçlı şifreler oluştururken tarayıcıdaki yerel akışı vurgular; herhangi bir sırrı saklamadan önce şirketinizin uyumluluğunu takip edin.

Parolalar, kanıt içeren rotasyon ve kullanıcı arayüzü kontrol listesi

Küratörlü liste tek tip zar yazılımı, kelime başına entropi biriktirir; Film cümlelerinden alıntı yapmıyorum. SSO pek çok şeyi çözer ancak SSH anahtarları, web kancaları ve PAT'ler hâlâ CSPRNG disiplinine ihtiyaç duyar.

Kontrol listesi: Baytlar için crypto.getRandomValues (veya eşdeğerini) kullanın; modül yanlılığından kaçının; örneklenen alfabeyi açıkça gösterin; Güvenli olmayan kanallara kopyalama konusunda uyarın.

Takvim rotasyonu genellikle öngörülebilir kalıpları eğitir; Onaylanmış taahhüt veya doldurma işaretlerinden sonra geçiş yapın, üç ayda bir yapılan ritüeli boşaltmak değil.

Karmaşıklık politikaları yasal politikalarla birlikte test edilirken, tarayıcıda önizlemeler oluşturmak gerçek şifre örneklerinin bir arama motoru tarafından yanlışlıkla kurumsal bir e-postanın eki olarak dizine eklenmesini önler. "Sahte" şifreler bile kullanıcıları kalıpları kopyalama konusunda eğitmeye devam ediyor; Açıkça işaretlenmiş sentetik örnekleri tercih edin ve mümkünse demodan sonra panoyu yok edin.

Dahili sızma testlerinde, artık "Math.random"ı grep geniş ile takip edin: blog parçacıkları geçişli bağımlılık yoluyla girer ve hiç kimse "küçük" yardımcı programı yeniden açmadığı için yıllarca hayatta kalır. Eski kupon çekme kodu, sıfırlama jetonunu oluşturan işlevin aynısını içe aktarmamalıdır; risk teknik olduğu kadar organizasyoneldir.

Kriptografik rasgelelik, saldırgana önceden sıralanabilecek yapıların taşınmasına karşı çıkar ve arama uzayının istatistik olarak geniş olduğunu matematik olarak sabitler; buna karşın çoklu faktör kimlik doğrulaması olmadan yalnızca şifreye güvenirseniz bileşkeniz hâlâ tek nokta arızası yaşar. Sunucuya indiğinde bu üretim örnekleri Argon2id veya bcrypt gibi yüksek süreli doğrulanmış kimlik doğrularlarından geçer; insan odaklı jenerasyon ile süre uyumsuz ise yardım masası yorgun düşer. Uzun parola politikası sık sık kullanıcıyı yazdırılabilir desen oluşturmaya iter; bu yüzden tarayıcıda üretilen adayların panoya ve bildirime aktarılışına dair uyarı çıkartın. Uzunluk seçerken insanın kopyalayacağı sürtünme ile servis doğrulamasının beklediği entropiyi dengeleyin; geçiş anahtarı ve insan şifresi aynı Math.random kuyruğunu paylaşmamalıdır. Yerel olarak denenen adayların sohbet veya e-posta günlüklerinden süzülmesi için ilk üretimi tarayıcıda tutmak kritik olduğundan şifre oluşturucuyu deneyin →