保护密钥库传输安全层(TLS)中的根证书和中间证书

时间:2017-07-03 13:48:50

标签: java security ssl tls1.2

我的问题是关于使用Java密钥库和信任库在TLS中的不可否认性。位于密钥库和信任库内的根证书和中间证书,它们验证另一个证书。如果他们被操纵,他们可能会验证错误的证书。

通常,在生成新证书时,证书颁发机构会检查信任链,并查看证书是否带有正确的中间证书和根证书。但是如果攻击者也操纵证书呢?

如果攻击者可以破解密码,那么他可能无法更改证书吗?

我知道一个改进是使用更好的散列,例如,使用SHA-512而不是SHA-256。另一个是确保证书只能来自某个证书颁发机构。

是否已知其他任何改进以保护根证书和中间证书?

TLS是否还有其他限制?

1 个答案:

答案 0 :(得分:2)

  

位于密钥库和信任库内的根证书和中间证书,它们验证另一个证书。如果他们受到操纵,他们可能会验证错误的证书。

信任库包含接受的证书颁发机构(CA)的根证书。通常它不包含中间证书。信任库必须保持安全,因为如果它被操纵(如您所说),您可以接受不需要的证书。

密钥库包含客户端证书,而不是受信任证书。

  

通常,在生成新证书时,证书颁发机构会检查信任链,并查看证书是否带有正确的中间证书和根证书。但是如果攻击者也操纵证书呢?

证书颁发机构不检查任何链。您向CA提供CSR(证书签名请求),这是使用您的私钥签名的证书请求。 CA生成证书,使用CA的私钥对其进行签名,并返回证书和链。见Certificate enrollment process

攻击者无法操纵证书,因为它不拥有CA的私钥,并且使用受信任根的公钥进行的验证将失败。

  

如果攻击者可以破解密码,那么他是否可能无法更改证书?

证书是公开的。相应的私钥是私有的。要证明您拥有证书,请与私人签署数字签名。因此,对于" hack"攻击者需要私钥的证书。 (私钥可以用密码保护,但这与私钥的存储方式有关)

  

我知道一个改进是使用更好的散列,例如,使用SHA-512而不是SHA-256。

我认为这与问题无关

  

另一个人会确保证书只能来自某个证书颁发机构。

当然,这是信任库的目的。 证书添加到信任库的方式超出了TLS

的范围
  

TLS是否还有其他限制?

请详细说明......