L'intervallo del parametro s2k-count in GPG è ancora adeguato?

2

Dal manuale: il parametro s2k-count specifica quante volte viene ripetuto il mangling della passphrase per la crittografia simmetrica. Questo valore può variare tra 1024 e 65011712 inclusi.

Apparentemente in molte distribuzioni Linux il default è 65536 (appena selezionato nel mio).

Apparentemente tutti questi valori (intervallo e default) sono stati definiti diversi anni fa, in un periodo in cui i computer erano molto più lenti. Ho provato a creare un file crittografato utilizzando il valore più grande possibile (65011712), e decifrare richiede una frazione di secondo sul mio PC comunque. Il valore predefinito (65536) sembra troppo piccolo per me.

Quindi questi valori sono ancora adeguati oggi e per quanto tempo continueranno a essere significativi prima che sia necessaria una modifica di GPG?

    
posta reed 13.09.2018 - 20:28
fonte

1 risposta

2

L'impostazione predefinita oggi è metà della raccomandazione minima di 20 anni fa . *

L'algoritmo specifico di rafforzamento della chiave utilizzato è S2K salato e iterato , che combina la password di input e il sale e lo ripete numerose volte, tagliando la concatenazione. Il valore di conteggio effettivo che si sta utilizzando è il numero di byte per continuare l'hashing, quindi il valore più alto ha hash solo circa 65 MB di dati. Il valore predefinito di 65536 è in effetti piuttosto basso. Ogni blocco hash SHA-256 ha una dimensione di 64 byte e PBKDF2 utilizza la costruzione HMAC che chiama SHA-256 due volte per ogni iterazione (elaborando 128 byte), quindi la forza predefinita è equivalente a solo 512 invocazioni della funzione hash! Ovviamente qualsiasi KDF che usa poche iterazioni di hash non sarà particolarmente sicuro. Il valore massimo di 65011712 equivale a più di 500.000 iterazioni di hash, che è meglio.

Il problema non è solo che il valore sia troppo basso, ma che non sia hard-memory. Ciò significa che è molto facile parallelizzare in modo massivo i tentativi di cracking senza incorrere in limiti di memoria. Questo è lo stesso problema che ha PBKDF2. Un'alternativa appropriata sarebbe una funzione di memoria come Argon2 , ma GnuPG non lo supporta. Sfortunatamente è limitato a S2K. Devi usare una password più strong.

* Sto confrontando PBKDF2 e S2K. La raccomandazione minima delle iterazioni PBKDF2 era 1k nel 2000. Se ogni iterazione è equivalente a due SHA a 64 byte -256 hash, quindi possiamo considerare il conteggio S2K diviso per 128 per essere approssimativamente uguale a una singola iterazione di PBKDF2. Come tale, 65536/128 = 512, circa la metà della raccomandazione del 2000.

    
risposta data 14.09.2018 - 03:04
fonte

Leggi altre domande sui tag