JCE 中的密钥句柄是什么意思?
密钥句柄(在 JCE、PKCS#11 或大多数其他加密 API 中)只是一个引用,使您能够使用密钥而看不到其实际值。这很好:您可以将密钥永久存储在安全的地方(例如HSM),并保证没有人能够复制它并带着它逃跑 - 如果密钥是应用程序空间,则可能会发生这种情况。但是,与物理保险箱不同,您仍然可以执行加密操作,而不会运行任何密钥泄漏的安全风险。
PKCS#11 标准是否定义了在 HSM 中生成签名的方法?
PKCS#11 是用于加密令牌的 C API。令牌是提供此类 API 所描述的服务的任何设备或程序的 PKCS#11 抽象。API定义了您可以使用PKCS#11令牌中的对象执行哪些操作:某些对象是非敏感的,可以提取(例如公钥);其他一些是敏感的,只能通过手柄使用。
如果对象具有支持签名的句柄,则可以使用 C 函数C_Sign要求令牌对应用程序提供的某些数据进行身份验证。密钥不会离开 HSM。
我的 HSM 的功能列表分别声明 JCE 和 PKCS#11。那是什么意思?
您的 HSM 支持 JCE,因为它附带了一个符合加密服务提供程序条件的本机库。
它支持PKCS#11,因为它带有一个提供C PKCS#11 API的本机库。
我认为PKCS#11是一个标准,JCE定义了使用该标准的类。JCE 是否指定了自己的协议?
事实上,PKCS#11是一个标准;但它不能被C以外的语言直接使用。您需要一个映射层,将其转换为与您的语言兼容的内容。PKCS#11 库(以及它抽象的物理令牌)可以映射到 JCE 提供程序。
但是,JCE 提供程序可能与 PKCS#11 无关。