3

我对安全基础知识和数字签名之类的东西了解有限。例如,我了解数字签名在公钥密码学中的用途。但是,我不明白为什么需要签署我的 JNLP,或者它可以防止什么恶意,我也无法找到这些信息。

我发现允许部署未签名的 JNLP,但磁盘和网络访问等内容受到限制。但是,假设我是一个恶意的人,他制作了一个 Java 应用程序,该应用程序会对您的磁盘内容进行恶意操作(我将其伪装成其他东西)。我可以轻松地签署、部署它,然后您可以毫无戒心地访问我的网站,然后启动应用程序并让您的磁盘受到攻击。在这种情况下......签名完成了什么?

更重要的是...如果有人可以简单地签署申请而几乎不需要任何努力...那有什么意义呢?

我确定我错过了一些非常明显的东西......请赐教。

4

2 回答 2

4

您不能签署某些东西 - 如果您希望浏览器不受限制地执行它,则不能。用于签署软件的证书必须使用另一个证书进行签署,依此类推,直到信任链到达已安装在浏览器中的根证书。

虽然偶尔会有一些不太勤奋的证书颁发机构,但如果不提供一些您的(网络)身份证明,您通常无法获得这样的证书。这意味着恶意的人必须提供某种身份证明,尽管它可能很少。更重要的是,CA 预计会撤销已用于恶意活动或以其他方式受到损害的证书,从而限制暴露程度。

直截了当地说,如果您在站点中使用 CA 签名的证书,并且该证书用于分发恶意软件,那么 CA 会尽快撤销您的证书。另一方面,如果您使用自签名证书,浏览器将要求用户确认其使用。如果用户不顾警告而继续使用它,那么这是他们自己的错,不是吗?毕竟,对于愚蠢或无知,没有通用的对策……

于 2013-03-15T23:15:23.250 回答
1

这个问题确实提出了一些有效的观点,thkala 为受信任的权威机构颁发的 CA 的价值提供了很好的辩护。

但是为什么我们需要 CA 来处理 JNLP 而不是常规的可执行 JAR 文件呢?我认为原因是 JNLP 旨在从浏览器启动。JNLP 文件是在沙箱中与浏览器一起运行的小程序的替代品——理论上可以避免对您的计算机造成任何损害。用户只需访问一个页面就可以启动在小程序中运行的 jar 文件。同样,只需单击一个按钮即可启动 JNLP。在 Chrome 中,我被要求首先保存 JNLP。但在 IE 或 Firefox 中,我会看到一个启动按钮或常规 Web 链接——它看起来像网页中的任何其他按钮或链接——然后单击即可运行程序。这比下载可执行文件然后运行它要简单一些。

另一方面,可执行 JAR 文件可以通过多种方式安装或运行。例如,它们通常与 MRI 一起打包在 CD 上,因为一些 MRI 查看软件在 JVM 上运行,并且患者或医生需要启动定制软件来查看 MRI。但是这个软件没有得到“安装”。您只需从 CD 运行它。

另一方面,JNLP 可以更像安装程序而不是独立程序。我已经能够让他们创建桌面快捷方式并进行文件关联。从用户的角度来看,我的 JNLP 应用程序感觉就像一个具有自己的图标和文件类型的本机程序。由于它在浏览器中运行得如此隐蔽,并​​且可以不受限制地访问客户端 PC,因此让它“签名和受信任”可以让用户在运行它时感觉更安全。

从历史上看,我相信这就是 JNLP 和小程序得到签名的原因。我相信这次签约的实用价值已经到期。

首先,从 CA 签署您的应用程序需要花费数百美元,因此许多公司都跳过了这一点。有一些合作的应用程序运行自签名代码,用户只知道在浏览器发出警告后点击“接受”按钮。

更重要的是,最近针对 Java 的安全更新集中在修补后门,这些后门允许未签名的代码离开沙箱并执行已签名的 applet 或 JNLP 可以执行的所有操作。似乎每次甲骨文修补沙盒的出路时,都会有人找到不同的出路。最好的解决方案是让运行时始终提示允许运行 Java 小程序或 JNLP 文件的用户。自签名的 JNLP 文件不仅可以访问本地文件系统和 LAN,而且未签名的 JNLP 也可以。如果用户从 Oracle 获得了最新的安全更新(当然,大多数人没有),并且在发现下一个从沙箱滑出的巧妙方法之前,沙箱模型确实按预期工作。但是对于大多数用户来说,大多数时候,sanbox 模型并没有按预期工作。我认为是时候让所有 JNLP 文件请求运行权限,并为它们提供与常规 JAR 文件相同的访问权限。

这样我就不必每 6 个月重新创建一次安全证书。

于 2013-03-19T17:25:19.760 回答