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.
Also, if this isn't the correct place to put this, please let me know where to repost. I appreciate all of the help!
While PKCS#11 supports storing of application data on the devices, the devices themselves (I am talking about USB cryptotokens and smartcards now) are designed for a different purpose. In particular, they are designed to hold small pieces of secret or sensitive data. They are not a data storage. Some vendors provide hybrid tokens, where a USB cryptotoken is combined with a flash disk. But even in this situation these would be two devices in one case.
It is possible that your scenario can be modified in the following way so that you:
On a side note: almost all cryptotoken devices require their drivers to be installed to the system. Unlike USB disks and flash cards there's no universal driver in the OS that would let you plug the USB cryptotoken and use it immediately without installing the driver. This is a hassle from user's perspective, so take this into account as well.