Estoy diseñando un sistema en el que una combinación de hardware y software (llamémoslo un dispositivo ...) envía un archivado seguro asíncrono a la nube. Por seguridad, quiero decir, AES-256 encriptado, con clave AES e IV encriptados por la clave pública RSA-2048. Puede haber varios dispositivos de este tipo, cada uno con la misma clave pública RSA. No importa.
Quiero que el descifrado se produzca cuando el usuario se enfrente a un desastre y quiera recuperar sus archivos. Por desastre, quiero decir, su computadora pudo haber sido quemada o robada, o podría haberse visto obligada a moverse rápidamente, algo así.
En este caso, quiero algo fácil de usar, fácil de transportar, fácil de almacenar. Una llave USB suena muy bien. Pero no quiero que ningún malware pueda leer la clave RSA privada cada vez que este dispositivo se coloque en una computadora potencialmente insegura.
Supongo que debería existir alguna solución disponible comercialmente, que haga lo siguiente:
- ¿La fábrica escribe una clave privada RSA-2048 en mis instalaciones (no el proveedor)?
- Nunca hará que la clave sea visible a través de USB como lo haría un archivo de clave pública simple RSA en una unidad de memoria USB
- Tomará los datos cifrados, los descifrará y los devolverá descifrados
Puntos de bonificación:
- Es compatible con Java en al menos Mac y Windows
- Toma una contraseña configurable para proteger aún más la clave
- (quizás ...) hace todo lo que necesito en mi protocolo directamente (descifrado de clave AES, cifrado AES ...)