我正试图理解过去几年Java开发背后的基本原理。在过去,大多数小程序都没有签名,这些程序的代码运行在沙箱中,在沙箱中禁止bug,这样不会有什么害处。如果某些applet需要更多的权限,作者可以对代码进行签名,用户可以决定信任该作者,并在不受严格沙箱限制的情况下运行applet。
然而,最近,在沙箱中运行无符号代码似乎非常困难。根据我的经验,这需要减少安全性设置和建立异常规则。因此,越来越多的applets被签名,因为用户体验更好。因此,越来越多的小程序运行在沙箱之外,通常没有很好的理由,只是更容易向用户解释,他们应该只点击“允许”(而不是添加基于域的异常规则)。
我说得对吗?或者我只是在某种程度上混淆了我的Java设置,以至于它会拒绝为我运行沙箱小程序?
理由是什么?在没有沙箱的情况下,从未知的人那里运行签名的applet比在沙箱中运行来自这些人的未签名的applet更安全吗?沙箱真的是那辆马车吗?
发布于 2015-12-02 05:17:03
在过去的几年里,Java沙箱被忽略了很多,并且Java将自己确定为下载驱动的主要攻击载体。为了缓解这个问题,Oracle决定只允许由可信CA签名的applet(即不允许未签名或自签名),因为这至少会增加恶意软件作者所需的工作。此外,用于签名的证书可以被撤销,以限制用于签名恶意软件的证书的影响。对平台的这一改变是在2013年使用Java 7u21完成的。
这并不意味着所有这些小程序都在沙箱之外运行。到引文神谕:
从7u21开始,签名不再自动等同于特权执行,
因此,如果applet使用特权执行,则取决于它嵌入的确切方式以及它隐式或显式请求的权限。使用Java 7u51,添加了进一步的限制,所有小程序现在都必须包含它们需要的权限列表。
此外,出于安全考虑,建议完全删除tje Java插件,或者至少让applets点击播放,这在现在的几个浏览器中是默认的。
发布于 2015-12-01 21:09:28
在没有沙箱的情况下,从未知的人那里运行签名的applet比在沙箱中运行来自这些人的未签名的applet更安全吗?
不是,任何人都可以买到密码签名证书。它只是用来对你的应用程序进行数字签名,用户可以检查签名,看看是否是官方开发人员的签名。
沙箱真的是那辆马车吗?
过去JVM中总是存在一些关键的漏洞,这些漏洞允许应用程序爆发,等等,但这些漏洞都是固定的。理论上说,在沙箱或特定类中可以有0天的时间滥用一个新的未知漏洞。
数字签名只是为了验证下载和使用的应用程序是否来自原开发人员/作者,他拥有用于签署应用程序的私钥,但没有其他人。
这里描述的基本概念是:https://docs.oracle.com/javase/tutorial/security/sigcert/index.html
数字签名使用数字签名的基本思想如下。
收件人需要确保您的公钥本身是真实的,然后他/她才能使用它来验证您的签名是真实的。因此,您通常会提供一个包含您的公钥的证书和证书颁发机构的密钥,后者可以为您的密钥的真实性提供担保。有关详细信息,请参阅下一节。
另外,恶意软件也可以进行数字签名,这并不少见。
https://security.stackexchange.com/questions/106981
复制相似问题