Εργαλεία Ασφάλειας

Ελεγκτής Ισχύος Κωδικού

Πραγματική ανάλυση σε πραγματικό χρόνο με τον κινητήρα zxcvbn: λεξικά κοινών κωδικών, διαδοχικοί χαρακτήρες από πληκτρολόγιο, ακολουθίες, επαναλήψεις και ημερομηνίες μειώνουν την ισχύ του κωδικού — ένας πολύ πιο αξιόπιστος δείκτης ασφάλειας από την απλή μέτρηση πεζών/κεφαλαίων ψηφίων/συμβόλων. Όλα εκτελούνται τοπικά· ο κωδικός σας δεν εγκαταλείπει ποτέ τον περιηγητή.

Με τεχνολογία zxcvbn Λεξικός τρωτών κωδικών 100% εκτός διακομιστή Αποτελέσματα σε πραγματικό χρόνο
Υπολογίζεται μόνο στη συσκευή σας — δεν μεταφορτώνεται ποτέ
k-anonymity: μόνο τα πρώτα 5 χαρακτήρες του κατακερματισμού SHA-1 εγκαταλείπουν τον περιηγητή σας
Ισχύς /100
Πολύ αδύναμος Εξαιρετικός
Μήκος
Αποτελεσματική εντροπία
bits
Μέγεθος συνόλου χαρακτήρων
Επίθεση εκτός σύνδεσης (αγρο GPU, ~10 δισεκατομμύρια δοκιμές/δευτερόλεπτο)
Επίθεση σύνδεσης (περιορισμός ρυθμού, ~100 δοκιμές/ώρα)
Ρυθμίσεις προηγμένης πολιτικής

Διαχωρισμένα με κόμμα ή αλλαγή γραμμής, αγνοούν την πεζοκεφαλαία. Το zxcvbn εντοπίζει αυτόματα παραλλαγές πεζοκεφαλαίας, αντικαταστάσεις leet (π.χ. Pa$$w0rd) και αναστροφές.

Σύγκριση δύο κωδικών πρόσβασης

ΓΙΑΤΙ ΣΗΜΑΝΤΙΚΟ

Γιατί το "πεζό + κεφαλαίο + ψηφίο + σύμβολο" δεν σημαίνει ασφάλεια

Το P@ssw0rd! πληροί και τα τέσσερα κριτήρια χαρακτήρων και βρίσκεται ακόμα σε λίστες πραγματικών παραβιάσεων. Η ισχύς αφορά την ευκολία που μπορεί να μαντευτεί, όχι την αριθμητική των κλάσεων χαρακτήρων.

01

Ταίριασμα αδύναμων κωδικών

Το ενσωματωμένο λεξικό από κοινούς κωδικούς και λέξεις τιμωρείται βαριά – ο κωδικός, το 123456 και το P@ssw0rd βαθμολογούνται σωστά ως πολύ αδύναμοι.

02

Ανιχνεύση προτύπων

Μονόπατα πληκτρολογίου, ευθείες ακολουθίες, επαναλήψεις, ημερομηνίες και κοινές λέξεις μειώνουν τον πραγματικό χώρο μαντείας.

03

Πραγματική, όχι θεωρητική εντροπία

Η βαθμολογία εκτιμά πραγματικές μαντείες από τις εντοπισμένες δομές – όχι το γινόμενο του μεγέθους χαρακτήρων επί το μήκος.

04

Δύο σενάρια επίθεσης

Ξεχωριστές εκτιμήσεις για παράλληλη επίθεση με GPU εκτός σύνδεσης και περιορισμένης ταχύτητας μαντείας στο διαδίκτυο βοηθούν να κατανοήσετε το κόστος για τον επιτιθέμενο.

05

Προσαρμοσμένη πολιτική και λίστα αποκλεισμού

Ορίστε ελάχιστο μήκος και απαιτήσεις κλάσεων χαρακτήρων· προσθέστε ονόματα εταιρειών ή κωδικούς έργου για να συμμορφωθείτε με τους εταιρικούς κανόνες κωδικών.

06

Εξ ολοκλήρου τοπικά

Ο κωδικός σας ποτέ δεν εγκαταλείπει το πρόγραμμα περιήγησης ή δεν έρχεται σε επαφή με διακομιστή· οι ρυθμίσεις αποθηκεύονται μόνο στον δικό σας localStorage.

Κατανόηση της ισχύος κωδικών πρόσβασης

Πώς λειτουργεί η βαθμολογία, τι σημαίνουν οι χρόνοι ρήξης και τι κάνει πραγματικά έναν καλό κωδικό.

Πώς υπολογίζεται η βαθμολογία 0–4 του zxcvbn;

Το zxcvbn πρώτα διαιρεί τον κωδικό σε κομμάτια: λέξεις λεξικού (κοινοί κωδικοί, αγγικές λέξεις), μονόπατα πληκτρολογίου, ακολουθίες, επαναλήψεις, ημερομηνίες και κομμάτια εξ ανάγκης.

