资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,4,章 通用操作系统保护,本章要点,通用操作系统的保护特性:存储保护、文件保护和执行环境保护,对象访问控制,用户鉴别,操作系统有两个目标:,控制共享访问,、,实现允许这种访问的接口,。在这种目标下,操作系统功能可以分为以下几类:,(1),访问控制,(2),认证与信任管理,(3),管理信息流,(4),审计和完整性保护,所有这些活动都与安全有关。,对于一个支持多道程序的操作系统,操作系统设计者提供了包括存储保护、文件保护、对象的一般访问控制和鉴别等方法,来保护计算免受其他用户无意或恶意的干扰。,本章仅以两类操作系统为例:,Microsoft Windows NT,,,2000,,,XP,,,2003 Server,,和,Vista,;,Unix,,,Linux,,和它们的变化版本。,4.1,保护对象和保护方法,4.1.1,历史回顾,第一代操作系统是一种简单的设备,执行器,(executive),,其设计目的是协助各位程序员完成各自的工作,以及平稳地实现用户之间的切换,。,执行器要求每个时刻只有一个程序员执行程序。,多道程序操作系统也称为,监控器,(monitor),,用以监督每个程序的执行。监控器充当了主动的角色,只要用户的请求与系统要求一致,监控器就主动控制计算机系统把资源分配给用户。,4.1.2,保护对象,事实上,多道程序的出现意味着需要保护计算机系统的几个方面:,(1),内存,(2),可共享的,I/O,设备,比如磁盘,(3),可连续复用的,I/O,设备,例如打印机和磁带驱动器,(4),网络,(5),可共享的程序或子程序,(6),可共享的数据,4.1.3,操作系统的安全方法,最基本的保护是,分离控制,(separation),:保持一个用户的对象独立于其他用户。在操作系统中分离控制主要有以下,4,种方式:,(1),物理分离,:指不同的进程使用不同的物理对象。,(2),时间分离,:指有着不同安全要求的进程,在不同时间执行。,(3),逻辑分离,:使程序不能访问许可域之外的对象,这样用户感觉好象在没有其他进程的情况下执行自己的进程。,(4),密码分离,:进程对其数据和计算加密,使其他进程无法理解。,4.1.3,操作系统的安全方法,(,续,),操作系统也提供了一些共享的保护路线:,(1),不保护,:当敏感进程在不同时间运行时是恰当的。,(2),隔离,:当操作系统提供隔离时,各个进程并发运行,相互之间感觉不到其他进程的存在。,(3),共享一切或不共享,:对象所有者宣布对象是公有或私有。,(4),访问限制共享,:通过访问限制保护,操作系统检查用户对象的访问是否是允许的。操作系统充当了用户和被访问对象之间的守卫,确保只能进行已授权的访问。,(5),访问权能共享,:这种保护形式扩展了访问限制共享的概念,它允许动态产生对对象的共享权限。,(6),对象的限制使用,:这种保护形式不仅限制了对对象的访问,并同时限制了获得访问后的使用情况。,4.1.3,操作系统的安全方法,(,续,),可以在各种级别实现访问控制:比特、字节、记录、文件或卷。我们关心,控制粒度,(granularity),。被控制对象的粒度越大,这种控制越容易实现。然而,这样一来操作系统给用户的访问权限就将多于用户本身的需求。,4.2,内存及地址保护,4.2.1,界地址,界地址,(fence),是,一个预定义的内存地址,设置了用户的内存区界限。,图,4.1,固定界地址,4.2.1,界地址,(,续,),另一种方法是使用硬件寄存器,称为,界地址寄存器,(fence register),,用于存放操作系统的尾址。,图,4.2,可变界地址寄存器,#,界地址,寄存器只是单向保护操作系统。,4.2.2,重定位,重定位,(relocation),是假定程序地址开始于地址,0,,然后改变所有地址以反映程序在内存中的实际地址。,重定位因子,(relocation factor),是分配给程序的内存首地址。界地址寄存器可以是硬件重定位设备。界地址寄存器的内容加上程序的相对地址,不但可以重定位,而且可以控制用户访问操作系统空间。,4.2.3,基址,/,范围寄存器,可变界地址寄存器通常称为,基地址寄存器,(base register),。,范围寄存器,(bounds register),用于存放上界地址限制。,图,4.3,基址,/,范围寄存器对,#,改变两个寄存器的地址称为上下文转换,(context switch),4.2.3,基址,/,范围寄存器,(,续,),用户可能不慎将数据存储在指令存储区中。可以使用两对寄存器来解决这一问题,一对用于界定程序指令,另一对用于界定存储数据空间。这似乎鼓励使用更多对寄存器对,但两对已经是计算机设计的界限。超过这一数量每条代码需要明确向操作系统指明寄存器对。,图,4.4,两对基址,/,范围寄存器,4.2.4,标记结构,使用基址,/,范围寄存器保护只能提供全部数据的保护,而有时用户只希望保护部分数据。此外,有时还希望实现对数据段和程序段的共享。一种解决办法是使用,标记,结构,(tagged architecture),,机器内存的每个字节都有一个或几个额外的比特用来表示该单元访问权限,这些访问比特由操作系统特权指令设置,每次指令访问某存储区时,都对这些比特进行权限检查。,4.2.4,标记结构,(,续,),图,4.5,标记结构示例,4.2.4,标记结构,(,续,),少数操作系统采用了这种保护技术。,Burroughs B6500-7500,系统用了,3,个比特标记区分数据字,(3,种类型,),、说明符,(,指针,),和控制字,(,堆栈指针和地址控制字,),。,IBM,操作系统,/38,用标记来控制完整性和访问。在一组连续的地址上应用标记是使用标记的一种推广形式,如,128,或,256,字节。代码的兼容性是使用标记结构的难题。标记结构通常要求从根本上改变操作系统的所有实际代码,这个要求可能因代价昂贵而不可行。随着内存价格下降,标记结构实现变得可行了。,4.2.5,分段式,分段,(segmentation),,即将一个程序分成几块的简单方法。 每一块是一个逻辑单元,表现为一组有关联的代码或数据。分段允许程序分成有不同访问权限的几部分。各段使用,对段内数据项和代码寻址。各段可以分别重定位,并且允许把各段分别放在任何可用的内存中。,4.2.5,分段式,(,续,),图,4.6,分段的逻辑和物理表示,4.2.5,分段式,(,续,),操作系统必须维护一个包括段名和段在内存中实际地址的表。以便进程确定数据和代码在内存中的实际地址。考虑效率,通常每个正在执行的进程有一个操作系统的,段地址表,(segment address table),。如果有两个进程共享访问同一个分段,它们段地址表里就有相同的段名和地址。,4.2.5,分段式,(,续,),图,4.7,段地址转换,4.2.5,分段式,(,续,),用户程序不知道其使用的实际内存地址,通过,程序可以访问任何数据与程序。地址隐藏给操作系统带来了三个好处:,(1),操作系统可以将任意分段放置或移动到任意位置,甚至在程序开始执行后,都可以这样做。 操作系统只要不断更新新分段地址表即可。,(2),可将当前不使用的分段换出主内存,(,并可存储在辅助存储器中,),。,(3),每个地址引用都将传递给操作系统,所以为了保护内存,操作系统可以检查每个地址引用。,4.2.5,分段式,(,续,),操作系统可以把分段和其保护等级联系起来,并同时使用硬件和操作系统检查每次对段的访问,以实现对不同安全级别段的不同保护。分段可以提供如下安全特性:,(1),为了保护,可检查每个地址引用,(2),可为不同级别的数据项指派不同的保护级别,(3),两个或两个以上用户可共享同一个段,但可以有不同的访问权限,(4),用户不能产生地址或访问未经许可的段,4.2.5,分段式,(,续,),分段式的缺点在于:,(1),各段有特定的大小,但程序通过段名和偏移量产生的引用却可以超出段的范围。这个问题在编译和装入程序时不能被阻止,这是因为,为了有效使用分段,要求在程序执行过程中能增加段的大小。因此,分段的安全实现要求检查产生的地址不超过当前段的边界。,(2),分段的效率存在两方面的问题:段名在指令中不便于编码;操作系统在段表中查找段名速度可能很慢。因此,编译程序时,段名被转换数字,同时,编译器还维持一个联系数字和真正段名的映射。这为两个进程共享一个分段带来了麻烦。,(3),内存碎片问题。,4.2.6,分页式,用户程序的地址空间被划分为若干个大小相等的区域,称为,页,(page),;并且内存空间也分成与页相同大小的存储块,称为,页帧,(page frame),。 分页式的地址结构包含两个部分,。,图,4.8,页,地址转换,#,页寻址不存在超页问题,偏移量超过某个页边界时,将导致页号部分进位。,4.2.6,分页式,(,续,),分段方式中程序员了解各段,但是,分页方式中,程序员可以忽略页的范围。分页方式中页不是逻辑单位,仅表示程序中相邻的若干字节。,如果考虑保护,这种变化就存在问题。段的信息为逻辑单位,方便设定不同的保护权限,地址转换时可以处理这种变化。但在分页方式中,页内每一项不必是逻辑单位。因此,就不可能对一页中的所有值建立一种等级的保护。,4.2.7,段页式,综合分段和分页系统的优点可以形成段页式系统。,IBM 390,系列、,Multics,操作系统都采用了这种方式。程序员先将程序分成逻辑段,每段再分成固定大小的若干页。这种方式保留了段的逻辑单元并允许有不同保护级别,但需要额外的地址转换。可以增加硬件来改善实现效率。,4.2.7,段页式,(,续,),图,4.9,段页式,4.3,一般对象的访问控制,在多道程序环境下,内存保护只是,对象保护,的一种特殊情形,需要保护的对象包括:内存、辅助存储设备上的文件或数据、内存中正在执行的程序、文件目录、硬件设备、数据结构、操作系统中的表、指令集特别是特权指令集、口令和用户鉴别机制、保护机制本身等。,随着对象数量的增多,对所有访问集中授权显然不够,而且访问权限也不能简单限制为只读,只写或只执行。我们用用户或主体来描述对一般对象的访问。,用户和主体,可以是使用计算机程序的人、程序员、另一个对象或需要使用这个对象的其他事件。,4.3,一般对象的访问控制,(,续,),保护对象有几点补充要求:,(1),检查每次访问,:可以撤消用户对于对象的访问权限,这需要用户每次访问都进行检查。,(2),执行,最小特权,:主体应该只访问完成特定任务所必须的对象,即使访问了额外的信息对主体没有影响,主体也不应当执行这样的访问。,(3),检查允许用法,:访问能力仅决定可或不可访问,但是,检查对访问对象的操作是否合法同样重要。,4.3.1,目录,简单的保护对象的方法是使用如同文件目录一样的保护机制。每个用户有一个文件目录,该目录用于记录用户可以访问的文件。当然不允许用户写文件目录,而由操作系统来维护所有文件目录。读、写和执行是共享文件的访问权,另外一个权限,“所有者”,归文件所有者,允许其对用户进行授予或撤消访问权限。,4.3.1,目录,(,续,),图,4.10,访问目录,4.3.1,目录,(,续,),为每个用户维护一张文件目录列表,虽然比较易于实现,但也存在几个困难之处:,(1),如果所有用户都可以访问的共享对象很多,将造成列表很大。在用户访问目录中,每个即使不用的共享对象也要占一个表项,十分浪费,而删除共享对象也必须反映到每个用户目录中。,4.3.1,目录,(,续,),(2),另一个难点是,撤消访问权限,(revocation of access),。如果用户,A,授予用户,B,可读文件,F,的权限,,F,的权限将记入用户,B,的访问目录中。暗示用户,A,和用户,B,存在信任关系。当然,用户,A,也可以撤消用户,B,对文件,F,的权限。但是如果用户,A,要撤消所有用户对文件,F,的权限,这项工作在大系统中开销很大。此外,用户,B,可能将文件,F,的权限转交给了其他用户,造成用户,A,不知道存在其他用户有权访问文件,F,,而无法撤消,这在网络操作系统中尤其严重。,4.3.1,目录,(,续,),(3),再一个困难与文件别名有关。所有者,A,和,B,可能分别有同名的两个不同文件,F,,并且允许用户,S,访问这两个文件。显然,用户,S,的文件目录不能包含文件名相同但针对不同文件的两个表项。一个方法是把文件的所有者名字包含在文件名内,如,A:F(,或,B:F),。另一个办法是允许用户,S,在它的文件目录中用另外一个唯一的名字替文件,F,。这样,用户,A,的文件,F,可能被用户,S,称为文件,Q,。用户可能之后忘记文件,Q,就是用户,A,的文件,F,,再次向用户,A,请求访问文件,F,,用户,A,可能更信任用户,S,比起初赋予更多权限,这样用户,S,就有了对文件,F,的两种不同访问权限,导致不一致的多种访问许可。,4.3.1,目录,(,续,),图,4.11,两种访问路径,4.3.2,访问控制列表,每个对象都有一个,访问控制列表,(access control list),,其中包含欲访问该对象的所有主体,以及主体具有的权限。访问控制列表包含默认表项,它表示所有用户可以访问该对象。特殊用户可以显式说明访问权限,而其他用户则可以有一组默认访问权限。在这种结构下,公共文件或程序可以被系统所有的潜在用户访问,而不需要在每个用户各自的访问目录为该对象增加表项。,4.3.2,访问控制列表,(,续,),图,4.12,访问控制列表,4.3.2,访问控制列表,(,续,),Multics,操作系统采用了这种形式的访问控制列表,列表中每个用户有三种保护类:用户指一个特定主体;组将相同利益主体组织在一起;分隔区限制了不信任的对象,在一个分隔区中运行的程序未经许可不能访问另一个分隔区的对象。,4.3.2,访问控制列表,(,续,),用户,Adams,登录时,其身份是在分组,Dec1,及分隔区,Art2,的用户。在会话中允许该用户访问的对象需要在访问控制列表中包含,Adams-Dec1-Art2,。这种保护不实用,用户,Adams,不能生成一般的文件用于所有会话。共享对象、可接受的组和分隔区都需要明确列出,Adams,。,解决办法是引入通配符*,(wild card),,它表示任意用户,(,或任意组或任意分隔区,),,例如,,Adams-*-Art2,。访问控制列表可以按顺序组织,包含“*”的用户排列在所有说明了名字表项的后面。在查找规则中,所有显示给定了名字的表总是比表项中的任意位置包含通配符的表项先检查,而最后一项用户可能是,*,-*-*,,定义所有不指明用户的权限。,4.3.3,访问控制矩阵,访问控制矩阵,(access control matrix),是一张表格,每行代表一个主体,每一列代表一个对象,表中的每个元素表示访问权限。一般说来,访问控制矩阵是一个稀疏矩阵。因此,访问控制矩阵也可以用,的三元组表示。,表,4.1,访问,控制矩阵,4.3.4,访问权能,访问权能,(capability),,是一种不可伪造的标签,(ticket),,代表对某个对象有某种类型的访问权限。使标签不可伪造的一个方法是不直接将它交给用户,而由操作系统代管。只有用户向操作系统发出特殊请求时,才能生成访问权能。另一个方法是,使用访问控制机制的密钥加密包含合法用户身份的访问权能证。访问权能将部分保护对象的负担交给用户,对于对象的可能访问权限包括转移或传播,每个访问权能都对应一个许可的访问权限类型列表,如果具有转移权限,用户才可以将对象的访问权转给第三方。,4.3.4,访问权能,(,续,),考虑一个进程执行时,它运行在一个,域,(domain),或,本地名字空间,(local name space),中。域是进程要访问对象的集合。,图,4.13,进程执行域,4.3.4,访问权能,(,续,),而调用子程序时,需要传递一些子程序需要访问的对象,主程序可以只传递部分对象访问权限给子程序,子程序也可以拥有主程序没有的其他对象访问权。因为每个访问权能仅对应一个对象,访问权能的集合定义了域。当进程调用子程序时,操作系统形成一个目前程序所有访问权能堆栈,之后为子程序产生一个新的访问权能。,4.3.4,访问权能,(,续,),图,4.14,将对象传递给一个主体,4.3.4,访问权能,(,续,),访问权能的几点说明:,(1),在操作上,访问权能是跟踪执行主体对于对象的访问权限的直接方法,可以用一张全面的表来备份访问权能。一个进程需要使用新对象时,由操作系统检查决定是否赋予新的权能。,(2),访问权能必须保存在普通用户不可访问的内存区,可以存储在用户表不能引用的内存段,或用标记结构机制将访问权能标识为保护的数据结构。,(3),在执行期间,只有被当前进程访问过的对象的权能会被保持可用状态,这可以改善访问对象时检查速度。,(4),访问权能可以撤消,撤消后的访问权能不允许包含任何访问权限。访问权能表用指针形成活动访问权能链,方便动态管理。,4.3.5 Kerberos,Kerberos,实现了通过访问权能,(,称为票据,),的鉴别与访问授权,票据使用对称加密技术保证了安全性。,Kerberos,具有两个系统,鉴别服务器,(AS, authentication server),和,票据授权服务器,(TGS, ticket,-,granting server),。 它们都是,密钥分发中心,(KDC, key distribution center),的一部分。,Kerberos,实现了,单点登录,(single sign-on),,即用户只需要登录一次,其后用户被允许的所有需要授权的活动都不需要反复登录。,4.3.5 Kerberos(,续,),如果用户需要在不同的域中访问资源,只要这两个域之间建立了授权,用户都可直接访问而不需要在不同的系统间登录。,Kerberos,实现了本地与远程鉴别和带共享密钥系统的授权,实际上,每个用户的口令被作为加密密钥使用。,4.3.6,面向程序的访问控制,面向程序,(procedure,-,oriented),的保护,即用程序来控制访问的对象,(,例如,通过执行它的用户鉴别来加强操作系统提供的基本保护,),。也就是说,程序在对象周围形成保护层,只准许指定的访问。,程序可以确保只有通过,可信界面,才能访问对象。例如,合法用户表只允许三个程序访问该表:增加用户程序,删除用户程序以及检查程序。,增加用户程序、删除用户程序可以使用检查机制以确保对它们的调用是合法的 。,4.3.6,面向程序的访问控制,(,续,),由于,只有对象控制程序知道被保护的对象,所以面向程序的保护方法实现了,信息隐藏,的原则。当然,保护的程度是以效率为代价的。保护机制提供的灵活性越大,为此付出的代价也越多。安全科学中,在简单性和功能性之间寻求平衡需要做出不断的努力。,4.3.7,基于角色的访问控制,某些用户,(,如系统管理员,),具有某种特权,而其他用户,(,普通用户或客人,),具有低一些的权限。,基于角色的访问控制,(role,-,based access control),可以将权限与分组联系在一起。根据职责的改变,用户的访问控制也相应改变,系统管理员不必为该用户重新选择适合的访问权限。,4.4,文件保护机制,4.4.1,基本保护形式,保证用户之间不能相互恶意或无意地访问或修改文件。随着用户的增多,这种保护方法的复杂度也增大了。,完全保护或完全不保护,文件被默认为公共文件,这里假定用户只知道他们有权访问的文件名。,口令保护被认为是保护操作系统最有价值的方法。有两种方法执行:口令用于控制所有的访问,(,读、写或删除,),,所有文件完全由系统管理员控制;口令仅控制写、删除两种访问,因为只有这两种行为会影响其他用户。,4.4.1,基本保护形式,(,续,),这种完全保护或完全不保护有几个原因不切实际:,缺乏信任,:假定用户值得信任是不合理的。,过于粗糙,:即使确定了一批可信任的用户,也没有简单方法只允许这些用户访问。,共享的出现,:这种保护更适合于批处理环境。在共享使用环境下,用户需要与其他用户交互使用文件与程序。,复杂性,:因为文件保护需要机制干涉,降低了操作系统的性能。,文件列表,:通常一些程序可以创建包含所有文件的列表。因此,用户不可能一点都不知道系统中驻留文件情况。,4.4.1,基本保护形式,(,续,),组保护,重点集中在识别有公共联系的用户组上。典型的,UNIX+,实现是,主体世界被划分为三个等级:用户、相互信任的用户组和其余用户。我们可以将之简称为用户、用户组和全体用户。,Windows NT+,系列使用的分组是:系统管理员、有权用户、用户和客人。,所有授权用户被分成不同的组。用户组成员是基于共享需求而组合起来的,可以与其他成员共享文件。一个用户只能属于一个组。,4.4.1,基本保护形式,(,续,),当用户创建一个文件时,可以定义用户本身、组内成员以及组外用户的访问权限。通常,访问权限来自一个有限集合,比如,更新、读,-,执行、读、写,-,创建,-,删除,。用户组保护的主要优点就是易于实现。,尽管这种保护方案弥补了完全保护或完全不保护方法的某些不足,但是也带来了一些新的麻烦。,组的从属性,:一个用户不能属于两个组。,4.4.1,基本保护形式,(,续,),多重身份,:为克服一个成员只能从属一个组的限制,允许一定数量的人有多个帐号,也就是允许一个用户有多个用户身份。多重身份导致了帐号的增加、文件冗余、对共同文件的有限保护,以及用户使用不方便的问题。,所有组,:为了避免多重身份,用户可以在访问执行期间属于多个组的成员。,限制共享,:用户希望根据每个文件的情况识别共享文件的伙伴。,4.4.2,单独许可,将单个文件与访问许可联系起来时,还可以有更简单的保护实现方法。,持久许可,持久许可,(persistent permission),通常是使用一个名称和令牌,通过访问控制列表,决定可以访问的资源。,这种方法的困难之处在于,将某用户从一个控制列表中删除很容易,但找到针对该用户的所有控制,并删除他的权限,则非常复杂。,4.4.2,单独许可,(,续,),获得临时许可,UNIX+,操作系统提供了一个许可方案,方案基于:用户,/,组,/,全局。,UNIX,的设计者增加了一种,set,userid,(,suid,),的访问许可。如果对一个文件的,保护设置为执行,,则文件的保护级别是文件所有者而,不是,文件的执行者。由于普通用户只能在规定的方式下执行系统功能,所以采用这种机制便于实现系统功能。利用,suid,的特点,系统可以拥有一个口令修改程序,通过它可以完全访问系统的口令表。,4.4.3,每个对象和每个用户的保护,文件保护方法的最基本的限制是要求能够产生有意义的用户组,组内的用户对一个或多个数据集有相似的访问权限。前面提到的访问控制表和访问控制矩阵虽然灵活,但如果某个用户允许很多用户分别对许多不同的数据集进行访问,则该用户必须详细说明每个数据集应该被哪个用户访问。当增加一个新用户时,所有相关的用户必须详细说明该用户的访问权限。,4.5,用户鉴别,操作系统提供的大部分保护都是以知道用户身份为基础的。生活中有许多鉴别手段,包括文件、声音识别、指纹和视网膜匹配等可信的识别方法。但是在计算机技术中鉴别工具的选择有许多的局限性,而且安全性可能更差。大多数计算机系统的鉴别需要依赖计算系统和用户都知道的某些知识。,鉴别机制使用下列三种性质中的某种性质来确认用户的身份:,(1),用户已知的事情,:如口令、,PIN,数字、口令短语等。,(2),用户拥有的东西,:如身份徽章、物理钥匙、驾驶执照等。,(3),用户身体的一些特征,:以用户物理特征为鉴别的基础,称为,生物特征鉴别,(biometrics),,如指纹、人的声音、相貌等。,#,两种或更多方式结合起来能形成更稳妥的鉴别服务。,生物特征鉴别推进困难的原因:用户的接受程度不高。,Prabhakar,等列出了生物特征鉴别与隐私有关的三类情况:,(1),不可预计的功能范畴,:鉴别不仅仅是授权,还可能具有其他附加的功能。,(2),不可预计的应用范畴,:鉴别例程识别客体。例如鉴别例程可以识别出一个客体是否使用的假姓名。,(3),隐藏的身份识别,:不必通过识别或鉴别就可以识别一个客体。,4.5.1,口令鉴别,口令,(password),是用户和计算机都知道的一个“单词”。口令保护可以提供一个相对安全的系统,但是人们对口令的不恰当使用可能降低安全保护的质量。这里我们将主要讨论口令攻击、选择口令的标准和口令的鉴别方法。,4.5.1,口令鉴别,(,续,),口令实际上是相互达成一致的字码,并假定只有用户和系统知道这个字码。口令可以由用户选择也可以是系统分配。口令格式和长度各个操作系统会有所不同。,口令也存在一些问题:,丢失,:根据口令的实现方法,没有人能找回原来的口令。,使用,:每次访问文件,都要求提供口令,这种方式非常不方便。,泄露,:如果口令泄露给非授权个体,则文件就可能被非法访问。更改口令需要通知所有合法用户。,撤消,:为了撤消一个用户对文件的访问权限,需要更 改口令,将引起与泄露口令相同的问题。,4.5.2,附加的鉴别信息,除用户名和口令之外,可能还需要授权用户的其他信息来用于鉴别。如,Adams,工作于会计部门,他允许的登录办公计算机的时间可以是周一至五的上午,8:00,至下午,5:00,。这样做的好处在于:,(1),阻止外界的某个人试图假冒,Adams,。这种尝试由于时间或访问端不符合而以失败告终。,(2),阻止,Adams,本人试图在家或在周末访问系统,访问不允许使用的资源或偷偷地干不能公开的事情。,副作用:使系统复杂化。,4.5.2,附加的鉴别信息,(,续,),使用附加的鉴别信息称为,多因素鉴别,(multifactor authentication),。两种形式的鉴别称为,两因素鉴别,(two-factor authentication),,通常认为比一种形式的鉴别好,因为一般,地说,这样的鉴别安全性更强。但随之而来的是复杂度增加,。,4.5.3,口令攻击,有几种方法可以确定用户口令:,(1),尝试所有可能的口令,(2),尝试经常使用的口令,(3),尝试一个用户可能的口令,(4),查找系统口令表,(5),询问用户,#,困难程度依次降低,成功可能性依次降低,4.5.3,口令攻击,(,续,),松懈的系统,假设一个对系统一无所知的入侵者,如下登录设计不好:,WELCOME TO THE XYZ COMPUTING SYSTEMS,ENTER USER NAME:,adams,INVALID USER NAMEUNKNOWN USER,ENTER USER NAME:,4.5.3,口令攻击,(,续,),改进的设计为:,WELCOME TO THE XYZ COMPUTING SYSTEMS,ENTER USER NAME:,adams,ENTER PASSWORD: john,INVALID ACCESS,ENTER USER NAME:,4.5.3,口令攻击,(,续,),更好的设计为:,ENTER USER NAME:,adams,ENTER PASSWORD: john,INVALID ACCESS,ENTER USER NAME:,adams,ENTER PASSWORD:,johnq,WELCOME TO THE XYZ COMPUTING SYSTEMS,4.5.3,口令攻击,(,续,),穷举法攻击,在,穷举法攻击,(exhaustive attack),或,暴力攻击,(brute force attack),中,攻击者通过某种自动的方式尝试所有可能的口令。当然,可能口令的数量取决于特定计算系统的实现情况。搜索特定的口令不需要尝试所有口令,而只需要测试到正确口令为止。如果口令均匀分布,只需要测试一半的口令。,4.5.3,口令攻击,(,续,),很可能的口令,大多数用户都会选择短的,常见的,容易拼写或发音的单词作为口令。攻击者在搜索口令时意识到这一特点,并有效利用它。许多计算系统都带有拼写检验程序,用于检查文件中拼写错误和印刷错误,通常这些程序包含最常用的单词在线词典,以这些词作为搜索集合,通常需要的时间非常短。,4.5.3,口令攻击,(,续,),与用户有关的可能口令,一般情况下,用户会选择自己认为有意义的字符作为口令,例如,配偶、孩子、兄弟姐妹、宠物、街道等的名字作为口令,如果加以限制,这个口令集合实际非常小,可以非常快地完成对这个集合的口令正确性验证。因此,口令保护在理论上很强大,但在实践中常常变得很脆弱。,4.5.3,口令攻击,(,续,),Morris,和,Thompson,报道了他们收集的许多用户的口令统计规律。,表,4.2,实际口令的分布,统计人数,百分率,口令形式,15,0.5%,单个,ASCII,字符,72,2%,两个,ASCII,字符,464,14%,三个,ASCII,字符,477,14%,4,个字母,706,21%,5,个字母,(,全部是大写或小写,),605,18%,6,个小写字母,492,15%,字典中的单词或人名,2831,86%,以上各类的合计,4.5.3,口令攻击,(,续,),图,4.15,用户选择的口令,#,在口令选择方面的进步非常有限,4.5.3,口令攻击,(,续,),Knight,和,Hartley,依次排列了攻击者在测试口令时可能使用的,12,个步骤:,(1),没有口令,(2),和用户,ID,相同,(3),是用户的名字或来源于用户的名字,(4),普通的单词列表加普通的名字和模式,(5),学生用字典,(6),完整的英语单词列表,(7),非英语国家的常用字典,4.5.3,口令攻击,(,续,),(8),使用大小写和替代字符的学生用字典,包含大小写和替代字符的完整英语字典,包含大小写和替代字符的非英语字典,暴力攻击所有的小写字母字符,暴力攻击所有的字符,4.5.3,口令攻击,(,续,),明文系统口令表,口令表是一个包括用户身份和相应口令的两列表格。可以用多种不同的安全方法来隐藏口令表,以避免无关用户发现。,可以用强访问控制方法限制对操作系统的访问以保护口令表。但是在一些系统中,有,n,+1,个用户知道口令表,,n,个常规用户和,1,个操作系统,并且操作系统的所有模块没有区别对待,都有访问所有信息的特权。这使攻击者潜在可能利用操作系统的缺陷访问口令表。更好的方法是只有必要的操作系统模块才可以访问口令表。,4.5.3,口令攻击,(,续,),如果口令以明文方式存储,攻击者也可以在适当时间通过遍历内存中的所有内容,找到可能为口令表的文件。,攻击者利用系统备份也可以获得口令表。为了从系统错误中恢复,系统管理员会周期性地把文件备份到一些介质上以保证存储安全。如果普通用户可以访问系统备份,就可能获得系统备份的口令表,该表可能包含仍然有效的口令。,还有可能泄露口令表的情况是其在磁盘上复 制以便保存。,4.5.3,口令攻击,(,续,),加密口令文件,保护口令表的简单办法是:加密。用传统加密技术,既可以隐藏整个口令表,也可以隐藏口令表的口令部分。接受用户输入的口令后,系统对口令表中的口令进行解密,然后相互比较。但这种方法的缺点在于可以在主存中以明文的方式获取用户的口令。,4.5.3,口令攻击,(,续,),另一种方法是使用单向函数加密技术。口令表经过单向函数计算后存储。当用户输入口令时,计算它的单向函数值,看是否与存储值相等。,UNIX,操作系统就使用这种访问控制机制,所有用户可以读存储的口令表。总是有可能两个人选择相同的口令值,,UNIX+,操作系统通过扩展口令来绕过这个弱点,称为,salt,。,salt,是包含系统时间和进程标识符组成的,12,个比特。,salt,对于每个用户唯一,且公开,这样即使用户选择相同的口令,pw,,由于单向函数计算的输入是,(,pw+salt,),,所以输出也不会相等。,#,对于口令文件的保护与口令提供的保护具有相同的重要性。,4.5.3,口令攻击,(,续,),轻率的用户,攻击者一种简单的方法是直接获得口令。人们经常把口令输入身边的终端机中,或是写在卡片上放在抽屉里,特别是用户有几个帐号的时候。分担工作或共享数据时,试图共享口令也比共享文件更危险。,4.5.4,口令选择标准,尽管口令应用有诸多不尽如人意之处,但可以预计在未来一段时间内还将继续使用。其难度应该适合环境的安全需要。我们可以对口令的使用做如下总结:,(1),用所有字符而不是只用,A,Z,:应该包含大小写和数字。,(2),选择长口令,:选择的口令越长,被识破的可能就越小。,(3),避免实际的名字或单词,:字母的随机组合的数量远远多于单词数量。,4.5.4,口令选择标准,(,续,),(4),选择一个看似无意义的口令,:口令的选择为双重约束。为了容易记住,需要选择对用户具有特别意义的口令,而这又不能让其他人猜出其意义。如,,2Brn2B,代表,“,to be or not to be”,,但像,I10veu,已经被收入字典了。,(5),有规律地更改口令,:即使没有口令面临威胁的证据,也要定期更改口令。,(6),不要写下口令,:实践表明当拥有多个帐户口令时,设置相同口令或者使用不安全但好记的口令要比将口令记录在一个保护妥当的表上更安全,但是在用户自身安全面临考验的时候除外。,(7),不要告诉任何人,:最容易的攻击是使用,社会工程学,(social engineering),。,4.5.4,口令选择标准,(,续,),一些系统提供了无字面意义但可发音的口令。例如,,VAX VMS,系统随机产生,5,个口令供用户选择其中一个。但这样产生的口令也容易出错,如,发音为,bliptab,和,blaptib,、,blabtip,易混淆。,一些学者发现口令短语比口令字有更好的安全强度。,有些系统鼓励用户有规律的改变口令。如一个系统规定,30,天更改一次口令,可以到了,30,天后用户第一次登录时,要求用户修改口令。,有时系统要求周期性更改口令,用户可以选择两个口令交替使用,为防止这种情况,,Windows 2000,系统可以拒绝接受最近,k,次使用过的口令。,4.5.4,口令选择标准,(,续,),一次性口令,一次性口令,(one,-,time password),只能使用一次,以后不再有效。用户使用一个静态的数学函数,而不是一个静态的短语。用户使用这个数学函数计算并把函数值返回给系统进行认证。这样的系统又称为,挑战,-,响应,系统,(challenge,-,response system),。,Lamport,一次口令方案就是此类方案。,4.5.4,口令选择标准,(,续,),4.5.4,口令选择标准,(,续,),4.5.4,口令选择标准,(,续,),一次性口令使得中途截取口令变得毫无用处。但是人们能够记忆的算法程度有限,因而一次口令的实用性受到限制。口令生成设备,可以实现更复杂的函数,,价格合理的这类设备已有好几种型号了。,4.5.5,鉴别过程,在鉴别过程中,如果用户错误输入口令,一般的系统会允许其继续输入直到正确口令为止。,一些系统可能会故意延长执行时间,阻止攻击者搜索口令。另一些系统会在几次登录失败后,断开与用户的连接。,更安全的系统中,可能会因为用户错误输入指定次数而将用户帐户锁住。只有系统管理员才能恢复其帐号。这样系统管理员可以识别出成为攻击者目标的账号。,4.5.5,鉴别过程,(,续,),修复鉴别过程中的缺陷,口令被认为是鉴别用户身份的最基本或第一手证据,如果对输入口令产生怀疑,系统可以要求更多令人信服的证明。可以采取:增加另一轮口令确认或挑战,-,响应协议,实现第二层保护。如果有物理设备辅助可以实现更强的挑战,-,响应协议。,4.5.5,鉴别过程,(,续,),另一个问题是假扮登录界面问题。前面的讨论都是用户向系统的单向鉴别过程。攻击者也可能编写出与登录程序完全相同的程序来,在目标系统上建立假扮登录界面,等待无辜受害者输入身份与口令信息,之后以看似正常的方式结束会话。,为防止这种攻击,用户必须确保每次使用系统时都要重新初始化。而有些计算机系统则通过网络进行访问连接,所以不可能重新初始化。 因此,用户对计算机系统也必须保持审慎态度。在相信系统是安全之前不应该输入任何机密数据。当然,在设计系统时也可使系统在鉴别过程中显示一些只有双方才了解的信息增强信任。,4.5.6,不用口令的生物特征鉴别,生物特征鉴别器,(Biometrics),是基于人体的一个物理特征进行鉴别的设备,包括手印探测器、声音识别器和视网膜鉴别器 。现在的设备主要识别以下生物特征:指纹、手掌几何特征,(,手指的外形和尺寸,),、视网膜、虹膜,(,眼的一部分,),、声音、笔记、手指的血管和人脸。生物特征的鉴别的优点是:不会丢失、被盗、遗忘、出租或伪造,并随时在身边可用。,4.5.6,不用口令的生物特征鉴别,(,续,),认证与鉴别,所有生物阅读器都是分为两个阶段进行的:,第一阶段是:用户使用阅读器进行注册,其间,阅读器捕获用户的特征,如手掌的几何尺寸,并简化为一个模版或模式。在注册过程中,可能要求用户多次出示手掌,以便注册软件能调整适应不同的变化。,第二阶段:用户要求系统进行鉴别,其间,系统重新测定手掌,并与存储的模版进行比较。如果重新测定的数据与模版数据足够接近,系统就接受该鉴别,否则,系统拒绝该用户。,4.5.6,不用口令的生物特征鉴别,(,续,),生物特征鉴别对鉴别非常可靠,对认证的可靠性则差一些。原因在于精准性不够。,认证与鉴别的区别如下:系统查看手掌的几何特征,然后说“这是,Hook,船长”,(,认证,),;如果一个人说“我,,Hook,船长,我的手掌可以证明这一点”,系统确认“这只手与,Hook,船长的模版匹配”,(,鉴别,),。,4.5.6,不用口令的生物特征鉴别,(,续,),生物特征鉴别的问题,生物特征鉴别存在以下问题:,(1),生物特征鉴别是相对较新的技术,一些人不愿接受它的使用方式。,(2),生物识别设备开销大。,(3),所有生物阅读器都是先采样,再设定阈值,如果匹配足够接近,则可以接受。如果生物特性发生变化可能不能识别。,4.5.6,不用口令的生物特征鉴别,(,续,),(4),生物特征鉴别可能成为单点故障。忘记口令是用户的错,生物特征鉴别失败却不是用户的错。,(5),尽管鉴别设备在不断改进,但还是有误读的情况。“误承认”,(false positive),或“误接受”,(false accept),指阅读器误接受了应该拒绝的,(,即鉴别不匹配,),,而“误否认”,(false negative),或“误拒绝”,(false reject),则拒绝了应该接受的。两者相互对立,一个可以接受的系统误承认率可以是,0.001%,,而误否认率可以是,1%,。,(6),鉴别的速度限制了精度。可以通过多鉴定几次来提高精度,但鉴别不是最终目标,花费过多时间,会让用户感到失望和愤怒。,(7),虽然我们认为生物特征是个体的唯一一部分,因而伪造似乎是不可能的。 但有证据表明伪造生物特征仍然可能,只是成本很高。,4.5.7,鉴别需要注意的问题,有时讨论鉴别会忽略可信性是双方的,系统要确保用户可信,用户同样需要确定系统可信。第二个问题产生了新的计算欺诈,称为“钓鱼欺诈”,(phishing),,它是指一个不设防的用户将敏感数据提交给一个装成真实可信却有恶意的系统。,大多数操作系统来说,鉴别是基本而关键的。操作系统和系统管理员会根据实际环境使用合理而严格的安全措施。但是,有时也不得不使用一些不合适的机制。例如,互联网上,经常用,cookie,作为鉴别方法。,cookie,是,Web,站点的服务器发送给,Web,浏览器的包含关键字及对应值的数据项。保护用户的隐私以及身份不被假冒非常重要,但由于,cookie,不加密也缺乏完整性检查,窃听者就可以窃听,cookie,,并再使用它来假冒用户身份。,4.6,本章总结,本章讨论了,4,个主题:内存保护、文件保护、普通对象的访问控制和用户鉴别。界地址、基址,/,范围寄存器、标记结构、分页式、分段式等都是以寻址保护内存为目的。文件保护方法在通用操作系统中通常是分,3,个或,4,个保护级别进行限制。访问控制矩阵或单用户或单对象列表可灵活地用于解决访问控制基本问题,但实现却是比较困难的。用户鉴别随着通过网络寻求共享设备的未知用户增加,而愈加重要。明文口令文件是安全计算系统的薄弱环节。如何劝服用户使用强口令十分重要。本章主要介绍,基于用户,的保护,给用户提供可见的和可请求的保护机制。,谢谢!,
展开阅读全文