Solución para codificar cualquier archivo de forma segura y altamente segura en OpenSSL y línea de comandos:
Debería tener listo algún certificado X.509 para cifrar archivos en formato PEM.
Cifrar archivo:
openssl smime -encrypt -binary -aes-256-cbc -in plainfile.zip -out encrypted.zip.enc -outform DER yourSslCertificate.pem
Qué es qué:
- sonrisa - Comando ssl para la utilidad S/MIME (smime(1))
- -cifrar - método elegido para el proceso de archivos
- -binario - utilizar un proceso de archivo seguro. Normalmente, el mensaje de entrada se convierte a formato "canónico" según lo requiera la especificación S/MIME, este interruptor lo deshabilita. Es necesario para todos los archivos binarios (como imágenes, sonidos, archivos ZIP).
- -aes-256-cbc - cifrado AES elegido en 256 bits para el cifrado (fuerte). Si no se especifica, se utiliza RC2 de 40 bits (muy débil). (Cifrados admitidos)
- -en archivo simple.zip - nombre del archivo de entrada
- -fuera encriptado.zip.enc - nombre del archivo de salida
- -superar DER - codificar el archivo de salida como binario. Si no se especifica, el archivo está codificado en base64 y el tamaño del archivo aumentará en un 30 %.
- suCertificadoSSl.pem - nombre de archivo de su certificado. Debería estar en formato PEM.
Ese comando puede cifrar de manera muy efectiva archivos grandes independientemente de su formato.
Problema conocido: Ocurre algo incorrecto cuando intenta cifrar un archivo enorme (> 600 MB). No arroja ningún error, pero el archivo cifrado se dañará. ¡Verifique siempre cada archivo! (o use PGP, que tiene mayor soporte para el cifrado de archivos con clave pública)
Descifrar archivo:
openssl smime -decrypt -binary -in encrypted.zip.enc -inform DER -out decrypted.zip -inkey private.key -passin pass:your_password
Qué es qué:
- -informar a DER - igual que -outform anterior
- -inkey llave.privada - nombre de archivo de su clave privada. Debe estar en formato PEM y puede cifrarse mediante contraseña.
- -passin pass:tu_contraseña - su contraseña para cifrar la clave privada. (argumentos de frase de contraseña)
La criptografía de clave pública no es para cifrar archivos arbitrariamente largos. Uno usa un cifrado simétrico (digamos AES) para hacer el cifrado normal. Cada vez que se genera, utiliza y luego se cifra una nueva clave simétrica aleatoria con el cifrado RSA (clave pública). El texto cifrado junto con la clave simétrica cifrada se transfiere al destinatario. El destinatario descifra la clave simétrica usando su clave privada y luego usa la clave simétrica para descifrar el mensaje.
La clave privada nunca se comparte, solo la clave pública se usa para cifrar el cifrado simétrico aleatorio.