22

当每个人都可以使用 jarsigner 来签名你的代码时,像 Java 的 jar 一样签名有什么意义?它如何提供安全性?

4

3 回答 3

17

签署 JAR 文件的目的是验证它没有被篡改。签署 jar 文件后,您可以验证该文件是否未被其他人修改。这可以确保文件来自最初签署它的人。如果有人在签名验证过程之间修改了文件,则会失败。您可以查看这篇文章以获取有关如何使用公钥加密来执行数字签名的更多详细信息。

于 2010-07-24T21:39:53.450 回答
5

当你签署一个 jar 文件时,你可以表明是签署了它,而不是其他人。

签署文件时的想法是一样的——只有你可以写你的签名。其他人可以签名,但他们会用他们的签名而不是你的签名来签名。

通过手写签名,熟练的伪造者可以学会复制您的签名。使用数字签名制作副本要困难得多,因为您需要获取该人的私钥。如果没有私钥,您将无法制作看起来像他们的签名。

于 2010-07-24T21:40:15.087 回答
5

对 jar 进行签名会将内容与特定证书联系起来。那么该证书证明了什么?

如果证书的私钥被盗了,那不是很多。有用于保存私钥的防篡改设备。但是,通常私钥通常位于开发人员机器上。这些机器可能没有得到很好的保护。

证书本身可以由众所周知的证书颁发机构 (CA) 签名。因此,最终用户对内容具有声明的来源有一定的信心。证书密钥持有者是他们声称的身份的验证量各不相同。这导致了一场逐底竞争,CA 简化程序以提供更低的价格。

即使对于未经验证的证书,使用相同证书签名的不同内容也显示出共同的来源。因此,如果您决定信任证书,您可以从同一来源接收更多内容,而无需信任其他任何人。

于 2010-07-24T22:12:25.573 回答