Come utente ci sono due regole per usare la password:
1). Non riutilizzare mai la stessa password con entità diverse (ad esempio, non utilizzare la stessa password sulla tua banca online come un webforum gratuito creato da qualche individuo anonimo). Qualsiasi sito registra potenzialmente le password in testo semplice (anche le password per altri siti accidentalmente digitate) e potenzialmente potrebbe utilizzare tali password per attaccare gli utenti su altri siti. [1] .
2). Seleziona le passwords / passphrase ad alta entropia (preferibilmente generate casualmente e solo leggermente modificate) che non verranno trovate in un attacco di dizionario o in un elenco di password comuni.
Un sistema in cui gli utenti archiviano localmente un elenco crittografato protetto da passphrase di password generate casualmente e sincronizzato tra tutti i tuoi computer è un'ottima soluzione, ma non puoi aspettarti che la maggior parte degli utenti faccia questo.
Come programmatore che imposta le regole della password per un sistema è un atto di bilanciamento. Regole più rigide significano generalmente un'esperienza utente più difficile (UX). Se le tue regole sono particolarmente rigide, gli utenti ignoreranno in qualche modo le tue regole. Lo scriveranno dal loro computer, lo salveranno in chiaro sul desktop, o smetteranno di usare il tuo servizio, o si lamenteranno incessantemente per i rialzisti, o useranno il meccanismo di reimpostazione della password ogni volta per accedere (che potrebbe finire per essere un legame molto più debole). Forse hai bisogno di un numero nella loro password, prendono una parola di dizionario comune e aggiungono un 1 alla fine. Le password devono essere cambiate ogni tre mesi e non riutilizzate e l'utente finale ruota la propria password in Spring2012
, Summer2012
.
Al contrario, non avere regole significa che troverai molti utenti idioti che sceglieranno una password che si trova in un elenco dei migliori elenchi di password 100/1000.
Le regole personalizzate sono belle, in quanto è possibile impostare un minimo indispensabile per la lunghezza / complessità e inoltre possono impedire il riutilizzo della password se le regole sono piuttosto particolari (ad esempio, nessun simbolo speciale, ma almeno due numeri e una maiuscola / minuscola) . Tuttavia, dovresti assicurarti che le tue regole personalizzate non escludano passphrase forti, che sono un buon modo per ottenere password memorabili ad alta entropia. Inoltre, l'invalidazione delle password comuni e deboli può aiutare a proteggere la tua applicazione. Ad esempio, se non si consente all'utente di impostare una password che è una parola del dizionario più un numero alla fine, o una password da un elenco di password comuni, ciò potrebbe rafforzare la sicurezza. (Anche se di nuovo un utente malintenzionato può utilizzare tali informazioni per sapere quali password non provare e gli utenti potrebbero trovare il minimo indispensabile che passa le regole).
Ma per rispondere alla tua domanda, l'entropia di una password di 8 caratteri composta da un numero qualsiasi di cifre, lettere maiuscole e minuscole scelte casualmente è lg (62 8 ) ~ 47,6 bit (ignoriamoci simboli). L'entropia di una password di 8 caratteri in cui esattamente tre lettere sono cifre è 44,3 bit ~ lg (56 * 52 5 10 3 ) (56 = 8 scegli 3; il numero di combinazioni di tre cifre scelte tra 8 posizioni), quindi leggermente più debole. Se si rilassa la condizione, è necessario che sia di 8 caratteri e abbia tre o più cifre; quindi è ancora solo 44,6 bit. Pertanto, la richiesta di d
cifre in una password lunga di simbolo N
la indebolisce leggermente rispetto a consentire qualsiasi simbolo, ma solo da un paio di bit di entropia. Anche se in alternativa si confronta una password di 7 cifre senza nessun numero di numeri lg (62 7 ) ~ 41.7 bit e si aggiunge una scelta forzata di cifre inserite nello spazio a caso; la nuova password è 80 volte più potente (6,3 bit) (dieci scelte per le cifre, 8 scelte per la posizione delle cifre forzate).