我正在开发一个执行大量散列,签名以及非对称和对称加密的项目。由于这些步骤对我们的性能和可用负载有显着影响,我想知道是否有基于硬件的解决方案来卸载工作。
我已经做了一些冲浪找到了,我能找到的唯一项目专门用于基于SSL的通信。我需要一个更通用的解决方案,这将使我能够加快签名和加密,无论它发生在何处。
是否有可能调整这些基于SSL的解决方案(可能只是营销,并且很容易在其他地方重复使用)?是否有一个很好的通用协处理器可以提供帮助?
我需要在基于Windows Server 2008的盒子上使用它,但我会对任何平台上的解决方案感兴趣。
答案 0 :(得分:1)
答案 1 :(得分:1)
有几家公司生产加密专用硬件。例如,我最近在一个nCipher硬件设备的应用程序中编写了支持,该设备在卡上处理AES(并支持许多其他加密算法)。它们并不便宜,但它们支持各种算法和操作模式。
答案 2 :(得分:1)
如果您正在使用的算法是3DES和AES等标准加密算法,那么肯定有可用的硬件。 Hifn是最知名的,但Broadcom也有一些芯片来自他们多年前收购的BlueSteel。 nCipher也有一系列加密产品,但是当我最后看到它们(多年前)时,他们更关注他们的安全密钥管理硬件,而不是加速块算法。
即使是为SSL设计的卡也可能对您有用,但您需要访问低级别的详细信息。 SSL硬件的最大胜利是一个指数器和宽乘法器单元,这两个单元通常可以在我所知的硬件中独立访问。如果您使用非对称加密算法,这两个单元也可能对您有用。
您还应该检查是否有更高效的软件实现。例如,Dan Bernstein和Peter Schwabe published在2008年9月发表了一篇关于优化现代CPU AES的论文。软件实施已置于公共领域(即拒绝所有版权,无论您喜欢如何使用它)。
最后,未来的AMD(可能还有英特尔)CPU将包含SSE5,它会添加对AES特别有用的指令。如果您可以坚持到那时,您的下一次服务器升级可能会提供您需要的所有硬件支持。
答案 3 :(得分:1)
最流行的硬件加密引擎是VIA Padlock,包含在C3,C7及更高版本的处理器中。这些是低性能,低功耗;但是(据说)在加密算法上容易胜过Core2。
Linux内核2.6.16及更高版本include support用于RNG,MD5,SHA1 / 256,SSL,GPG和其他标准事物。我不确定ssh。
您提到非SSL,因此您可能无法从现有代码中受益,但Via的网站上有从用户空间使用它所需的文档。
答案 4 :(得分:1)
在Windows上,您希望找到具有支持MSCAPI,CAPING或PKCS#11的API的设备,第一个和最后一个都很常见,但MSCAPI不支持硬件AES / 3DES。
nCipher(现在是Thales)做几个支持上述(并支持openssl)的盒子或PCI / PCIe卡,并支持其他平台,包括Linux和Solaris,Safenet也提供类似的硬件,具有类似的平台支持。
如果我刚开始,我会选择PKCS#11,那么你可以选择使用C或java编写好的语言。
如果你想用C#/ .Net写,那么你可以使用.Net的MSCAPI,或者你可以为你的硬件PInvoke进入PKCS#11 DLL。