2

假设密钥库是安全的并且需要服务大约一百万个密钥,是实时生成非对称密钥更好,还是生成一堆密钥并存储它们以在需要时使用更好?

编辑1:实时我的意思是在用户第一次注册时生成一个密钥对,从那时起,该密钥对用于与用户的所有通信。

4

1 回答 1

1

非对称密钥有公有部分和私有部分;公共部分用于执行与私有部分完成的操作相辅相成的操作(例如,您使用私钥签名,然后使用公钥验证签名;或者您使用公钥加密数据,然后对其进行解密用私钥)。非对称密钥的要点是私有和公共部分可以由不同的实体知道;也就是说,公共部分是公共的(每个人都知道),而私人部分仍然是私有的。

因此,在大多数情况下,“实时”生成非对称密钥几乎没有意义:赋予私钥一些价值的是公钥已为其他方所知。

人们仍然可以想象在某些情况下可以使用“实时”生成非对称密钥。例如,使用“临时 Diffie-Hellman”密码套件之一的 SSL 连接:为每个连接生成可称为“非对称”的 DH 密钥,然后由服务器签署公共部分(使用另一个非对称密钥,它不是即时生成的:公钥是服务器证书中的一个),然后发送到连接的客户端。在这种情况下,预生成DH密钥对并存储起来可以看作是一种优化,但是不好,因为DH密钥对的生成速度非常快,而私钥存储是一个复杂而微妙的问题。

编辑:如果您的问题是关于用户注册时的密钥生成与预先生成密钥和存储:假设服务器端密钥生成确实是您想要的,那么预先生成和存储密钥仅作为一种优化是值得的,如果在-fly 生成被证明太昂贵而无法处理峰值(有时,许多用户试图同时注册)。我建议您在实施“解决方案”之前尝试并确保问题确实存在,因为私钥安全存储有些棘手。RSA 密钥生成速度非常快(在基本 PC 上,您可以轻松地每秒生成十几个 RSA 密钥),并且使用离散对数(DSA、Diffie-Hellman、El-Gamal)或基于椭圆曲线的密码系统,它甚至相当快(例如一每秒新的 EC 密钥对,与 PC)。

于 2010-07-30T13:02:42.527 回答