Without using the hardware security module, your only protection is to set the CspParameters.Flags field:
CspParameters.Flags = CspProviderFlags.UseNonExportableKey | CspProviderFlags.UseUserProtectedKey;
The first flag prevents the software from “honestly” exporting the private key. The second requires user interaction with the graphical interface to perform any operations with the private key.
source
share