HSM 不会避免复杂性;相反,它会给整个系统增加相当多的复杂性。
HSM 最擅长的是密钥存储:密钥在 HSM 中并且永远不会从其中取出。但是,您仍然需要担心密钥的生命周期。使用存储在文件或操作系统内部的“软件”密钥,备份是一个漏洞(您不希望密钥的许多副本随处可见)。使用 HSM,可以避免此漏洞,但备份成为一个令人头疼的问题:丢失密钥也是一个重大风险,尤其是对于加密(如果丢失加密密钥,则丢失数据)。所以这是 HSM 的第一个项目:备份过程. 我有一些使用 Thales (nCipher) HSM 的经验,它是这样操作的:密钥实际上存储为加密文件(可以像任何文件一样保存),并且该密钥的解密密钥可以用法定人数重建管理员智能卡(在新 HSM 中)。
HSM 很少进行批量对称加密。实际上,使用 HSM 进行对称加密没有多大意义:您使用加密是因为数据是机密的。从逻辑上讲,如果需要保密使得对称密钥不能离开 HSM,那么数据本身也不应该离开它。此外,对称加密意味着加密和解密都使用相同的密钥:如果该密钥在 HSM 中,则加密和解密都必须通过它。
HSM 更适合与混合加密一起使用:HSM 存储和使用非对称加密系统的私钥;当要加密数据时,谁拥有数据,谁就生成一个随机对称密钥K ,用K加密数据,用HSM存储的私钥对应的公钥加密K。从这个意义上说,HSM 作为(超大、定价过高的)智能卡运行。
当然,还有另一个极端,您可以在 HSM 中安装整个应用程序。这需要一个可编程的HSM,这是一个完全不同的上下文。Thales HSM 允许将其作为一个选项(称为“CodeSafe”和“SEE”),他们不会免费提供这些......并且不要期望在其中运行传统代码。HSM 具有加密加速器,但它们在其他方面是相当有限的嵌入式系统(最多认为 60 MHz ARM CPU:HSM 屏蔽与散热不符)。您可以在 HSM 中安装相对复杂的代码(允许这样做),但这是一项特定的编程工作。此外,一些 HSM 根本不允许这样做。
尽管 HSM 很昂贵,但 HSM 中最大的成本是操作:它们需要大量的安装、配置、操作、恢复和停用过程。你会需要人。我的主要标准是:程序。一个好的 HSM 会附带一份详细的使用手册,其中描述了应该如何做。重要的不是硬件,而是你如何使用它。
出于监管目的,可能需要认证,例如 EAL 4+ 或 FIPS 140-2 Level 3。你很少选择是否需要它;这是预期使用上下文的要求。获得这样的认证是一个非常漫长和昂贵的过程,所以你不会自己去做。另一方面,您可能希望扩大购物范围:如果 HSM 主要是大型智能卡,则可以使用智能卡代替 HSM。一张20 欧元的智能卡可以是 FIPS 140-2 3 级;它每秒只计算一次 RSA-2048 解密而不是 500,但这对您来说可能就足够了。