JavaTM安全体系结构 7

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


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


7. GuardedObject和SignedObject

7.1 java.security.GuardedObject和java.security.Guard



回想一下,当访问控制决策必须在不同的上下文中作出时,AccessControlContext类是非常有用的。这里有另外一种情况:资源的供应者与资源的消费者不在同一个线程,并且消费者线程不能为供应者线程提供访问控制上下文信息(因为上下文是安全敏感的;或上下文太大,不能传递;或由于其它原因)。对这种情况,我们提供了一个被称为GuardedObject的类,来保护对这个资源的访问。见下图说明:
jdk-chart9.gif

基本的想法是:资源的供应者可创建一个代表这个资源的对象,再创建一个将资源对象嵌套在内的GuardedObject, 然后,将GuardedObject提供给消费者。在创建GuardedObject时,供应者还要指定一个Guard对象;这样,如果某些在这个Guard内部的(安全)检查令人满意的话,任何人(包括消费者)则只能获得资源对象。

Guard是一个界面,所以任何对象可选择成为一个Guard。这个界面上的唯一方法被称为checkGuard。它提取一个Object变量,并执行一定的(安全)检查。java.security中的Permission类实现这个Guard界面。

例如,假设一个系统线程被要求为阅读访问打开一个文件/a/b/c.txt,但是系统线程不知道请求者是谁或这个请求是在什么情况下被做出的。因此,正确的访问控制决策不能在服务器端做出。系统线程可使用GuardedObject来延迟访问控制检查。如下所示:
FileInputStream f = new FileInputStream ("/a/b/c.txt");
FilePermission p = new FilePermission ("/a/b/c.txt", "read");
GuardedObject g = new GuardedObject (f, p);
现在,系统线程可将g传递给消费者线程。消费者线程要获得文件输入流,必须调用:

FileInputStream fis = (FileInputStream) g.getObject();

这个方法结果调用在Guard对象p上的checkGuard方法,并且由于p是一个许可,所以它的checkGuard方法事实上是:

SecurityManager sm = System.getSecurityManager ();
if (sm ! = null) sm.checkPermission (this);

这可以保证一个真正的访问控制检查发生在消费者上下文内。事实上,你可以在许多情况下,替换常用哈希表和访问控制列表,并直接存储GuardedObject的哈希表。

这个GuardedObject和Guard的基本模式是非常通用的,我们期望通过继承这个基本的GuardedObject和Guard的类,开发人员可以轻松地获得极强大的访问控制工具。例如:用一个适当的方法的Guard可获得每个方法的调用,并且一个Guard可检查该日的时间、调用者的签字或其它证明、或任何其它相关的信息。

注意:由于GuardedObject返回一个Object,所以某些键入信息会丢失。要在合作方之间使用GuardedObject,接受方应该了解希望获得对象的什么类型(以及转换类型)。事实上,我们预见GuardedObject的多数用法涉及创建子类(即形成一个GuardedFileInputStream类),从而封装键入信息,类型转换也可在子类中相应地进行。

7.2 java.security.SignedObject

这个类是其它安全要素的基本积木块。SignedObject包含另一个可序列化的对象,(将)签字的对象和它的数字签字。如果数字签字不是空,它将包含一个有效的已签字的对象的数字签字。这可以用下图表示:
jdk-chart10.gif

底层签字算法是通过一个被当作sign方法调用来设置的,该方法的参数是Signature对象,算法可以是如下算法之一:NIST标准DSA、使用DSA和SHA-1。与数字签字一样,算法是用通常方式说明的,如 "SHA/DSA"。

已签字的对象是一个初始对象的"深度拷贝"(以序列化的形式),一旦拷贝完成,初始对象的操作对该拷贝不产生副作用,一个已签字的对象是永恒不变的。

创建一个已签字对象的典型事例如下:
Signature signingEngine = Signature.getInstance(algorithm,provider);
SignedObject so = new SignedObject(myobject, signingKey, signingEngine);
一个典型的校验例子如下,so是一个被收到的SignedObject对象。如果已知算法的名称,则这里的第一行可被忽略:
String algorithm = so.getAlgorithm();
Signature verificationEngine = Signature.getInstance(algorithm, provider);
so.verify(verificationEngine);
SignedObject的潜在应用包括:
  • 它可作为一个不可伪造的鉴别令牌在任意Java应用环境内使用:它可任意传递,而不必担心该令牌在没有被检测到的情况下而被恶意更改;

  • 它可被用来为Java运行时以外的存储器签署并序列化数据/对象(例如,在磁盘上存储访问控制的关键数据);

  • 嵌套的SignedObjects可被用来构造一个签字的逻辑顺序,就象认证和授权的链一样。

