Dalla password alla chiave

4

Puoi spiegare questo passaggio da Wikipedia ?

When a password (or passphrase) is used as an encryption key, well-designed cryptosystems first run it through a key derivation function which adds a salt and compresses or expands it to the key length desired, for example by compressing a long phrase into a 128-bit value suitable for use in a block cipher.

Una password più lunga è più sicura (in termini di attacco bruteforce) piuttosto che una corta, non è?

Se la password è "pass", qual è la chiave risultante?

    
posta Surfer on the fall 21.08.2012 - 10:43
fonte

2 risposte

8

Le chiavi di crittografia sono in genere valori a lunghezza fissa. Sfortunatamente, gli umani non possono ricordare lunghe stringhe di numeri, quindi usiamo invece le password.

Ad esempio, questa potrebbe essere la tua chiave a 256-bit:

d4f6d068b4e8c4e924ce9b28585a6009672e56d61215e7d9251b5d36283edd5d

Non è troppo facile da ricordare, vero?

Tuttavia, quanto sopra è stato generato calcolando un hash crittografico (in questo caso SHA256 ) della parola "waffles", che è molto più facile da ricordare. Una funzione di hash prende un input di lunghezza arbitraria e calcola un output di lunghezza fissa.

In realtà, abbiamo bisogno di funzioni di derivazione chiave (KDF) per avere proprietà speciali. Una proprietà desiderabile è che dovrebbe essere computazionalmente non fattibile per calcolare m da h , dove h = KDF(m) , cioè è difficile calcolare l'input della funzione se si conosce solo l'output. Un'altra proprietà desiderabile è che la funzione è abbastanza dispendiosa dal punto di vista computazionale (lenta) per rendere impossibile il calcolo di milioni di chiavi, senza compromettere le prestazioni per usi legittimi. Pertanto, schemi KDF speciali come PBKDF2 e bcrypt vengono solitamente utilizzati per calcolare queste chiavi crittografiche da password facilmente memorizzabili.

L'unico modo pratico per rompere una chiave generata da una funzione di derivazione chiave ideale è quella di indovinare le password probabili. Se la tua password è "password", è probabile che sia rotta. Se la tua password è una stringa di 20 lettere e numeri casuali, è molto meno probabile che sia indovinata.

Per rispondere alla domanda che chiedi alla fine:

If the password is "pass", what's the resulting key?

Questa non è davvero una domanda che ha molto senso. Il risultato potrebbe essere qualsiasi cosa. Ci sono molte diverse funzioni hash (MD5, SHA1, SHA256, SHA512, Whirlpool, RIPEMD160, ecc.) E molte diverse funzioni di derivazione chiave (PBKDF2, bcrypt, scrypt), che possono utilizzare i sali o HMAC . Le possibilità sono infinite!

    
risposta data 21.08.2012 - 10:58
fonte
5

Ciò che il brano dice è che il cryptosystem ricava la chiave da una password.

Ad esempio, AES-256 utilizza una chiave a 256 bit. Un sistema (molto) semplice potrebbe eseguire un hash SHA256 sulla tua password in quanto utilizzare l'output risultante a 256 bit come chiave per la crittografia.

Si applicano tutte le avvertenze usuali relative alle password: utilizzare gli algoritmi bcrypt o pbkdf2, utilizzare un salt ecc. Ulteriori informazioni sull'hash corretta delle password sono disponibili nelle numerose domande già poste sul sito. Potresti cercare le o tag.

A longer password is more secure (in terms of bruteforce attack) than a short one, isn't it?

Sì, una password più lunga (e più casuale) ha più entropia ed è quindi più sicura.

If the password is "pass", what's the resulting key?

Questo dipende in realtà dall'algoritmo di hashing che stai usando.

    
risposta data 21.08.2012 - 10:47
fonte

Leggi altre domande sui tag