Encryption HSM-cryptoki-打开会话开销

Encryption HSM-cryptoki-打开会话开销,encryption,cryptography,pkcs#11,hsm,Encryption,Cryptography,Pkcs#11,Hsm,我有一个关于HSM会话的问题 我知道,如果您为每个要加密/解密的文件初始化并最终确定cryptoki api,会产生开销 我的问题是, 打开和关闭要加密/解密的每个文件的单独会话是否会有开销。(C_Initialize/C_Finalize) 在不影响性能的情况下,我可以同时为HSM提供最多多少个会话 打开和关闭会话以处理单个文件是最佳方法,还是打开会话并处理多个文件然后关闭会话是最佳方法 谢谢最好的方法肯定是在每次应用程序启动时打开一次会话。也就是说,当您的应用程序工作时,没有理由关闭会话——

我有一个关于HSM会话的问题

我知道,如果您为每个要加密/解密的文件初始化并最终确定cryptoki api,会产生开销

我的问题是,

  • 打开和关闭要加密/解密的每个文件的单独会话是否会有开销。(C_Initialize/C_Finalize)

  • 在不影响性能的情况下,我可以同时为HSM提供最多多少个会话

  • 打开和关闭会话以处理单个文件是最佳方法,还是打开会话并处理多个文件然后关闭会话是最佳方法


  • 谢谢

    最好的方法肯定是在每次应用程序启动时打开一次会话。也就是说,当您的应用程序工作时,没有理由关闭会话——会话是您的应用程序专用的,如果您打开了会话,则没有其他应用程序可以使用它来访问和使用设备。

    首先,关于线程、应用程序和会话的概述中有大量文档

    其次,这取决于HSM硬件和PKCS#11模块的实现。您的PKCS#11提供商如何表示插槽?你总是用同一把钥匙吗?密钥的身份验证机制是什么

  • PKCS#11规范中广泛介绍了如何使用C#U初始化(和C#U最终确定)
  • 会话数取决于PKCS#11实现,请参阅CK#U令牌信息中的ulMaxSessionCount

  • 尝试一次单独的会话。您确定您的瓶颈将是会话处理吗?

    打开和关闭会话时会有开销(根据我的实验)。最好不要为每个文件打开单独的会话

    更新:来自我的供应商:

    您可以在令牌上打开的会话没有限制或指定数量,但可能有数千个

    这取决于您正在做什么以及它如何消耗设备的RAM。打开过多的会话和创建过多的会话对象(达到RAM可以容纳的限制)肯定会影响设备的性能


    谢谢

    我的应用程序在多线程中运行,因此我需要打开多个会话,因为多个线程不应该在一个会话中工作。在这些情况下,您认为频繁地打开和关闭会话会是一种过度的行为吗?打开会话总是一种开销,因此缓存会话并在可能的情况下在线程之间重复使用它们是有意义的。当您说缓存时,我如何安全地实现这样的缓存?使用一些多线程池类。我没有确切的参考资料来说明我为什么要写这样的池类课程是一个15-20分钟的工作。这里的讨论变得非常有趣。我的所有应用程序都调用一个webservice(它通过我的api与CryptoKi交互)来自动管理我的线程。因此,除非打开会话、进程并关闭会话,否则我无法控制哪个应用程序可以共享哪个会话句柄。如果我每次为一个新线程打开一个新会话,我认为会有太多的会话打开,因为我无法控制线程的创建。有什么想法吗?我正在用C_Initialize((CK_VOID_PTR)和vInitArgs)初始化,vInitArgs.flags=CKF_OS_LOCKING_OK,其余为NULL;CK\u TOKEN\u INFO->ulMaxSessionCount=CK\u UNAVAILABLE\u信息我的供应商没有共享此信息。我将使用不同的键(混合方法)。CKM_SHA256_RSA_PKCS用于签名/验证,AES用于加密和解密。我将随机遇到大约50000个文件,每个文件大小约为2MB。需要验证签名,获取aes密钥并解密数据。由于我们已经投入生产,我想在进行任何重大更改(如会话处理)之前确认一下。谢谢