Perché le password possono essere utilizzate per crittografare i dati, ma sono meno potenti per l'autenticazione?

3

Il software di crittografia è spesso basato su password. Anche se l'avversario ottiene il tuo computer, non possono ottenere i dati senza conoscere la password e la bruteforcing non è fattibile.

I siti Web utilizzano le password per autenticare gli utenti. In particolare, memorizzano un hash della password dell'utente. Se un utente malintenzionato accede al server, è difficile ma ancora fattibile per l'hacker ottenere le password. Ecco perché gli hash sono tenuti segreti.

Perché è questo? C'è un motivo per cui la crittografia è più difficile da rompere degli hash?

    
posta PyRulez 02.04.2016 - 05:05
fonte

5 risposte

7

La semplice risposta è che è non meno strong. La crittografia basata esclusivamente su password è altrettanto sicura (in) come un sistema di autenticazione basato su password con architettura equivalente.

    
risposta data 02.04.2016 - 06:08
fonte
3

Encryption software is often password based. Even if the adversary gets your computer they can't get the data without knowing the password, and bruteforcing is infeasible.

Perché la forza bruta non è fattibile? Ciò dipende principalmente dal design del sistema e, naturalmente, dalla forza della password. Il testo in chiaro crittografato che è stato crittografato con "password" è facile da "forza bruta". Bene, se includi "attacco di dizionario" quando chiedi informazioni sul brute forzante comunque.

Una volta calcolata la chiave, dovresti assumere che il testo cifrato sia rotto. Quasi tutti i testi in chiaro contengono una struttura sufficiente per verificare che l'ipotesi fosse corretta. Di solito il protocollo richiede che l'utente sia corretto quando digita la password.

Websites use passwords to authenticate users. They in particular store a hash of the user's password. If an attacker gets access to the server, it is difficult but still feasible for the attacker to get the passwords. That's why the hashes are kept secret.

Gli hash generalmente non sono tenuti segreti. Non sono trattati come password o chiavi. Non si vuole perdere loro perché è possibile indovinare off-line. Ma se si riuscisse a mantenerli del tutto segreti, si potrebbe anche memorizzare le password stesse ed eseguire il confronto diretto delle password (con protezione contro gli attacchi ai canali laterali, naturalmente).

Diciamo che sono che non si presume siano direttamente disponibili come un altro livello di sicurezza.

Why is this? Is there a reason that encryption is harder to break than hashes?

Non lo è. Per la crittografia il testo cifrato di solito è direttamente disponibile per un utente malintenzionato. Non è necessario accedere a un server specifico per iniziare ad attaccare il testo cifrato. Questo è il caso per gli hash delle password.

In altre parole, ti manca la protezione che può fornire un server temprato e configurato correttamente / programmato.

    
risposta data 02.04.2016 - 11:21
fonte
2

Penso che tu abbia effettivamente due domande qui:

Why can passwords be used to encrypt data, but are less strong for authentication?

Non c'è davvero alcuna differenza nella sicurezza se si criptano tutti i dati per un singolo utente con la stessa chiave di crittografia o se si dispone di una sorta di archiviazione sicura e si dispone di una funzionalità sicura per autenticare questo singolo utente con la stessa password che si ho usato per la crittografia. Ma questo di solito non è l'impostazione che hai in realtà, cioè la crittografia e l'autenticazione sono utilizzate in diversi scenari.

Is there a reason that encryption is harder to break than hashes?

Non è che la crittografia sia più strong dell'hashing o l'altro modo. Tuttavia, la crittografia di un messaggio e la convalida di una password hanno requisiti diversi . Infatti, l'uso della crittografia per l'archiviazione delle password potrebbe renderlo meno sicuro e l'utilizzo di hash per la crittografia dei dati non renderebbe possibile il ripristino dei dati originali:

  • Crittografia
    Rende possibile decrittografare il messaggio. Poiché gli hash sono solo a senso unico, non puoi utilizzare gli hash per la crittografia, ma devi utilizzare algoritmi simmetrici come AES o asimmetrici come RSA. Poiché il punto principale della crittografia è che solo gli utenti selezionati possono decodificare il messaggio, il grosso problema è proteggere la chiave necessaria per la decrittografia.
  • Convalida della password
    Convalida solo se l'utente ha inserito la password corretta. Meglio renderlo abbastanza sicuro in modo che anche un compromesso del server non rivelerà le password più forti. La crittografia funzionerebbe, ma poi si ha il problema di proteggere di nuovo la chiave di decrittografia, ovvero un unico punto di compromesso per tutte le password. Guarda Desaster di Adobe perché la crittografia delle password è sbagliata. Un hash non ha questo problema. Ma per forzare brutalmente il brute più strong aggiungi salt e rendilo abbastanza lento, vedi Informazioni sull'erogazione delle password protette .
