首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java代码签名与沙箱

Java代码签名与沙箱
EN

Security用户
提问于 2015-12-01 20:43:28
回答 2查看 461关注 0票数 3

我正试图理解过去几年Java开发背后的基本原理。在过去,大多数小程序都没有签名,这些程序的代码运行在沙箱中,在沙箱中禁止bug,这样不会有什么害处。如果某些applet需要更多的权限,作者可以对代码进行签名,用户可以决定信任该作者,并在不受严格沙箱限制的情况下运行applet。

然而,最近,在沙箱中运行无符号代码似乎非常困难。根据我的经验,这需要减少安全性设置和建立异常规则。因此,越来越多的applets被签名,因为用户体验更好。因此,越来越多的小程序运行在沙箱之外,通常没有很好的理由,只是更容易向用户解释,他们应该只点击“允许”(而不是添加基于域的异常规则)。

我说得对吗?或者我只是在某种程度上混淆了我的Java设置,以至于它会拒绝为我运行沙箱小程序?

理由是什么?在没有沙箱的情况下,从未知的人那里运行签名的applet比在沙箱中运行来自这些人的未签名的applet更安全吗?沙箱真的是那辆马车吗?

EN

回答 2

Security用户

回答已采纳

发布于 2015-12-02 05:17:03

在过去的几年里,Java沙箱被忽略了很多,并且Java将自己确定为下载驱动的主要攻击载体。为了缓解这个问题,Oracle决定只允许由可信CA签名的applet(即不允许未签名或自签名),因为这至少会增加恶意软件作者所需的工作。此外,用于签名的证书可以被撤销,以限制用于签名恶意软件的证书的影响。对平台的这一改变是在2013年使用Java 7u21完成的。

这并不意味着所有这些小程序都在沙箱之外运行。到引文神谕

从7u21开始,签名不再自动等同于特权执行,

因此,如果applet使用特权执行,则取决于它嵌入的确切方式以及它隐式或显式请求的权限。使用Java 7u51,添加了进一步的限制,所有小程序现在都必须包含它们需要的权限列表。

此外,出于安全考虑,建议完全删除tje Java插件,或者至少让applets点击播放,这在现在的几个浏览器中是默认的。

票数 3
EN

Security用户

发布于 2015-12-01 21:09:28

在没有沙箱的情况下,从未知的人那里运行签名的applet比在沙箱中运行来自这些人的未签名的applet更安全吗?

不是,任何人都可以买到密码签名证书。它只是用来对你的应用程序进行数字签名,用户可以检查签名,看看是否是官方开发人员的签名。

沙箱真的是那辆马车吗?

过去JVM中总是存在一些关键的漏洞,这些漏洞允许应用程序爆发,等等,但这些漏洞都是固定的。理论上说,在沙箱或特定类中可以有0天的时间滥用一个新的未知漏洞。

数字签名只是为了验证下载和使用的应用程序是否来自原开发人员/作者,他拥有用于签署应用程序的私钥,但没有其他人。

这里描述的基本概念是:https://docs.oracle.com/javase/tutorial/security/sigcert/index.html

数字签名使用数字签名的基本思想如下。

  1. 您可以使用您的私钥之一对文档或代码进行“签名”,您可以使用keytool或security方法生成这些私钥。也就是说,使用jarsigner工具或Security方法为文档或代码生成数字签名。
  2. 您将签名的文档发送给收件人。
  3. 您还向收件人提供您的公钥。此公钥对应于您最初用于生成签名的私钥。
  4. 收件人使用您的公钥来验证您的文档是否来自您,并且在它到达他/她之前没有被修改。

收件人需要确保您的公钥本身是真实的,然后他/她才能使用它来验证您的签名是真实的。因此,您通常会提供一个包含您的公钥的证书和证书颁发机构的密钥,后者可以为您的密钥的真实性提供担保。有关详细信息,请参阅下一节。

另外,恶意软件也可以进行数字签名,这并不少见。

票数 0
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/106981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档