Se provi a eseguire la riga di comando openssl
, vedrai che chiederà una "password di crittografia". Quella password è la chiave; non c'è nessuna chiave memorizzata altrove.
Guardando il codice sorgente di OpenSSL (sono qui guardando OpenSSL-1.0.2g, il file è apps/enc.c
), sembra che la password sia usata, insieme a un salt casuale, nel EVP_BytesToKey()
funzione: quella funzione genera la chiave di crittografia (e la IV) dal sale e la password, con un complicato funzione basata su hash. Il numero di iterazioni è codificato su 1 (che, per quanto riguarda l'hashing della password, è terribile). Il file di output (senza contare la codifica Base64 aggiunta con l'opzione -a
) inizia con una sequenza di otto byte fissi ( 53 61 6c 74 65 64 5f 5f
) seguiti dallo stesso sale (8 byte), quindi i dati crittografati. Pertanto, il sale generato casualmente è codificato nel file stesso, ma la password non è memorizzata in nessun altro luogo rispetto al cervello dell'utente.
Non sono a conoscenza di uno strumento standard chiamato "aescrypt". Le ricerche di Google mostrano diversi strumenti con quel nome, quindi non posso sapere quale macchina hai sul tuo computer. Scommetto, però, che il principio generale è lo stesso: lo strumento richiede una password e ricava la chiave di crittografia da quella password.