El siguiente es un Script Shell BASH para sistemas tipo Unix y su versión en símbolo del sistema como archivo de lotes BAT para Windows
Este Script requiere que la maquina tenga instalado el OpenSSL
Situación.
1) A y B son sitios remotos conectados por Internet o por medios físicos tipo valija como un USB
2) A debe recibir un archivo de B
3) A genera su par de llaves pública y privada
4) A le envía a B su llave publica
5) B cifra un archivo con AES256 usando una clave simétrica
6) B usa la llave publica para generar una llave simétrica y cifrarla con la llave publica que le ha enviado A
7) B Envía la llave simétrica cifrada con la llave publica de A y el archivo cifrado con la llave su métrica a A
8) A recibe la clave simétrica y el archivo cifrado de B
A decifra la llave simétrica usando su llave privada y usa la llave simétrica para decifrar el archivo cifrado que ha enviado B
Como hacerlo con los SCRIPT
B le debe enviar un archivo ZIP a A
** B debe respaldar el archivo antes de intentar cifrarlo, si algo sale mal el archivo será irrecuperable.
1) Para generar las claves A ejecuta generaclaves.sh
Se obtiene una salida similar a:
[root@lastdragon cifrar]# ./generaclaves.sh
Generating RSA private key, 4096 bit long modulus
………………………………………++
…………………..++
e is 65537 (0x10001)
writing RSA keyDebes enviar el archivo “publica.key” para que quien te envia el archivo lo cifre. CONSERVA BAJO TOTAL SECRETO PRIVADA.KEY
2) A le envía a B publica.key
3) B usa el comando cifrar.sh para cifrar el archivo ZIP
Se obtiene una salida similar a:
[root@lastdragon cifrar]# ./cifrar.sh contenedor.zip
Cifrando contenedor.zip y simetrica.key
Los archivos que debes enviar son: contenedor.zip y simetrica.pub
4) A recibe los 2 archivos enviados por B , el archivo ZIP y la clave simetrica.pub
5) Para decifrar el ZIP A debe ejecutar decifrar.sh.
Se obtiene una salida similar a:
[root@lastdragon cifrar]# ./decifrar.sh contenedor.zip
Decifrando contenedor.zip
Las llaves han sido eliminadas, el archivo contenedor.zip ha sido recuperado
[root@lastdragon cifrar]#
Quedo Excelente, tal cual lo que andaba buscando para implementar, no debo decirlo, pero quedo perfecto