Questo sistema senza password è sicuro?

13

Una persona ha un modulo che richiede un nome e una password. La password viene inviata al server dove viene creato un hash da hashing del nome e della password. Questo hash è convertito in un numero usando il valore ascii. Il numero è limitato a 10 cifre e viene utilizzato per seminare un generatore di numeri casuali. Tre numeri casuali sono generati da 1-77616. Questi numeri sono usati per selezionare parole da un elenco di 77616 parole inglesi. Le tre parole formate vengono utilizzate come nome utente delle persone.

77616 ^ 3 è circa 2 ^ 48, quindi la probabilità di una collisione dopo un milione di generazioni di nome utente dovrebbe essere ~ 0.001774778278169853.

Questo sembra un modo sicuro per gestire gli utenti, in questo modo non è necessario implementare un sistema di login / registro? C'è qualche vantaggio nell'usare questo tipo di sistema su un sistema di login / registro tradizionale?

    
posta klenex 13.05.2017 - 17:25
fonte

4 risposte

36

No, non sembra sicuro.

Collisioni

Mersenne Twister è un RNG deterministico, quindi non è adatto per la maggior parte dei compiti crittografici (anche se l'uso è logico, perché se non fosse deterministico, il tuo approccio non funzionerebbe ovviamente).

In questo caso, le collisioni non si verificherebbero nella fase in cui si presuppone e basano i calcoli. Invece, accadrebbe quando si limita il valore di ascii a 10 cifre, quindi la probabilità di collisioni è molto più alta di quanto si pensi.

Commenti sull'approccio

Ciò che hai è fondamentalmente una funzione di hashing fatta in casa. Prendi qualche input, applica alcune funzioni ad esso e ricevi un output di lunghezza fissa (3 parole). Lo spazio di input è maggiore dello spazio di output ed è impossibile invertire la procedura (ottenere la password dalle tre parole memorizzate).

Non eseguire il rollover e Non essere un Dave applicare. Per le password di hash appropriate, vedi Come password di hash sicure? .

Stai ancora implementando un sistema di login e registrazione (un utente deve inserire nome utente e password, lo memorizzi in una qualche forma e successivamente può confrontare il valore memorizzato con i nuovi valori immessi per autenticare l'utente).

Se ti fermi in questo passaggio: "La password viene inviata al server dove viene creato un hash", avresti un processo ordinario. Invece, aggiungi ulteriori passaggi, che non aumentano, ma diminuiscono, la sicurezza.

    
risposta data 13.05.2017 - 17:59
fonte
6

Si inizia con un hash nome utente + password, con quest'ultimo che si spera sia un hash crittografico con almeno 256 bit. Quindi lo trasformi in un numero di 10 cifre, buttando via tutti tranne 33 bit. Quindi si utilizza questo come seme per un generatore di numeri pseudocasuali per calcolare una chiave di parole a 48 bit, ma l'informazione è già persa - non è possibile estendere 33 bit in 48 bit, ci sarà solo (al massimo) 10 ^ 10 possibili scelte per le tre parole. Quindi il tuo metodo, anche se ben implementato, cede molta entropia senza alcun beneficio. Potrebbe anche essere necessario che gli utenti abbiano password di 7 lettere senza maiuscolo o simboli.

    
risposta data 14.05.2017 - 06:46
fonte
3

Oltre alla matematica, il tuo sistema non è sicuro a causa delle ipotesi dell'utente. Gli utenti ordinari generalmente non considerano il loro nome utente come un segreto. La maggior parte dei sistemi non la nasconde agli altri utenti (ad esempio in questo stesso sito possiamo vedere tutti gli altri nomi utente). I tuoi utenti non avranno alcuna inclinazione a non condividerli e non capiranno che li stai loggando tramite questo nome utente (assumeranno ingenuamente che ci sia un cookie o un certificato o qualcosa che sta facendo un accesso automatico).

    
risposta data 14.05.2017 - 10:20
fonte
3

No, non hai eliminato la password. Hai eliminato il nome utente, quindi rinominato la password come "nome utente". Dal momento che lo chiami "username", i tuoi utenti presumeranno "questo è il mio nome utente, posso condividerlo online con i miei amici" e il loro account verrà hackerato.

Non fare in modo che la sicurezza si basi sulla segretezza di un "nome utente".

    
risposta data 14.05.2017 - 10:34
fonte

Leggi altre domande sui tag