Domanda:
Facebook memorizza le password in testo normale?
Michał Šrajer
2014-03-16 21:58:32 UTC
view on stackexchange narkive permalink

Stavo per reimpostare la mia password di Facebook e ho ricevuto questo errore:

La tua nuova password è troppo simile alla tua password attuale. Prova un'altra password.

Presumo che Facebook memorizzi solo gli hash delle password, ma in tal caso, come possono misurare la somiglianza delle password? Questo dovrebbe essere impossibile con una buona funzione di hashing, giusto?

La domanda è: come è possibile e quali sono le implicazioni?

Grazie in anticipo.

Non ho detto chiaramente: non mi è stato chiesto di fornire la vecchia e la nuova password. Era la procedura di "reimpostazione della password", in cui fornivo solo una nuova password, quindi la maggior parte delle risposte di duplicato suggerito non sono applicabili.

UPDATE2

mistero risolto: vedi il commento (dall'ingegnere di Facebook)

Questo è stato risposto di seguito e confermato corretto da qualcuno che ha visto il codice! Non sono più necessarie speculazioni.
Ho notato che numerosi siti web dicono cose come "hai già usato quella password in passato". Quindi alcuni siti non confrontano solo l'ultimo. Suppongo che potresti chiamarla una misura di sicurezza, ma non posso fare a meno di pensare che non sia necessaria.
Una specie di duplicato: http://security.stackexchange.com/questions/47840/password-security (poiché hai escluso una password inserita di recente, la maggior parte delle risposte non si applicano perfettamente, ma alcune lo fanno ancora, e uno di questi è abbastanza vicino alla risposta migliore qui)
"Facebook memorizza le password in testo normale?"[Sì] (https://krebsonsecurity.com/2019/03/facebook-stored-hundreds-of-millions-of-user-passwords-in-plain-text-for-years/).
Sei risposte:
#1
+201
Michał Šrajer
2014-03-16 22:33:04 UTC
view on stackexchange narkive permalink

Speriamo e supponiamo che Facebook memorizzi solo gli hash della password corrente (e potenzialmente delle password precedenti).

Ecco cosa possono fare:

  1. utente imposta la prima password su "first" e fb memorizza l'hash ("first").

  2. in seguito, l'utente reimposta la password e gli viene chiesto di fornire la nuova password "First2"

  3. Facebook può generare una serie di password (simili a quella nuova): ["First2", "fIrst2", "firSt2", ... "first2", ... "first ", ...] e quindi confronta l'hash di ciascuno con l'hash memorizzato.

Questa è l'unica soluzione che mi viene in mente. Qualche altro?

Questa risposta è come lo fa Facebook. Fonte: ho letto e modificato il codice sorgente per il controllo della password.
[Perché Facebook si preoccupa?] (Http://security.stackexchange.com/questions/53658/why-does-facebook-bother-comparing-old-and-new-passwords)
In caso di hash, devono memorizzare (almeno) due hash, poiché accettano le password e la password con le maiuscole. (KaCkE contro kAcKe)
Pensavo che un buon hash avrebbe dovuto farlo in modo da non essere in grado di luccicare nulla dall'hash (cambiando un bit cambierà completamente l'hash)?
@TruthOf42 Sta eseguendo una sorta di attacco di forza bruta basato sulla nuova password, non invertendo gli hash, né confrontando gli hash tranne per testare la loro esatta uguaglianza.
@Anonymouse Ho appena riletto: sta creando un elenco di password simili alla password, eseguendo l'hashing e mantenendo l'elenco risultante. Quando quindi crei una nuova password, se l'hash è uguale a uno di quelli precedenti, dice che è troppo simile
@TruthOf42 In realtà, sembra essere il contrario: gli hash di password simili non vengono memorizzati. L'unica volta che si preoccupano della somiglianza delle password è quando crei una nuova password, quindi modificano le variazioni della tua nuova password, le confrontano con il tuo vecchio hash e poi le buttano fuori se non corrispondono , ti avvertono).
@TruthOf42 cosa dice cpast. Anche questo ha molto più senso in termini di spazio di archiviazione, non sei d'accordo?
-1
@JeffFerland: Jeff, potresti condividere quante password simili all'incirca stai cercando di indovinare e hash? 10? 100? 1000? Sono solo curioso.
@MichałŠrajer Attualmente, Facebook verifica il caso completamente invertito all'accesso. Facebook testa l'inversione di maiuscole e minuscole completamente invertite e della prima lettera al cambio della password.
Ma non è necessario inserire la password corrente per passare a una nuova password? Potrebbero semplicemente confrontare prima di fare la somma hash
@JonasDralle Sarebbe sufficiente nella maggior parte dei casi, ma questo metodo può essere utile quando si cerca di capire se una nuova password è simile a qualsiasi password utilizzata storicamente.Tuttavia, non sono sicuro che Facebook lo faccia.
@XtraSimplicity probabilmente non lo fanno.
Ho appena notato che Outlook fornisce lo stesso messaggio ed è stato sorprendente dal momento che la mia password variava cambiando completamente la prima parola, non solo inversione di maiuscole e minuscole o varianza di numeri / simboli, ma lasciando il resto lo stesso.Ex.Da FluffyDoggy a RambunctiousDoggy.Sospetto che debbano anche tenere conto di questo tipo di scenario.
Significa che Facebook usa lo stesso sale per ogni password?
@sluge No, significa che generano gli hash di "First2", "fIrst2", "firSt2", ... "first2", ... "first", ... con lo stesso sale del vecchio hash memorizzato.Se uno di loro corrisponde, viene visualizzato un errore.Se nessuno di loro corrisponde, li buttano via tutti e modificano la nuova password con un nuovo salt.
#2
+22
TildalWave
2014-03-17 01:51:16 UTC
view on stackexchange narkive permalink

Non saprei se lo fanno (non usano nemmeno Facebook), ma è anche possibile che utilizzino Moduli di sicurezza hardware (HSM) per il loro processo di crittografia che non memorizza le password con hash ma semplicemente crittografali in modo reversibile. Con il volume di richieste di autorizzazione che devono affrontare, ciò avrebbe perfettamente senso, poiché è di ordini di grandezza più veloce dell ' hashing delle password sicuro (leggi: lento), pur offrendo l'archiviazione sicura delle password.

Gli HSM potrebbero quindi essere programmati per confrontare la password memorizzata e quella nuova come input di una delle loro funzioni e restituirne semplicemente il risultato (potrebbe anche essere un valore booleano nel nostro caso), con la password originale mai nemmeno trasmessa o archiviati come testo in chiaro ovunque, oltre alla loro memoria interna (che è a prova di manomissione). Questa viene solitamente definita chiave sicura integrata e archiviazione / elaborazione dell'applicazione .

A proposito, molte banche utilizzano gli HSM perché una corretta implementazione richiede anche la sicurezza fisica per dispositivi stessi e il modo in cui vi si accede (in più, sono piuttosto costosi), ma questo ovviamente offre molta più flessibilità nel modo in cui le password possono essere elaborate in modo sicuro senza che vengano mai rivelate.

Ne dubito. Gli HSM offrono un'elaborazione crittografica sicura e veloce ma non grandi capacità di archiviazione. Non sono a conoscenza di alcun HSM, che sarebbe in grado di memorizzare le password di tutti gli utenti di Facebook.
@user1039462 Mai sentito parlare di archiviazione sicura resistente alle manomissioni? Se va bene per DoD, perché non dovrebbe essere per Facebook? E sì, puoi avere una capacità di archiviazione perfettamente sufficiente, se sei pronto a pagare per questo. Non tutti gli HSM sono disponibili sotto forma di chiavi USB. ;)
Gestisco personalmente alcuni HSM basati su PCI, ma tutti hanno una capacità di archiviazione di poche centinaia di chiavi. Potresti indicarmi un esempio con un grande spazio di archiviazione? Sono curioso.
Di quante chiavi hai bisogno? Puoi utilizzare un [HSM collegato alla rete] (https://encrypted.google.com/search?q=Network-Attached+HSM) e volumi esterni crittografati e antimanomissione. Oppure, per quanto ne so, potrebbero aver costruito i propri dispositivi HSM con grandi volumi interni. Esempio? Oh non lo so, da Luna SA ad AWS CloudHSM?
#3
+17
user11869
2014-03-16 22:50:08 UTC
view on stackexchange narkive permalink

C'è solo una risposta corretta a questa domanda. Nessuno lo sa (tranne Facebook).

Facebook potrebbe memorizzare la tua password di Facebook in testo normale, ma potrebbe anche esserci uno schema che utilizza hash fuzzy o hash precalcolati di password simili.

Non c'è davvero modo di saperlo a meno che non dovessimo entrare in Facebook e controllare tutte le loro risorse.

se riesci davvero a entrare in facebook ... sii gentile e riavvolgi;)
Risposta inutile. Chiaramente stiamo cercando modi in cui Facebook (e, cosa più importante, i nostri siti) possa farlo pur essendo sicuro.
Questa risposta non è realmente corretta perché, se FB * sta * memorizzando le password in chiaro, potrebbero esserci prove per dimostrare che lo stanno facendo (ad esempio sotto forma di qualcosa che è possibile che non sarebbe possibile se non memorizzassero il testo in chiaro). Ho letto la domanda di OP come una domanda su questo; in particolare, * il comportamento osservato prova che le password in chiaro vengono memorizzate? *
Tieni presente che un ex ingegnere di Facebook (e attuale diamante) [ha confermato] (https://security.stackexchange.com/questions/53481/does-facebook-store-plain-text-passwords#comment84577_53483) che la risposta accettata è in realtàcome fa Facebook, quindi questo non è corretto.Inoltre, l'OP non stava davvero chiedendo come * effettivamente * lo facessero - chiedevano solo come Facebook * poteva * farlo.
#4
+7
Ammusionist
2014-03-17 05:35:48 UTC
view on stackexchange narkive permalink

Un'altra possibilità è che Facebook memorizzi un hash della tua password e un hash del SOUNDEX della tua password. Quindi, quando inserisci la tua nuova password, può confrontare l'hash del suo SOUNDEX con quelli precedentemente memorizzati e rispondere che una password è troppo simile.

Questa è, ovviamente, una pura congettura.

Benvenuto nel club, ma spero proprio che non sia così, sarebbe troppo facile abbinare i dizionari delle password e restringere il campo a poche scelte possibili per la maggior parte degli account, se il loro database fosse violato. Supponendo che sia libero di rivelarlo, dovremmo davvero provare a convocare [@JeffFerland] (http://security.stackexchange.com/users/836/jeff-ferland) per rispondere. Un mod qui e un ingegnere di produzione su Facebook, dovrebbero farlo. :)
Plausibile, poiché la password può passare attraverso il soundex e successivamente crittografare la variabile soundex per confrontarla con la versione precedente del soundex crittografata.
#5
+3
mohrphium
2014-03-17 00:12:30 UTC
view on stackexchange narkive permalink

Un'altra possibilità è che fb non hash, ma crittografa le password con la loro chiave principale. Quindi potrebbero decrittarlo in qualsiasi momento per confrontarlo con il tuo nuovo.

  1. Speriamo di no - dovrebbero farlo hash!
  2. Come ha sottolineato Rell3oT, nessuno lo sa tranne fb . Quindi tutto ciò che possiamo fare è lanciare ipotesi selvagge sul ring.
nel caso ipotizzato "facebook utilizza la chiave principale", sarebbe ragionevole presumere che venga utilizzata una chiave asimmetrica, altrimenti il ​​sistema dovrebbe avere la "chiave principale" sempre in memoria ed entrare nel server significherebbe anche conoscere la "chiave principale" disponibile in memoria, quindi, rendendo il materiale crittografato piuttosto semplice
Per motivi di sicurezza, questa è la stessa cosa che memorizzare le password in testo normale.
Ancora usato spesso - inoltre presumo che (si spera) Facebook abbia alcuni professionisti della sicurezza qualificati che conoscono queste cose.
#6
+1
Royce Williams
2016-12-27 09:31:54 UTC
view on stackexchange narkive permalink

Fornendo un po 'più di dettagli sul metodo di memorizzazione della password stesso.

Le precedenti risposte storiche precedono qualsiasi conferma da Facebook. Ma a Passwords 14, Alec Muffett ha tenuto un discorso in cui ha descritto esplicitamente l'archiviazione delle password su Facebook in dettaglio.

Nel suo intervento, conferma che Facebook non lo è memorizza le password in testo normale, ma utilizza piuttosto un metodo in più passaggi che è abbastanza resistente a una varietà di attacchi:

slide from Alec Muffett talk, showing Facebook's password storage method

... come segue:

  $ cur = 'plaintext' # MD5 il testo in chiaro. $ cur = md5 ($ cur) # Hash SHA1 con salt a 160 bit. $ salt = randbytes (20) $ cur = hmac_sha1 ($ cur, $ salt) # Hash SHA256 con un salt segreto, utilizzando un servizio crittografico astratto internamente. $ cur = cryptoservice :: hmac ($ cur) [= hmac_sha256 ($ cur, $ segreto )] # Esegui il risultato attraverso lo scrypt KDF (usando parametri di ottimizzazione non divulgati) $ cur = scrypt ($ cur, $ salt) # Usa SHA256 (per ridurre e normalizzare il risultato dello scrypt grande) $ cur = hmac_sha256 ($ cur, $ salt )  

Questo livello di resistenza non dovrebbe sorprendere, poiché Muffett è l'autore di crack, uno dei primi efficienti strumenti di cracking delle password.

Quindi ora abbiamo la conferma che Facebook non memorizza le password in testo normale.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...