JavaTM安全体系结构 1

原创 2001年05月05日 01:16:00


JavaTM安全体系结构(JDK1.2)

 


1. 引言

自从Java技术开始应用以来,人们对Java平台的安全以及由于部署Java技术所引发的安全问题,越来越感兴趣。

按照Java设计者的观点,Java安全包括两个方面的内容:
  • 将Java作为一种安全的、安装好的平台提供给用户(主要通过JDK),在此平台上,可安全地运行Java应用程序。

  • 提供用Java编程语言实现的安全工具和服务,它使得诸如企业界这样一些对安全非常敏感的领域也可应用Java技术。
本文将讨论第一个方面的内容,应用这方面技术的用户包括将Java技术捆绑或嵌入到自身产品中的厂商(如浏览器和操作系统厂商)。

1.1 初始沙箱模型

众所周知, 由Java平台提供的最初的安全模型是一种沙箱模型, 它是为了建立一个极有限的环境而设置的, 在这个环境中, 可运行从开放网络中获取的不可信代码。沙箱模型的实质是,本地代码是可信的,因而可全部访问关键系统资源(如文件系统);而下载的远程代码(一个Applet)是不可信的,因而只能访问由沙箱内部所提供的有限资源。这种沙箱模型如下图所示:

jdk-chart1.gif

沙箱模型是通过Java开发工具包(JDK)部署的,一般来说,它可被由JDK1.0(包括可运行Java的Web浏览器)建立的应用程序所采用。

总的安全性的提高是通过采用一系列机制来实现的。首先,Java语言被设计为是类型安全的且便于使用,其目的是为减轻程序员的负担,减少出现象使用其它编程语言时(如C或C++)所出现的编程错误。该语言的特点,如自动内存管理、内存垃圾回收及字符串和数组的越界检查等,都可成为该语言帮助程序员编写安全代码的佐证。

其次,编译器和字节码校验器可保证只有合法的Java字节码才能被执行。字节码校验器与Java虚拟机一起保证了在运行时的语言安全。

再次,类装载器可定义一个本地名空间,这可以保证一个不可信Applet不会干扰其它程序的运行。

最后,对重要系统资源的访问是通过Java虚拟机来传递的,并由SecurityManager类进行预先检查,这就将不可信代码的活动限制到了最小的程度。

JDK1.1引进了"已签字的Applet"的概念,如下图所示。在这个版本中,一个有着正确的数字签字的Applet,如果它的签字被接收该Applet的最终系统确认为是可信的,则这个Applet被认为是可信代码。已签字的Applet,与它们的签字一起,以JAR(Java Archive)格式发出。在JDK1.1中,未签字的Applet始终运行于沙箱之中。

jdk-chart3.gif

1.2沙箱模型的演化

在JDK1.2中采用的新的安全体系结构(如下图所示),主要是为了以下目的而引进的:

jdk-chart2.gif

  • 精致的访问控制

    这种能力从一开始就在JDK中存在,但要使用它,应用程序的编写者不得不做大量的编程工作(例如,创建SecurityManager和Classloader类的子类并使其用户化)。HotJava1.0就是一个这样的应用程序,它允许浏览器用户在几个不同的安全等级上进行选择。

    然而,这种编程涉及非常敏感的安全问题,它要求程序员对计算机安全有精深的理解和纯熟的技巧。新的安全体系结构将使这些变得简单而安全。

  • 易于设置安全策略

    与上述情况相似,这种能力在原来的JDK中也是存在的,但是不便于使用,而且编写安全代码也不是简单明了的事情。于是,人们期望能够允许应用程序的编写者和用户能够不通过编程来设置安全策略。

  • 便于扩展的访问控制结构

    一直到JDK1.1为止,为了创建一个新的访问许可,你必须在SecurityManager类中增加一个新的check方法。新的安全体系结构则允许设置各类访问许可(每个都表示对一个系统资源的访问)并能对所有正确访问许可(包括未定义的许可)进行自动处理。在大多数情况下都不必在SecurityManager类中创建新的方法(事实上,至今我们从未遇到过需创建新方法的情形)。

  • 将安全检查扩展至所有Java应用中,包括应用程序和小应用程序

    那种所有本地代码是可信的内置概念将不复存在,取而代之的将是,本地代码(例如非系统代码,安装在本地的应用程序包等)服从于与Applet相同的安全控制,尽管(如果需要的话)可以声明对本地代码(甚至是远程代码)的政策是最宽容的,从而使这些代码可被认为是完全可信的而有效地运行。上述原则也可应用与已签字的Applets和任何Java应用程序。

