首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

4.4  网格安全

4.4.1  网格安全基础结构

网格安全是基于被称作为网格安全基础结构(GSI,Grid Security Infrastructure)(图4-3)的,GSI已经成为全球网格论坛(GGF,Global Grid Forum)的标准[6,7]。GSI是对Globus(详见第5章)中的工具、库及协议还有其他网格中间设备的一种设置,以便用户跟应用程序可以安全地访问资源。GSI是基于公钥体系的,它拥有CA认证和X.509认证。GSI提供了:

●       一个公钥系统;

●       通过数字认证相互进行鉴定;

●       授权许可和单一标识。

图4-3  网格安全的基础结构

1. 简介

GSI是已被熟知和信任的技术集合。它可以通过设置提供隐秘性、完整性和鉴定。此外,跟认证结合起来后还可以提供加强鉴定。不是所有这些功能在通信过程当中都要用到。举例来说,一个基于GSI的安全会话要保证安全,那么最起码应该是经过鉴定的,完整性是需要的但可以不保证,如果需要保证机秘性,那么还要进行加密。

2. 通过数字认证相互进行鉴定

GSI使用X.509认证来保证加强鉴定。相互鉴定意味着在进行安全会话的通信双方都可以鉴定对方。因此当会话发起人想跟远程当事人进行通话时,它必须确定可以信任该当事人。这里的信任是指通信的双方当事人都信任对方当事人的CA所签发的认证,否则,两者之间的信任是不可能的。

3. 授权许可与单独标识

GSI允许用户创建并委派代理许可给远程资源上的程序。这样做允许远程程序与资源享有本地用户的权利。这一特性对于那些需要广泛使用远程资源的复杂应用程序来说,是非常重要的。代理许可是用户创建的,其使用期非常短。从本质上讲,代理许可就是在很短的一段时间内将用户身份跟一个变化的私钥结合在一起,它允许远程用户被鉴定一次并完成多个操作。为了方便重复访问,代理许可通常是不加密的。而为了防止被窃取,代理许可的使用期比较短。单一标识是一个非常重要的特征,因为它将多种资源都等同了,用户只需要被鉴定一次就可以了,接下来它就可以完成多个操作而不用进行进一步的鉴定。另外,系统还允许程序享有用户的权利而不用进行进一步的鉴定。

4.4.2  GSI的授权模式

不管是对服务器还是对用户,GSI都支持3种授权模式。

服务器方授权

服务器依赖于其所选择的授权模式来决定接受还是拒绝发送过来的安全申请。

●       None:这是最简单的一种授权模式,它不做任何的授权。

●       Self:如果客户的身份跟服务的身份相一致,则该客户可以使用网格服务。

●       Gridmap:网格地图文件中包含一个已授权用户表,这跟访问控制列表ACL很类似。在这种情况下,只有在服务的网格地图中标记过的用户才能访问该服务。

客户方授权

GSI中的客户方检查远程资源是否有安全的可信任证书,并依此来决定是否使用该远程资源。

●       None:不做任何授权。

●       Self:客户方会批准与自己有相同身份的服务的申请。如果客户方跟服务方都使用Self授权模式,当服务方的身份跟客户方一致时它可以被客户方调用。

●       Host:在主机返回一个包含主机名的身份文件时,客户方就批准其安全申请。它使用了主机认证。

1. 申请认证

要申请一个认证,用户首先应产生一对密钥。私钥以一种加密的形式保存(用通行短语保护)。公钥放在发送到CA的认证申请当中。CA通常包含一个注册权威(RA,Registration Authorities)的号码。RA会核查该用户的申请,如它会检查该用户名在CA中是否是唯一的,以及它是否是用户的真实名字之类的事情。当RA检查无误后,CA就签发该认证申请并分发给该申请人一个认证。

2. 相互鉴定

在相互鉴定协议当中GSI使用了安全套接层(SSL,Secure Sockets Layer)[8]。在相互鉴定之前,需要通信的实体首先要信任给对方签发认证的CA。每个实体都要有其他CA认证的拷贝,拷贝中包含了其所有者的公钥。鉴定过程详见图4-4。

相互鉴定的过程如下:

(1) 第一个实体(A)先建立跟第二个实体(B)的连接。为了进行鉴定,A先给B发送自己的认证。该认证告诉B到底A是什么样的人(A的身份)、A的公钥,还有给A签署认证的CA。

(2) 首先,B要确保A的认证是有效的,这就需要检查给A签署认证的CA的数字签名,以确保该CA的确签署过该认证并且该认证没有被修改过。

(3) 一旦B检验过A的认证,B就确信A的确是认证中标识的实体。检验方法是:B产生一个随机的无格式消息,把它发送给A,并要求A对该消息进行加密。

(4) A用自己的私钥将该消息加密,并把密文发还给B。B使用A的公钥对密文进行解密。如果解密结果与原先的随机消息一样,那么B就可以肯定A就是认证中标识的实体。B也就可以相信A的身份了。

(5) 将A跟B的位置倒转一下之后将刚才的操作再做一次。B把自己的认证发给A。A验证该认证并发送一个消息过去要求B加密。B加密该消息然后把它发还到A,A将收到的密文解密之后与原先的消息做比较,若符合,则A就可以相信B的身份了。

(6) 操作进行到这里,A跟B已经跟对方建立了连接,并且他们都已经确信自己知道对方的身份,也就是说他们相互相信对方。

图4-4 相互鉴定

3. 机密通信

GSI在默认情况下并不建立实体间的机密通信。在GSI中,一旦完成了相互鉴定,无需加密就可以开始通信,但在需要的时候可以重新建立机密通信。在默认的情况下,GSI提供通信的完整性支持。

4. 私钥保护

GSI软件期望用户的私钥被保存在用密码(也称通行短语)加密过的文件里,该文件须保存在电脑文件系统当中安全的地方。用户只有输入正确的密码才能解密该包含私钥的文件。

5. 授权许可跟单独标记

GSI授权能力是一种减少用户输入密码次数的方法。如果一个操作要求使用多个资源,或是代理用户在执行用户的功能(两者需要经过相互鉴定),这时就可以设置一个代理 (如图4-5所示),这样可以避免重复的输入密码。

图4-5  用户代理的创建

代理由一个新的认证(含有一个新的公钥)跟一个新的私钥组成。该认证包含认证所有者的身份,把这个身份稍作修改以标明它是个代理。这个认证是由代理创建者而不是CA签署的。认证中还包括一个计时器,时间用完以后就不再接受该代理。代理是有有效期的,当原认证失效后它就不可能存在了。

代理的私钥必须保密存放。由于代理的密钥有效期不是很长,因为通常的做法是在不加密的情况下直接存放在本地存储系统中,但也会为它设置文件许可以防止它会很轻易地被检查到。一旦一个代理被创建并被保存下来,用户就可以使用代理认证跟私钥进行相互鉴定,而不用输入密码。

使用代理进行相互鉴定的时候,鉴定过程发生了一些变化。远程用户可接收代理认证(由代理创建者签署的)跟代理创建者的认证。在相互鉴定的过程中,代理创建者的公钥(从它们的认证中获得)被用来验证代理认证的签名。CA的公钥接着被用来验证代理创建者的签名,这样就建立了一条从CA通过代理创建者到代理使用者的信任链,通过这条信任链,使用代理的程序在代理认证的有效期内就作为本地用户程序运行。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论
     
    同类图书推荐