Hen*_*uts 6 hardware encryption cryptography pkcs#11
干杯。这是我关于加密堆栈交换的问题的副本。
我正在通过PKCS#11 C/Python 接口处理HSM。我想知道是否可以在硬件中做一些/ 。通过说“在硬件中”,我的意思是加密/解密而不将结果暴露给调用者空间。这主要是关于解密,因为我想调用并将结果作为任意数据保留在 HSM 中,以便稍后对该数据进行一些其他转换,并说在其他一些密钥上重新加密它。先感谢您。C_Encrypt
C_Decrypt
C_Decrypt
PKCS#11 不提供此类方法,但某些 HSM 模型允许您使用自己的算法/机制扩展其固件,甚至在设备内运行您自己的应用程序,因此肯定有一种方法可以实现您想要的。只是不适用于 PKCS#11 API。
顺便说一句,我讨论的正是这种情况在PKCS11注释邮件列表的OASIS PKCS#11技术委员会于2013年不幸的是我回来没有收到任何反馈¯\_(?)_/¯
,但后来当我想参加技术委员会的工作对这个建议我收到价目表与会费 :D
。
我 2013 年的邮件:
我想就安全数据重新加密以及使用 PKCS#11 API 处理它的方式展开讨论。假设有一些数据使用对称密钥加密,
A
并且由于某种原因(即密钥生命周期结束,加密算法不再被认为是安全的等),需要使用 key 重新加密数据B
。PKCS#11 API 提供哪些选项?选项#1:用密钥
A
和C_DecryptInit/C_Decrypt/C_DecryptUpdate/C_DecryptFinal
函数解密数据,然后用密钥B
和C_EncryptInit/C_Encrypt/C_DecryptUpdate/C_DecryptFinal
函数加密数据。好处:
- 使用当前众所周知的 PKCS#11 API
缺点:
- 可能的安全问题 - 明文不必要地暴露给主机内存
- 通信开销 - 明文需要在 cryptoki 应用程序和 cryptoki 模块之间交换两次
选项#2:假设将引入用于数据重新加密的新 PKCS#11 函数。它应该以使用密钥创建的密文
A
作为输入,并提供使用密钥创建的密文B
作为输出。换句话说,它应该在一次调用中解密然后加密数据。例如,这可以通过引入C_DecryptEncryptUpdate
具有类似行为的函数来实现C_DecryptVerifyUpdate
(它很可能也有类似的流水线问题)。好处:
消除选项 #1 的缺点:
- 解密的明文不需要暴露给主机内存,因为明文永远不会离开安全设备的实现是可能的
- 应该提高性能,因为需要在 cryptoki 应用程序和 cryptoki 模块/设备之间交换的数据减少 50%
缺点:
- 需要在 PKCS#11 API 中引入新方法
我个人肯定希望看到用于安全日期重新加密的 API。你有什么意见?有没有其他人错过用于安全数据重新加密的 API?
归档时间: |
|
查看次数: |
390 次 |
最近记录: |