COM(4)

4.1 可重用性:包容和聚合
4.1.1 包容和聚合
4.1.2 包容实现
4.1.3 聚合实现
4.1.4 聚合例子程序
4.2 进程透明性
4.2.1 列集
4.2.2 自定义列集
4.2.3 标准列集
4.2.4 标准列集的实现
4.2.5 进程外组件例子程序
4.3 安全性
4.3.1 Windows NT安全机制
4.3.2 激活安全性
4.3.3 调用安全性
4.4 多线程特性
4.4.1 Win32线程和COM线程
4.4.2 列集和同步
4.4.3 套间线程
4.4.4 自由线程
4.4.5 进程内组件的线程模型



为了使聚合能顺利实现,内部对象必须能够适应在被聚合的情况下进行特殊的处理,尤其是接口的QueryInterface成员函数,在被聚合的情况下,当客户请求它所不支持的接口或者请求IUnknown接口时,它必须把控制交给外部对象,由外部对象决定客户程序的请求结果。
聚合涉及到聚合对象和被聚合对象双方的协作,并不是每个对象都能够支持聚合特性,但聚合体现了组件软件真正意义上的重用。而包容的重用性完成建立在客户/服务器模型相对性的基础上,实际上也就是客户程序和组件程序的嵌套关系。这是包容和聚合本质的不同。


进程外组件对象与客户程序之间的通信过程。客户程序创建了组件对象之后,它通过接口指针调用对象的成员函数,但实际上,接口指针所指的是本进程中的代理对象(proxy),客户调用的是代理对象的成员函数,由代理对象通过跨进程的调用方法(LPC/RPC)与对象进程中的存根代码(stub)通信,存根代码再调用组件对象成员函数。函数返回的顺序刚好相反,由组件对象,经过存根代码和代理对象,最后返回到客户程序。在这个交互过程中,我们可以看到,客户仍然在调用同一进程内的组件对象,而组件对象也被同一进程内的客户调用,从客户和组件对象两个角度丝毫感觉不到进程的边界。所有跨进程的操作完全由代理对象和存根代码包揽了。


COM作为组件模型其焦点集中在程序之间如何建立一种标准的通信机制,安全性并不是其主要目的。要建立一种适合各种操作系统的安全性机制是很难的,其至是不可能的,所以,COM规范也只是提供了安全性机制框架。在Windows平台上实现的COM版本基本上基于Windows NT的鉴定服务(authentication service)机制。


COM提供了两种类型的安全性:
第一种可称为激活安全性(activation security),激活安全性不同于激发安全性(launch security),它包括COM对象如何被安全地启动、客户如何与对象建立连接,以及如何保护公共的资源,比如全局运行对象表、系统注册表等;
第二种类型被称为调用安全性(call security),这是指在已经建立连接的基础上,客户调用组件程序的安全保护问题。




Windows NT安全机制
Windows NT作为网络操作系统,具有完全的保护机制,系统的所有资源都是受保护的,这些资源包括文件、外设、进程、线程,其至同步对象,共享内存,注册表中的键等等。所谓受保护即指这些资源与特定的访问权限联系在一起,当这些资源被访问时,操作系统要对权限进行验证,以便允许访问或者禁止访问。
1.域、用户和用户组
NT域是指一组网络连接起来的机器的管理单位,用户以及资源都与域联系在一起。每个域包含一个域控制器(也可以有一个或多个备份域控制器),域控制器用于保存用户信息和鉴定用户访问资源的合法性。用户是资源访问的单个实体,用户可以按组方式进行管理,形成用户组。资源的权限设置是指允许或禁止访问资源的用户,可以包括多个用户,甚至用户组。大的组织中可以建立多个域,域与域之间可以建立信任关系,一个域中的资源可以被它信任域中的用户访问。用户组可以由不同域的用户组成。
2. 鉴定
用户为了访问一个被保护的资源,他需要提供三条信息:域名、用户名以及口令,然后操作系统对用户身份进行验证,这个过程被称为鉴定。
3. 安全标识符
域中每一个用户在域控制器的系统数据库中都有一个帐户,帐户包括口令、用户所属的用户组、用户的配置信息、用户的登录许可等等,帐户同时还包括一个安全标识符(SID,security identifier),SID唯一标识了一个用户,通过SID也可以唯一找到系统数据库中用户的帐户信息。用户组也有SID。
4. 安全描述符
安全描述符与某个特定的资源联系在一起,它描述了资源的安全特性。安全描述符包括以下一些信息:(1)所有者,资源的所有者信息。(2)所有者所属的用户组。(3)DACL,指出了允许和拒绝某用户或用户组的存取控制列表,当一个进程需要访问安全对象时,系统就会检查DACL来决定进程的访问权,如果一个对象没有DACL,那么就是说这个对象是任何人都可以拥有完全的访问权限。(4)SACL,指出了在该对象上的一组存取方式(如读、写、运行等 )的存取控制权限细节列表。
5.访问控制列表(ACL)
ACL包括0个或多个访问控制项(ACE,access control entry),每个控制项包括:控制项类型(允许或者禁止)、访问权限(读、写、读写)、用户或用户组的SID。
7. NT安全服务结构
Windows NT的安全机制分两层,底层是安全服务供应者(security service provider),上层是供应者的客户部分,中间通过安全服务供应者接口(security service provider interface)进行通信,NT缺省提供的安全供应者是NTLM安全服务供应者,或简称NTLMSSP。当客户程序提供了鉴定使用的域名、用户名和口令后,由于安全性的考虑,实际上这些信息并没有在网络上传播 。它通过询问/应答(challenge/response)机制鉴定客户程序所提供信息的正确性。
8. 鉴定RPC(也可称为保护RPC)
由于RPC可在各种网络协议上使用,大多数协议(包括TCP/IP)本身并没有提供安全性,因此,在进行分布式程序通信时,有必要在RPC层次上进行鉴定,以保护RPC调用。分5个鉴定层次:一,无鉴定操作即正常的RPC调用;二,连接时进行鉴定;三,每一个接口调用时进行鉴定;三点五,每个个数据包进行鉴定;四,对每个请求进行鉴定,并对接收到的数据包进行完整性检验;五,进行所有的鉴定并对数据包加密。
无、连接、调用、数据包、数据包完整性、数据包保密性。


SCM是COM库中负责找到并启动组件程序的组件。当客户向COM库请求创建新的COM对象或者连接已经运行的组件对象时,负责处理请求的正是SCM。因此,激活安全性也通过SCM实现。在Windows NT平台下,SCM是由RPCSS服务实现的。
激活安全性分为两种情况:静态安全性和动态安全性。
静态安全性包含操作系统一级的缺省安全特性:HKEY_LOCAL_MACHINE\Software\Microsoft\OLE,特定组件程序的安全特性:HKEY_LOCAL_MACHINE\Software\Classes\AppID\{AppID_value}。
如果进程调用了CoInitializaSecurity函数,则进程不再使用注册表的静态调置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值