Sistema che divide le password su due server

4

Mi sono imbattuto in questo articolo di notizie sulla BBC,

tl; dr - una password (casuale) è divisa a metà e memorizzata su due server separati, per sventare gli hacker che hanno ottenuto l'accesso a entrambi i server in seguito a una violazione della sicurezza.

Ora la domanda principale è, come sarebbe questo tipo di sistema dovrebbe essere fatto ... codespeaking , per PHP che comunemente sviluppo nelle mie applicazioni web, la password del database è normalmente memorizzata in una configurazione file, ovvero config.php con nome utente e password, in tal caso è comprensibile che le password possano essere rubate se la sicurezza è stata compromessa.

Tuttavia, quando si divide e si invia l'altra metà all'altro server, come andrebbe avanti quando si effettua una comunicazione con l'altro server (tenendo presente con PHP) poiché l'altra password del server verrebbe memorizzata in un file di configurazione, wouldn vero? In termini di sicurezza, mantenere l'altra password del server lontana da quella principale, esattamente come comunicherà il server principale, senza esporre altre password, a parte il primo server.

Questo sicuramente mi fa pensare ...

    
posta MacMac 10.10.2012 - 22:31
fonte

4 risposte

5

Immagina che l'utente abbia una password "stack overflow" inserita durante la registrazione sul sito web. Il sito web dividerà la password in due, la prima parte avrà sempre una lunghezza di quattro caratteri:

Part 1: "stac"
Part 2: "k overflow"

Quindi alcuni caratteri casuali vengono aggiunti alla prima parte e anteposti alla seconda parte, dato che la parte preposta è di una certa lunghezza, diciamo 6:

Part 1: "stacd9u8BHaI1"
Part 2: "hBy47k overflow"

La prima parte viene salata e hash su un primo server e archiviata nel database. La seconda parte utilizza un diverso salt, un diverso hash e un database su un server diverso.

Immagina che un hacker ottenga l'accesso al primo database e trovi con successo, ad esempio attraverso la forza bruta, la password "stacd9u8BHaI1". L'hacker verifica questa password sul sito web e nota che non funziona. Potrebbe essere scoraggiato da ciò e abbandonare il tentativo di trovare altre password. È una sicurezza supplementare, dal momento che non è estremamente strong, ma è comunque valida se non costa troppo in termini di risorse rispetto all'autentica autenticazione a server singolo.

Non è facile scoprire quale parte della password è archiviata?

In realtà no. È possibile, ma non facile. Se trovi, tramite la forza bruta, che la password originale è "hBy47k overflow", puoi indovinare che l'inizio è stato randomizzato, ma non è semplice. I caratteri casuali possono anche essere regolati di conseguenza: ad esempio per le password che contengono solo parole, una parola può essere aggiunta / aggiunta anziché caratteri casuali:

Part 1: "stac battery" // Appending a random number of characters
Part 2: "change k overflow" // Prepending 7 characters

o

Part 1: "stac white unicorn"
Part 2: "global k overflow" // Still 7 characters

In realtà è necessario forzare le password con più password per indovinare quanti caratteri in sospeso / aggiunti sono presenti.

Quando fallisce?

C'è un caso in cui questa tecnica fallisce miseramente: se hai un account su un sistema compromesso, conosci già la tua password, quindi con la bruteforcing delle due parti, puoi facilmente vedere quali parti sono state conservate. Rendere il numero di caratteri nella prima parte e il numero di caratteri anteposto alla seconda parte dipende da un elemento relativo alla password stessa rende più difficile la comprensione del sistema, ma comunque abbastanza fattibile.

Devo implementare questo sistema adesso?

No. La sicurezza che si basa sul fatto che si mantiene segreto il modo in cui si memorizzano le password è debole. Chiunque abbia accesso al codice sorgente conosce tutti gli elementi.

La tecnica della password divisa ha un piccolo vantaggio, ma non vale la pena di essere implementata in ogni sito web. Basta usare PBKDF2 con i parametri corretti, e starai bene. Anche se sei una banca. Sono abbastanza sicuro che la mia banca memorizzi la mia password in chiaro nel database, così come la maggior parte dei siti web che usi quotidianamente. Questo fa schifo.

    
risposta data 10.10.2012 - 23:11
fonte
0

In questo articolo: link

Ho letto che entrambi i server devono fare affidamento su diversi meccanismi di sicurezza, quindi se un sistema viene compromesso il secondo potrebbe ancora essere sicuro e l'intruso riceve solo metà della password. Ma questa non è una risposta completa perché non so quali meccanismi di sicurezza vengono utilizzati lì.

    
risposta data 10.10.2012 - 22:38
fonte
0

Questo non è per le password del database. Ciò richiede di riassemblare la password, e dal momento che la tua unica macchina sa come farlo, gli aggressori possono semplicemente ottenere quella macchina e vincere.

Questo è per l'autenticazione dell'utente. Quando qualcuno invia una password, la dividi e la invii a due server di autenticazione che rispondono sì / no alle due metà. Ciò non impedisce a qualcuno di eseguire un attacco di dizionario, ma impedisce l'archiviazione dell'intera password in un'unica posizione.

    
risposta data 10.10.2012 - 23:10
fonte
0

È una soluzione efficace e comune nella sicurezza del mondo fisico: due chiavi per una cassastrong, due PIN necessari per accedere a una stanza, ecc. - Le password di amministratore del server sono memorizzate in 1/2 posizioni in due posizioni. Molti film fanno buon uso di esso per effetto drammatico.

Come questo si traduce in server - Come nel mondo fisico, la complessità aggiunta significa che l'affidabilità per l'accesso legittimo può essere ridotta, (cioè due persone devono essere nello stesso posto nello stesso momento e un'auto si rompe rispetto a due server è necessario (in modo sicuro) parlare tra loro e le comunicazioni falliscono.)

Dove le differenze tra mondo reale e server è che mettere una pistola alla testa di una persona non aiuta l'altro - devi avere 2 pistole una per ogni testa ... A meno che non sia fatto simultaneamente - il compromesso viene rilevato e il collegamento fallirà. Ciò richiede un buon coordinamento e pianificazione e la chiave per il funzionamento di questo schema.

Essenzialmente per far funzionare questo è necessario assicurarsi che un attacco (riuscito o meno) su un sistema non aiuti un attacco all'altro. Inoltre, l'attaccante non deve essere in grado di attaccare entrambi i sistemi "simultaneamente" - quindi quanto prima è possibile rilevare un attacco riuscito, tanto meno è probabile che abbia successo. Inoltre, è necessario essere certi che la manutenzione di due sistemi non riduca la sicurezza di nessuno dei due sistemi se si mantiene un singolo sistema.

A questo punto c'è molta probabilità che la matematica e la sfera di cristallo si guardino per sapere davvero se ne vale la pena. Non è qualcosa che avrà successo se fatto a buon mercato e con poco, ma è un modo per aumentare la sicurezza se fatto correttamente.

    
risposta data 10.10.2012 - 23:30
fonte

Leggi altre domande sui tag