Voglio assicurarmi che il risultato di PBKDF2-HMAC-SHA1
sia indissociabile da dati casuali (dati parametri casuali). Fondamentalmente, PBKDF2-HMAC-SHA1
ha l'aspetto di un hash di SHA-1
più grande, il che è normale dato che la funzione pseudocasuale usata è SHA-1
come suggerisce il nome.
./pkcs5 -i 1 -s RANDOM_SALT -p RANDOM_PAYLOAD -l 20
c8ddde91936a728445e238badde1ef7e94de5b36
Strumento utilizzato: dzmitryk / pkcs5.c
Si noti che è stampato in formato HEXADECIMAL, quindi l'output appare come dati binari casuali. C'è qualche prova scientifica che SHA-1 possa difficilmente essere differenziato dai dati casuali?
& stessa domanda per SHA-256.
Perché lo sto chiedendo?
Perché Plain dm-crypt ha diversi svantaggi rispetto a LUKS:
- La password non è modificabile senza ricodificare l'intero disco
- È possibile utilizzare una sola password
- La chiave di crittografia del disco è derivata dalla password senza sale
- Una semplice partizione dm-crypt può sembrare casualmente un filesystem non criptato e ha la possibilità di essere scritta accidentalmente.
Ma LUKS ha un grosso difetto: è non deniabile . Quindi, cercando di raggiungere questo obiettivo, le persone utilizzano le chiavi USB con file di chiavi non crittografati (orribili) o con l'intestazione LUKS scollegata (non negabile se l'avversario trova la chiave USB ...). C'è qualcosa di sbagliato in questi approcci.
Quindi sto cercando di mantenere il meglio dell'intestazione LUKS e di creare "No NO Intestazione " LUKS che sarebbe indissociabile da dati casuali (quindi DENIABLE), contenente solo:
- I keyload della chiave cifrati di chiavi LUKS - risultato di AES in modo casuale
- I sali LUKS - puro casuale
- Il sommario masterkey LUKS - risultato di su PBKDF2-HMAC-SHA1
Tutto il resto (modalità di crittografia, lunghezza della chiave, ecc.) utilizza i valori predefiniti come hardcoded nel comando GRUB cryptomount
o facilmente parametrizzabile dalla riga di comando.
EDIT: domande correlate sulla crittografia StackExchange: