【问题标题】:Pkcs11Interop CKR_ENCRYPTED_DATA_INVALID exception cause high CPU usagePkcs11Interop CKR_ENCRYPTED_DATA_INVALID 异常导致高 CPU 使用率
【发布时间】:2017-07-12 07:58:40
【问题描述】:

我们正在使用Pkcs11Interop 库进行密码学,我们为我们的项目定制和实现Pkcs11Interop 代码示例,其中Pkcs11Interop 文档在Github 中。在生产中,不是每天,但是当我们收到连续(4 或 5 次)CKR_ENCRYPTED_DATA_INVALID 异常时,我们必须在 CPU 使用率达到最大值后重新启动服务器。这是什么原因造成的?我们如何解决这个问题?任何想法将不胜感激。如果有人愿意,我可以分享我们的代码示例。感谢您的帮助。

2017-07-11 10:45:07,580 错误 HSM | 11.07.2017 10:45:07 | HSM 解密 发生错误 Net.Pkcs11Interop.Common.Pkcs11Exception:方法 C_Decrypt 返回 CKR_ENCRYPTED_DATA_INVALID 在 Net.Pkcs11Interop.HighLevelAPI41.Session.Decrypt(机制机制, ObjectHandle keyHandle, Byte[] encryptedData) 在 Pkcs11HsmHost.DecryptInSession(Session session, String value, Int32 keyIndex, Int32 retryCount) 在Security\Pkcs11HsmHost.cs:line 164

【问题讨论】:

    标签: c# pkcs#11 hsm pkcs11interop


    【解决方案1】:

    您很可能没有在多线程环境中正确使用您的 PKCS#11 库。请参阅this answer 了解更多信息。

    【讨论】:

    • 您好 Jariq,我们准备了一个示例项目并实现了您在 github 上发布的代码示例。但是我们发现了一些奇怪的东西,Pkcs11 库中没有 AppType。 "如果应用程序将同时从多个线程访问 PKCS#11 库,它应该指定 "AppType.MultiThreaded" 作为 "appType" 参数的值。PKCS#11 库将使用本机操作系统线程模型进行锁定。"
    • @MuratGündeş AppType 枚举仅在当前主分支中可用,该分支尚未作为新的主要版本 4.0 发布。在旧版本中,此设置使用bool 类型,因此您需要将其设置为true
    • 还有一个是GetSlotList方法。您的示例如下所示, List slot = pkcs11.GetSlotList(SlotsType.WithTokenPresent);但是我们没有找到像 AppType 这样的 SlotsType。当我们检查 GetSlotList 方法时,它接受一个名为 bool tokenPresent 的参数。
    • @MuratGündeş 您需要使用3.3.0 branch 中的示例和文档,而不是master branch
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    • 2023-04-09
    • 2013-02-12
    相关资源
    最近更新 更多