跳转到内容

密钥生成

维基百科,自由的百科全书

在密码学领域,密钥生成是指生成密钥的过程。密钥用于机密和解密数据。生成密钥的程序或者设备叫密钥生成器(key generator)。

软件层次的生成

现代密码学系统包括对称加密算法(例如AES)和公开密钥算法(例如:RSADSAECDSA)。对称加密算法使用一个单一的共享的密钥,保证该密钥的安全性才能保证数据的安全性。公钥算法使用公钥私钥,公钥是能交付给任何人(往往通过数字证书的方式交付)。通讯双方通过公钥加密数据,只有私钥的持有者才能解密该数据。

由于公开密钥算法往往慢于对称加密算法,现代的系统,例如 TLSSSH 是结合使用两者:一方收到另一方的公钥,并加密一小块的数据(该数据可以是被称为对话键对称密钥)。之后的对话均使用对称加密算法进行数据加密,加密速度比之前快。

计算机密码学常常使用整数为密钥。在一些情况里,密钥是通过随机数生成器(random number generator, RNG)或伪随机数生成器(pseudorandom number generator, PRNG)随机生成的。伪随机数生成器产生的数据在分析时看起来是随机的。

经典的密码系统会在通信的一端产生两个具有识别性的密钥,然后以某种方式运输的其中一个密钥到通信的另一端。

最简单的破解数据而无需解密的方式是 暴力攻击 ——尝试每一个数字,直到达到密钥的最大长度。因此,使用一个足够长的 密钥长度是十分重要的。长密钥使破解所需要的时间更长。目前推荐的密钥长度是对称密钥算法至少128位元椭圆曲线密码学至少224位元,RSA至少2048位元,这样的组合被认为在2030年以前是安全的[1]

参考文献

  1. ^ Keylength - NIST Report on Cryptographic Key Length and Cryptoperiod (2019). www.keylength.com. [2020-04-06]. (原始内容存档于2020-04-04).