La risposta breve
La risposta breve è: "Così non sarai colpito da una azione legale collettiva da $ 5 milioni." Questo dovrebbe essere un motivo sufficiente per la maggior parte dei CEO. L'hashing delle password è molto più economico.
Ma ancora più importante: il semplice hashing delle password come suggerito nella tua domanda non è sufficiente. Avrai comunque la causa. Devi fare di più.
Perché devi fare di più richiede un po 'più di tempo per spiegarlo. Quindi prendiamo per un momento la strada più lunga in modo che tu capisca cosa stai spiegando, quindi faremo il giro per la sinossi di 5 minuti.
L'hashing è solo l'inizio
Ma iniziamo con quello. Supponiamo che tu memorizzi le password dei tuoi utenti in questo modo:
# id: user: password1: alice: pizza2: bob: passw0rd3: carol: baseball
Adesso , supponiamo che un utente malintenzionato riesca a ottenere più accesso al tuo sistema di quanto desideri. È lì solo per 35 secondi prima di rilevare il problema e chiudere il buco. Ma in quei 35 secondi è riuscito a impossessarsi del database delle password. Sì, hai commesso un errore di sicurezza, ma ora lo hai risolto. Hai corretto il buco, corretto il codice, aggiornato il tuo firewall, qualunque esso fosse. Quindi va tutto bene, ora, giusto?
Beh, no, ha il tuo database di password.
Ciò significa che ora può impersonare ogni utente sul tuo sistema. La sicurezza del tuo sistema è distrutta. L'unico modo per recuperare è ricominciare da capo con un NUOVO database di password, costringendo tutti a cambiare la propria password senza utilizzare la password esistente come una valida forma di identificazione. Devi contattarli fuori banda attraverso un altro metodo (telefono, e-mail o qualcosa del genere) per verificare la loro identità per ricreare le loro password e, nel frattempo, l'intera tua operazione è morta nell'acqua.
E se non lo vedessi rubare il database delle password? In retrospettiva, è abbastanza improbabile che tu lo veda effettivamente accadere. Il modo in cui probabilmente lo scoprirai è notando attività insolite sugli account di più utenti. Forse per mesi è come se il tuo sistema non avesse alcuna sicurezza e non puoi capire perché. Questo potrebbe rovinare il tuo business.
Quindi abbiamo hash
Invece di memorizzare la password, memorizziamo un hash della password. Il tuo database ora è simile a questo:
# id: user: sha11: alice: 1f6ccd2be75f1cc94a22a773eea8f8aeb5c682172: bob: 7c6a61c68ef8b9b6b061b28c348bc1ed7921cb533eea8f8aeb5c682172: bob: 7c6a61c68ef8b9b6b061b28c348bc1ed7921cb533eea8f8aeb5c682172: bob: 7c6a61c68ef8b9b6b061b28c348bc1ed7921cb533eea8f8aeb5c682172: bob: 7c6a61c68ef8b9b6b061b28c348bc1ed7921cb533d si memorizza è un token opaco che può essere utilizzato per verificare se una password è corretta, ma non può essere utilizzato per recuperare la password corretta. Bene, quasi. Google quegli hash, ti sfido.
Quindi ora siamo passati alla tecnologia degli anni '70. Congratulazioni. Possiamo fare di meglio.
Quindi saliamo
Ho passato molto tempo a rispondere alla domanda sul perché salare gli hash, inclusi esempi e dimostrazioni di come funziona nel mondo reale. Non ripeterò la discussione sull'hash qui, quindi vai avanti e leggi l'originale:
Perché gli hash salati sono più sicuri?
Piuttosto divertente , eh? OK, quindi ora sappiamo che dobbiamo salare i nostri hash o potremmo anche non aver mai hash le password per cominciare. Ora siamo alla tecnologia degli anni '90. Possiamo ancora fare di meglio.
Quindi iteriamo
Hai notato quel bit in fondo alla risposta che ho collegato sopra, giusto? Qualcosa su bcrypt e PBKDF2? Sì, si scopre che è davvero importante. Con la velocità con cui l'hardware può eseguire i calcoli di hashing oggi ( grazie, bitcoin!), un utente malintenzionato con hardware pronto all'uso può far saltare in aria l'intero file di password con hash in poche ore , calcolando miliardi o addirittura trilioni di hash al secondo. Devi rallentarli.
Il modo più semplice per rallentarli è semplicemente fargli lavorare di più. Invece di calcolare un hash per controllare una password, devi calcolare 1000. O 100.000. O qualunque numero si adatti alla tua fantasia. Puoi anche usare scrypt ("ess-crypt"), che non solo richiede molta potenza della CPU, ma anche molta RAM per fare il calcolo, rendendo l'hardware dedicato che ho collegato sopra in gran parte inutile .
Questo è lo stato dell'arte attuale. Congratulazioni e benvenuto nella tecnologia odierna .
Abbiamo finito?
Quindi ora cosa succede quando l'aggressore prende il tuo file di password. Bene, ora può batterlo offline invece di fare tentativi online contro il tuo servizio. Purtroppo, una buona parte dei tuoi utenti (dal 4% al 12%) avrà utilizzato la password "123456" o "password" a meno che tu non glielo impedisca attivamente e l'aggressore proverà a indovinarle prima.
Se vuoi mantenere gli utenti al sicuro, non lasciare che utilizzino "password" come password. O uno qualsiasi degli altri primi 500, se è per questo. È disponibile un software per rendere facile (e gratuito) il calcolo accurato della sicurezza della password.
Ma anche l'autenticazione a più fattori non è mai una cattiva idea. È facile da aggiungere a qualsiasi progetto. Quindi potresti farlo anche tu.
Ora, i tuoi 5 minuti di gloria
Sei di fronte al tuo capo, ti chiede perché devi usare PBKDF2 o simili per sottoporre ad hashing le tue password. Citi la class action di LinkedIn e dici: "Questo è il livello minimo di sicurezza legalmente previsto nel settore. Qualcosa di meno è letteralmente negligenza". Questo dovrebbe richiedere molto meno di 5 minuti e, se il tuo capo non è convinto, non stava ascoltando.
Ma potresti continuare: "Il costo di implementazione della tecnologia di hashing è trascurabile, mentre il costo di non implementazione potrebbe essere di milioni o superiore". e "In caso di violazione, un database con hash adeguato consente di posizionarsi come un'organizzazione ben gestita e attenta alla sicurezza, mentre un database sottoposto ad hashing in modo improprio è un imbarazzo molto pubblico che, come la storia ha dimostrato molte volte, non essere ignorato o trascurato minimamente dai media. "
Se vuoi essere tecnico, puoi ri-modificare quanto sopra. Ma se stai parlando con il tuo capo, dovresti saperlo meglio di così. E le analogie sono molto meno efficaci del semplice mostrare gli effetti della vita reale che sono perfettamente visibili senza il rivestimento di zucchero necessario.
Non si fa in modo che le persone indossino guanti protettivi raccontando una buona analogia . Invece metti un po 'di carne per il pranzo nel becher e quando esplode in fiamme verdi e blu dici "è quello che succederà al tuo dito".
Usa lo stesso principio qui.