密鑰生成
外觀
此條目需要精通或熟悉相關主題的編者參與及協助編輯。 (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).