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

Bonus points:

  • 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...)
  • 1
    I'm on hold until I describe the situation and specific problem. But I already described the problem very specifically, and Michael Roland answer is just perfect... I however note that every question I ask there poses problem, I think you should be more tolerant: We are not all professional stack exchange question makers... – mathieubolla Jun 18 '14 at 20:45

As Bruno Rohée wrote, it's likely that you want some form of smartcard packaged as USB key. This smartcard could either contain a ready-made application that integrates with PKCS#11 or an application that is specific to your specific needs. In the latter case, you could use some Java Card technology based smartcard and write your own Java Card applet that manages your key and cryptography.

Regarding your requirement list:

  • Smartcards -- if accessible through PC/SC -- integrate quite well with Java on Windows (and mostly also on Mac, though this could be a bit more painful) through the Java Smartcard IO API.

  • Most smartcards (particularly Java Card-based ones) have built in functionality for PIN codes but I guess if you write your own applet you could build pretty much any known-secret based user authentication.

  • Smartcards usually do support on-card symmetric encryption/decryption. If it's feasible to do the whole symmetric encryption/decryption on-card (or if you only use the card to encypt/decrypt keys for symmetric cryptography) would typically depend on the amount of data that you want to encrypt/decrypt. Performance of and communication with a smartcard is typically very slow compared to doing this on the PC side.

One product that comes to my mind is Yubikey Neo. It comes in USB key form factor (with additional contactless interface), can be configured to be accessible through PC/SC, comes with various pre-loaded crypto applications and you can load your own Java Card applications onto it. As far as I found out it should support RSA-2048 and at least 128-bit AES.

| improve this answer | |

It's likely that you want a PKCS#11 compatible smartcard, or a reader+smartcard packaged as an USB key.

I have past experience with Gemalto which got a large and confusing offering, to the point you'll likely need their help to navigate it... I'm not quite up to date to who the competition may be...

http://www.gemalto.com/products/top_javacard/ may fit the bill, or if not a sister product...

| improve this answer | |

One of the biggest players in this field (commercial AND government, for various solutions) is ActivID, who is now owned by HID. As stated by others, PKCS#11 smartcard type of device, via USB interface, is likely to be a good candidate for your query.


I know from direct observation and experience that companies like HP and Agilent have used these types of solutions from ActivID in the past. (Not an endorsement, I don't work for or represent either company. Just saw the devices in use.)

| improve this answer | |

Not the answer you're looking for? Browse other questions tagged or ask your own question.