Public-Key
截至 2021 年 Java keytool 的良好非對稱算法
雖然我預計“最佳”一詞會受到抨擊,但從本質上講,某些算法被廣泛認為比其他算法更好。例如,DES 不再被認為是安全的。
我的特殊問題是我想用來
keytool
生成一個 Java 密鑰庫,其中包含一個非對稱密鑰,並且不知道要使用什麼算法。這裡有一個列表:https ://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#Cipher ,但它沒有給出建議 - 並且包含上述 DES,所以他們並非都一樣好。最重要的是,我嘗試了一些“KeyPairGenerator not available”。
我用於密鑰生成的命令是:
keytool -genkey -keyalg RSA -alias server -keystore selfsigned.jks -validity 1000 -keysize 2048
這可能很好,但我實際上並不知道其中一種方法。
DES 是一種對稱密碼。通常,Java 密鑰儲存僅用於/可用於非對稱密鑰對,更準確地說,帶有隨附證書的非對稱密鑰對使其變得有用。是的,RSA 仍然被認為是一種很好的算法,儘管我建議使用 3072 位密鑰對來實現 128 位安全性。
請注意,RSA 不是量子安全的,因此不要將其用於長期(例如 10 年以上)安全性。請注意,預設情況下,Java 僅使用一種非常糟糕的方法從密碼中獲取密鑰,然後使用 3DES 來保護密鑰庫本身,即使使用 PKCS#12 密鑰庫也是如此。因此,請確保您保護文件本身並選擇一個強密碼(即使用密碼生成器生成的密碼,例如密碼數據庫之一)。