Keystore密碼的意義究竟是什麼,例如在JKS/BKS密鑰庫上?Java密鑰庫密碼毫無意義?
這顯然不是爲了安全,因爲我可以用編輯器打開文件並將所有條目複製到沒有密碼檢查的新文件中。受密碼保護的密鑰庫中的數據未加密!
此密碼保護什麼?它似乎只是針對開發人員oO ...
Keystore密碼的意義究竟是什麼,例如在JKS/BKS密鑰庫上?Java密鑰庫密碼毫無意義?
這顯然不是爲了安全,因爲我可以用編輯器打開文件並將所有條目複製到沒有密碼檢查的新文件中。受密碼保護的密鑰庫中的數據未加密!
此密碼保護什麼?它似乎只是針對開發人員oO ...
在JKS或BKS密鑰庫上,密碼並非毫無意義,但它也不會做你可能會假設的事情。
它不會加密密鑰庫中的數據或以任何方式阻止對其進行訪問,但它確實會驗證密鑰庫的完整性。在不知道密碼的情況下,如果沒有找到正常用戶(通常是由於他們的工具告訴他們「密鑰庫被篡改或密碼不正確」),不可能對密鑰庫進行更改
在其他一些密鑰庫類型(如Keystore.BouncyCastle)密鑰庫密碼可以防止檢查以及篡改。
假設您在密鑰庫中保存了一個名爲「this is my sentence」的字符串,當您用記事本打開它時,您看到密文「blabla」,並且您將「blabla」複製到另一個文件並聲明您找到純文本,並且它是「blabla」,這顯然不正確,但您仍然不知道原始的pliant-ext,直到通過密碼恢復爲止。
== ==編輯
爲JKS密鑰庫,密鑰庫密碼是用來驗證完整性, src
636 if (password != null) {
637 md = getPreKeyedHash(password);
638 dis = new DataInputStream(new DigestInputStream(stream, md));
639 }
的DigestInputStream生成一個簽名並把它比作一個acutal,看是否是改性。
BouncyCastle的密鑰庫UBER是更安全的,整個密鑰庫是基於SHA1和Twofish的加密與PBE(PBEWithSHAAndTwofish-CBC)
Cipher cipher = this.makePBECipher(cipherAlg, Cipher.DECRYPT_MODE, password, salt, iterationCount);
CipherInputStream cIn = new CipherInputStream(dIn, cipher);
Digest dig = new SHA1Digest();
DigestInputStream dgIn = new DigestInputStream(cIn, dig);
this.loadStore(dgIn);
沒有真正的方法可以在本地安全地存儲密碼並且可以訪問它們,除非您依賴於安全模式,或者請求用戶使用密碼來解鎖密碼存儲區。 – WhyNotHugo
是的,但你想說什麼?我的私鑰是安全的,因爲它被KEYPAIR密碼加密和保護。所有其他內容可以以明文形式讀取,無論是否存在密鑰存儲密碼。 – billdoor
的確,但您需要提供密碼才能訪問它;這是我的觀點。這同樣適用於密碼存儲;你仍然需要一個主密碼。 – WhyNotHugo