Güvenlik rehberi
Web Crypto ve reddetme örneklemesi ile istemci tarafında parola oluşturma
PwdGen'in tarayıcı tarafında parola oluşturma modelini, entropi sınırlarını, reddetme örneklemesini ve gizlilik sınırlarını açıklayan teknik bir teknik inceleme.
Özet
PwdGen, istemci tarafında bir referans oluşturma yöntemi kullanır: tarayıcı veya çalışma zamanı Web Crypto rastgele baytlar sağlar, reddetme örneklemesi bu baytları yanlızca sınırlı endekslere eşler ve bir Fisher-Yates karıştırması gerekli karakter sınıflarını nihai parola boyunca dağıtır. Yöntem kasıtlı olarak küçük, denetlenebilir ve web uygulaması, API bağdaştırıcısı, CLI ve hazırlanan pwdgen-core paketi arasında tekrarlanabilir.
Bu belge mühendislik modelini açıklar. Yeni bir kriptografik ilkel, resmi bir standart veya bağımsız bir üçüncü taraf denetimi iddiası değildir.
Rastgelelik kaynağı
Oluşturucu, crypto.getRandomValues() aracılığıyla kriptografik olarak güçlü rastgele değerler talep eder. Web Crypto uygulamalarının, ana bilgisayar ortamı tarafından sağlanan yüksek kaliteli entropi ile tohumlanmış kriptografik olarak güvenli bir sözde rastgele sayı üreteci kullanması beklenir. Pratikte tarayıcılar bu sorumluluğu işletim sistemi olanaklarına ve platform kriptografi sağlayıcılarına devreder.
PwdGen, her parola oluşturma çağrısının doğrudan bir donanım gürültü kaynağını örneklediğini iddia etmez. Daha güvenli ve daha doğru ifade, tarayıcının Web Crypto API aracılığıyla CSPRNG çıktısı sağladığı ve PwdGen’in kriptografik olmayan sözde rastgele arayüzlerden kaçındığıdır.
Neden Math.random() değil?
Math.random() güvenlik açısından hassas kullanım için belirtilmemiştir. Simülasyonlar, görsel efektler ve sıradan rastgele UI davranışı için uygundur, ancak parolalar, sıfırlama kodları, imzalama anahtarları veya diğer kimlik bilgileri için beklenen garantileri sağlamaz.
PwdGen, güvenli olmayan sözde rastgele geri dönüşleri bir hata durumu olarak ele alır. Web Crypto kullanılamıyorsa, oluşturucu sessizce zayıf kimlik bilgileri üretmek yerine bir uyumluluk hatası göstermelidir.
Reddetme örneklemesi
Rastgele baytlar ve tamsayılar genellikle ikinin kuvveti olan bir aralıktan çekilir. Parola alfabeleri nadiren bu aralığı tam olarak bölen bir boyuta sahiptir. Doğrudan bir modulo işlemi bazı karakterleri diğerlerinden biraz daha olası hale getirebilir.
PwdGen reddetme örneklemesi kullanır:
- 32 bitlik işaretsiz bir tamsayı çekin.
- 32 bitlik aralığa sığan alfabe boyutunun en büyük katını hesaplayın.
- Bu sınırın üzerindeki değerleri reddedin.
- Modulo’yu yalnızca kalan tam aralığa uygulayın.
Bu, ölçülebilir modulo yanlılığı oluşturmadan sınırlı karakter seçimini tekdüze tutar.
Karakter kapsamı ve entropi
Yapılandırılmış parola politikaları için oluşturucu önce etkin her sınıftan bir karakter seçer, geri kalanını birleşik alfabeden doldurur ve ardından sonucu karıştırır. Bu, hedef parola kurallarını karşılamaya yardımcı olurken öngörülebilir bir sınıfı öngörülebilir bir konuma koymaz.
Teorik entropi tahmini şudur:
bits = length × log2(uniqueAlphabetSize)
Bu değer, yapılandırılmış alfabeden tekdüze rastgele seçimler için bir üst sınırdır. Parola tekrar kullanımı, kullanıcı tarafından düzenlenmiş çıktı, tehlikeye atılmış cihazlar, sızdırılmış parolalar veya hedef hizmet tarafından zayıf depolamayı hesaba katmaz.
Gizlilik sınırı
Tarayıcı araçlarında, oluşturulan değerler, kullanıcı kopyalayana veya dışa aktarana kadar sayfa belleğinde ve görünür sonuç alanlarında kalır. Yerel oluşturucular, oluşturulan parolaları PwdGen sunucularına göndermez, URL’lere koymaz veya analiz olaylarına yazmaz.
Bu sınır, kötü niyetli tarayıcı uzantılarına, pano yöneticilerine, işletim sistemi güvenliğinin ihlaline, ekran yakalamaya, kimlik avı sayfalarına veya bir kullanıcının oluşturulan bir parolayı güvenli olmayan bir hedefe yapıştırmasına karşı koruma sağlamaz.
Tekrarlanabilir uygulama
Genel pwdgen-cli paketi ve hazırlanan pwdgen-core paketi, oluşturma modelini web sayfası dışında incelenebilir kılmak için mevcuttur. Birim testleri, karakter sınıfı dahil etme, hariç tutulan karakterler, geçersiz yapılandırmalar, entropi formülleri ve güvenli olmayan sözde rastgele geri dönüş kod yollarının yokluğunu kapsar.
Amaç, PwdGen’i özel bir standart haline getirmek değildir. Amaç, uygulamayı, geliştiricilerin ortamları farklı bir güven sınırı gerektirdiğinde okuyabilecekleri, test edebilecekleri ve değiştirebilecekleri kadar küçük yapmaktır.