Java JNLP需要签名的目的是什么?

Java JNLP需要签名的目的是什么?,java,security,digital-signature,jnlp,Java,Security,Digital Signature,Jnlp,我对安全基础知识和数字签名之类的东西只有有限的了解。例如,我了解数字签名在公钥加密中的作用。然而,我不理解为什么需要签署我的JNLP,或者它防止了什么恶意,我也找不到这些信息 我发现部署未签名的JNLP是允许的,但是磁盘和网络访问受到限制。但是,让我们假设我是一个恶意的人,他制作了一个Java应用程序,该应用程序将对您的磁盘内容进行恶意操作(我将其伪装成其他东西)。我可以很容易地签署这个,部署它,你可以来到我的网站,毫无疑问,并启动应用程序,并有你的磁盘攻击。在这种情况下。。。签名完成了什么 更

我对安全基础知识和数字签名之类的东西只有有限的了解。例如,我了解数字签名在公钥加密中的作用。然而,我不理解为什么需要签署我的JNLP,或者它防止了什么恶意,我也找不到这些信息

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

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

我肯定我错过了一些非常明显的东西。。。请告诉我。

你不能只是签署一些东西,如果你想让浏览器不受限制地执行它,就不能。用于签署软件的证书必须使用其他证书签署,依此类推,直到到达已安装在浏览器中的

虽然偶尔会有一些人不够勤奋,但如果不提供您(网络)身份的证明,您通常无法获得此类证书。这意味着恶意的人必须提供某种身份证明,尽管可能很少。更重要的是,CA应该能够识别用于恶意活动或以其他方式受损的证书,从而限制暴露的程度


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

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

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

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

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

从历史上看,我相信这就是为什么JNLP和小程序会被签署的原因我相信此签名的实用价值已经过期。

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

更重要的是,最近的Java安全更新集中在修补后门,允许未签名代码走出沙箱,完成签名小程序或JNLP所能做的一切。似乎每次Oracle修补出沙箱的方法时,都会有人找到不同的方法。最好的解决方案是让运行时始终提示用户获得运行Java小程序或JNLP文件的权限。自签名JNLP文件不仅可以访问本地文件系统和LAN,还可以访问未签名的JNLP。如果用户从Oracle获得了最新的安全更新(当然,大多数用户没有),并且在发现下一个从沙箱中滑出的聪明方法之前,那么沙箱模型真的按照预期工作。但对于大多数用户来说,大多数时候,sanbox模型并没有按预期工作。我认为现在是时候让所有JNLP文件请求运行权限,并给予它们与常规JAR文件相同的访问权限了


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

谢谢您提供的信息。我有点明白你的意思。但我想我主要是指自我签名。我刚刚自行签署了我的应用程序,正如您所指出的,如果用户在收到“警告”后同意,该应用程序可以从我的网站运行。那么,为什么它不能向用户提供相同的警告和运行未签署应用程序的选项呢?我的自签名应用程序似乎和未签名的应用程序一样值得信赖。唯一的区别是我必须通过额外的工作来自我签名。有什么问题