risposta data 02.04.2016 - 09:54
fonte
1

Funzioni hash crittografiche

Prima di discutere le differenze tra hashing e crittografia, è importante definire alcune regole per le cosiddette funzioni di hash crittografiche . Esistono due requisiti per una funzione hash H per essere una funzione hash crittografica:

  1. Resistente alla collisione : dato un valore x , non esiste un algoritmo migliore della supposizione casuale della forza bruta per trovare un y tale che H ( x) = H (y)
  2. Nascondere prima dell'immagine : dato uno spazio di messaggi di grandi dimensioni (si pensi all'insieme di tutte le stringhe di lunghezza 1-30), dato H (m) non dovrebbe esserci alcun algoritmo migliore di ipotesi casuali per derivare m . Cioè l'hashing è a senso unico .

di hashing

Immaginiamo uno scenario in cui esiste un sito web bob.com e un utente Alice che desidera configurare un account e accedere. Il flusso sarebbe simile a questo:

  • Utente Alice visita bob.com e crea un account. Alice invia un modulo al sito che include il nome utente e la password desiderati.
  • bob.com riceve il modulo e archivia nel proprio database una nuova riga per il nuovo utente alice . Come accennato, il sito non memorizzerà direttamente la password di Alice nel database, per evitare che le informazioni perdano a causa di violazioni, quindi bob.com memorizza un hash delle password salate. Ciò significa solo che memorizza un numero casuale - il "sale" - e l'hash della password di Alice concatenata con il numero casuale, utilizzando qualche funzione di hash crittografica H .

Ora, un flusso di accesso:

  • Alice tenta di accedere al sito. Digita la sua password P nel modulo di accesso e fa clic su Invia.
  • bob.com riceve P , controlla salt di alice S e hash password h ed esegue un controllo utilizzando la funzione di hash H per confermare che H (P + S) = h . In caso affermativo, la password inviata da Alice era corretta e il login procede. Altrimenti, rifiutiamo il tentativo di accesso.

Si noti che mentre non perdiamo le informazioni della password di Alice, non è in una forma direttamente utilizzabile. Possiamo usare le informazioni hash come un verificatore , ma non possiamo riprodurre la password P su un capriccio, a meno che Alice non la digiti. Nello specifico, se dovessimo provare a indovinare la password P dall'hash specificato h e salt S , non avremo una migliore algoritmo rispetto a ipotesi casuali, come garantito dalla funzione di hash crittografica.

La crittografia

