-1

例如,假设在 Git 中正在跟踪密钥库,因此我们可以确定它没有被篡改。在密钥库上设置密码会增加安全性吗?在这种情况下以任何方式省略密钥库密码是否存在安全风险?

注意:如果重要的话,keystore 被用于存储用于签署 Android 应用程序的公钥/私钥证书,并且 keystore 内的私钥使用强密码加密。

4

2 回答 2

0

在我看来,私钥应始终尽可能安全地存储。

取自 Sun/Oracle 官方文档

There is a built-in default keystore implementation type known as "jks" that is provided by Sun Microsystems. It implements the keystore as a file, utilizing a proprietary keystore type (format). It protects each private key with its own individual password, and also protects the integrity of the entire keystore with a (possibly different) password...

http://docs.oracle.com/javase/7/docs/technotes/guides/security/crypto/CryptoSpec.html#KeystoreImplementation

于 2013-07-05T14:59:28.690 回答
0

我做了很多谷歌搜索、阅读和实验,我相信我的问题的答案是“不”。

密钥库密码仅用作签名生成的一部分:它可以防止篡改,但不能防止检查。如果你能保证文件没有被修改一点,你就可以保证没有被篡改,所以在这种情况下添加密钥库密码不会提供任何额外的安全性。

资料来源:

Java keytool 文档仅将密钥库密码称为验证完整性,而不是加密 - 但没有明确表示它仅用于防止篡改。

Bouncy Castle 规范(第5.4 节)指出,当“以与 JKS 相同的方式”运行时,“密钥库可以抗篡改,但不能检查。” - 这强烈表明这对 JKS 来说是正确的

最具体但最不正式的是JKS 的逆向工程实现,它也支持密钥库未使用密钥库密码加密的说法。

实验:

我的第一个实验是更改密钥库上的密码,并在十六进制编辑器中查看更改了多少,看起来只有文件的最后几个字节发生了变化。

第二个实验:创建一个带有密码的密钥库,生成并存储一个带有不同密码的密钥。使用正确的密钥库密码和空白密码从密钥库中检索密钥。你会得到一点一点相同的结果。

于 2013-07-05T16:40:15.370 回答