Passwort-Formulare gehören zu den kritischsten Elementen jeder Webanwendung. Doch während Entwicklerteams stundenlang an der Benutzerfreundlichkeit feilen, schleppen viele Projekte eine veraltete Bibliothek mit sich herum: zxcvbn. Mit 389 KB (komprimiert) und zuletzt aktualisiert im Jahr 2017 ist sie nicht nur riesig, sondern auch überholt. Die Folge? Langsame Ladezeiten, eine schlechtere Nutzererfahrung und unnötige Belastung der Leistungskennzahlen.
Doch jetzt gibt es eine Alternative: passcore. Diese Bibliothek erreicht die gleiche Erkennungsrate von 98,4 % bei realen Passwortlecks – und das mit gerade einmal 3 KB (komprimiert). Kein Kompromiss bei der Sicherheit, dafür ein erheblicher Gewinn an Performance. Besonders auf mobilen Geräten macht sich der Unterschied bemerkbar: Statt 9,7 ms für die Initialisierung benötigt passcore nur 0,2 ms. Für Nutzer bedeutet das: Kein Layout-Shift, keine verzögerte Rückmeldung und eine deutlich flüssigere Registrierung.
Warum zxcvbn zum Problem wird: Größe vs. Leistung
Die meisten Entwickler installieren zxcvbn, weil es als Standard für Passwortstärke-Tests gilt. Doch die Zahlen sprechen eine klare Sprache:
- Dateigröße (gzipped): 389 KB (zxcvbn) vs. 3 KB (passcore)
- Ladezeit (kalt): ~9,7 ms (zxcvbn) vs. ~0,2 ms (passcore)
- Auswertungsdauer: ~77.578 ns/op (zxcvbn) vs. ~2.622 ns/op (passcore)
- Letzte Aktualisierung: 2017 (zxcvbn) vs. aktiv gewartet (passcore)
Die Ironie: Viele der Passwörter, die zxcvbn blockieren soll, wie password123 oder qwertz, sind ohnehin in keinem realen Leak enthalten. Stattdessen wird eine riesige Wortliste (über 40.000 Einträge) geladen, die kaum relevanten Nutzen bringt. passcore setzt stattdessen auf eine zielgerichtet reduzierte Datenbank, die ausschließlich Passwörter aus echten Leaks berücksichtigt.
Wie passcore funktioniert: Fünf Schichten für maximale Sicherheit
Die Stärke von passcore liegt in seiner modularen Architektur. Jede Passwortprüfung durchläuft fünf aufeinander aufbauende Filter – ähnlich wie ein mehrstufiges Sicherheitssystem. Erst wenn alle Schichten keine Übereinstimmung finden, greift der Algorithmus auf Länge und Zeichenvielfalt zurück.
1. Wörterbuchprüfung: Nur was wirklich vorkommt
- Die Datenbank enthält nur 329 Einträge – aber diese stammen direkt aus Leaks wie RockYou, Adobe oder Have I Been Pwned.
- Nicht enthalten sind irrelevante Wörter wie "apple" oder "banana", sondern nur Passwörter, die tatsächlich in Angriffen verwendet wurden.
- Beispiel:
Password1!wird nicht als ganzes Wort erkannt, sondern durch einen Suffix-Stripper aufpasswordreduziert und dann geprüft.
2. Tastaturmuster: Von qwerty bis numpad walks
- Erfasst klassische Muster wie
qwerty,asdf,1234oder diagonale Nummernfolgen. - Selbst komplexere Varianten wie
1qaz2wsxwerden zuverlässig identifiziert.
3. Wiederholungen und Sequenzen: aaaa oder abcdef
- Prüft auf sich wiederholende Zeichen (
aaaa,ababab) oder aufsteigende/absteigende Sequenzen (123456,abcxyz).
4. Leetspeak-Dekodierung: p@ssw0rd wird zu password
- Wandelt gebräuchliche Substitutionen wie
p@ssw0rd→passwordoderm0nk3y→monkeyum. - Anschließend wird das Ergebnis gegen die Wörterbuchdatenbank geprüft.
5. Länge als entscheidender Faktor
- Kurze Passwörter (unter 20 Zeichen) werden nach Zeichenvielfalt bewertet.
- Mittlere Passwörter (20–30 Zeichen) erhalten automatisch eine höhere Bewertung.
- Lange Passwörter (30+ Zeichen) erhalten die beste Note (4/4), selbst wenn sie nur aus Kleinbuchstaben bestehen.
- Beispiel:
correct-horse-battery-staple(25 Zeichen) wird trotz fehlender Sonderzeichen als sicher eingestuft.
Die Herausforderungen: Von Wortstämmen bis zu Leetspeak mit Trennzeichen
Bei der Entwicklung von passcore stießen die Macher auf mehrere Fallstricke, die in herkömmlichen Lösungen oft übersehen werden:
- Wortstamm + Suffix: Passwörter wie
Password1!,Admin123oderWelcome123enthalten einen bekannten Wörterbuch-Eintrag, der jedoch durch Zahlen oder Sonderzeichen modifiziert wurde. passcore löst dies durch einematchCommonRoot-Funktion, die den Kern extrahiert und prüft.
- Leetspeak mit Trennzeichen: Ein Passwort wie
N0=Acc3sswird nach direkter Dekodierung nicht erkannt. passcore spaltet die Zeichenkette an nicht-alphanumerischen Zeichen auf und prüft jeden Teil separat –accessist in der Datenbank enthalten und wird blockiert.
- Fehlende kritische Wörter: Bei Tests mit realen Leaks zeigte sich, dass Begriffe wie
admin,test,useroderloginin vielen Passwörtern vorkommen, aber nicht in Standard-Wörterbüchern enthalten waren. Diese wurden nachträglich ergänzt.
Der Wechsel in der Praxis: So einfach ist der Umstieg
Die Integration von passcore in bestehende Projekte ist denkbar einfach und erfordert nur minimale Anpassungen:
// Vorher
import zxcvbn from 'zxcvbn';
const { score } = zxcvbn(password);
// Nachher
import { passcore } from 'passcorelib';
const { score } = passcore(password);Einziger Unterschied: Die Rückgabe von result.feedback.warning wird zu result.warning vereinfacht.
Die Bilanz: Weniger Gewicht, gleiche Sicherheit
passcore ist kein Ersatz für zxcvbn – sondern eine optimierte Alternative für Projekte, bei denen Bundle-Größe und Performance entscheidend sind. Die Benchmarks belegen:
- Gleiche Erkennungsrate: 98,4 % auf realen Leak-Daten.
- Deutlich geringere Dateigröße: 130-mal kleiner als zxcvbn.
- Schnellere Ausführung: 30-mal schneller als die etablierte Lösung.
Der Trade-off? Eine kleinere Wörterbuchdatenbank (329 vs. 40.000 Einträge). Doch diese Entscheidung ist bewusst: Die meisten Angriffe nutzen einfache Muster wie password123, Tastaturfolgen oder Leetspeak-Varianten bekannter Wörter. Diese erfasst passcore zuverlässig – und spart dabei unnötigen Ballast.
Fazit: Lohnt sich der Wechsel zu passcore?
Für die meisten Webanwendungen ist passcore eine überzeugende Wahl. Wer auf eine nachweislich sichere, aber extrem kleine und schnelle Bibliothek setzt, profitiert von:
- Besseren Core Web Vitals durch geringere Ladezeiten.
- Flüssigeren Nutzererfahrungen, besonders auf mobilen Geräten.
- Aktiver Wartung statt veralteter Code-Basis.
Einzig für Projekte, die eine vollständige Abdeckung aller möglichen Passwörter benötigen (z. B. in Hochsicherheitsumgebungen), ist zxcvbn weiterhin die bessere Wahl. Doch für 99 % der Anwendungsfälle bietet passcore eine optimale Balance aus Sicherheit, Performance und Einfachheit.
Die Zukunft der Passwortprüfung könnte damit einfacher und effizienter werden – ohne Kompromisse bei der Sicherheit.
KI-Zusammenfassung
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.