La crittografia presenta la difficoltà aggiuntiva rispetto all'hashing di richiedere l'esistenza di un'operazione inversa per trovare i dati originali, chiamata decryption . Durante la decrittografia, l'utente deve fornire una qualche forma di chiave di decodifica, disegnata (pseudo-) in modo casuale da un grande spazio chiave (si pensi a tutte le stringhe a 1024 bit). Ora, uno dei requisiti dello schema di crittografia è che non si dovrebbe essere in grado di indovinare la chiave data il testo cifrato (cioè il messaggio crittografato) nel tempo sublimato nella dimensione dello spazio delle chiavi. Questa analisi è simile all'analisi di hash di cui sopra, e in effetti noterete che sia nell'hashing sia nella crittografia, la difficoltà nella decrittazione deriva completamente dalla lunghezza della chiave che usate (o nel caso dell'hashing, la dimensione del lo spazio messaggi del tuo messaggio proviene da).

Si presume ovviamente un algoritmo di crittografia audio, come AES o simili, e non tiene conto dei problemi del protocollo. I protocolli difettosi sono molto più facili da rompere, soprattutto perché ti danno una "scorciatoia" per provare l'intero spazio della tastiera, per esempio dai un'occhiata a questo risposta a 3DES su SO .

    
risposta data 02.04.2016 - 06:30
fonte
-1

TL; DR: La crittografia può essere più difficile da decifrare perché potresti non sapere il testo in chiaro per verificare che hai trovato la chiave di crittografia corretta e perché la crittografia potrebbe richiedere di convertire la chiave con algoritmi altrettanto costosi utilizzati per l'autenticazione più la crittografia stessa.

Se i dati crittografati o le password sono più difficili da ottenere dipende da ciò che è stato crittografato con quale algoritmo e in che modo vengono memorizzate le password per l'autenticazione.

Le password di solito non vengono memorizzate come testo in chiaro leggibile per l'autenticazione, ma convertite in hash o digest con funzioni hash crittografiche unidirezionali in modo da non poterne dedurre la password.

Idealmente, l'unico modo per ottenere la password originale è quello di forzare l'hashing con tutte le password possibili o probabilmente (magari basate su dizionario o regole) e confrontarle con l'hash specificato.

Inoltre, è buono se richiede anche molte risorse (tempo di calcolo e / o memoria) per ottenere l'hash della password dal testo in chiaro in modo che l'ipotesi non sia fattibile.

Detto questo, la crittografia stessa consiste in una fase di derivazione della chiave e in una fase di crittografia reversibile.

La derivazione della chiave trasforma una chiave definita dall'utente in una chiave utilizzata per la crittografia. La chiave può essere denotata come password.

Nel contesto di crittografia, tuttavia, le password sono spesso definite passphrase perché è più probabile che non si usi una sola parola, ma un testo più lungo da crittografare mentre le password di autenticazione tendono ad essere più brevi per ragioni storiche e pratiche motivi: li usi molto più frequentemente nella maggior parte dei casi, e sistemi UNIX o Linux precedenti e persino Amazon, ad esempio, ha limitato le password a 8 caratteri qualche anno fa.

In alternativa, molto spesso troverai che key è un termine più usato per il segreto utilizzato per crittografare i dati perché è più agevole sulla struttura del segreto.

Nel caso più semplice, la chiave viene utilizzata così com'è per crittografare i dati (si pensi alla crittografia di Vigenère). Per una maggiore sicurezza, tuttavia, le password vengono spesso convertite in hash come per l'autenticazione. Questo è chiamato derivazione chiave. Le funzioni di derivazione chiave possono anche essere utilizzate per generare hash di password per l'autenticazione.

Un altro motivo per non utilizzare le password direttamente per la crittografia è che molti algoritmi di crittografia moderni richiedono chiavi di lunghezza fissa, solitamente perché sono basate su blocchi (la chiave non deve necessariamente corrispondere alla dimensione del blocco, ad es. AES-256 che utilizza blocchi a 128 bit con chiavi a 256 bit).

Molti algoritmi di crittografia non utilizzano la chiave specificata dall'utente o nulla da essa derivato per la crittografia: derivano una "chiave di crittografia chiave" dal segreto utente che viene utilizzato per crittografare una chiave dati che viene effettivamente utilizzata per crittografare i dati.

La chiave dati dovrebbe idealmente essere una sequenza di dati casuali non correlabili all'utente, al sistema, ai dati di testo semplice o qualsiasi cosa , il che significa che non è possibile inferire il segreto dell'utente a questo punto. La chiave dati può essere crittografata con criptodimici asimmetrici lenti come RSA.

La combinazione della crittografia asimmetrica con algoritmi simmetrici è chiamata crittografia ibrida o un crittosistema ibrido e può consentire a chiunque di crittografare i dati limitando la decrittografia a un piccolo gruppo di utenti.

Un altro vantaggio dell'utilizzo di questo approccio indiretto è la possibilità di crittografare la chiave dati con più chiavi utente in modo che i dati crittografati possano essere resi accessibili a tutti quegli utenti e si può semplicemente modificare una chiave utente senza dover ricodificare la crittografia i dati effettivi.

Alla fine, la crittografia produce testo cifrato che sembra idealmente come dati completamente casuali con entropia massima e non fornisce alcun suggerimento né sulla chiave originale definita dall'utente né sul testo in chiaro.

Ciò implica che ci sono tanti plausibili testi in chiaro che potrebbero essere crittografati per produrre lo stesso testo cifrato, quindi a meno che tu non sappia cosa è stato crittografato, non puoi verificare di aver trovato la chiave e il codice corretto; combinazione di testo in chiaro quando si tenta di decifrare la crittografia.

Ciò potrebbe tuttavia essere vanificato da checksum, digest e firme del testo in chiaro che consentono di verificare se la tua ipotesi fosse corretta.

Quindi, a meno che l'algoritmo di crittografia non sia corretto o la derivazione della chiave sia significativamente inferiore a quella utilizzata per l'autenticazione della password confrontata, o se si conosce qualcosa sulla chiave di crittografia o sul testo in chiaro, la crittografia è molto più difficile da decifrare ci sono più passaggi in gioco e un contributo plausibile di oltre un miliardo.

    
risposta data 02.04.2016 - 07:30
fonte