760 likes | 914 Views
安全操作系统. 中国科学技术大学计算机系 陈香兰( 0512 - 87161312 ) xlanchen@ustc.edu.cn 助教:裴建国 Autumn 2008. 第三章 安全需求与安全策略. 在 项目启动阶段 进行安全设计,而不是在实现或维护阶段 后来加上的服务包和补丁会带来新的漏洞 容易陷入补丁、修复、再补丁的恶性循环 启动阶段目标: 定义系统的需求 确定系统的用户 起草一份针对系统的安全策略 这是这一阶段必不可少的部分,是构建一个可信系统的基础 安全需求 安全策略. 内容提要. 安全需求 安全策略 安全策略的分类 访问控制策略
E N D
安全操作系统 中国科学技术大学计算机系 陈香兰(0512-87161312) xlanchen@ustc.edu.cn 助教:裴建国 Autumn 2008
第三章 安全需求与安全策略 • 在项目启动阶段进行安全设计,而不是在实现或维护阶段 • 后来加上的服务包和补丁会带来新的漏洞 • 容易陷入补丁、修复、再补丁的恶性循环 • 启动阶段目标: • 定义系统的需求 • 确定系统的用户 • 起草一份针对系统的安全策略 • 这是这一阶段必不可少的部分,是构建一个可信系统的基础 • 安全需求安全策略
内容提要 • 安全需求 • 安全策略 • 安全策略的分类 • 访问控制策略 • 访问支持策略 • DTE策略
4.1 安全需求4.1.1 安全需求的定义 • 所谓安全需求,就是在设计一个安全系统时期望得到的安全保障。 • 不同的用户、不同的行业、不同的地点以及不同的社会制度有不同的安全需求 • 个人隐私、商业机密、军事安全、防假冒、防篡改、可审计等
举例:电子交易中的安全需求 • 目的:保证电子交易的安全 安全需求 • 保证交易双方身份的确定性需求 • 电子交易的双方,可能素昧平生、相隔千里 • 要能确认对方的身份 • 客户端是否是一个骗子?商店是否黑店? • 因此,电子交易的前提是能方便而可靠地确认对方身份 • 信息的完整性需求 • 输入时可能会发生意外差错,或者故意欺诈 • 传输时可能会发生信息丢失、重复或者发生次序差异 • 因此,电子交易的基础是保持交易双方的信息完整性
信息的不可伪造性需求 • 电子交易中,交易双方的文件必须是不可伪造的,否则将损害某一方的利益 • 这也是不可抵赖性的前提 • 信息的不可抵赖性需求 • 交易一旦达成,是不能被抵赖的,否则也将损害某一方的利益 • 交易过程中,各个环节都必须是不可抵赖的
一般化的安全需求 • 机密性需求,防止信息被泄漏给未授权的用户 • 自主安全策略、强制安全策略;需知原则 • 完整性需求,防止未授权用户对信息的修改 • 维护系统资源在一个有效的、预期的状态,防止资源被不正确、不适当的修改;维护系统不同部分的一致性;防止在涉及记账或审计的事件中“舞弊”行为的发生。 • 可记账性需求,防止用户对访问过某信息或执行过某一操作以否认 • 可用性需求,保证授权用户对系统信息的可访问性 • “授权用户的任何正确的输入,系统会有相应的正确的输出”
3.2 安全策略 • 安全策略:针对面临的威胁决定采用何种对策的方法 • 安全策略为针对威胁而选择和实行对策提供了框架
3.1.1 定义“安全系统”定义 • 在计算机安全领域内,一个系统是“安全系统”是指该系统达到了当初设计时所制定的安全策略的要求。 • 在有限状态自动机下, • 安全策略:是“这样一种状态,它将系统状态分为已授权/安全状态和未授权/非安全的状态” • 一个“安全系统”:是“一个如果起始状态为授权状态,其后也不会进入未授权状态的系统” 安全 不安全
策略语言 • 策略语言:用来表达安全性或完整性策略的语言 • 策略与实现无关,它描述对系统中实体或行为的约束 • 高级策略语言 • 使用抽象的方法表达对于实体的约束 • 精确 • 低级策略语言 • 根据输入或者调用选项来表达对系统中的程序约束
高级策略语言 • 设:系统连接到Internet上。Web浏览器从远程站点下载程序并在本地执行。 • Pandey和Hashii:针对Java程序的策略约束语言(Policy constraint language) • 实体:类或方法类:一些被实施特定的访问约束的对象的集合方法:调用一个操作的方法的集合 • 实例化:主体s创建了某个类c的一个实例,“s -| c”调用:主体s1执行了另一个主体s2,“s1 |→ s2”
访问约束deny(s op x) when bop为“-|”或“| →”;x为另一个主体或类 条件b为真时,主体s不能对x执行操作op省略x,表示禁止s对所有实体进行操作
继承:用来将各个访问约束关联起来。 • 例:deny(s -| c1.f) when b1deny(s -| c2.f) when b2 • 若c1是c2的子类,则正确的约束为:deny(s -| c1.f) when b1∨b2
例,策略规定下载的程序不能访问Unix的password文件。程序中访问本地文件的类和方法如下:例,策略规定下载的程序不能访问Unix的password文件。程序中访问本地文件的类和方法如下: class File { public file(String name); public String getfilename(); public char read(); …… • 则约束规则如下: deny(|→file.read) when (file.getfilename()==“/etc/passwd”)
例:类Socket定义为网络套接字,方法Network.numconns定义为当前活动的网络连接数例:类Socket定义为网络套接字,方法Network.numconns定义为当前活动的网络连接数 • 下面的访问约束禁止在达到100个连接数后再建立任何新的连接 deny(|→Socket) when (Network.numconns >=100) • 这种策略语言忽略了策略的具体实现,因此是高级策略语言
DTEL语言 • Domain Type Enforcement Language • Boebert和Kain • 将类型限制为两种:数据和指令 • 根据语言的类型,在实现一级上进行构造来表达约束 • 成为防火墙系统以及其他安全系统的组成要素 • 该语言将低级语言和高级语言的元素结合起来,抽象地对配置加以描述,因此也属于高级策略语言
DTEL将每个客体与一个type关联,而每个主体与一个domain相关连DTEL将每个客体与一个type关联,而每个主体与一个domain相关连 • 限制domain成员对某type的客体所能执行的操作 • DTEL将Unix系统分为4个相互隔离的主体域 • user_d:普通用户域 • admin_d:管理员用户域 • login_d:兼容DTE认证过程的域 • daemon_d:系统后台守护进程的域
系统从daemon_d域开始运行(init进程) • 当用户试图登录系统,init进程就创建一个login_d域的login进程 • login进程控制user_d和admin_d • DTE提出了如下5个客体型 • sysbin_t:可执行文件 • readable_t:可读文件 • writeable_t:可写文件 • dte_t:DTE数据 • generic_t:由用户进程产生的数据
当init进程开始时,首先在daemon_d域中启动 • 对writeable_t中的任何客体,能创建c、读取r、写入w和搜索d • 对sysbin_t中的任何客体,能够读取r、搜索d和执行x • 对generic_t,readable_t,dte_t中的任何客体,能够读取和搜索 • 当init进程调用登录程序时,登录程序自动转换到login_d域中 • 表示为: domain daemon_d = (/sbin/init), (crwd->writable_t), (rxd-> sysbin_t), (rd->generic_t, dte_t, readable_t), (auto->login_d); 与写权限分离 若一个daemon_d的主体被攻破??
另外: domain admin_d = (/usr/bin/sh, /usr/bin/csh, /usr/bin/ksh), (crwxd->generic_t), (crwxd->readable_t, writable_t, dte_t, sysbin_t), (sigtstp->daemon_d); • 还有 domain user_d = (/usr/bin/sh, /usr/bin/csh, /usr/bin/ksh), (crwxd->generic_t), (rxd->sysbin_t), (crwd->writable_t), (rd->readable_t, dte_t); 若用户进程试图改变系统二进制文件?? 注意:用户进程不能跳出用户域。
以及 domain login_d = (/usr/bin/login), (crwd->writable_t), (rd->readable_t, generic_t, dte_t), setauth, (exec->user_d, admin_d);
起初,系统始于daemon_d域 initial_domain = daemon_d; • 用一系列的assign语句来设置客体的初始型,如 assign –r generic_t /; assign –r writable_t /usr/var, /dev, /tmp; assign –r readable_t /etc; assign –r -s dte_t /dte; assign –r -s sysbin_t /sbin, /bin, /usr/bin, /usr/sbin 有 序 -r,表示该型被递归的应用 -s,表示该型与名称绑定。(删除后重建,同名同型)
添加对用户更改系统日志的限制 • 为日志文件定义一个新的型log_t,只有daemon_d的主体和新加的log_d的主体才能更改系统日志 domain daemon_d = (/sbin/init), (crwd->writable_t), (rxd->readable_t), (rd->generic_t, dte_t, sysbin_t), (auto->login_d, log_d); domain log_d = (/usr/sbin/syslogd), (crwd->log_t), (rwd->writable_t), (rd->generic_t, readable_t); assign -r log_t /usr/var/log; assign writable_t /usr/var/log/wtmp, /usr/var/log/utmp; syslogd是否能访问系统的可执行文件? 若用户试图操作日志客体?
低级策略语言 • 低级策略语言只是一系列命令的输入或参数设置,用来设置或检查系统中的约束 • 例如: • 基于UNIX的窗口系统X11为控制台访问提供一种语言。该语言由一条命令xhost和指导此命令的语法组成,可以根据主机名(IP地址)控制访问。以下命令xhost +groucho –chico对系统进行设定,允许主机groucho连接控制台,但禁止来自主机chico的连接
又如: • 文件系统的扫描程序采用规定的策略检查文件系统的一致性。该策略由按需要设定的数据库构成。每个扫描程序使用自己的小型语言来描述需要的设定。 • 扫描程序tripwire假设了一种一致性策略。它记录初始状态。在以后运行时,将报告设置发生改变的文件。 • 策略由两个文件:tw.config和database组成。前者包括待检查属性的描述;后者为上次运行时属性的值。 • 数据库可读,但难以编辑。
安全策略的分类 • 基于应用场合的分类 • 军事安全策略/政府安全策略 • 以提供信息机密性为主要目的 • 也涉及完整性、可记账性以及可用性 • 商业安全策略 • 以提供完整性为主要目的 • 面向事务 • 也要涉及机密性、可记账性以及可用性
Lipner指出了商业安全策略中需注意的五个方面 • 用户不能写自己的程序 • 程序员可以在非产品的系统中开发和测试程序 • 必须要有一个特殊处理 • 上述特殊处理必须被控制和审计 • 管理员和审计员能访问系统状态和系统日志 • 体现了职责分离、功能分离、审计三个原则
基于安全策略内涵的分类 • 内涵如下: • 信息的机密性、完整性、可用性 • 谁可以以何种方式去访问什么样的信息 • 根据什么来制定访问策略:用户ID或其他 • 最大化共享 or 最小特权 • 任务分离? • 集中管理 or 分散管理 • 等等
访问控制策略:针对前两个方面分类 • 反映系统的机密性和完整性要求 • 确立相应的访问规则以控制对系统资源的访问 • 访问支持策略:针对后两个方面分类 • 反映系统的可记账性要求和可用性要求 • 支持访问控制策略
3.3 访问控制策略 • 访问控制属性 • 主体:系统内行为的发起者。通常是用户发起的进程 • 普通用户:一个获得授权可以访问系统资源的自然人。授权包括:对信息的读/写/删除/追加/执行以及授予/撤销另外一个用户对信息的访问权限等等。 • 信息的拥有者:该用户拥有对此信息的完全处理权限(如上),除非,该信息被系统另外加以访问控制。 • 系统管理员:为使系统能正常云展,而对系统的运行进行管理的用户
客体:系统内所有主体行为的直接承担者。 • 一般客体:在系统内以客观、具体的形式存在的信息实体,如文件、目录等 • 设备客体:指系统内的设备,如软盘、打印机等 • 特殊客体:某些主体
系统必须选择下列三类相关属性进行访问控制策略。系统必须选择下列三类相关属性进行访问控制策略。 • 主体属性 • 客体属性 • 系统环境(上下文) • 具体而言,涉及如下五个主要方面:
1)用户特征,即主体属性。 • 这是系统用来决定访问控制的最常用的因素。 • 一个用户的任何属性均可作为访问控制的决策点,如年龄、性别、居住地、出生日期等。 • 常用的有: • 用户ID/组ID;例如用于Unix按位的访问控制、常规自主访问控制 • 用户访问许可级别;例如用于强制访问控制。 • “需知”原则; • 角色; • 权能表
2)客体特征,即客体属性 • 也是访问控制策略的很重要的一部分。 • 一般涉及如下几个方面: • 敏感性标签;(用于强制访问控制) • TCSEC中将信息的安全等级分为:Unclassified(无等级信息)Confidential(机密信息)Secret(秘密信息)Top secret(绝密信息) • 还模拟人力资源系统的分类,形成如下范畴: 如参谋部;作战部;后勤部。 • 因此,一个敏感性标签由2部分组成: 信息的敏感性级别和范畴
访问控制表 (用于自主访问控制) • 表示系统中哪些用户可以对此信息进行何种访问。 • 由信息的拥有者加以管理。
3)外部状态 • 某些策略是基于系统主客体属性之外的某些状态来制定的,例如地点,时间,状态 • 另外,前述大多属性为静态信息,也有些访问策略可能是基于动态信息的 • 地点: • 例如来自总经理办公室的人员才能被允许看某些文件 • 时间: • 对系统内信息的访问可能会随着时间的变化而变化。 • 例如,某报社内第二天将要出版的新闻稿:在第二天早上9点前后的敏感性就不一样 • 状态: • 例如问一个人问题,他高兴与否,结果可能不一样…
4)数据内容/上下文属性 • 某些可能基于数据的值。例如Sunny可能不被允许看到月薪超过15K¥的员工的文件。 • 某些可能基于上下文。 • 这种访问机制具有较大的动态性,适用于数据库之类的应用 5)其他属性
自主访问控制策略 • “自主”:允许系统中信息的拥有者按照自己的意愿去指定谁可以以何种访问模式去访问该客体。 • 自主访问控制策略通常 • 基于系统内用户(如用户ID),加上 • 对用户的访问授权(如权能表),或者 • 客体的访问属性(如访问控制表ACL) 来决定该用户是否有某权限访问该客体 • 或者基于要访问信息的内容 • 或者基于用户当时所处的角色 • 等等
自主访问控制机制:通常在系统中实现。 • 典型方式是标明计算机系统内的用户和由此用户发起的进程对系统内给定信息的访问许可。例如: • 基于位掩码的保护方式,Unix • 基于访问控制表ACL的保护方式 • 基于文件密码的保护方式
对于访问申请,“引用监视器”根据系统自主访问控制策略来检查主体、客体及其相应的属性,或被用来实现自主访问控制的其他属性对于访问申请,“引用监视器”根据系统自主访问控制策略来检查主体、客体及其相应的属性,或被用来实现自主访问控制的其他属性 • 访问属性 VS 授权:允许 or 不允许
自主访问控制的优点: • 访问模式设定灵活。 • 读;写;执行;“每隔一周的周五可以读”;“读完文件x后才能读此文件”等等 • 具有较好的适应性,常用与商用OS和应用中 • 缺点: • 不能防范木马和某些形式的恶意代码。 • 思考:一个用户的经典程序中隐藏了木马,将会如何?? 自主访问控制,往往需要和强制访问控制结合起来
强制访问控制策略 • 经典场景:军事机密及其管理。 • 无密级;保密;机密;绝密。 • 强制访问控制,基于上述原型而来。 • 主体/客体:贴上标签 • 引用监视器:比较标签,决定是否许可 • 效果:保证完整性和机密性
强制访问控制的访问模式比较简单:读 写 • 在不同的需求下,访问控制策略的形式可能不同 • 例如,在机密性要求下:低读;高写; • 而在完整性要求下:高读
最显著的特征:全局性和永久性 • 无论何时何地,主体和客体的标签是不会改变的。 • 全局性:对特定的信息,从任何地方访问,它的敏感级别相同 • 永久性:对特定的信息,在任何时间访问,它的敏感级别相同 • 上述特征在多级安全体系中称为“宁静性原则”(tranquility) • 一旦不满足该原则,则无法从根本上防备木马和恶意代码
偏序关系 • 对于一个具体的访问控制策略,若具有全局性和永久性,则其标签集合在数学上必会形成“偏序关系”(partial order) • 支配关系:“≥” • 满足偏序关系的两个元素x和y,只可能存在3种关系 • x≥y;或者y≥x;或者无关:即x和y不可比 • 偏序关系的特征 • 反自身性:x ≥x • 反对称性:若x ≥y 并且 y ≥x,则x=y • 传递性:若x ≥y并且y ≥z,则x ≥z
为保持全局性和永久性,标签的选择不能随便。为保持全局性和永久性,标签的选择不能随便。 • 举例, • 设主/客体的访问标签:敏感 or 公开且,除周末外,系统内“公开”的主体可能访问“公开”的客体。破坏了自反性;永久性。 • 又如,允许“公开”的主体可以在周末访问“敏感”的客体。则“敏感”在周末前支配“公开”,而周末则反过来了。但由于“敏感”不等于“公开”,因此违反了反对称性,破坏了永久性。 • 再如,引入“私有”标签。如果“私有”主体可以访问“敏感”客体,同时“敏感”主体可以访问“公开”客体,但若系统内存在某些“公开”客体,不能被“私有”主体访问,则违反了传递性,从而破坏了全局性。
因此,主客体访问标签不满足偏序关系的访问控制策略,不能称为强制访问控制策略,只能称之为自主访问控制策略。因此,主客体访问标签不满足偏序关系的访问控制策略,不能称为强制访问控制策略,只能称之为自主访问控制策略。 • 即,要么“强制”,要么“自主”,没有相交的部分 • 两者最大的区别在于,是否能够防备木马和恶意程序的攻击 • 若一个系统内有2个或以上的强制访问控制策略,则每个都必须分别满足偏序关系。 • 例如机密性标签;完整性标签。
3.4 访问支持策略 • 访问支持策略,为保障访问控制策略的正确实施提供可靠的“支持” • 将系统中的用户与访问控制策略中的主体关联起来,即身份的合法性认证 • 在用户进入系统后,执行与其身份不相称的操作或非法访问了它无权访问的文件,应“记录在案” • 等等
TCSEC中,将访问支持策略分为6类 • Identification & authentication,标识与鉴别 • Accountability,可记账性 • Assurance,确切保证 • Continuous protection,连续保护 • Object reuse,客体重用 • Covert channels,隐通道处理