Soluzione per la codifica sicura e altamente protetta di qualsiasi file in OpenSSL e riga di comando:
Dovresti avere pronto un certificato X.509 per crittografare i file in formato PEM.
Crittografa file:
openssl smime -encrypt -binary -aes-256-cbc -in plainfile.zip -out encrypted.zip.enc -outform DER yourSslCertificate.pem
Che cos'è cosa:
- smamma - Comando ssl per l'utilità S/MIME (smime(1))
- -cifra - metodo scelto per l'elaborazione dei file
- -binario - utilizzare un processo di file sicuro. Normalmente il messaggio di input viene convertito in formato "canonico" come richiesto dalla specifica S/MIME, questo switch lo disabilita. È necessario per tutti i file binari (come immagini, suoni, archivi ZIP).
- -aes-256-cbc - cifratura scelta AES a 256 bit per la cifratura (forte). Se non specificato viene utilizzato RC2 a 40 bit (molto debole). (Crittografie supportate)
- -in plainfile.zip - inserisci il nome del file
- -outcrypted.zip.enc - nome del file di output
- -outform DER - codifica il file di output come binario. Se non viene specificato, il file viene codificato in base64 e la dimensione del file verrà aumentata del 30%.
- tuoCertificatoSsl.pem - nome del file del tuo certificato. Dovrebbe essere in formato PEM.
Quel comando può crittografare in modo molto efficace file di grandi dimensioni indipendentemente dal suo formato.
Problema noto: Succede qualcosa di sbagliato quando provi a crittografare un file enorme (> 600 MB). Nessun errore generato, ma il file crittografato verrà danneggiato. Verifica sempre ogni file! (o usa PGP - che ha un maggiore supporto per la crittografia dei file con chiave pubblica)
Decifra file:
openssl smime -decrypt -binary -in encrypted.zip.enc -inform DER -out decrypted.zip -inkey private.key -passin pass:your_password
Che cos'è cosa:
- -informa DER - uguale a -outform sopra
- -inkey private.key - nome del file della tua chiave privata. Dovrebbe essere in formato PEM e può essere crittografato tramite password.
- -passin pass:tua_password - la tua password per la crittografia della chiave privata. (argomenti passphrase)
La crittografia a chiave pubblica non serve per crittografare file arbitrariamente lunghi. Uno usa un cifrario simmetrico (diciamo AES) per eseguire la normale crittografia. Ogni volta che una nuova chiave simmetrica casuale viene generata, utilizzata e quindi crittografata con la cifratura RSA (chiave pubblica). Il testo cifrato insieme alla chiave simmetrica crittografata viene trasferito al destinatario. Il destinatario decrittografa la chiave simmetrica utilizzando la sua chiave privata, quindi utilizza la chiave simmetrica per decrittografare il messaggio.
La chiave privata non viene mai condivisa, solo la chiave pubblica viene utilizzata per crittografare il cifrario simmetrico casuale.