Perché alcune password non consentono determinati tipi di caratteri?

2

C'è qualche motivo relativo alla programmazione per cui alcune password non possono avere determinati caratteri? Se l'idea di memorizzare una password è di memorizzare il suo hash, poiché una funzione di hashing può prendere qualsiasi input (ok almeno immagino che qualsiasi funzione di hashing ragionevole possa prendere la punteggiatura) perché un programma non consentirebbe alcune password? Significa che una funzione di hashing non viene utilizzata, allora che cos'è?

Un esempio è LAN Manager

Passwords are not case sensitive. All passwords are converted into uppercase before generating the hash value.

Quando lavoravo per IBM, dovevamo compilare le ore lavorate inserendole in mainframe con z / OS. La password per questo doveva essere un formato molto particolare, qualcosa come 3 cifre seguite da 3 lettere. Ho chiesto se le password fossero memorizzate in testo normale e la risposta era "no, ma il sistema è antico".

    
posta Celeritas 26.08.2013 - 23:56
fonte

4 risposte

2

Qualsiasi restrizione di qualsiasi forma o forma nelle password diminuirà la loro entropia, rendendole più deboli. Meno limitazioni = più combinazioni possibili. Non c'è alcuna ragione tecnica per cui le password dovrebbero essere limitate in ogni caso *. Non è un problema di programmazione, si tratta di un problema correlato allo scimpanzé .

Questo è particolarmente vero se sei hashing corretto e sicuro delle tue password .

* In alcuni sistemi molto vecchi e legacy, potrebbero esserci alcune limitazioni tecniche relative alla codifica, caratteri accettabili dal sistema operativo stesso e così via. Certo, questo non esiste più e non c'è motivo per noi di imitare il comportamento di quei vecchi sistemi.

    
risposta data 27.08.2013 - 00:09
fonte
2

In l'hash LM , le password sono case-insensitive perché doveva essere usato con un sistema operativo (Windows) che dovrebbe essere insensibile alle maiuscole e minuscole e gli utenti di Windows sono addestrati a ignorare il caso. Questa è stata una mossa piuttosto logica, se sbagliata nel caso delle password. Hanno (parzialmente) imparato dai loro errori e sono passati a MD4 su UTF-16 , supportando così password molto più lunghe e caratteri arbitrari.

Avere caratteri non ASCII in una password non è necessariamente una buona idea. Implica alcuni problemi quando si tratta di digitare queste password su tastiere o smartphone esterni. Ci sono anche problemi di decomposizione Unicode: un carattere "é" può essere, a livello Unicode, uno o due punti di codice, quindi essere in grado di digitare un "é" su una tastiera non significa che si ottiene quello giusto. Alcuni progettisti e amministratori di sistemi limitano i possibili caratteri sulla base del fatto che dovrebbero proteggere gli utenti troppo zelanti contro se stessi.

    
risposta data 27.08.2013 - 00:41
fonte
0

Memorizzare in testo semplice o crittografato (ma non con hash), evitando di dover disinfettare correttamente l'input dei dati, o per comodità o compatibilità. Coloro che archiviano le loro password in testo semplice spesso applicano limiti di lunghezza e / o carattere a causa delle restrizioni sul loro database; lo stesso vale per le persone che usano la crittografia reversibile. Se vogliono evitare di dover disinfettare correttamente l'input dei dati (che non è un grosso problema per i siti web, ma possono essere altri media), allora metteranno un limite severo sui caratteri consentiti in modo che nulla possa essere usato per attacchi di iniezione. Non entrerò nei dettagli sulla praticità o sulla compatibilità, poiché le altre risposte lo coprono già.

    
risposta data 27.08.2013 - 04:00
fonte
0

Come @Adnan sottolinea giustamente, non esiste un motivo buono per limitare i caratteri, ma la pratica non sparirà presto.

Uno degli esempi più eclatanti di tali restrizioni è ciò che viene fatto nel sistema di carrelli degli acquisti di x-cart utilizzato da molti siti web. Silenziosamente tronca le password sono < . Quindi se gli dai una password come lwB<Ln#q5iDVnW!K&ZQ0u(zD , tratterà la tua password come lwB . Steve Thomas ha descritto questo, ma non riesco a trovare la fonte precisa, quindi lo riconoscerò in generale.)

Da errori come questo è chiaro quale fosse l'intento originale. Qualcuno ha inserito una regola di analisi della password per impedire l'XSS. Ovviamente ci sono molti modi migliori per farlo, ma questo dimostra che alcune di queste politiche sono un tentativo di sanificare i dati forniti dagli utenti prima di eseguire qualsiasi ulteriore elaborazione.

US-ASCII solo

Ci sono buone ragioni per limitare le password a US-ASCII. Un utente può avere qualcosa come ü nella sua password, ma a volte lo forniranno come UTF8 e altre volte come Latin1 (o qualsiasi altra serie di codifiche). L'utente potrebbe non essere a conoscenza di tali distinzioni.

Consenti spazio bianco?

C'è qualche dibattito sull'opportunità di consentire lo spazio bianco nelle password. Sono favorevole a consentire gli spazi in quanto può essere utile per creare passphrase più forti, più memorizzabili e più facili da digitare. Ma ci sono due ragioni per diffidare degli spazi nelle password.

  1. Gli spazi sono molto udibili quando le persone digitano.

    Sulla maggior parte delle tastiere è facile sentire quando si digita uno spazio rispetto a qualsiasi altro tasto. Così qualcuno che ti ascolta digita la tua password un paio di volte sarà in grado di imparare in quali posizioni ci sono spazi. Questo può rendere il cracking molto più semplice.

  2. Stripping trailing e leading whitespace.

    Potremmo desiderare di eliminare il trailing e condurre gli spazi bianchi dalle password inserite, in quanto le persone potrebbero non sapere che ci sono. (Possibile copia / incolla sciatteria, ecc.). Quindi aggiungiamo solo confusione se diciamo che lo spazio bianco è permesso a condizione che non stia percorrendo o conducendo.

Nonostante questi problemi, mi piace ancora l'idea di consentire spazi. Ma molte persone intelligenti non sono d'accordo con me.

    
risposta data 27.08.2013 - 05:39
fonte

Leggi altre domande sui tag