Υπολογίζει τις μαντείες ανά κομμάτι, τις συνδυάζει σε συνολικό αριθμό μαντειών και τον αντιστοιχίζει σε βαθμολογία 0–4. Οι συνηθισμένες μεταμορφώσεις λαμβάνονται αυτόματα υπόψη – αναστροφή πεζοκεφαλαίας, αντικαταστάσεις leet (@→a, 0→o), καταλήξεις ετών – γι' αυτό το P@ssw0rd βαθμολογείται άσχημα παρά την ποικιλία των χαρακτήρων του.

Ποια είναι η διαφορά μεταξύ πραγματικής εντροπίας και μεγέθους συνόλου χαρακτήρων;

Το μέγεθος συνόλου χαρακτήρων πολλαπλασιάζει το μέγεθος αλφαβήτου επί το μήκος – ένα θεωρητικό ανώτατο όριο που υποθέτει ότι κάθε χαρακτήρας είναι εντελώς τυχαίος, κάτι που οι πραγματικοί κωδικοί σχεδόν ποτέ δεν είναι.

Η πραγματική εντροπία (ο αριθμός bit που εμφανίζεται εδώ) είναι ο πραγματικός χώρος μαντείας που εκτιμά το zxcvbn μετά την ανίχνευση λέξεων λεξικού και προτύπων. Ίδιου μήκους, το iloveyou2024 έχει πολύ μικρότερη πραγματική εντροπία από μια τυχαία συμβολοσειρά.

Πώς εκτιμώνται οι χρόνοι ρήξης – είναι αξιόπιστοι;

Χρόνος διάσπασης = εκτιμώμενες προσπάθειες ÷ προσπάθειες ανά δευτερόλεπτο. Εμφανίζονται δύο ταχύτητες: ~10 δισεκατομμύρια/δευτερόλεπτο για farm GPU χωρίς σύνδεση (ο εισβολέας έχει το hash), και ~100/ώρα για online σύνδεση με περιορισμό ρυθμού.

Θεωρήστε τις ως τάξεις μεγέθους, όχι ως προβλέψεις: η πραγματική ταχύτητα εξαρτάται από τον αλγόριθμο κατακερματισμού (το bcrypt/Argon2 είναι τάξεις μεγέθους πιο αργό από το MD5), το υλικό και την ποιότητα της λεξικής. Μια απόκλιση επί 10× δεν αλλάζει τίποτα. Μια διαφορά εκατομμυριαπλάσια κάνει.

Τι κάνει ένα πραγματικά καλό κωδικό πρόσβασης;

Δύο αξιόπιστοι τρόποι: μια τυχαία συμβολοσειρά 16+ χαρακτήρων από διαχειριστή κωδικών, μοναδική ανά site. Ή μια φράση πρόσβασης από 4+ άσχετες λέξεις (όπως correct-horse-battery-staple) — μακριά και ανούσια.

Όποιο τρόπο και αν επιλέξετε, συνδυάστε τον με έλεγχο ταυτότητας δύο παραγόντων (MFA) και μην επαναχρησιμοποιείτε τον ίδιο κωδικό σε διαφορετικά sites.

Ο ιστότοπός μου απαιτεί κεφαλαία/πεζά/ψηφίο/σύμβολο — γιατί ο χαμηλός βαθμός;

Η εταιρική πολιτική (μήκος, κατηγορίες χαρακτήρων) είναι ένα ελάχιστο απαιτούμενο: απαντά στο "συμμορφώνεται;" Ο βαθμός zxcvbn απαντά στο "μπορεί να μαντευτεί;" Τα δύο είναι ανεξάρτητα.

Η προσθήκη ενός θαυμαστικού και ενός έτους σε μια κοινή λέξη (password!2024) περνά τους περισσότερους ελέγχους πολιτικής αλλά πέφτει σε μια επίθεση λεξικού μέσα σε δευτερόλεπτα.

Ο κωδικός πρόσβασής μου ανεβάζεται κάπου;

Όχι. Όλα τρέχουν στο πρόγραμμά σας περιήγησης μέσω JavaScript — δεν υπάρχει αίτημα δικτύου που στέλνει τον κωδικό, και λειτουργεί επίσης χωρίς σύνδεση. Μόνο η προσαρμοσμένη πολιτική σας (κανόνες μήκους, λίγο αποκλεισμού) αποθηκεύεται τοπικά. Δεν περιέχει ποτέ κωδικό πρόσβασης.

Έλεγχος ισχύος κωδικού στον κώδικα

Για να προσθέσετε ζωντανούς ελέγχους ισχύος στη δική σας φόρμα εγγραφής ή αλλαγής κωδικού, χρησιμοποιήστε μια μεταφορά του zxcvbn για τη γλώσσα σας:

JavaScript
<!-- CDN -->
<script src="https://unpkg.com/[email protected]/dist/zxcvbn.js"></script>
<script>
  const res = zxcvbn('P@ssw0rd!');
  console.log(res.score, res.crack_times_display);
</script>
            
Node.js
// npm i @zxcvbn-ts/core
import { zxcvbn } from '@zxcvbn-ts/core';

const result = zxcvbn('P@ssw0rd!');
console.log(result.score, result.guesses_log10);
            
PHP
composer require bjeavons/zxcvbn-php
            