总而言之,上述做法的目的无疑是要对安全类的设计做内部调节(包括SecurityManager和ClassLoader类)以减少在未来编程中出现细小的安全空洞的风险。

..........|Next|..........


欢迎与我们联系:webmaster@prc.sun.com
版权所有 1997-1998 Sun(中国)公司,北京南礼士路66号建威大厦16层
All rights reserved.Legal Terms

JavaTM安全体系结构 1

  • zgqtxwd
  • zgqtxwd
  • 2008年04月25日 18:10
  • 60

JavaTM安全体系结构 8

JavaTM安全体系结构(JDK1.2)8. 未来发展方向8.1 用户、认证和信任书 今天,主体(例如:用户)的概念已经不太清楚了,因为每个JVM都由一个用户所拥有。将来,有必要扩展Protectio...
  • wxyxl
  • wxyxl
  • 2001年05月05日 01:19
  • 718

JavaTM安全体系结构 4

  • zgqtxwd
  • zgqtxwd
  • 2008年04月25日 21:09
  • 93

JavaTM安全体系结构 2

JavaTM安全体系结构(JDK1.2) 2. 新的保护机制──基本概念概述现在,我们讨论一下新的保护体系结构,并对它的功能性做一个简要的说明。我们将从新体系结构的基本概念说起,然后按自然顺序介绍主要...
  • wxyxl
  • wxyxl
  • 2001年05月05日 01:16
  • 737

JavaTM安全体系结构 3

JavaTM安全体系结构(JDK1.2)3. 许可和安全策3.1 许可类? 许可类表示了对系统资源的访问。java.security.Permission类是一个抽象的类,且在适当的时候可生成子类以表...
  • wxyxl
  • wxyxl
  • 2001年05月05日 01:17
  • 837

JavaTM安全体系结构 6

JavaTM安全体系结构(JDK1.2)6. 安全性管理6.1 管理Applet和应用程序 目前,所有JDK系统代码都是调用SecurityManager方法以检查现行策略并进行访问控制检查。不管一个...
  • wxyxl
  • wxyxl
  • 2001年05月05日 01:18
  • 829

JavaTM安全体系结构 7

JavaTM安全体系结构(JDK1.2)7. GuardedObject和SignedObject7.1 java.security.GuardedObject和java.security.Guard...
  • wxyxl
  • wxyxl
  • 2001年05月05日 01:18
  • 767

JavaTM安全体系结构(JDK1.2)

google_ad_client = "pub-8800625213955058";/* 336x280, 创建于 07-11-21 */google_ad_slot = "0989131976";...
  • java169
  • java169
  • 2008年05月21日 03:19
  • 117

JavaTM安全体系结构 5

JavaTM安全体系结构(JDK1.2)5. 安全类装载 动态类装载是Java虚拟机的一个重要特性,因为它为Java平台提供了一种在运行时安装软件的能力。它有许多独特的性质。首先,惰性装载表示按需求并...
  • wxyxl
  • wxyxl
  • 2001年05月05日 01:18
  • 931

java安全体系结构

Java语言拥有三大特征:平台无关性、网络移动性和安全性,而Java体系结构对这三大特征提供了强大的支持和保证,本文着重介绍Java体系结构对支持信息安全的原理和使用方法。Java体系结构Java的体...
  • hanxinghero2000
  • hanxinghero2000
  • 2007年03月31日 19:46
  • 1819
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JavaTM安全体系结构 1
举报原因:
原因补充:

(最多只允许输入30个字)