My C# .NET4 program has been storing data in encrypted files on the regular Windows file system and one of our customers has requested that we integrate the program with a PKCS#11 token (henceforth known as the 'token'). After a bit of researching, I discovered NCryptoki and I believe that will provide the necessary interface between my program and a compliant token.
I've got a couple of questions that I can't seem to find answers for that I hope the experienced people here can help me with. I'm still new with PKCS#11 and cryptography principles in general so some of these questions may seem a little juvenile.
- My theory is that the token will be able to be inserted into a computer and, using methods in my program that implemented the NCryptoki library, the encrypted files will be able to be saved directly onto it. The files would only be able to be accessed through a wizard in my program. I should be able to continue saving files on the drive as long as the token has space. Is all of this correct?
- I will need at least 64K memory on the token and the token must be a minimum of FIPS 140-2 Level 2, preferably level 3. I've looked and have only come across the SafeNet iKey 4000. I KNOW there must be more PKCS#11 compliant tokens that have at least 64K storage. I've spent hours going through the FIPS 140-1/2 Validated Crypto Modules looking for USB Storage PKCS#11 tokens but haven't had much luck. Does anyone know of any other companies that sell what I'm looking for? This could be a USB device or even a Smart Card. We want to be able to provide multiple options for the customer.
- Has anyone had any experience with this sort of implementation before that could provide me with some "lessons learned" or things to be aware of?
Also, if this isn't the correct place to put this, please let me know where to repost. I appreciate all of the help!