我们期望这个类在将来可以创建子类,以允许在相同的签字对象上有多个签字。那样,在这个基础类上的现存方法调用将在语意上是全兼容的。特别是如果只有一个签字,则任意get方法将返回单独值;如果有多个签字,则将从签字集中返回一个任意值。

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


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

SELinux架构和Flask安全体系结构的一些认识

首先,总的说来:整个安全性体系结构称为Flask,在 Flask 体系结构中,安全性策略的逻辑和通用接口一起封装在与操作系统独立的组件中,通用接口是用于获得安全性策略决策的。这个单独的组件称为安全性服...
  • Des_lucioles
  • Des_lucioles
  • 2015年10月30日 17:02
  • 1420

防火墙体系结构

一般来说防火墙主要有以下几种体系结构,防火墙主要包括双重宿主主机体系结构,屏蔽主机体系结构和屏蔽子网体系结构 1.   双重宿主主机体系结构,双重宿主主机是一种防火墙,这种防火墙主要有2个接口,分别...
  • ShaoqunLiu
  • ShaoqunLiu
  • 2016年09月02日 19:41
  • 2630

CentOS7 系统安全加固实施方案介绍

CentOS7.0系统安全加固手册 目录 一、用户帐号和环境……………………………………………………………………………………. 2二、系统访问认证和授权………………………………………………………………...
  • scorpio3k
  • scorpio3k
  • 2015年09月23日 12:43
  • 5704

Java 平台体系结构 概要

1、Java 平台的体系结构  Java SE 标准版:是各种应用平台的基础,主要应用于桌面开发和低端商务应用的解决方案。Java EE 企业版 :以企业为环境开发应用程序的解决方案,这个版本以前...
  • taohuaxinmu123
  • taohuaxinmu123
  • 2013年09月06日 10:54
  • 1216

OSI安全体系结构的五类安全服务以及八类安全机制

五类安全服务包括认证(鉴别)服务、访问控制服务、数据保密性服务、数据完整性服务和抗否认性服务。 认证(鉴别)服务:在网络交互过程中,对收发双方的身份及数据来源进行验证。 访问控制服务:防止未授...
  • algzjh
  • algzjh
  • 2017年03月15日 10:01
  • 386

SQL Server安全管理

SQL Server安全管理数据库的安全性是指保护数据以防止因不合法的使用而造成的数据的泄密和破坏SQL Server的安全性机制SQL Server的安全体系结构可以划分为以下4个层次:客户操作系统...
  • A__loser
  • A__loser
  • 2017年12月19日 15:29
  • 175

CentOS 7服务器安全配置(未完待续)

1.问题背景本打算买一个Linux服务器玩玩,系统为CentOS 7,供学习Linux和线上部署网站学习用。没想到买了没几天,啥都没做呢,登录之后发现了近2万条登录失败记录(输入lastb命令即可查看...
  • zosoyi
  • zosoyi
  • 2017年11月07日 15:50
  • 180

安装 CentOS 7 后必做的七件事

原文:http://www.hksilicon.com/kb/cn/articles/594621/CentOS-7     CentOS是最多人用来运行服务器的 Linux 版本,最新...
  • yuanchao99
  • yuanchao99
  • 2015年01月23日 06:46
  • 17376

如何构建一个安全,稳定,高效的互联网平台体系架构

随着现在互联网的高速发展,用户对企业互联网产品的体验性尤为重要,其中包括用户对网站速度,产品 内容,可用性,方便使用性及安全性等多方面。要想提供给客户比较满意的互联网产品服务,首先需要我 ...
  • h254532699
  • h254532699
  • 2017年01月10日 12:54
  • 1062

Zigbee体系结构介绍

每层都不知道关于它上层的东西,上层像“主人”命令“奴隶”一样跟它的下层对话,每一层都是在其下层的基础上提供一些复杂的机制。 Zigbee并不是完全符合OSI七层网络模型的,但基本原理相同,也是包括P...
  • hudailiggg
  • hudailiggg
  • 2014年12月23日 11:26
  • 1244
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JavaTM安全体系结构 7
举报原因:
原因补充:

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