如何通过 PKCS#11 与 HSM 通信

How to communicate via PKCS#11 with a HSM

我有一个 Python 应用程序需要加密数据。对称密钥位于称为 HSM 的单独硬件中。

我已经在 python

中实现了一个包装器
pip install python-pkcs11

并设置c-pkcs11-library的路径进行初始化。

lib = pkcs11.lib(os.environ['PATH_TO_C-PKCS11_LIB'])

但是接下来呢?如何配置整个包装器或 C 库以在 HSM 中监视密钥?

应用程序和 HSM 如何通信?是通过 HTTP 吗?

感谢任何帮助

你的问题很宽泛。看看examples in the documentation. Use get_key to lookup key in HSM and encrypt加密。

使用存储在 HSM 令牌 DEMO 中的 AES 密钥 TEST 使用零 IV 在 CBC 模式下加密零块的示例代码:

import os
import pkcs11

lib = pkcs11.lib(os.environ['PKCS11_MODULE'])
token = lib.get_token(token_label='DEMO')
with token.open(user_pin='1234') as session:
    key = session.get_key(key_type=pkcs11.mechanisms.KeyType.AES, label='TEST')
    iv = bytes.fromhex('00000000000000000000000000000000')
    data = bytes.fromhex('00000000000000000000000000000000')
    ciphertext = key.encrypt(data=data, mechanism=pkcs11.mechanisms.Mechanism.AES_CBC, mechanism_param=iv)
    print(ciphertext.hex())

您绝对应该阅读 HSM 的 PKCS#11 specification 和 SDK 文档。

祝你项目顺利!