我正在研究一个基于云的数字签名和硬件安全模块(HSM).我知道PKCS#11和微软的CryptoAPI实现是必需的。我想模拟整个过程。对此,泰勒斯模拟器是最好的HSM?如何将此与PKCS#11或Microsoft CryptoAPI连接起来?或者有人能提供一个更好的解决方案来模拟基于云的数字签名与硬件安全模块?
注意:对我来说,在Windows中模拟会更好。
发布于 2015-08-03 20:30:04
你的问题在我看来似乎特别模糊,所以我会在这里写一些关于你所用术语的含义的解释,希望它能减少混乱,并导致一个答案或至少一个更清晰的问题。
PKCS#11是一个应用程序接口:它是应用程序使用的一组功能,由给定的设备或系统提供。从应用程序的角度来看,"PKCS#11驱动程序“是应用程序可以加载的DLL,该DLL为创建和使用加密密钥提供了一些功能。应用程序不知道如何创建、管理和使用密钥,这就是使用标准化API的全部意义。用于管理密钥的物理设备(例如,HSM)将与HSM供应商提供的DLL (实现PKCS#11接口的DLL )一起出现。这样,任何知道如何加载PKCS#11 DLL并在其中调用函数的应用程序都将“立即”兼容所有提供此类DLL的HSM。
密钥管理系统没有必要是“实物”的。应用程序调用DLL,DLL执行它想做的事情;它可以使用文件和简单的软件来执行加密操作;它可以调用某个远程服务器来完成这项工作;或者其他任何事情。根据定义,应用程序不知道也不知道DLL做什么。
想必,如果您想要模拟一些东西,那么您可以想象使用PKCS#11 DLL在纯软件中进行操作,这样您就可以在实际购买HSM之前开发和测试您的应用程序。这就是理论;它在实践中不能很好地工作,因为PKCS#11是一个庞大的API,虽然PKCS#11指定函数和参数,但它没有确定所有可能的行为,因此实现PKCS#11只是实现互操作性的一步。说到这一点,并不是所有的HSM都是等价的,所以用一个HSM进行测试并不意味着您的应用程序将与市场上的所有HSM一起运行。
为了简单起见,如果您需要从供应商XXX模拟HSM,那么最好、最忠实的模拟可能是XXX本身提供的模拟器,因为这就是这样一个模拟器的意义所在。记住,“最好”并不自动意味着“好”。
CryptoAPI是微软专用的API,有点类似于PKCS#11。应用程序调用CryptoAPI的函数来执行与密码学相关的各种操作(包括签署文档或验证X.509证书)。其中一些操作涉及密钥的创建、管理和使用;CryptoAPI将这些操作委托给微软所谓的加密服务提供者。CSP实际上是CryptoAPI加载的DLL;CSP实现了一些标准化的函数,并处理对完成任务的系统(物理设备或软件设备)的访问。CSP在概念上类似于PKCS#11 DLL;区别主要在于CSP只存在于Windows中,而PKCS#11也适用于其他操作系统。
因此,Windows上的应用程序可以在使用CryptoAPI或PKCS#11之间做出选择。例如,火狐浏览器在需要与加密硬件设备(尤其是智能卡)对话时,只使用PKCS#11;出于同样的目的,Internet将依赖CryptoAPI。
一些HSM供应商(例如,Thales)为CryptoAPI提供了一个CryptoAPI动态链接库和一个CSP。
“基于云的”和HSM是一个奇怪的组合。当您“在云中”执行操作时,您将数据发送到远程存储和处理,这样就可以在不更改任何内容的情况下对整个事件进行虚拟化和移动。你通常想要精确地使用HSM,这样就不会发生这样的事情。
可能,您可能想要表示您将拥有一个“共享HSM":HSM将位于一个网络可访问的位置,各种客户端系统将通过HSM特定的协议(想必是一种具有足够密码技术的协议)将加密操作委托给该HSM。尽管如此,他们还是有一款名为"nShield连接“的产品,可以做到这一点。
不过,将这种HSM共享称为“基于云的”是一种相当令人困惑的说法。
https://security.stackexchange.com/questions/95827
复制相似问题