com原理与运用 chapter 4 com特性

chapter 4 com特性

4.3 安全性
1,
要建立一种适合各种操作系统的安全机制是很难的,甚至是不可能的,所以com规范只是提供了安全机制框架。window平台上实现的com版本基本上基于windows nt的鉴定服务(authentication service)机制。激活安全性(activation secuity),它包括com对象如何被安全的启动,客户如何与对象建立连接,如何保护好公共的资源,如全局对象表,系统注册表等。调用安全性(call secuity),这是指在已建立连接的基础上,客户调用组件程序的安全保护问题。

2,windows nt安全机制
a,windows nt作为网络操作系统,具有完全的保护机制,系统的所有资源都是受保护的,这些资源包括文件,外设,进程,线程,甚至同步对象,共享内存,注册表的键等等(可以从这些对象的操作的api看出来,都会有一个带安全属性的参数),所谓受保护即是指这些资源与特定的访问权限联系在一起,当这些资源被访问时,操作系统要对权限进行验证,以便允许访问或者禁止访问。
b,nt域是指一组网络连接起来的机器的管理单位,因此域指的一组计算机资源。域控制器用于保存用户信息和鉴定用户访问资源的合法性,因此域控制器的作用就是用来管理这一组计算机资源(即域)。用户是资源(即域)访问的单个实体,用户可以按照组来进行管理,形成了用户组。
c,鉴定
用户为了访问一个被保护的资源,需要提供域名,用户名,口令,然后操作系统对用户身份进行验证,这个过程叫做鉴定。
d,域中每一个用户在域控制器的系统数据库中都有一个账户,账户包括口令,用户所属的组,用户的配置信息,用户登陆许可(权限)等等,账户同时还包括了一个安全标识符(SID,security identifier),sid唯一标识了一个用户,通过sid也可以找到系统数据库中的用户帐户信息。用户组也有sid。
e,安全描述符
安全描述符与某个特定的资源联系在一起,它描述了资源的安全特性。安全描述符包括资源的所有者,所有者所属的用户组,dacl(discreionary accesss controllist,任意访问控制列表,被所有者或者管理员设置的访问权限列表),sacl(system access control list,系统访问控制列表,由系统设置的访问权限列表,在系统操作资源时使用)。
f,acl包括0个或者多个访问控制项(ace, access control entry),每个控制项包括控制项类型(允许或者禁止),访问权限(读,写,读写),用户或用户组的sid。
g,安全访问令牌(security access token)
资源可以分为两种,一种是静态的,如文件,目录等,对静态资源可通过安全描述符和访问控制列表来控制他们的安全。另一种是动态的,如线程,进程等,动态资源可以通过安全访问令牌来控制他们的安全。安全访问令牌包括用户sid,用户所属组的sid,新创建对象缺省acl,新创建对象的缺省所有者的sid,以及其他一些专用信息。访问令牌是动态资源的安全环境,比如进程或者线程的执行过程中,我们可以切换其安全环境来访问令牌,让他模仿其他的安全环境访问某些资源,访问完毕后,再把安全环境切换回来。这种机制对于com组件程序模仿客户程序访问系统资源特别有意义。
h,nt安全架构
windows nt安全机制分两层,底层是安全供应者(security provider),上层是供应者的客户部分。nt 缺省的提供安全供应这是ntlm(NT LAN Manager)的安全供应者,称为ntlmsp。当客户程序提供鉴定使用的域名,用户名和口令后,由于安全性的考虑,实际上这些信息并没有在网上传播,它通过询问/应答(challege/response)机制鉴定客户程序所提供信息的正确性。
i,鉴定rpc(保护rpc)
由于rpc在各种网络协议上都可以使用,但是大多数协议没有提供安全性(包括tcp/ip),因此分布式程序通讯时,有必要在rpc层次上进行鉴定,以保护rpc调用。分5个鉴定层次,1,无鉴定的rpc调用 2,连接时进行鉴定 3,每一个接口调用时进行鉴定 4,对每个请求进行鉴定,并对接收到的数据包进行完整性检验 5,进行所有的鉴定并对数据包加密。

3,激活安全性
scm是com库中负责找到并启动组件程序的组件。当客户向com库请求创建新的com对象或者连接已经运行的组件对象时,负责处理请求的正是scm,因此,激活安全性可以通过scm实现。激活安全性是进程一级的安全性,即进程中所有对象和所有对象的成员函数共享的安全性,分为静态安全性和动态安全性。
a,静态安全性
安全性纪录在注册表中,通过注册表实现的。
设置操作系统一级的缺省安全特性hkey_local_machine/software/microsoft/ole/xxx
设置特定组件的安全特性hkey_classes_root/clsid/{clsid}/AppID如果appid的值为appid_value,那么更详细的信息可以到hkey_local_machine/software/classes/appid/{appid_value}下查找
当需要进行安全性检查时,com首先找到对象的appid,如果找到了,则使用appid指定的安全特性,否则使用系统提供的缺省安全特性,可以利用dcomcnfg.exe来配置这些安全特性,dcomcnfg.exe既可以设置系统安全特性,也可以设置对象安全特性。
b,动态安全性
安全性是在程序运行过程中设置的。
如果进程调用了CoInintiallizeSecurity,则进程不再使用注册表的静态设置。

4,调用安全特性
客户与组件的通讯过程中,如果不指定特定的安全保护,则com使用进程一级的安全特性,即客户与组件连接时指定的安全特性,然而客户和组件也可以针对特定的接口指定专门的安全特性。
a,客户指定调用安全特性
客户通过代理对象间接调用组件程序,因此,客户在调用代理对象前控制接口调用的安全性。利用IClientSecurity来实现。
b,组件指定调用安全特性
组件的某个接口被调用时,也可以进行安全控制,通过IServerSecurity来实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值