假设密钥库是安全的,并且需要为大约一百万个密钥提供服务,那么最好是实时生成非对称密钥还是生成一堆密钥并将其存储以便在需要时使用?
编辑1:实时我的意思是当用户第一次注册时生成密钥对,从那时起该密钥对用于与用户的所有通信。
答案 0 :(得分:1)
非对称密钥有公共部分和私有部分;公共部分用于执行补充私有部分的操作(例如,您使用私钥进行签名,并使用公钥验证签名;或者使用公钥加密数据,并对其进行解密)用私钥)。不对称密钥的关键是私有和公共部分可以由不同的实体知道;也就是说,公共部分是公共的(每个人都知道),而私人部分则保密。
因此,在大多数情况下“实时”生成非对称密钥毫无意义:为私钥提供某些价值的是公钥已经已知给其他方。
人们仍然可以想象一些可以使用“实时”生成非对称密钥的情况。例如,使用“短暂的Diffie-Hellman”密码套件之一的SSL连接:DH密钥,可称为“非对称”,为每个连接生成,然后公共部分签名服务器(使用另一个非对称密钥,它不是即时生成的:公钥是服务器证书中的公钥),然后发送到连接客户端。在这种情况下,预生成DH密钥对并存储它们可以被视为一种优化,但由于DH密钥对生成非常快,因此私钥存储是一个复杂而棘手的问题。
编辑:如果您的问题是关于用户注册时密钥生成与密钥生成和存储的关系:假设服务器端密钥生成确实是您想要的,密钥生成和存储是预先的仅作为优化是值得的,如果实时动态证明太昂贵而无法处理峰值(偶尔会有许多用户尝试同时注册)。我建议您在实施“解决方案”之前尝试并确定问题确实存在,因为私钥安全存储有点棘手。 RSA密钥生成非常快(在基本PC上,您可以轻松地每秒生成十几个RSA密钥),并且使用离散日志(DSA,Diffie-Hellman,El-Gamal)或基于椭圆曲线的密码系统,它甚至是相当快(例如,每秒10个数千个新EC密钥对,使用PC)。