密钥生成
此条目需要精通或熟悉相关主题的编者参与及协助编辑。 (2020年3月1日) |
在密码学领域,密钥生成是指生成密钥的过程。密钥用于机密和解密数据。生成密钥的程序或者设备叫密钥生成器(key generator)。
软件层次的生成
现代密码学系统包括对称加密算法(例如AES)和公开密钥算法(例如:RSA、DSA和ECDSA)。对称加密算法使用一个单一的共享的密钥,保证该密钥的安全性才能保证数据的安全性。公钥算法使用公钥和私钥,公钥是能交付给任何人(往往通过数字证书的方式交付)。通讯双方通过公钥加密数据,只有私钥的持有者才能解密该数据。
由于公开密钥算法往往慢于对称加密算法,现代的系统,例如 TLS 和 SSH 是结合使用两者:一方收到另一方的公钥,并加密一小块的数据(该数据可以是被称为对话键的对称密钥)。之后的对话均使用对称加密算法进行数据加密,加密速度比之前快。
计算机密码学常常使用整数为密钥。在一些情况里,密钥是通过随机数生成器(random number generator, RNG)或伪随机数生成器(pseudorandom number generator, PRNG)随机生成的。伪随机数生成器产生的数据在分析时看起来是随机的。
经典的密码系统会在通信的一端产生两个具有识别性的密钥,然后以某种方式运输的其中一个密钥到通信的另一端。
最简单的破解数据而无需解密的方式是 暴力攻击 ——尝试每一个数字,直到达到密钥的最大长度。因此,使用一个足够长的 密钥长度是十分重要的。长密钥使破解所需要的时间更长。目前推荐的密钥长度是对称密钥算法至少128位元,椭圆曲线密码学至少224位元,RSA至少2048位元,这样的组合被认为在2030年以前是安全的[1]。
参考文献
- ^ Keylength - NIST Report on Cryptographic Key Length and Cryptoperiod (2019). www.keylength.com. [2020-04-06]. (原始内容存档于2020-04-04).