È una passphrase GPG (simmetrica) di 43 caratteri sicura come una chiave a 256 bit?

0

Una password alfanumerica mista a caso composta da 43 caratteri casuali (con 2 caratteri in più per fornire 64 possibilità per carattere) costituirebbe 258 bit di entropia (6 * 43 = 258).

Dato che lo standard gold nelle lunghezze delle chiavi simmetriche AES è 256 bit, ho ragione nel concludere che GPG userà la mia password di 43 caratteri generata casualmente in modo sicuro per creare un file crittografato che è altrettanto sicuro come se avessi usato un file sicuro generato a caso una chiave binaria a 256 bit (invece di derivarla da una passphrase)?

Sto cercando dei trucchi, ad esempio se nonostante si specifichi al comando gpg di usare AES256, forse il KDF creerà solo una chiave a 128 bit dai miei 258 bit di entropia?

Grazie

    
posta Andrew Parks 10.02.2016 - 11:31
fonte

1 risposta

1

In effetti non c'è differenza di sicurezza tra una chiave simmetrica a 128 bit e una chiave simmetrica a 256 bit. La ragione è che la sicurezza contro la forza bruta è relativa ai mezzi tecnologici disponibili per l'aggressore, e non c'è modo che la tecnologia nel prossimo futuro consenta una ricerca esaustiva a 128 bit da eseguire con possibilità di successo non trascurabili.

Per "prevedibile" qui, intendo "entro i prossimi 30 anni". Chiunque sostenga di essere in grado di prevedere i progressi tecnologici per tempi più lunghi è un viaggiatore del tempo o un bugiardo sporco. Nota in particolare che sostengo che non ci sarà, nei prossimi 30 anni, un computer quantistico abbastanza grande da eseguire test chiave su AES e a 128 bit che possono farlo per 2 64 passi - quest'ultima condizione è molto banale. È concettualmente possibile che vengano trovati progressi matematici che semplificheranno la ricerca esaustiva, ma questo è altamente speculativo e non vi è alcuna indicazione che una chiave AES a 256 bit resista a tali cose meglio di una chiave AES a 128 bit ( infatti ci sono alcuni attacchi esoterici, chiamati "attacchi a chiave correlata", che fortunatamente non si applicano a casi pratici, e per i quali AES-256 è più debole di AES-128).

Poiché non c'è nulla di più strong di non-breakable, si può dire che AES-128 e AES-256 sono ugualmente buoni per la sicurezza. Potremmo addirittura dire che AES-128 è leggermente preferibile, dal momento che è leggermente più veloce (ma non importa molto).

Detto questo, nel formato OpenPGP, le passphrase vengono trasformate in chiavi tramite una trasformazione da stringa a chiave . Quello consigliato (la trasformazione "iterated and salted") ha una lunga concatenazione di ripetizioni multiple della passphrase e del sale. La dimensione totale di ciò che è hash è configurabile, ma il punto è che ogni passphrase dovrebbe costare molto. Questo aumenta meccanicamente la resistenza alla ricerca esaustiva. Ad esempio, se il conteggio dell'iterazione è tale che una trasformazione passphrase-to-key costa fino a circa un milione di invocazioni AES, allora è necessario solo 108 bit di entropia nella passphrase per raggiungere la sicurezza equivalente a 128-bit. Ovviamente, l'aumento del costo è un aumento dei costi: non ottieni ulteriore sicurezza gratuitamente.

L'S2K iterated-and-salted utilizza una funzione di hash interna che potrebbe essere SHA-1 o anche MD5, ma non è necessario per quanto riguarda la robustezza crittografica di tale funzione di hash sottostante. Anche se è l'MD5 molto rotto, e anche se l'output MD5 è solo a 128 bit, l'S2K iterato e salato è definito in modo tale da poter conservare l'intera entropia della passphrase nella chiave risultante. Pertanto, se si dispone di 256 bit o più di entropia nell'ingresso S2K (la passphrase) e si desidera una chiave di uscita a 256 bit, la chiave di uscita avrà almeno 255 bit di entropia.

(Se nell'input sono presenti esattamente 256 bit di entropia, nell'output ci si aspetta un 255,34 bit teorico di entropia).

Per riassumere: non c'è "gotcha" nel modo in cui la passphrase viene trasformata in una chiave di crittografia, ma anche se ci fosse, si otterrebbe comunque un livello di sicurezza che non è diverso, in qualsiasi significato pratico del termine, al livello teorico "256 bit".

    
risposta data 23.02.2016 - 19:55
fonte

Leggi altre domande sui tag