<?php
require __DIR__ . '/vendor/autoload.php';

use ZxcvbnPhp\Zxcvbn;

$zxcvbn = new Zxcvbn();
$res = $zxcvbn->passwordStrength('P@ssw0rd!');
echo $res['score'];
            
Python
pip install zxcvbn
            
from zxcvbn import zxcvbn

res = zxcvbn('P@ssw0rd!')
print(res['score'], res['crack_times_display'])
            
Go
go get github.com/nbutton23/zxcvbn-go
            
package main

import (
  "fmt"
  zxcvbn "github.com/nbutton23/zxcvbn-go"
)

func main() {
  res := zxcvbn.PasswordStrength("P@ssw0rd!", nil)
  fmt.Println(res.Score, res.Guesses)
}
            
Rust
# Add dependency
cargo add zxcvbn
            
use zxcvbn::zxcvbn;

fn main() {
    match zxcvbn("P@ssw0rd!", &[]) {
        Ok(estimate) => {
            println!("score: {}", estimate.score()); // 0..4
            if let Some(times) = estimate.crack_times() {
                println!("offline: {:?}", times.offline_slow_hashing_1e4_per_second());
            }
        }
        Err(err) => eprintln!("zxcvbn error: {err}"),
    }
}
            

Οι βαθμοί και οι εκτιμήσεις προτύπων μπορεί να διαφέρουν ελαφρώς από αυτή τη σελίδα ανάλογα με τις εκδόσεις της βιβλιοθήκης, αλλά οι αρχές είναι οι ίδιες. Για ελέγχους στον διακομιστή, επιβάλλετε επίσης ένα ανώτατο όριο μήκους και περιορισμό ρυθμού, έτσι ώστε υπερβολικά μεγάλες εισόδους να μην μπορούν να χρησιμοποιηθούν για κατανάλωση CPU.

Συχνές ερωτήσεις

Πώς λειτουργεί αυτό το εργαλείο ελέγχου ισχύος κωδικών;

Χρησιμοποιεί το zxcvbn, τον ανοιχτού κώδικα αλγόριθμο από την Dropbox: ο κωδικός αντιστοιχίζεται με λεξικά κοινών κωδικών, λίστες αγγλικών λέξεων, διαδρομές πληκτρολογίου, ακολουθίες, ημερομηνίες και επαναλαμβανόμενα πρότυπα. Ο εκτιμώμενος μέσος αριθμός προσπαθειών που χρειάζεται ένας εισβολέας αντιστοιχίζεται σε βαθμό 0–4 και εκτιμήσεις χρόνου διάσπασης.

Το P@ssw0rd φαίνεται πολύπλοκο — γιατί είναι "πολύ αδύναμο";

Είναι ένας από τους πιο εμβληματικά αδύναμους κωδικούς στα corpus παραβιάσεων. Εμφανίζεται απευθείας στα λεξικά του zxcvbn, και η κεφαλαιοποίηση μαζί με τις αντικαταστάσεις leet (a→@, o→0) αναγνωρίζονται αυτόματα. Οι διαφορετικοί χαρακτήρες με μια πλήρως προβλέψιμη δομή είναι ακριβώς αυτό που προσπαθούν πρώτα οι λεξικοί εισβολείς με βάση κανόνες.

Πόσο πρέπει να είναι ένας κωδικός πρόσβασης;

Όταν δημιουργείται τυχαία, 12+ χαρακτήρες συνήθως καταπολεμούν online επιθέσεις, ενώ 16+ αντέχουν offline διάσπαση GPU για πολλά χρόνια. Το μήκος έχει μεγαλύτερη σημασία από την πολυπλοκότητα χαρακτήρων: μια τυχαία συμβολοσειρά πεζών 20 χαρακτήρων ξεπερνά έναν συνδυασμό 10 χαρακτήρων και των τεσσάρων κατηγοριών.

Γιατί να διαχωρίσετε τους χρόνους διάσπασης χωρίς σύνδεση και online;

Τα σενάρια επίθεσης διαφέρουν: μετά από μια παραβίαση βάσης δεδομένων, ένας εισβολέας μπορεί να δοκιμάσει hashes τοπικά σε GPUs με δισεκατομμύρια προσπάθειες ανά δευτερόλεπτο. Εναντίον μιας ζωντανής σύνδεσης, ο περιορισμός ρυθμού επιτρέπει μόνο μερικές προσπάθειες ανά δευτερόλεπτο. Ο ίδιος κωδικός μπορεί να επιβιώσει μια τρισεκατομμύρια φορές περισσότερο σε ένα σενάριο από το άλλο — εξού και οι δύο εμφανίζονται.

Αποθηκεύονται οι εισόδοι μου κάπου;

Όχι. Ο κωδικός σας ζει μόνο στη μνήμη του προγράμματος περιήγησης και εξαφανίζεται μετά την ανανέωση. Μόνο οι προσαρμοσμένες ρυθμίσεις πολιτικής σας (κανόνες μήκους, λίστα αποκλεισμού) διατηρούνται στην τοπική αποθήκευση. Δεν περιέχουν ποτέ κωδικό πρόσβασης.

Σχετικά εργαλεία