È sicuro pubblicare qualcosa criptato con una password se lo rendi incredibilmente difficile da decifrare?

6

Diciamo che hai una chiave privata molto importante che non vuoi perdere. Pensi di pubblicarlo su link ma poi riallaccia che elimini il punto. Quindi pensi di crittografare con l'aiuto della derivazione della chiave di password , ma normalmente non è abbastanza. Lo sai perché algoritmi simili sono usati per proteggere le password sui server, e quando quegli hash vengono fatti trapelare, anche se le password sono al sicuro per un certo periodo, il server dice ancora a tutti di cambiare la loro password. Ciò implica che non è sicuro per loro essere pubblici per lunghi periodi di tempo.

Un server di solito insiste sull'hash della password per richiedere solo 1 secondo o qualcosa del genere. Dal momento che questa è una password per il recupero, non ti importa se ci vuole un po '. Stai bene se richiede molto tempo, ad esempio 24 ore, ad esempio.

Se si imposta la derivazione della propria password in un tempo molto lungo, ad esempio un giorno su un computer tipico, è sicuro pubblicare pubblicamente i contenuti crittografati con quella chiave? O sarai ancora vulnerabile alla forza bruta?

    
posta PyRulez 08.05.2016 - 17:51
fonte

2 risposte

5

Il motivo del rafforzamento delle chiavi è che le password non hanno un'entropia pari a quella prevista per la chiave. Il tempo necessario per interrompere un tasto è proporzionale al numero di possibili chiavi. Gli algoritmi di rafforzamento utilizzati sulle password compensano la scarsa entropia aumentando la costante di proporzionalità. Ma il divario è così grande che il rafforzamento non può compensare. Una password con 64 bit di entropia è molto difficile da memorizzare - si tratta di 10 caratteri di caratteri ASCII casuali casuali (se inizi a imporre caratteristiche memorabili, l'entropia va modo in basso) o 14 casuali lettere minuscole, ma per raggiungere 128 bit di "cracking difficoltà", che corrisponde alla dimensione della chiave più comune per la crittografia simmetrica, è necessario un whooping 2 ^ 64 - circa un secolo di tempo della CPU.

Nel tuo scenario, una password memorabile è il metodo sbagliato. Sarebbe una password che usi raramente, ma deve essere molto strong e quindi difficile da memorizzare.

Utilizza una chiave casuale, anziché una chiave derivata da password e stampala . Conservare la stampa in un luogo sicuro.

Se il software che usi richiede una password, genera una password casuale con la stessa entropia della chiave. 20 caratteri stampabili ASCII, o 28 lettere minuscole casuali, o qualcosa di equivalente, ti dà 128 bit di entropia. Se la tecnologia progredisce al punto che ciò è fragile, la chiave che stai crittografando probabilmente non sarà più sicura in ogni caso. Poiché la tua password ha abbastanza entropia per una chiave, non è necessario rafforzarla. Ancora una volta, stampalo.

Una volta che hai percorso questa strada, potresti anche stampare la chiave originale e dimenticarti di caricarla. Ma aggiungere un livello di riferimento indiretto ha dei vantaggi. Significa che un avversario deve ottenere sia una copia della chiave crittografata sia una copia della chiave di crittografia della chiave. Con questa separazione, se una delle parti viene compromessa, si può avere il tempo di agire prima che anche la seconda venga compromessa. È inoltre possibile memorizzare la chiave di crittografia della chiave in più parti separate. Esistono algoritmi condivisione segreta che consentono di suddividere una chiave in parti n in modo che possa essere recuperata da qualsiasi pezzo k , ma non di meno. Se vuoi mantenere le cose semplici, puoi generare più chiavi di crittografia delle chiavi, caricare la chiave master crittografata con ognuna di queste e dividere le chiavi di crittografia della chiave e inviare i pezzi in modo che ci voglia più di un singolo punto per recuperare l'intera cosa .

    
risposta data 08.05.2016 - 19:57
fonte
2

Per chiarezza agli altri lettori, la derivazione della chiave basata su password è hashing, non crittografia. È progettato per produrre chiavi di crittografia da password, non crittografare le password. Dovresti inserire la password con la funzione (che chiamerò PBKDF) e quindi criptare i dati con la chiave risultante.

Un hash con una password complessa con un algoritmo strong richiederebbe l'interruzione di eoni - se le persone che hanno progettato il sistema di memorizzazione delle password hanno fatto un buon lavoro e gli algoritmi coinvolti non hanno punti deboli, l'aspirante interruttore hash sarebbe morto millenni prima del la password è stata recuperata. Operatori di server responsabili chiedono alle persone di modificare in profondità le loro password per la difesa.

Ci vorrebbe altrettanto tempo per rompere una buona crittografia. Per eseguire la brute-force AES-256, dovrai attendere l'età dell'universo più volte .

Se si utilizza una password complessa e così tante iterazioni di un PBKDF che impiega un giorno intero a produrre una chiave da una possibile password, potrebbe essere più semplice per un utente malintenzionato forzare la chiave derivata piuttosto che passare attraverso processo di indovinare le password e derivarne la chiave.

Pertanto, se si utilizza solo una password con almeno un'entropia pari alle chiavi generate dal PBKDF, è possibile risparmiare tempo e crittografare i dati con la chiave da un'unica iterazione senza compromettere la sicurezza.

    
risposta data 08.05.2016 - 19:03
fonte

Leggi altre domande sui tag