Parola güvenliği, kullanıcı kayıt süreçlerinde kritik bir rol oynar. Ancak en yaygın araçlardan biri olan zxcvbn, yalnızca bir kayıt formuna 389 KB ek yük getirmekle kalmıyor, aynı zamanda 2017 yılından beri güncellenmeyen bir kod tabanına sahip. Bu durum, hem performans hem de güvenlik açısından ciddi bir sorun yaratıyor. Neyse ki, Passcore adlı yeni bir araç, bu problemi kökten çözmeyi hedefliyor.
Parola güvenliği aracında devrim: 389 KB'den 3 KB'a yolculuk
zxcvbn, npm üzerinden haftada 1 milyon kez indirilen ve en çok kullanılan parola güçlendirme araçlarından biri. Ancak geliştirilmeyen bir kod tabanına sahip olması ve devasa boyutu, modern web uygulamalarında ciddi performans kayıplarına neden oluyor. Özellikle mobil kullanıcılar için, 389 KB'lik bir eklenti, sayfa yükleme sürelerini önemli ölçüde artırırken, kullanıcıların kaydolma formlarından ayrılmasına yol açıyor. Üstelik, bu araçların büyük çoğunluğu, aslında kimsenin kullanmadığı basit parola kombinasyonlarını tespit etmek için tasarlanmış.
Bu sorunu çözmek için, Passcore adlı araç geliştirildi. Passcore, 389 KB'lik zxcvbn'in %98.4'lük tespit oranını koruyarak boyutunu yalnızca 3 KB'a indiriyor. Ayrıca, soğuk başlangıçlarda yaklaşık 9.7 ms süren yüklenme süresini 0.2 ms'ye düşürüyor. Bu da, parola denetiminin neredeyse anında gerçekleşmesini sağlıyor ve kullanıcı deneyimini olumsuz etkilemiyor.
Passcore'un çalışma prensibi: Beş katmanlı parola analizi
Passcore, her parola için beş farklı tespit katmanı kullanıyor. Bu katmanlar, gerçek veri ihlallerinden elde edilen bilgilerle optimize edilmiş ve kullanıcıların en sık kullandığı parola kombinasyonlarını hedef alıyor. İşte bu katmanlar:
- Sözlük taraması: Passcore'un sözlüğü, gerçek veri ihlallerinden elde edilen 329 kelimeyle sınırlı. Bu kelimeler, yaygın İngilizce sözlüklerde yer almayan, ancak gerçek dünyada sıkça kullanılan parola parçalarını içeriyor.
- Klavye desenleri:
qwerty,asdf,1234gibi klavyedeki ardışık tuş dizilerini tespit ediyor. - Tekrar eden karakterler:
aaaa,abababgibi tekrar eden karakter dizilerini tanımlıyor. - Sıralı karakterler:
abcdef,123456gibi ardışık karakter dizilerini yakalıyor. - Leet speak (1337) kod çözümü:
p@ssw0rdgibi harflerin sayılarla veya sembollerle değiştirildiği parola varyasyonlarını çözerek asıl kelimeyi buluyor.
Bu beş katman, parola analizini hem hızlı hem de etkili hale getiriyor. Örneğin, bir parola Password1! şeklindeyse, Passcore ilk olarak l33t kodunu çözerek password kelimesini tespit ediyor ve ardından bu kelimenin veri ihlallerinde yer alıp almadığını kontrol ediyor.
Parola puanlama sistemi: NIST standartlarına uygunluk
Passcore, parola puanlarını 0 ile 4 arasında bir ölçekte değerlendiriyor. Bu puanlama sistemi, zxcvbn'in kullandığı sisteme benzer şekilde çalışıyor. İlk olarak, beş tespit katmanından herhangi biri tarafından tespit edilen zayıf parolalar 0 veya 1 puan alıyor. Eğer hiçbir zayıf nokta bulunamazsa, parola uzunluğu ve karakter çeşitliliği (büyük/küçük harf, rakam, sembol) değerlendirmeye alınıyor.
Passcore'un puanlama sistemi, NIST SP 800-63B standartlarına da uygun olarak tasarlanmış. Bu standartlara göre, 20 karakterden uzun parolalar en az 3 puan alırken, 30 karakterden uzun parolalar otomatik olarak 4 puan alıyor. Örneğin, doğru-at-örnek-zarf gibi bir parola, P@ss1 gibi bir parola karşısında çok daha yüksek bir puan alıyor. Bu da, Passcore'un kullanıcılara hem güvenlik hem de kullanım kolaylığı sunmasını sağlıyor.
Gerçek dünya verilerine dayalı geliştirme süreci
Passcore'un geliştirilme süreci, yalnızca teorik bir yaklaşımla değil, gerçek veri ihlallerinden elde edilen verilerle şekillendirildi. Geliştirme sırasında karşılaşılan bazı zorluklar ve bunların çözümleri şunlar:
- Kök kelime + ek desenleri:
Password1!,Admin123,Welcome1gibi parolalar, veri ihlallerinde sıkça karşılaşılan ancak doğrudan bir sözlükte yer almayan kombinasyonlardır. Passcore, bu tür parolaları tespit etmek içinmatchCommonRootadlı bir katman ekledi. Bu katman, paroladaki sayı ve sembolleri çıkararak kalan kısmı sözlükte arıyor. - Ayırıcı karakterlerle l33t speak:
N0=Acc3ssgibi bir parola, naif bir l33t kod çözücüsü tarafından tespit edilemeyebilir. Passcore, bu durumu çözmek için koddaki sembolleri çıkararak her bir parçayı ayrı ayrı sözlükte arıyor. - Eksik kritik kök kelimeler: Gerçek veri ihlallerinde
admin,test,user,login,passgibi kelimelerin sıkça kullanıldığı ancak Passcore'un ilk versiyonlarında sözlükte yer almadığı fark edildi. Bu kelimeler eklenerek Passcore'un tespit oranı %98.4'e yükseltildi.
Geçiş süreci: Kolay entegrasyon, anında performans artışı
Passcore'u mevcut projelerinize entegre etmek oldukça basit. zxcvbn kullanırken yapılan küçük bir değişiklikle Passcore'a geçiş yapılabiliyor:
// Önce
import zxcvbn from 'zxcvbn';
const { score } = zxcvbn(password);
// Sonra
import { passcore } from 'passcorelib';
const { score } = passcore(password);Tek bir uyarı var: Passcore'un sonuç nesnesindeki result.feedback.warning alanı, result.warning olarak basitleştirilmiş durumda. Bu da, hata mesajlarına erişimi bir seviye daha düzleştiriyor.
de yapılan performans karşılaştırmaları, Passcore'un zxcvbn ve zxcvbn-ts'e göre çok daha hızlı ve hafif olduğunu gösteriyor. Passcore'un parola analizini gerçekleştirme süresi yalnızca 2.622 nanosaniye iken, zxcvbn bu süreyi 77.578 nanosaniyeye çıkarıyor. Bu da, Passcore'un kullanıcı deneyimini olumsuz etkilemeden, hemen hemen anında sonuç verdiğini gösteriyor.
Geleceğe bakış: Daha hafif, daha hızlı, daha güvenli
Passcore'un geliştirilme hedefi, parola güvenliği araçlarını hem daha hafif hem de daha hızlı hale getirmek. 329 kelimelik bir sözlükle %98.4'lük bir tespit oranı elde etmek, Passcore'un en büyük avantajlarından biri. Ancak, bu yaklaşımın bir bedeli var: bazı nadir kullanılan parolalar tespit edilemeyebilir. Eğer projenizde son derece detaylı bir parola taramasına ihtiyaç duyuluyorsa, zxcvbn hâlâ en güvenilir seçenek olmaya devam ediyor.
Passcore'un geliştirilme süreci, parola güvenliğinin yalnızca teknik değil, aynı zamanda kullanıcı deneyimiyle de yakından ilgili olduğunu gösteriyor. Gelecekte, daha fazla geliştiricinin bu tür optimize edilmiş araçları tercih etmesiyle, hem güvenlik hem de performans açısından daha iyi web uygulamaları ortaya çıkacak. Bu da, hem kullanıcıların hem de geliştiricilerin kazançlı çıkacağı bir durum yaratacak.
Yapay zeka özeti
zxcvbn'in 389 KB'lik yükünü 3 KB'a düşüren Passcore, %98.4'lük tespit oranını koruyor. Parola analizi süresini 0.2 ms'ye indiren bu araçla web performansını optimize edin.