密钥生成
外观
此條目需要精通或熟悉相关主题的编者参与及协助编辑。 (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).