1、1Information Security:Principles and Practice,2nd Edition美Mark Stamp著张 戈译第8章 授权28.1 引言本章内容传统的授权概念的扩展CAPTCHA(全自动公开人机分离图灵测试)技术防火墙技术入侵检测系统38.2 授权技术发展史简介早在计算技术的黑暗时代,授权体系就常常被认为是信息安全的核心了。如今,这看起来实在是有点荒诞不经了。虽然密码技术有很长的历史,也有很多传奇的故事,但是现代信息安全的其他领域相对而言则显得年轻得多。48.2.1 橘皮书TCSEC(The Trusted Computing System Evaluati
2、on Criteria),即可信计算机系统评估准则,又称“橘皮书”。橘皮书主要是针对系统评估和认证,并在某种程度上涉及多级安全问题。橘皮书的既定目标是要提供一套评价标准,用以评估“自动化数据处理系统类产品”所支持的安全性效能。a.为用户提供一套标准化度量,以据此来评价用于机密或者其他敏感信息安全处理的计算机系统可赖以信任的安全等级。b.为产品制造商提供一定的指导,这些指导围绕着构建新一代可以广泛应用的可信赖的商业产品,以满足敏感应用的可信任性需求。c.提供了一个基础,以便在可接受的规格说明中指定与安全相关的要求。简而言之,橘皮书意在提供一种评价现有产品安全性的途径,并对如何构建更加安全的产品提
3、供指导。实际的结果则是,橘皮书为一种认证机制提供了基础,而这种认证机制是用于对安全产品提供安全等级评定的。5橘皮书中建议对安全产品分为四个不同的层次,分别标识为从A到D,其中D表示最低,A表示最高。大部分的层次内部又分为不同的级别。D最小保护最小保护留给那些没有能力达到任何“真正”级别的不入流者的。C自主保护自主保护包含了两个级别,这两个级别都不要求对用户施加强制性的安全,但是它们提供了一些手段用于检测安全边界特别是,必须要具备审计能力。C1.自主安全保护自主安全保护这个级别的系统必须提供“能够针对单个人层面施加访问限制的可信赖的控制能力”。C2.受控访问保护受控访问保护这个级别的系统能够“比
4、C1级别中的系统施加更为细粒度的自主访问控制”。B强制保护强制保护用户不能够破坏安全性,即便他们想要尝试。B1.标签安全保护标签安全保护强制访问控制是基于指定标签的。B2.结构化保护结构化保护在B1级别之上,这个级别增加了隐藏通道保护和少量其他的技术特性。B3.安全域安全域在B2级别的要求之上,要求实现安全特性的代码必须是“能够防篡改,并且足够小以应对分析和测试”。A验证保护验证保护这个层次的要求与B3级别基本相同,除了必须能够有效地运用所谓的形式化方法来证明系统达到了其所声称的安全性。68.2.2 通用准则通用准则认证输出所谓评估保证级别(EAL,即Evaluation Assurance
5、Level),这些级别依序列划分为七个级别,分别以数字1到7表示,也即是从EAL1到EAL7,其中数字越大级别就越高。EAL1功能测试EAL2结构测试EAL3系统地测试和检查EAL4系统地设计、测试和复查EAL5半形式化地设计和测试EAL6半形式化地验证设计和测试EAL7形式化地验证设计和测试要想获得EAL7级认证,就必须要提供安全性的形式化证明,而且安全专家们要对产品进行仔细的分析。通常最广受欢迎的通用准则认证等级是EAL4级别,因为这一般是可以销售给政府的最低要求了。78.3 访问控制矩阵我们将主体定义为一个系统用户(并非必须是一个真正的用户,即人),将系统资源定义为一个客体。在授权领域,
6、有两个基本的构件,分别是访问控制列表(或简称为ACL)以及访问能力列表(或简称为C-list)。访问控制列表ACL和访问能力列表C-list都源自Lampson的访问控制矩阵,其中对每一个主体都有对应的一行,对每一个客体都有对应的一列。88.3.1访问控制列表和访问能力列表为了在授权操作上获得可接受的性能,访问控制矩阵可能会被分割为多个可管理的片段。有两种直观的方式可以用来分割访问控制矩阵。按列分割矩阵:将每一列与其相对应的客体存储在一起。然后,无论何时,只要一个客体被访问,就会引用与它相对应的访问控制矩阵的列,以查阅是否允许该访问操作。这些列我们称为访问控制列表ACL。例子:(Bob,),(
7、Alice,rw),(Sam,rw),(记账程序,rw)按行分割矩阵:其中将每一行与其相对应的主体存储在一起。这样,无论何时,只要一个主体尝试执行某个操作,就会引用与其相对应的访问控制矩阵的行,以查阅是否允许该访问操作。这种方案称为访问能力列表C-list。例子:(OS,rx),(记账程序,rx),(财务数据,r),(保险数据,rw),(工资数据,rw)9访问控制列表和访问能力列表看起来好像是等价的,因为它们只不过是对相同的信息提供了不同的存储方式而已。但是,在这两种方式之间,仍然存在着微妙的差别。108.3.2 混淆代理人考虑这样的一个系统,其包含两个资源对象:一个编译程序和一个命名为BIL
8、L的文件,该文件中包含了关键的财务信息,一个用户Alice。编译程序对任何文件都可以执行写操作,而Alice可以记触发编译程序运行并在编译程序写调试信息时指定相应的文件名。不过,不允许Alice对文件BILL执行写操作,因为她可能会在财务信息上捣鬼。假设Alice触发了编译程序,并想要将输出调试信息的文件命名为BILL。Alice没有权限访问文件BILL,所以这个指令应该失效。但是,编译程序,作为Alice任务的执行者,却拥有重写文件BILL的权限。如果编译程序以它自己的权限行事,那么Alice这个指令的副作用之一将是毁坏原来的文件BILL。118.4 多级安全模型多级安全性,或简称为MLS(
9、Multilevel Security)。在多级安全性中,主体是用户(通常来说,就是自然人),客体是要保护的数据(如文档资料)。而且,在将权限空间应用于主体的同时要将分级机制应用于客体。美国国防部,或简称DoD,使用了四层分级机制和权限空间,这些分级依序可以排列为TOP SECRET SECRET CONFIDENTIAL UNCLASSIFIED令O是一个客体,S是一个主体。那么O就会得到一个分级,而S则会拥有一个权限空间。我们将客体O的安全等级表示为L(O),而将主体S的安全等级也类似表示为L(S)。当主体和客体处于不同的安全等级,但又需要使用相同的系统资源时,就需要多级安全性。一个多级安
10、全系统的目标就是强制执行一种访问控制形式,在这种形式之下,通过限制主体的行为,使得主体只能够访问那些他们具有相应权限空间的客体对象。128.4.1 Bell-LaPadula模型Bell-LaPadula简称为BLP,它的命名自它的发明者Bell 和 LaPadula。BLP安全模型的目标是获得所有多级安全系统都必须要满足的关于机密性的最小需求。BLP模型包含如下两个陈述:简单安全条件:简单安全条件:主体S能够对客体O执行读操作,当且仅当L(O)L(S)时。*-特性特性(星特性星特性):主体S能够对客体O执行写操作,当且仅当L(S)L(O)时。简单安全条件可以被归纳为“不许向上读”,而星特性则
11、意味着“不许向下写”。于是,BLP模型有时候也会很简洁地表述为“不许向上读,不许向下写”。138.4.2 Biba模型与BLP安全模型针对的是机密性不同,Biba模型针对的是完整性。事实上,Biba模型本质上就是一个BLP模型的完整性版本。令I(O)表示客体O的完整性,I(S)表示主体S的完整性。Biba安全模型则由下面两个声明来定义:写访问规则:写访问规则:主体S能够对客体O执行写操作,当且仅当I(0)I(S)。Biba模型:模型:主体S能够对客体O执行读操作,当且仅当I(S)I(0)。Biba模型表明,我们对主体S的信任不应超过S所读取的客体的最低完整性级别。Biba模型实际上限制性很强,
12、因为它要求杜绝主体S查看一个较低完整性级别的客体。可以将Biba模型替换成下面的策略:低水印策略:低水印策略:如果主体S对客体O执行了读操作,那么I(S)=min(I(S),I(O)在低水印原则之下,主体S可以读取任何的内容,前提条件是,在访问一个较低完整性级别的客体之后,主体S的完整性级别也被降级。14 BLP安全模型 VS Biba安全模型BLP是用于机密性保护的,它蕴含了高水印原则,而Biba是用于完整性保护的,它蕴含了低水印原则。158.5 分隔项我们使用如下的标记方式来表示一个安全级别和与之相关联的分隔项或者分隔项组。SECURITY LEVEL COMPARTMENT分隔项主要是用
13、于强化必须知情原则,也就是说,只有当主体因工作需要必须要了解某个信息时,才会允许其访问该信息。例子:TOP SECRET CAT和TOP SECRET DOG就是不可比的168.6 隐藏通道隐藏通道(covert channel)是一个并非由系统设计者有意设计的通信路径。隐藏通道实际上不可能被消除,所以,重点就放在如何限制此类通道的能力上。多级安全系统的设计目标是限制通信的合法通道。但是,隐藏通道提供了另一种信息流动的方式。例子:Alice就能够(很缓慢地)将TOP SECRET安全级别的信息泄露给Bob。17隐藏通道的成立,需要有三个条件。首先,发送方和接收方必须有一个共享的资源。其次,发送
14、方必须能够以接收方能觉察到的方式改变共享资源的某些属性。最后,发送方和接收方必须能够实现其通信的同步。很显然,潜在的隐藏通道的确是无处不在。当然,只需要消除所有的共享资源和所有的通信,我们就能够消灭掉所有的隐藏通道。同时,在任何一个有用的系统中,想要消除掉所有的隐藏通道实际上是不可能的。例子:利用TCP协议序号字段的隐藏通道188.7 推理控制推理控制的目标就是防止此类泄露的发生,或者至少是将信息泄露最小化。实现推力控制的方案:其中一种技术是对查询集合大小的控制,基于这种控制,如果结果集合的大小太小,就不响应相应的查询。另一个技术被称为“N-k垄断”规则,这个规则要求:如果有k%或者更多的结果
15、是由N个或者更少的主体所垄断,就拒绝发布这些数据。还有一个方案就是信息随机化,即将少部分随机噪声添加到数据中。198.8 CAPTCHA“将计算机和人区别开来的完全自动化的公开的图灵测试”,或简称为CAPTCHA(completely automated public Turing test to tell computers and humans apart),就是这样的一个测试,其中人可以通过,但是计算机不能够以比单纯猜测更高的概率通过。既然CAPTCHA的设计目标就是防止非自然人访问资源对象,那么CAPTCHA也可以被视为一种访问控制的形式。对于CAPTCHA测试来说,具体的要求包括:它
16、必须使绝大部分的人都能够很容易通过,并且必须让计算机很难或者是不可能通过,即便是该计算机能够访问CAPTCHA软件。例子:20强大的CAPTCHA测试看起来往往更像是图8-8所示的样子,而不是图8-7所示的样子。对于一个基于单词的视觉CAPTCHA测试,我们假设Trudy知道可能出现的单词的集合,而且她也知道图像的常规格式,同时还知道可能使用的扭曲的类型。从Trudy的角度看,唯一不知道的就是随机数,该随机数用于选择单词或词组以及结果图像的扭曲方式。要破解CAPTCHA测试所必须要解决的计算问题可以被视为人工智能领域(或简称为AI领域)的难题。218.9 防火墙图8-9给出了一个网络防火墙,该
17、防火墙放置于内部网络和外部网络(即Internet)之间,其中的内部网络可能被视为相对比较安全,而外部网络则被认为不安全。防火墙的任务就是决定哪些访问可以进出内部网络。通过这种方式,防火墙就提供了对网络的访问控制。本书中,我们将采用如下的对防火墙进行分类的术语。包过滤防火墙是指在网络层执行操作的防火墙。基于状态检测的包过滤防火墙是指在传输层工作的防火墙。应用代理,顾名思义,就是工作在应用层的防火墙,其功能就像是一个代理服务器。228.9.1 包过滤防火墙包过滤防火墙,是在网络层上对数据包进行检查,这种类型的防火墙仅能根据在网络层可用的信息来进行数据包的过滤。这一层的信息包括源IP地址、目的IP
18、地址、源端口、目的端口以及TCP标志位(如SYN、ACK、RST等)。这类防火墙能够基于进或出来对数据包进行过滤,也就是说,能够对进入的数据包和发出的数据包分别指定不同的过滤规则。优势:缺点:23性能好。因为对数据包仅仅需要处理到网络层,而且也只有包头信息会被检查,所以整个操作就会很快。这类防火墙没有状态的概念,所以每一个数据包的处理都是独立的,与其他的数据包无关。包过滤防火墙对于应用数据是没有感知的,而这恰恰正是病毒和其他恶意软件驻留之所。包过滤防火墙使用访问控制列表(或简称为ACL)进行配置。表8-3所示的ACL的目的是限定来自Web响应的进入数据包,所以源端口为80。该ACL还允许所有向
19、外发出的Web流量,所以这里目标端口为80。其他所有的流量都被该ACL禁止。假设Trudy想要攻击一个网络,该网络为一个包过滤防火墙所保护。Trudy如何才能发起一个针对该防火墙的端口扫描呢?248.9.2 基于状态检测的包过滤防火墙基于状态检测的包过滤防火墙在普通包过滤防火墙中增加了状态管理。这就意味着防火墙能够跟踪TCP连接,而且也能够记忆UDP连接。从概念上讲,基于状态检测的包过滤防火墙工作在传输层,因为它维护了有关连接的信息。优点:缺点:25除了具备包过滤防火墙的所有特性之外,基于状态检测的包过滤防火墙的主要优点就是它还能够跟踪持续的连接。这可以防止许多的攻击。基于状态检测的包过滤防火
20、墙的不足是它不能够检查应用数据,另外,在同等条件下,这类防火墙要比包过滤防火墙更慢,因为它需要更多的处理操作。8.9.3 应用代理应用代理防火墙对进入的数据包自底向上一路分析直到应用层。然后,防火墙就可以代表你本人来确认数据包是否看起来是真实合理的,并且在数据包内的实际数据也是安全可靠的。优点:缺点:26对连接和应用数据有一个完全彻底的检视。所以,应用代理有能力在应用层过滤掉恶意数据,同时也能够在传输层过滤掉恶意的数据。应用代理的不足就是速度,或者更准确地说,这也是其工作方式产生的损失。应用代理还有一个有趣的特性,就是当数据包通过防火墙时,会毁弃进来的数据包并在同样的位置创建一个新的数据包。F
21、irewalk端口扫描原理278.9.4 个人防火墙个人防火墙用于保护一个单台的主机或者是一个小的网络,类似家庭网络这样的。之前所讨论的三种方法(包过滤、基于状态检测的包过滤或应用代理)中的任何一种都可以用于个人防火墙,但是通常来说这类防火墙相对而言都比较简单,因为其主要考虑性能优良和配置简单。288.9.5 深度防御深度防御示意图包过滤防火墙被置于DMZ区,用于防御对系统的常规性攻击。将一台应用代理防火墙部署在了内部网络和DMZ区之间。这为内部网络提供了最大可能性的防火墙保护措施。298.10 入侵检测系统入侵检测系统,简称为IDS(Intrusion Detection System),它
22、的目的是在攻击发生之前、期间和之后检测出攻击。IDS使用的基本方法就是查看“异常”活动。在过去,系统管理员会通过浏览日志文件来寻找异常活动的迹象自动化入侵检测实际上是人工日志文件分析的一种自然发展。一般来说,关于入侵检测,有两种不同的方法:基于特征的IDS,主要是基于明确的已知特征或者模式来检测攻击。这种技术类似于基于特征的病毒检测,我们将在第11章讨论有关病毒的主题。基于异常的IDS,主要是先尝试给出系统正常行为的一个基线定义,当系统行为与这个基线偏差过大时,由IDS提供相应的报警。30IDS通常有两种基本的架构:基于主机的IDS,将入侵检测的方法应用于发生在主机上的活动中。这样的系统对于在
23、主机上可见的攻击(如缓冲区溢出攻击或者权限提升类攻击)的检测有潜在的优势。但是,基于主机的入侵检测系统对于发生在网络上的活动几乎没有什么感知。基于网络的IDS,将入侵检测的方法应用在网络流量上。这类系统的构造主要用于检测类似拒绝服务攻击、端口扫描、涉及畸形数据包的探测等攻击方式。这些系统显然和防火墙的功能有所重叠。基于网络的入侵检测系统对于面向主机的攻击方式几乎没有直接的感知。将这些不同种类的IDS进行结合,形成各类复合型入侵检测系统也是可以的。318.10.1 基于特征的入侵检测系统失败的登录尝试也许就意味着一次口令破解攻击的发生,所以IDS可能会考虑将“在M秒钟之内发生N次登录尝试失败”定
24、义为攻击的一种标示或者特征。那么,任何时间,只要是在M秒钟之内发生了N次或更多次登录尝试失败,IDS系统就会发出一个告警,表示怀疑正在发生一次口令破解攻击。基于特征的检测技术的优势包括:简单、高效(只要特征的数量不是太多)以及优秀的检测已知攻击的能力。能够发出比较明确具体的报警,因为这些特征都是与一些特定模式的攻击相匹配。基于特征的检测技术的劣势包括:描述特征文件必须足够新。特征的数量可能会非常多从而带来性能的下降。只能检测出已知类型的攻击。即便是已知攻击的轻微变体也可能会被基于特征的入侵检测系统错过。328.10.2 基于异常的入侵检测系统基于异常的IDS要寻找不寻常的或者是奇怪的行为。这样
25、的方法本身就会面临几个主要的挑战。首先,我们必须要先确定对于系统来说正常的行为都包括什么,而当系统正常运行时这些行为一定会发生。其次,随着系统使用方法的变化和系统自身的演化发展,这些正常行为的定义必须能够相应做出调整。第三,还有涉及统计门限设定的难题。有一些统计识别技术用于区分正常行为和异常行为,包括贝叶斯分析、线性判别分析(LDA)、二次判别分析(QDA)、神经网络、隐马尔可夫模型(HMM)以及其他的一些方法和手段。例子:假设我们对如下三个命令的使用情况进行了监视:open,read,close正常情况下,Alice会使用如下的命令序列:open,read,close,open,open,r
26、ead,closeAlice的行为常态,即(open,read)、(read,close)、(close,open)和(open,open)Alice的异常行为:(read,open)和(close,read)33假设在一段时间之内,Alice访问过4个文件F0、F1、F2和F3,访问的频率分别是H0、H1、H2和H3,图8-16给出了观测到的Hi的值。现在假设在最近的一段时间中,Alice访问文件Fi的频率是Ai,其中i=0,1,2,3Alice这种访问文件的频率表示为:其中我们将S 0.1的情况定义为正常。在这个例子中,我们有下式:于是我们得出结论:Alice近来的文件访问情况是正常的!3
27、4Alice的文件访问频率会随着时间而变化根据以下公式来更新Alice的长期文件访问频率值Hi:我们是基于早先获得的访问频率值结合近期观测到的访问频率值,先形成一个动态的平均,再据此更新历史访问频率值其中早先的访问频率值占权重为80%,而当前访问频率值的权重为20%。得到更新后Alice的文件访问频率:35假设又经过一段时间之后,测得Alice的文件访问频率如图8-19所示。然后,我们根据图8-18和图8-19中的频率值以及公式(8.2),计算统计值S,得到:因为S=0.0488 0.1,我们再一次得出结论是Alice在正常使用系统。并且,我们还要利用公式(8.3)和表8-6及表8-7中的数据
28、来更新Alice的长期文件访问频率的均值。在这个例子中,我们得到的更新后的结果如图8-20所示。36要想使此类异常检测系统的设计更加鲁棒,我们也应该容纳和吸收变化因素。此外,我们肯定还会需要不止一次的统计数据来辅助检测。如果我们测量了N个不同的统计数据,分别为S1,S2,.SN,那么我们可能会需要根据一个类似下面的公式来进行合并处理:T=(S1+S2+S3+SN)/N进而再基于统计数据T来对正常情况和异常情况进行判定。异常检测涉及的另一个基本问题是异常行为引发的报警可能提供不了任何对系统管理员有用的具体信息。异常检测技术主要的潜在优势就是有可能检测出之前不知道的攻击。378.11 小结本章内容回顾授权技术的一些历史传统授权技术,即Lampson访问控制矩阵、访问控制列表以及访问能力列表混淆代理人有关多级安全性(MLS)和分隔项的一些安全议题隐藏通道和推理控制CAPTCHA防火墙入侵检测系统(IDS)38