Autenticazione Web - password vs file chiave

21

Esiste un sito Web di posta aziendale (PHP + MySQL) per un numero limitato di utenti dipendenti da una società che lavora in remoto con il portale Web aziendale. Ogni utente ha un login e una password.

Sto pensando di sostituire le normali password di testo con un file chiave, ovvero l'utente sceglie un file come chiave al suo primo accesso, può essere un file di testo o anche un'immagine, il checksum di quel file viene memorizzato in il database e al successivo accesso di un utente che deve caricare il suo file chiave invece di digitare una password. Tale autenticazione sarebbe più sicura di una password digitata? Immagino sia molto più difficile capire un file chiave di una password.

    
posta user164863 11.06.2014 - 21:18
fonte

6 risposte

49

Il problema principale con un file chiave è che si tratta di un file . Come tale, è memorizzato da qualche parte, su un supporto fisico. Sarà copiato con i backup. Il file sarà ancora presente sugli hard disk di scarto. Gli utenti copieranno i loro file su diversi dispositivi per poter accedere da tutti questi dispositivi. Per riassumere, i file leak .

Al contrario, una password si inserisce in un cervello e non ha bisogno di essere scritta da nessuna parte; l'utente lo sposta naturalmente con sé; le password non perdono nei nastri di backup e nei vecchi dischi. Ultimo ma non meno importante, l'inserimento della password funziona bene sui telefoni cellulari, mentre il caricamento dei file può essere tecnologicamente più impegnativo.

Quindi, mentre un file segreto può contenere molto più segretezza di una password potenziata dalla mente, tende a essere molto meno "segreto" e implica problemi di usabilità. Nel complesso, il metodo "file segreto" non sembra essere più sicuro, in un modo generico, delle password.

Un altro modo per vederlo: un "file segreto" è equivalente, da un punto di vista della sicurezza, a un file di testo che contiene una grossa password grassa e casuale, che l'utente legge quando vuole accedere (e possibilmente "digita" la password con una copia e incolla). Ogni argomento contro la scrittura di una password in un file di testo si applica ugualmente alla tua idea del "file segreto".

    
risposta data 11.06.2014 - 21:30
fonte
15

Se vuoi l'autenticazione a più fattori (come dimostra il tuo commento: "Pensavo all'autenticazione multimediale multipla: la password è qualcosa che l'utente conosce e un file chiave è qualcosa che dovrebbe possedere"), ci sono diverse opzioni:

  1. Password + certificato sul lato client (richiede l'infrastruttura PKI e un certificato difficile da ruotare. Difficile accedere alla webmail da un altro dispositivo, ma potrebbe essere un vantaggio.)
  2. Password + OTP. Puoi emettere dispositivi HOTP (stile YubiKey), dispositivi TOTP (stile token RSA) o utilizzare un dispositivo TOTP morbido (come Google Authenticator). Esistono diverse librerie che implementano TOTP per PHP, come link .

I keyfile sono facili da rubare, oppure puoi fare in modo che gli utenti commettano errori come alterare il loro keyfile (immagina se hanno scelto un documento che hanno poi modificato!), cancellando il loro file di chiavi, ecc. Non è un approccio molto user friendly, e richiede trasferendo l'intero file su ogni accesso. Inoltre, i file di chiavi non offrono alcuna protezione contro attacchi malware o MITM.

    
risposta data 11.06.2014 - 21:44
fonte
9

Nessuno ha menzionato il modo "ufficiale" di fare ciò, usando i file dei certificati client. Questi sono non inviati al server ma partecipano a un processo crittografico. Puoi persino memorizzarli su smartcard, a quel punto non possono essere rubati dal malware sul PC client.

Il lato negativo è che l'interfaccia utente è goffa e non è facile da configurare.

(Termine di ricerca utile: "PKCS11")

    
risposta data 12.06.2014 - 11:25
fonte
3

Vedo almeno 2 punti contro questa idea:

  1. password / passphrase esistono idealmente nella memoria dell'utente e da nessun'altra parte, mentre i "file chiave" devono esistere in alcuni archivi e quindi possono essere rubati.
  2. Non stai tenendo in considerazione che gli utenti non sono sempre seduti davanti allo stesso computer - dovrebbero trasportare quei file - più pericolo
risposta data 11.06.2014 - 21:33
fonte
2

Un altro problema con l'utilizzo di un file è che un file è tecnicamente instabile in quanto non è garantito che rimarrà lo stesso finché viene utilizzato. I file possono essere corrotti o modificati senza che tu te ne accorga o non te ne accorga. Anche la perdita di dati è un rischio: se si perde l'accesso alla posizione in cui è archiviato il file (laptop rubato, crash del disco rigido, PowerShell / Bash / errore riga di comando), non è più possibile accedere al sistema. Una password non ha questi problemi. non risiede nel tuo file system, quindi qualsiasi problema con il tuo file system non lo riguarderà.

    
risposta data 12.06.2014 - 11:30
fonte
1

Come hanno affermato tutti gli altri, i due problemi principali sono: 1. Memorizzare la chiave su un supporto del disco rigido, sempre un rischio per la sicurezza poiché qualcuno può rubare anche dopo che il disco rigido è stato formattato. 2. Gli utenti copieranno la chiave da un sistema all'altro poiché sappiamo per certo che nessuno utilizza un sistema per accedere. Quale aumenterà il rischio di compromissione del file chiave. Avere un sistema con un file chiave è abbastanza rischioso, immagina 3-4 sistemi con una copia della chiave, ora quali sono le probabilità che uno di essi venga compromesso? il rischio è sicuramente lì.

    
risposta data 12.06.2014 - 00:19
fonte

Leggi altre domande sui tag