I'm designing a system where some combination of hardware and software (lets call it an appliance...) sends asynchronous secure archival to the cloud. By secure, I mean, AES-256 encrypted, with AES key and IV encrypted by RSA-2048 public key. There may be several such appliances, each with the same RSA public key. It doesn't matter.
I want the decryption to occur when the user faces disaster and wants to get back her archives. By disaster, I mean, her computer may have been burned, or stolen, or she might have been forced to move quickly, something like that.
In this case, I want something easy to use, easy to carry, easy to store. A USB key sounds great. But I don't want any malware able to read the private RSA key whenever this device is put inside a potentially unsafe computer.
My guess is there should exist some commercially available solution, that do the following:
- Is factory written an RSA-2048 private key in my premises (not the vendor)
- Will never ever make the key visible over USB like would a plain RSA public key file on an USB thumb drive
- Will take encrypted data, decrypt it, and give it back decrypted
- Is Java compatible on at least Mac and Windows
- Takes configurable password to further protect the key
- (maybe...) does all I need in my protocol directly (AES key decryption, AES un ciphering...)