第四章 操作系统安全
(Operating System Security)
Operating System:
Provides an interface between the user and the hardware
Manages and allocates system resources
操作系统是计算机系统中安全的提供者.
操作系统控制程序的运行,实施资源的分配与管理;所以它也是攻击的主要目标.
User
Application Program
Command Interpreter
Graphical User Interface (GUI)
System Services
Operating System
可信系统
可信计算机系统 (trusted computer system):一个使用了足够的硬件和软件完整性机制,能够用来同时处理大量敏感或分类信息的系统.
操作系统安全 (operating system security):操作系统无错误配置,无漏洞,无后门,无特洛伊木马等,能防止非法用户对计算机资源的非法存取,一般用来表达对操作系统的安全需求.
操作系统的安全性 (security of operating system):操作系统具有或应具有的安全功能,比如存储保护,运行保护,标识与鉴别,访问控制,安全审计等.
安全操作系统 (secure operating system):能对所管理的数据与资源提供适当的保护级,有效地控制硬件与软件功能的操作系统.
就安全操作系统的形成方式而言,一种是从系统开始设计时就充分考虑到系统的安全性的安全设计方式.另一种是基于一个通用的操作系统,专门进行安全性改进或增强的安全增强方式.安全操作系统在开发完成后,在正式投入使用之前一般都要求通过相应的安全性评测.
多级安全操作系统 (multilevel secure operating system):实现了多级安全策略的安全操作系统,比如符合美国橙皮书(TCSEC)B1级以上的安全操作系统.
注:操作系统安全在计算机安全和信息系统安全中扮演着关键的角色!
操作系统安全控制中的关键技术措施往往又成为危害计算机安全的手段和环节.
操作系统实施系统安全策略,它不仅是访问请求的裁决者,它本身也是一个访问控制的安全保护对象,同时也是攻击的主要目标,是威胁信息安全的手段和途径.
工业界已经承认这样一个事实:任何操作系统都是有缺陷的;但另一方面,绝大多数操作系统是可靠的,可以基本完成其设计功能.
必须解决以下两个相互抵触的要求:
用户应能使用(调用)操作系统.
用户不能滥用操作系统.
在操作系统的某个功能模块上只有一个不太重要的故障时,可以忽略它,这对整个操作系统功能的影响甚微;一般而言,只有若干故障的某种特定组合才能对操作系统造成致命的影响.但在信息系统中与安全相关的每一个漏洞都会使整个系统的安全控制机制变得毫无价值.
最薄弱环节
安全操作系统通常与相应的安全等级相对应,例如,根据TCSEC标准,通常称B1级以上的操作系统为安全操作系统.
对操作系统安全的威胁主要有以下几个方面:
以操作系统为手段,获得授权以外或未授权的信息.它危害计算机及其信息系统的机密性和完整性.
以操作系统为手段,阻碍计算机系统的正常运行或用户的正常使用.它破坏了计算机系统的完整性,危害了计算机系统的可用性.
以软件为对象,非法复制和非法使用.
以操作系统为手段,破坏计算机及其信息系统的安全,窃取或非法获取系统的信息.
操作系统的安全性对计算机系统和信息系统的安全性有着至关重要的影响.
目前,大多电脑攻击都利用了操作系统和系统应用程序的安全漏洞,即操作系统存在的安全缺陷.
据统计,Unix操作系统已经发现100多个漏洞.主要表现在以下几个方面:
特权用户(root)有至高无上的权限,这是Unix系统的一个致命弱点;
口令与帐户不安全(每个用户都能读/etc/passwd);
系统的几种特殊命令容易被黑客利用;
suid,sgid的系统服务程序.
OS Vulnerabilities (OS Vulnerabilities discovered in 2000)
注:操作系统使用越广泛,发现的漏洞也越多!
Breakdown (击穿,破坏;崩溃) of Attackers by Operating Systems Used (July 1,2002 Dec31,2002)
Microsoft Windows suite (套件;(程序)组[集,序列]) of operating systems was used by a majority of(大部分)attackers (78%).
Considering the dominant(主要,最大;支配) market and the fact that most home users use Windows systems, this(penetration (穿过, 渗透, 突破) of Windows)was lower than expectations(预期).
在分布式安全体系中,Windows NT的集中实体认证和数据加密功能则比较脆弱,也不能限制对administrator帐户失败登录的次数.
Security breaches(破坏)are on the rise(上升)
A survey(调查,综述) of major companies reported
In 2000 25% reported system penetrations, in 2001 40% reported system penetrations
In 2000 27% reported DoS(拒绝服务)attacks, in 2001 38% reported such attacks
In 2000 85% reported viruses, in 2001 94% reported viruses
Unauthorized use of computer systems within the last 12 months
CSI/FBI 2000 Computer Crime and Security Survey
Source: Computer Security Institute
YES
NO
DON'T KNOW
Types of attack or misuse detected within the last 12 months
CSI/FBI 2000 Computer Crime and Security Survey
Source: Computer Security Institute
破坏;破坏行为
远程通信/电信欺诈
电信窃听
Dollar amount of losses by type
CSI/FBI 2000 Computer Crime and Security Survey
Source: Computer Security Institute
4.1 在通用操作系统中的保护
一,保护的客体和保护的方法
保护的客体(Protected Objects)
Memory
Sharable I/O devices, such as disks
Serially reusable(可连续重用的)I/O devices, such as printers and tape devices(磁带机,带传送机构)
Sharable programs and sub-procedures
Network
Sharable data(可共享的数据)
As it assumed(假定;担任; 承担)responsibility(责任;职责,响应性)for controlled sharing (受控的共享), the operating system had to protect these objects(客体).
操作系统保护的方法(Security Methods of Operating System)
Possible Information States …
Processing
Storage
Transmission(传输,传送)
The Information Security Objective(目标)then becomes - To preserve(保护, 保持, 保存)Security Characteristics across all three possible states of processing.
It Starts with Operating System Security …
最基本的保护是分离控制:保持一个用户的客体独立于其它客体. Rushby和Randell指出在操作系统中分离控制主要有以下几种方式:
The basis of protection is separation - keeping one s objects separate from (把…分开,把…隔开) other users. Rushby and Randell note that separation in an operating system can occur in several ways.
Physical separation(物理分离): Processes use different physical objects (e.g., separate printers for output)
Temporal separation(时间上分离) : Processes having different security requirements are executed at different times.
Logical separation(逻辑上分离) : Processes operate under the illusion (幻觉;错觉,假象) that no other processes exist.
Cryptographic separation(密码分离): Processes conceal(隐藏,隐蔽)their data & computation in a way that is unintelligible (不可理解的,难以理解的) to others.
实现的复杂度按序递增!
Systems Connected at a Single Security Level(安全等级)
Computing(计算[数据处理](技术,方法),信息处理技术)is sharing and non-location (单元;位置,定位), security is separation.
逻辑分离:操作系统实施了访问控制,程序不能访问许可域之外的对象,使得程序好像在没有其他程序的情况下运行.
Systems Connected Through A High Assurance Guard(高保证的守卫程序)
Guard might consist of four processes (Guard由4个进程组成) :
one multilevel process, P1 (multilevel),
three single level processes P2 (S), P3 (C), P4 (U)
P1 receives labeled information from multilevel input
P1 inspects(检查)label and puts information into a labeled object
P2, P3, or P4 send information from objects at its level to output system
Guard(守卫)is trusted(信任, 信赖)to insure(确保,保证)that labeled information is sent to the correct end system(端系统).
Guard可以由4个进程组成:
P1是多级安全进程,从多级安全信息输入接收标记信息;检查标记信息,插入信息到标记的客体.
P2,P3和 P4则是单级安全进程,它们只能传送在它们自己安全级的客体信息到输出系统.
Guard是可信的主体,保证加标记的信息发送到正确的终端系统.
…
S客体(P2) C2(Secret)
P1 C客体(P3) C2(Confidential)
U客体(P4) C2(Unclassified)
Levels of Information Protection
分离可以实现保护,但仍然需要某种共享.
几种方法可以帮助操作系统实现多级保护:(There are several ways an operating system can assist offering protections at any of several levels(级).)
Unprotected Systems(不保护) 敏感过程在不同的时间运行.
Isolate(隔离) 实现进程之间的隔离,并发运行的进程不知道相互之间的存在.每个进程有自己的地址空间,文件和其它客体.
Share all or share nothing(完全共享或不共享,公用或私有) 把资源划分成"共享"(public)或"独占"(private)两种,"共享"可以使资源为所有用户使用,"独占"只能由资源所有者使用.
Share via access limitation(通过访问限制的共享) 通过访问限制保护,操作系统检查用户对客体的访问是否允许;仅当允许时用户才能访问客体.
Controlled (Static) Sharing(受控的(静态)共享) 对用户和资源进一步划分,只有授权的用户才能访问指定资源.
Different people can access each item(项目;条款,内容)
Goal: control who may access each item stored in the system, e.g.
UNIX: user/group IDs, mode bits
NFS( Network File System ): access control lists(存取控制表)
Problems: implementation is complex
Programmable Sharing Controls(可设计/编程的共享控制)
Two users must agree to(同意, 允诺)modification
Access only between 2 am and 6 am
Implementation techniques
Reference monitors(基准监视器)
Capabilities(能[效,权]力;权能)
Share by capability(通过能力的共享) 受限制的访问共享的扩展,它允许动态创建对客体的共享权限.共享的程度可以依赖于拥有者或主体,计算的上下文环境或客体自己.
Limit use of an object(限制客体的使用) 不仅限制对客体的访问,而且限制对客体的使用.例如,允许查看敏感文档,但不准打印.
Tagged(标记)Information
Previous controls do checks prior to(在…以前)releasing(释放;核发,发布) information(前述的控制在核发信息以前进行控制)
May also want to control information after it is released(在信息释放后可能也要控制信息)
Very hard to do:
don't actually release(释放,解除)the information
rather(相反地), release a reference(引用)to the information
check access on each reference to it(在每次访问信息时检查访问)
what if a client memorizes(记忆,存储)accessed information (如果客户存储了访问的信息,会怎样呢 )
共享模式的实现难度按序递增,但保护强度也按序递增的.
对数据而言,控制访问的粒度
When we think about(考虑, 回想)data, we realize(认识)that access can be controlled at various (各种各样的)levels(级(别);层(次)): the bit, the byte, the element or word, the field, the record, the file or the volume. Thus, the granularity of control concerns(涉及,与…有关,参与)us.
User-programmable(可编程的)Sharing Controls
Allow weird(离奇的,古怪的,神秘的)access restrictions, e.g:
only between 9 am & 4 PM
modify only if two users agree(同意,意见一致)
Technique: build a protected subsystem(受保护的子系统)
only subsystem can access protected data
subsystem can do arbitrary checks before granting access request
Example: UNIX suid facility(设施)
二,存储器和地址空间保护
(Memory and Address Protection)
多道程序系统的最明显的(obvious)问题是防止一个程序(进程)影响其它程序(进程)的地址空间.
Isolate memory regions
Pre 70s: fence(电子篱笆)registers
1970's: base & bound registers
1990's: virtual address spaces
Who controls the address regions(区域)
Privileged status bit(特权状态位)in processor
Privilege bit must be set to manipulate(操作)any address region
Only supervisor program(管理程序)has the supervisor(管理程序,监控程序;超级用户)bit set
CPU工作模式:核心态,用户态
Memory Protection using a Fence
Processor checks all memory references(引用)to see if reference is beyond fence address.
Later implementations loaded a register with fence (电子篱笆)address so that operating system boundary could grow or shrink(收缩).
注:不可能防止用户代码,数据及其它段之间的相互干扰;
不可能防止用户进程之间的相互干扰.
Restriction: can not protect one user from(保护…不受,使…免于)another.
0
Memory Protection: Base and Bounds
Limitation: text versus data segment within same process not protected
Solution: two sets of base/bound registers
One for data
One for text
重定位(relocation) Relocation is the process of taking a program written as if(好像)it began at address 0 and changing all address to reflect the actual address at which the program i located in memory.
注:base/bounds只能实现完全共享或完全不共享环境.
Tagged Architecture(标记结构)
在标记结构中,每个数据项有一个说明其类型的标记(tag).在执行前,CPU可以从保存在存储器中的值直接检测出任何类型的违反.
标记也可以用来指示在一个存储位置上可以执行的哪一种访问操作.
标记也可以用于实施安全策略.
注:区分程序和数据的能力是一种
非常有用的安全特性,它为保护
程序不被破坏提供了基础.
缺点 存在兼容性问题.
INT
…
OP
…
STR
…
Tag Data
…
…
Tagged Architecture(标记结构)
机器内存的每个字单元都有一个或若干个额外的位(Bit)用来标识对这个字单元的访问权限,这样的访问结构称为标记结构.
Every word of machine memory has one or more extra bits to identify(识别,鉴别,标识;确认)the access rights to that word
这些访问位(标记)只能由操作系统的特权指令来设置.
Bits can only be set by privilege mode(特权模式)instructions
每次指令访问存储单元时检查和测试标记(tag).
Bits examined and tested every time(每次, 每当)that location(存储单元)is accessed
Code: R=Read-only
RW=Read/Write
X=Execute-only
tagged architecture
A tagged architecture is a hardware architecture where each memory word is divided into a "data" and a tag section. The data section is sufficiently large to contain a memory address and the tag section is used to describe how the data section is to be interpreted (that is, it encodes the type of the data).
Relevance(关联性,相关性)to memory management Tagged architectures greatly simplify the implementation of a memory manager because each word of memory is self-describing.
Historical note: The Lisp Machine is an example of a tagged architecture.
Tag
Memory Word
R
00002326
RW
8AB64210
R
X
X
RW
…
…
Tag bits
数据类型,访问权限
B6500-7500系统3位标记区分数据字(三种类型),描述符(指针)和控制字(堆栈指针和地址控制字).IBM操作系统/38用标记来控制完整性和访问.
在一组连续的地址上应用标记技术是使用标记的一种变形,如128或256个字节.
Intel I960使用标记结构扩充了处理器的体系结构,这种标记结构是每个内存字单元用一比特来标记这个字为"能力",而不是一般的数据或指令单元.访问能控制对变长存储块或段的访问.大量的可能标记值可支持60-40亿字节的内存段,并且潜在有2256个不同的保护域.
缺点 存在兼容性问题.
In an tagged architecture every word of machine memory has one or more extra bits to identify the access rights to that word. These access bits can be set only by privileged (operating system) instructions. The bits are tested every time(每次, 每当)an instruction acceses that location.
Furthermore, with a few extra tag bits, different classes of data (numeric, character, address or pointer, and undefined) can be separated, and data fields can be protected for privileged (operating system) access only.
分段(Segmentation)存储管理
Program divided into various(不同的)segments
Similar to Base bound registers
There is limited sharing in segments
Each segment could have different access right(访问权限)
One segment could be where only User A can write, and the other segments may be written by all
For indices(索引,变址;下标), Segment Translation Tables(地址转换表) are used
Segment
Starting Address
Length
Access Right
System
Segment A
Segment B
段描述符
…
User does not need to worry about(担忧,担心)segmentation(分段,分割), it is the job of the OS.
When the program run and then terminates, all its segments will be freed(释放)
If a high priority user comes in(进来,当选), then the current segments need to be temporarily put away(放好, 储存…备用)and new programs checks in(登记, 报到).
Problem with Segmentation: Fragmentation(碎片)
So Defragmentation(整理碎片)is needed, and its an overhead(开销).
逻辑地址(段名,符号名) 物理地址
(sno,offset) 段表
地址隐藏(hiding)对操作系统有三个优点:
操作系统可以存放任何段在存储器的任何位置,且可以在运行时动态搬迁;
可以实现虚拟存储管理;
每个地址访问通过操作系统,所以存在检查每次访问保护的机会.
分段管理提供的保护(Segmentation offers protective benefits):
Each address reference is checked for protection.
Many different classes of data items can be assigned a different levels of protection.
Two or more users can share access to a segment, with potentially different access rights.
A user cannot generate a address or access to an un-permitted segment.
问题:
变长段的管理,碎片问题;
分段在运行期间动态增长;
效率与保护的平衡.
从抽像的观点来看,存储器已经被分成不同的区域;于是访问控制涉及到一个数据客体或一个程序的存储位置.
注:在微观世界中基于位置的访问控制的例子;在分布式系统或计算机网络中,经常需要微观世界中基于位置的访问控制.
Virtual Memory and Limitations(虚拟存储器及其局限性)
Virtual Memory: separate(分离)virtual address spaces
Cannot share memory between programs
Can add additional descriptors(描述符)to set up(设立)shared memory, add read/write bits, etc.
Requires special hardware(专用硬件)
Performance cost(价值;成本,代价)for every memory access
分页( Paging )存储管理
Concept: Each segment is as long as another program. 每个段的长度是装入其程序所需要的长度.
Pages are fixed . 在一个系统中页的长度是固定的.
No way(无论如何不,决不 )you can write programs that can fit into(适合)these fixed sizes.
Security is difficult to implement in Paging(分页)since users are not separated.
So the problem is that security is controlled by users.
Techniques like Paging were directed to(把(注意力,精力)贯注在…上)increase the processing speed since in the older machines, speed was poor
Nowadays(如今)programmers don t care(担心)at all(根本)about speed since much faster processors are available.
逻辑地址:(Page No,off'set)
优点:消除了外部碎片,提高内存空间的利用率和性能.
缺点:保护问题,页面不是信息处理的逻辑单位.
段页式存储管理
(Combination of Paging and Segmentation )
Each segment is stored into pages :程序分段,段内分页.
分段是逻辑单元的一种划分,它是实施安全策略的良好基础.但段具有可变长度,这使得存储管理较为困难.
分页是将存储器划分成相同大小的页帧,同样地址由两部分组成,页帧号和页内偏移量.分页很流行,因为它允许高效的存储管理.
Multics的段实际上是分页的.另一方面,分页对于访问控制来说不是一个好基础,因为页不是逻辑单元.因此一个页可能包含要求不同保护的客体.
分页可能会打开一个隐蔽通道.逻辑客体可以跨越页边界存储,当这样的客体被访问时,操作系统在某个时候会要求一个新页,这时产生缺页故障中断.如果缺页可以被观察到,就像大多数操作系统中那样,那么用户就获得了比正确的访问请求结果更多的信息.
考虑一个口令方案.用户输入一个口令,该口令被逐个字符地扫描,并同保存在存储器中的一个参考口令进行比较,当发现不匹配时访问被拒绝.如果一个口令跨越页边界存放,那么攻击者可从观察到缺页推断出第一页上的口令片段已被正确猜测出来.如果攻击者可以控制将口令存放在页的什么地方,口令猜测就变得相当容易了.
三,一般客体的访问控制
(Control of Access to General Objects)
内存保护是保护一般客体的一种特殊情形.随着多道程序技术的发展,共享的数量和种类都逐渐增加.需要保护的客体:
Memory
Files or data sets(数据集)on an auxiliary storage devices
A directory of files
A hardware device
A data structure, such as a stack
A table of the operating system
A executing program in memory
Instructions,especially privileged instructions(特权指令)
Passwords and user authentication mechanism(用户鉴别机制)
The protection mechanism(保护机构,保护机制)itself
存储保护机制是简单的,因为每个存储器访问可以保证通过硬件中的某些点.对于更一般的客体(more general objects)访问点的数目要大得多,所有访问通过的中心机构(central authority)可能不存在, 且访问的种类可以不限制于读,写或执行.
保护客体的几点补充要求:
Check every access 应该检查用户对客体的每次访问.
Enforce least privilege 最小特权原则要求主体只应该访问为了完成任务必需的最小数量的客体.
例如,程序不应该访问绝对存储地址空间.
Verify acceptable usage(检验使用(情况)) Ability to access is yes-or-no decision. 还有检查对客体执行的操作.例如,对堆栈的操作是push,pop,clear等.
Need for a Secure Operating System
(安全操作系统的需要)
All applications are executed on (在…之上) the Operating System(所有应用程序在操作系统之上运行.)
Hostile (敌方的;有敌意的;不友好的) software runs with user s privileges and permissions(敌对的软件以用户特权和许可运行.)
Distinction(区别,特征)between data and code is vanishing (消失,消没,没影)(Von Neumann(冯·诺伊曼式)体系结构:不区分程序和数据.)
Malicious code is unknowingly (不知不觉地) introduced (传[引]入)
操作系统是攻击者的主要目标,所以必须维护操作系统的完整性.操作系统不仅是访问请求的仲裁者,它本身也是一个访问控制的客体(object).
规则(Rule) 用户不能修改操作系统.
这是一个通用的安全策略.必须解决如下相互抵触(对抗,竞争:competing)的要求:
用户应该能够使用(invoke,调用)操作系统;
用户不能滥用操作系统.
中断处理程序是操作系统的底层软件,工作在核心态
中断请求,系统调用(INT n,Trap n)引起CPU的模式切换到核心态
IRET,系统调用返回切换CPU的核心态到用户态
通常用于实现这些目标的两个重要概念是状态信息(status information)和受控调用(controlled invocation)(也称为受限特权(restricted privilege)).这些概念用于计算机系统的任一层次上.
受控调用
模式切换 用户程序在核心态下执行操作系统提供的系统服务,但必须加以控制.
系统在超级用户模式只能执行一组预先定义的操作;且在控制权交回给用户前返回用户模式(用户态),称这个过程(process)为受控调用.
受控调用-中断(Controlled Invocation-Interrupt) 中断处理程序在核心态(即系统态)运行.
处理器能处理程序错误,用户请求,硬件故障和处理时间引起的执行中断.
中断嵌套处理,可能会导致安全缺陷.例如,Ctrl-C;用户通过中断一个操作系统调用的执行进入管理员模式(核心态).
注:中断矢量表是一个特别令人兴奋的攻击点,必须受到充分的保护.同样,重定向指针是危害操作系统完整性的一种非常有效的方法.
4.2 可信操作系统的设计
(Designing Trusted Operating System)
操作系统安全的主要目标是:
标识系统中的用户,并进行身份鉴别;
依据系统安全策略对用户的操作进行访问控制,防止用户对计算机资源的非法访问(窃取,窜改和破坏);
监督系统运行的安全性;
保证系统自身的安全性和完整性.
软件可分为三大可信类别
可信的 软件保证能安全运行,但是系统的安全仍然依赖于对软件的无错误操作.
良性的 软件并不确保安全运行,但由于使用了特权或对敏感信息的访问权,因而必须确信它不会有意地违反规则.良性软件的错误被视为偶然性的,而且这类错误不会影响系统的安全.
恶意的 软件来源不明,从安全角度出发,该软件必须被视为是恶意的,即认为将对系统进行破坏.
注:有错的良性程序不会泄露或者破坏数据,但是不能保证它偶尔与恶意程序有同样的不良效果.
良性软件和恶意软件都归为不可信软件.
在上一节,从用户观点,要求操作系统提供的基本的(primitive)安全服务:
存储保护
文件保护
一般客体的访问控制(General object access control)
用户鉴别
如果操作系统有以一致的且有效的方式提供上述四个服务的置[可]信度,则称该操作系统是可信的.
Operating Systems(可信操作系统涉及下列关键概念)
Kernelised design(内核化设计)
Security kernel(安全内核)
Reference Monitor(基准监视器)
Trusted Computing Base (TCB,可信计算基)
Virtualization(虚拟化) –Layered Design(分层设计)
任何一个系统的开发过程一般包含以下几个步骤:
系统需求分析 描述各种不同的需求;
系统功能描述 准确定义应完成的功能,而且还应包括描述验证,即证明描述与需求分析相符合;
系统实现 设计并建立系统,其中包括实现验证,用于论证实现与功能描述之间的一致性.
安全操作系统的一般开发过程如右图所示.
安全需求分析
抽象,归纳出安全模型
建立安全模型
安全模型与系统的对应性说明
安全机制设计与实现
安全功能描述
安全操作系统可信度认证
阶段1
阶段2
阶段3
图4. 安全操作系统的一般开发过程
从设计者的观点,根据提供安全服务的构件的设计和功能来查看可信操作系统.
可信操作系统( Trusted Operating Systems )的四个主要基础(underpinning,支柱, 支撑)( Components(成分;构件)of a Trusted OS)
Policy 安全策略定义了一组意义明确的,一致的和可实现的规则,而且这些规则能被非常清楚地,无二义地表达处理.满足操作系统的安全需求.
Model 用形式化的方法来描述如何实现系统的机密性,完整性和可用性等安全需求.模型是策略的一种表示.
Design 设计包括可信操作系统是什么(它期望的功能(functionality))以及它是如何构造的(它的实现).
Trust Based on two aspects - features(特征[性];功能部件)(mechanisms,机制) and assurance(保证)(confidence(置[可]信度,信用)in its strength(强度)).
安全评估 安全功能(特征(features))- 操作系统有实施期望的安全策略的所有功能.
安全保证(assurance) 置[可]信度 - 操作系统正确地和有效地实现了安全策略.
信任
对一个系统的信任基于两个方面
特征 操作系统包含了实施安全策略所必需的所有功能
保证 操作系统的实现方式使我们信任它能够正确且有效地实施安全策略
What is a Trusted System
The word secure reflects a dichotomy(二分法): Something is either secure or not secure.
Security professionals(安全专业人员)prefer to speak of(说到,论及)trusted instead of(代替, 而不是…)secure. It is important to realize(认识)there can be degrees of trust (信任度(程度)); unlike security, trust(信任)is not dichotomy.
表4. Qualities of Security (安全质量)and Trustedness
Secure(安全的)
Trusted (可信的)
Either-or: Something either is or not secure.
Graded(分级): There are degrees of "trustworthiness."("可信赖"程度)
Property of presenter(提供者的特性)
Property of receiver(接受者的特性)
Asserted based on product characteristics(基于产品特性的断言)
Judged based on evidence and analysis(基于证据和分析的判断)
Absolute: not qualified(有资格的;合格的)as to(关于, 至于)how, where, when, or by whom used(绝对的:不受如何使用,在何处使用,什么时候使用,以及谁来使用等因素限制)
Relative: viewed(观察,查看)in context(在上下文中)of use(相对的:视应用环境而定)
系统配置,运行环境
A goal(一个目标)
A characteristic(一个特征)
例:
Trusted process(可信进程) that can affect system security(它可以影响系统安全)
Trusted product(可信产品) an evaluated and approved(已验收的,批准的)products
Trusted software(可信软件) the portion of software that can be relied on to enforce security policy(为了实施安全策略而被依赖的程序部分)
Trusted Computing base(可信计算基) the set of all protection mechanisms in a computing system
Trusted System(可信系统) able to process sensitive information(能够处理敏感信息的系统)
Common to these definitions are the concepts of
enforcements of security policy(安全策略的实施)
sufficiency of measures and mechanisms(措施和机制的充分性)
evaluation(评价,评估)
一,可信操作系统的研究发展史
Multics(Multiplexed Information and Computing Service)是开发可信操作系统最早期的尝试.1965年由美国贝尔实验室和麻省理工学院的MAC(Multiple Access Computer)课题组联合,其目标是向大的用户团体提供对计算的并发访问,支持强大的计算能力和数据存储,并且有很高的安全性.
Multics is a mainframe (主机,特大型机)timesharing operating system begun in 1965 and used until 2000. It was a major influence on subsequent systems.
虽然,Multics未能获得完全成功,但它在可信操作系统的研究方面迈出了重要的第一步,为后来的可信操作系统的研究积累了丰富的经验,其中由Mitre公司的Bell和LaPadula合作设计的BLP安全模型首次成功地用于Multics.
Adept-50是一个分时可信操作系统,可以实际投入使用,1969年C. Weissman发表了有关的Adept-50安全控制的研究成果. Adept-50运行于IBM/360硬件平台.它以一个形式化的安全模型-高水印模型(high-water-mark model)为基础,实现了美国的军事安全系统模型.
系统可以为客体标记敏感等级(sensitivity level)属性,为主体(用户)指定安全许可(clearance);系统支持的基本安全条件:
No read up
在授权情况下,可以write down
1969年B.W.Lampson通过形式化表示方法运用于主体,客体和访问矩阵(access matrix),对访问控制问题进行了抽象.
1972年,J.P.Anderson在一份研究报告中提出了基准[参照]监视器(reference monitor),访问验证机制(reference validation mechanism),安全内核(security kernel)和安全模型化(security modeling)等重要思想.
1973年,B.W.Lampson提出了隐蔽通道的概念.
D.E.Bell和L.J.LaPadula提出了第一个可证明的安全系统的数学模型,即BLP模型.
可验证安全操作系统(PSOS,Provably secure operating system)提供了一个分层结构的,基于能力(capability)的安全操作系统设计,1975年左右开始开发.
PSOS采用了分层式开发方法,通过形式化技术实现对可信操作系统的描述和验证,设计中的每一层管理一个特定类型的对象,系统中的每一个对象通过该对象的能力(权能)表示来进行访问.
内核化安全操作系统(KSOS,Kernelized secure operating system)是美国国防部研究计划局1977年发起的一个安全操作系统研究项目,由Ford太空通讯公司承担.
KSOS采用了形式化说明与验证的方法,目标是高安全和可信性.
UCLA secure Unix是美国国防部研究计划局于1978年前后发起的一个安全操作系统验证项目,由加利福尼亚大学承担.其系统设计方法与目标几乎与KSOS相同.
1983年,美国国防部发布了历史上第一个计算机安全评价标准-《可信计算机系统评估标准》(TCSEC,Trusted Computer System Evaluation Criteria ),1985年美国国防部对TCSEC进行了修订.TCSEC提供了四类七个级别.其封面是橙黄色(Orange),所以通常称为橙皮书.
Orange Book Classes
A1 Verified Design
B3 Security Domains
B2 Structured Protection
B1 Labeled Security Protection
C2 Controlled Access Protection
C1 Discretionary Security Protection
D Minimal Protection
其中,A1安全级别最高,D的安全级别最低;依次降低.
LINVS IV是1984年开发的基于Unix的一个实验安全操作系统,系统的安全性可达到橙皮书的B2级.它以4.1 BSD Unix为原型,实现了身份鉴别,自主访问控制,强制访问控制,安全审计,特权用户权限分离等安全功能.
Secure Xenix是IBM公司于1986年在SCO Xenix的基础上开发的一个安全操作系统,最初是在IBM PC/AT平台上实现的.对Xenix进行了大量的改造,且采用了一些形式化说明与验证技术.其目标是TCSEC的B2到A1级.
Secure Xenix系统采用的是改进/增强法.基于安全注意键(SAK,Secure attention key)实现了可信通路(trusted path),并且在安全保证方面重点考虑了以下目标:
系统设计与BLP模型之间的一致性;
实现安全功能的测试;
软件配置管理工具的开发.
1987年,美国Trusted Information System公司以Mach操作系统为基础开发了B3级的Tmach(Trusted Mach)操作系统.除了进行用户身份识别和鉴别及命名客体的访问控制外,它将BLP模型加以改进,运用到对Mach核心的端口,存储对象等的管理中.通过对端口间的消息传送进行控制和对端口,存储对象,任务等的安全标签来加强核心安全机制.
1989年,加拿大多伦多大学开发了与Unix兼容的安全TUNIX操作系统.改进了BLP模型,并且用Turning Plus语言重新实现了Unix内核,模块化相当好.
Turning Plus是一种强类型高级语言,其大部分语句都具有用于正确性证明的形式语义.
安全TUNIX系统的设计目标是B3-A1级,支持这个目标的关键方法在于:采用了Turning Plus语言,采用了安全策略与安全机制相当分离的方法,并且提供了一个简单而结构规范的TCB,从而简化了TCB的验证工作.
ASOS(Army secure operating system)是针对美军的战术需要而设计的军用安全操作系统,由TRW公司在1990年完成.ASOS由两类系统组成,其中一类是多级安全操作系统,设计目标是TCSEC的A1级;另一类是专用安全操作系统,设计目标是TCSEC的C2级,两类系统都支持Ada语言编写的实时战术应用程序.
ASOS操作系统具有下述特征:
操作系统本身主要是用Ada语言实现的;
采用访问控制表(ACL)实现了细粒度的自主访问控制;
根据BLP模型实现了防止信息泄漏的强制访问控制,依据Biba模型实现了确保数据完整性的强制访问控制;
在形式化验证中建立了两个层次的规范和证明,一个层次用于抽象的安全模型,另一个层次用于形式化顶层规范;
用于证明系统安全性的主要工具是Gypsy验证环境(GVE),ASOS开发了一个在GVE中工作的流分析工具,用于分析系统设计中潜在的隐蔽通道.
OSF/1是开放软件基金会于1990年推出的一个安全操作系统,被美国国家计算机安全中心(NCSC)认可符合TCSEC的B1级,其主要安全性表现为:
系统标识;
口令管理;
强制访问控制和自主访问控制;
审计.
UNIX SVR4.1ES是UI(Unix国际组织)于1991年推出的一个安全操作系统,被美国美国国家计算机安全中心(NCSC)认可符合TESEC的B2级.除OSF/1外的安全性主要表现在:
更全面的访问控制;
最小特权管理;
可信通路;
隐蔽通道分析和处理.
1991年,在欧洲共同体的赞助下,英,德,法,荷4国制订了拟为欧共体成员国使用的共同标准-信息技术安全评估标准(ITSEC,Information Technology Security Evaluation Criteria).
美国,加拿大及欧共体一起制订了通用安全评估标准(CC,Common Criteria for IT Security Evaluation),1996年1月发布了CC的1.0版.CC的2.0版已于1997年8月颁布,并于1999年7月通过国际标准组织认可,确立为国际标准.即ISO/IEC 15408.
在1992年到1993年之间,美国国家安全局(NSA)和安全计算公司(SCC)的研究人员在Tmach项目和LOCK项目的基础上,共同设计和实现了分布式可信Mach系统(DTMach,Distributed Trusted Mach).
DTMach项目的后继项目是分布式可信操作系统(DTOS, Distributed Trusted Operating System)
衍生物:供大学研究的原型系统
Fluke操作系统 Flask操作系统,增加了动态安全策略
Linux 安全性增强型版本的Linux(SELinux)
与传统的基于TCSEC标准的开发方法不同,1997年美国国家安全局和安全计算机公司完成的DTOS采用了基于安全威胁的开发方法.设计目标为:
策略灵活性,DTOS内核应该能够支持一系列的安全策略;
与Mach兼容,现有的Mach应用程序应能在不作任何修改的情况下运行;
性能应与Mach接近.
SELinux以Flask安全体系结构为指导,通过安全决策与安全实施的分离实现了安全策略的独立性,借助访问向量缓存(AVC)实现了对动态策略的支持.SELinux定义了一个类型实施(TE)策略,基于角色的访问控制(RBAC)策略和多级安全(MLS)策略组合的安全策略
极可靠操作系统(EROS,Extremely Reliably Operating System)是一个基于能力(capability,权能)的高性能微内核实时可信操作系统,是GNOSIS(后命名为KeyKOS)体系结构的第三代.
二,计算机系统安全体系结构设计的基本原则
可信系统设计的基本原则(Principles for a Secure Design)
从系统设计开始就考虑安全性(Design security in from the start)
经验丰富的系统设计专家M. Gasser在1988年指出,已有的大系统开发实践经验表明,除非在系统设计的早期考虑了安全对系统的影响,否则最后设计出来的系统很少会获得有意义的安全性.
应尽量考虑未来可能面临的安全需求(Allow for future security enhancements)
系统要实施安全增强包括两个方面的问题:
改进系统原有的安全性;
给系统增加新的安全性.
应该注意以下三个方面:
不能把"预设的"安全问题定义得太特殊,或太具体;否则会失去灵活性.
从适当的抽象层次来理解安全问题,即从问题类的角度来理解安全问题,而不是针对具体问题.
设计计划必须特别关注安全策略的定义.
隔离安全机制,并使其最小化(Minimize and Isolate security controls)
实施特权极小化(Employ least privilege)
与隔离安全机制紧密相关的概念是最小特权原理:无论在系统什么部分,只要执行某个操作,执行该操作的主体只能获得执行该操作所需要的特权,不能获得其它的特权.最小特权原理包括:
与硬件机制相关的最小特权;
与软件相关的最小特权;
最小特权总是包含用户的行为及系统管理者的行为.
结构化安全相关功能(Structure the security relevant features)
使用友好的安全相关的界面(Make security friendly) 在设计安全机制时,遵循如下的原则:
安全不应该对服从安全规则的用户引起功能障碍;
给予用户访问应该是容易的;
限制用户访问应该是容易的;
建立合理的默认规则.
不依赖于隐藏(Don't depend on secrecy for security)
系统安全体系的一个重要目标是安全不应该依赖于系统安全机制的任何部分的保密.
保护机制的设计原则
(Design Principles for Protection Mechanisms)
安全必须在整个操作系统的设计过程中考虑;在操作系统设计后,很难改进其安全性.安全考虑遍布(pervade)在操作系统设计和结构中,这隐含:
操作系统控制在主体和客体之间的交互[作用](interaction);
在操作系统设计中,包括这样的定义:哪些客体以什么样的方式被保护,什么样的主体具有访问权,以及这些访问权在什么等级上,等等.
因为安全出现(appear)在操作系统的各个部分,所以安全和其它的设计原则一直贯彻(be carried throughout )在实现,测试和维护过程中.
Saltzer(萨尔泽)and Schroeder(施罗德)describe eight principles for the design and implementation of security mechanisms. The principles draw on (吸收, 利用, 向…提取) the ideas of simplicity (简明性)and restriction (限制,约束).
Least Privilege(最小特权)
Economy of Mechanism(机制的经济性)
Complete Mediation(完全仲裁)
Open Design(开放系统设计)
Separation of Privilege(特权分离)
Least Common Mechanism(最小公用机制)
Fail Safe(故障安全,失效保护)Defaults(默认的故障安全)
Psychological Acceptability(心理上的接收能力) -Easy to use(容易使用)
这些原则建立在简明性和约束的概念上.
These principles build on the ideas of simplicity(简明性,简单性)and restriction(限制, 约束).
简明性使设计和机制容易理解.更重要的,对于简单设计能少走错路.
最小化系统构件之间的交互作用,使在构件之间传送的数据检查减到最少.
简明性也减少了在策略中潜在不一致性的可能.
Restriction(限制,约束)minimizes the power(能力,权力)of an entity(实体). The entity can access only information it needs.("须知"原则)
The principles of secure design discussed in this section express common-sense (常识,具有常识的) applications of simplicity(简单性)and restriction in terms of (根据, 按照, 用…的话, 在…方面) computing. 安全设计的原则反映了在信息处理技术方面的简明性和限制/约束的常识应用.
Least Privilege
(最小特权)
This principle restricts how privileges are granted (授权,允许(许可,同意)). 限制特权如何授予.
主体应该只给予为了完成任务所需要的特权.
类似于"须知"原则
除非必需,不授予权限
如果需要授予附加的权限,尽可能快地取消授予的权限
许多Unix的daemon进程并不需要授予root特权
Definition The principle of least privilege states (规定,声明) that a subject (主体) should be given only those privileges that it needs in order to(为了)complete its task.
In practice (在实践中, 实际上), most systems do not have the granularity (粒度) of privileges and permissions(特权和许可的粒度)required to apply this principle precisely.
Should only have rights needed to complete the task required
Default should be lack of(缺少)access(默认规则是拒绝访问)
Allow as little access as possible for job
Economy of Mechanism
(机制的经济性)
This principle simplifies (单一化, 简化) the design and implementation of security mechanisms.
保护系统的设计应小型化,简单,明确.
保护系统应该是经过完备测试或严格验证的.
安全内核
Definition The principle of economy of mechanism states that security mechanisms should be as simple as possible.
简化的优点:
Sufficiently(足够地,充分地)small and simple to be verified(验证)and implemented
Keep it small and stupid(傻的)
Example: security kernel
Interfaces to other modules are particularly suspect (令人怀疑的, 不可信的), because modules often make implicit (内隐,隐含) assumptions about input or output parameters or the current system state; should any of these assumptions be wrong, the module's actions may produce unexpected, and erroneous, results. Interaction (相互作用,交互作用) with external entities, such as other programs, systems, or humans, amplifies (放大, 增强) this problem.
Complete Mediation
(完全检查)
This principle restricts the caching (高速缓(冲)存(储)(技术,方法)) of information, which often leads to(导致)simpler implementations of mechanisms.
限制信息缓存
对客体的每次访问必须进行验证;不存在绕过访问控制的通路
完整的访问控制-基准监视器
例:对文件的访问.
Definition The principle of complete mediation requires that all accesses to objects (客体) be checked to ensure that they are allowed.
基于许可的原则,默认条件应是拒绝访问!
Open Design
(开放设计)
This principle suggests (建议, 认为, 暗示) that complexity (复杂性)does not add security.
简明性原则:复杂性并不能增加安全性
保护机制应该是公开的,安全性不应该依赖于设计或实现的保密.例:加密系统的安全性依赖于密钥而不是加密算法.
例:MAC(强制访问控制)
Definition The principle of open design states that the security of a mechanism should not depend on the secrecy (秘密,保密) of its design or implementation.
保护机制一定不能依赖于潜在攻击者的无知;机制必须是公开的,且依赖于相对很少的关键项的保护.
Separation of Privilege
(特权分离)
This principle is restrictive (限制性的) because it limits (限制,限定) access to system entities.
限制对系统实体的访问
责任分离
fine-grained control (细粒度控制)
Definition The principle of separation of privilege states that a system should not grant (同意, 准许,授权) permission based on a single condition.
对实体的访问应该受到多个安全条件的约束,如用户身份鉴别和密钥等.这样,能攻破一个保护系统的人员就不会获得完全的访问权.在BSD UNIX系统, 使用su命令进入root,需要口令和在wheel组中的uid .
Least Common Mechanism
(最少公用机制)
This principle is restrictive (限制性的) because it limits sharing.
用来访问资源的机制不能共享
共享资源(包括访问通道)可以导致隐蔽通道或者其它的不期望的风险.
Internet共享通道,导致了不期望的DOS攻击
Definition The principle of least common mechanism states that mechanisms used to access resources should not be shared.
共享的客体为信息流提供了潜在的隐蔽通道,系统为了防止这种潜在通道应采取物理或逻辑分离的方法.
用来访问资源的机制不能共享;
拒绝服务攻击(Denial of Service (DoS)).
Fail Safe Defaults
(故障安全/失效安全默认)
This principle restricts how privileges are initialized when a subject or object is created.
Definition The principle of fail-safe defaults states that, unless a subject is given explicit (明确;显式) access to an object, it should be denied access to that object.
故障安全/失效安全默认
Deny unless explicitly allowed.
默认许可必须是None;
如果操作不能完成,对安全状态的修改必须被撤销,系统恢复到在操作前的状态;
如果超级用户特权(root)需要用来完成特定操作,恢复部分必须取消特定的特权.
Those they need access should argue(说服;证明,主张) that they need access rather than there being an argument(论据, 论点)that access should be taken away(取走) 应该说明给予访问的理由而不是拒绝访问的理由.
默认情况下应该是拒绝访问.一个稳健的设计者要识别那些"将被"访问的项,而不是不能被访问的那些项.
Psychological Acceptability(or Easy of Use)
This principle recognizes (认可, 承认, 公认) the human (人的, 人类的) element in computer security. 这个原则考虑到在计算机安全中的人为因素.
资源访问不应该比不存在安全机制的访问更困难.
安全机制不应该使软件不必要地难于使用.
复杂性可能导致在建立/配置中出错;更糟地是,正确建立从来不能完成.
通用操作系统的安装
Definition The principle of psychological acceptability states that security mechanisms should not make the resource more difficult to access than if the security mechanisms were not present.
实际上,存在附加的负担,但负担必须减至最小,且是可接收的.
方便使用 友好的用户接口.
User interface should be easy to use so that users apply the mechanisms easily or they can be automatically applied easily
Don t confuse(使混乱,使迷惑;混淆,混同)users or drive them crazy (疯狂的,狂热的,不安全的)
Otherwise the mechanisms will be bypassed (绕过,忽视)
操作系统安全的可信性主要依赖于安全功能在系统中实现的完整性,文档系统的清晰性,系统测试的完备性和形式化验证所达到的程度.
Summary
上述设计原则对于安全机制的设计和实现是基本的;它不仅包含技术的详细说明,而且包括了人的交互作用,如最小特权原则.
这些原则贯穿在安全系统的设计和实现的所有过程中.
争议的是开放源软件.
These principles pervade (遍及;渗透) all research touching on (提起;谈到) the design and implementation of secure systems.
Experimental data for the debate(讨论,辩论) about the efficacy (效力,功效) of open source software is lacking. An interesting (有趣味的, 引起好奇(或注意)的) research project would be to design an experiment that would provide evidence (证据) either for (适合于) or against(反对)the proposition (主张, 命题) that if source code for software is available, then that software has (or causes) fewer security problems than software for which source code is not available. Part of the research would be to determine how to make this question precise, what metrics (度量,尺度;公制) and statistical techniques should be used to analyze the data, and how the data should be collected.
可信操作的设计
最少特权 (Least privilege) 每一个用户和程序都应该通过使用尽可能少的特权进行操作.这样,无意或者带有恶意的攻击所造成的危害就最小.
机制的经济性 (Economy 0f mechanism):保护系统的设计应该小而简单,且直截了当.这样的保护系统能够被详细分析和穷举测试,或者能够被验证,因而是值得信任的.
开放设计(Open design) 保护机制一定不能依赖于潜在攻击者的无知;机制应该是公开的,且依赖于相对很少的关键项的保密,如一个口令表.开放设计还应接受广泛的公开审查,这样就能够对设计安全性提供独立的验证.
完全检查(Complete mediation) 每次访问企图都必须被检查.直接访问企图(请求)和绕过访问检查机制的企图都应该被考虑,而且检查机制应被正确摆放以避免被绕过.
基于许可的(Permission based) 默认情况下应该是拒绝访问.一个稳健的设计者要识别那些"将被"访问的项,而不是不能被访问的那些项.
特权分离(Separation 0f privilege) 理想情况下,对对象的访问应依赖于多个条件,比如 用户鉴别再加上密钥.这样,能攻破一个保护系统的人就不会获得完全的访问权.
最少公用机制(Least common mechanism) 共享对象为信息流提供了潜在通道.采用物理或者逻辑隔离的系统减少了共享的风险.
易用性(Ease Of use) 如果一个保护系统用起来很简单,那么人们就会使用它.
Research Into Secure Operating Systems (RISOS)
Goal: 帮助计算机,系统管理人员理解在操作系统中存在的安全问题,并帮助决定为了加强系统安全要求多少程度的努力(工作).
企图为检测一些问题开发一套方法和软件,以及开发为避免和改善其它问题的技术.
Attempted to develop methodologies(一套方法)and software for detecting some problems, and techniques for avoiding and ameliorating(改善,改进)other problems
Examined Multics, TENEX, TOPS-10, GECOS, OS/MVT, SDS-940, EXEC-8
Classification Scheme(分类表)
Incomplete parameter validation(确认,验证)
Inconsistent parameter validation
Implicit sharing of privileged/confidential(秘密级) data
Asynchronous validation/inadequate serialization
Inadequate identification/authentication/authorization
Violable(可侵犯的,易受侵犯的)prohibition/limit
Exploitable(可利用的)logic error
Incomplete Parameter Validation
不完全参数验证
Parameter not checked before use
Example: emulating integer division in kernel(在内核中仿真整型数除法)(RISC chip involved,涉及,包含)
Caller provided addresses for quotient(商), remainder(余数)
Quotient address(商地址)checked to be sure it was in user's protection domain
Remainder address not checked(未检查余数地址)
Set remainder address to address of process' level of privilege (进程的特权级)
Compute 25/5 and you have level 0 (kernel) privileges
Check for type, format, range of values, access rights, presence (or absence)
Inconsistent Parameter Validation
不一致的参数验证
Each routine checks parameter is in proper format for that routine(例程)but the routines require different formats
每个例程检查参数是在其例程要求的正确的格式,但这些例程要求不同的格式.
Example: each database record 1 line(行), colons separating fields (冒号(:)分隔数据字段)
One program accepts colons, newlines(新行,换行)as pad(填充)of data within fields 一个程序接收冒号,换行字符作为在数据字段内的填充符.
Another program reads them as field and record separators(记录分隔符)
This allows bogus(伪造的) records to be entered 这样允许伪造输入记录.
Implicit Sharing of Privileged/Confidential Data
特权/机密数据的隐式共享
OS does not isolate users, processes properly
操作系统没有适度地隔离用户,进程.
Example: file password protection(文件口令保护)
OS allows user to determine when paging(分页)occurs 操作系统允许用户决定何时发生分页.
Files protected by passwords
Passwords checked char by char(逐个字符); stops at first incorrect char
Position guess for password so page fault(页(面)失效,缺页)occurred between 1st, 2nd char
If no page fault, 1st char was wrong; if page fault, it was right
Continue until password discovered
Asynchronous Validation/Inadequate Serialization
异步确认/不适当的串行化
Time of check to time of use flaws(检查时间到使用时间TOCTTOU的缺陷), intermixing((使)混杂; (使)混合)reads and writes to create inconsistencies (同时读和写产生不一致性)
Example: xterm flaw
Inadequate Identification/Authorization/Authentication
(不适当身份识别/授权/鉴别)
Erroneously identifying(识别,标识)user, assuming(擅取, 侵占; 采用)another's privilege, or tricking(欺骗,哄骗)someone into executing program without authorization(授权,委任,核准 )
Example: OS on which access to file named "SYS$*DLOC$" meant process privileged(在一操作系统中,访问命名为"SYS$*DLOC$" 文件的进程意思是特权进程.)
Check: can process access any file with qualifier(限定词;量词)name beginning with "SYS" and file name beginning with "DLOC"
If your process can access file "SYSA*DLOC$", which is ordinary file, your process is privileged(如果你的进程可以访问文件"SYSA*DLOC$",它是普通文件,你的进程是有特权的.)
Violable Prohibition/Limit
(违反禁止或限制)
Boundary conditions not handled properly(未适度地处理边界条件或限制条件)
Example: OS kept in low memory, user process in high memory
Boundary was highest address of OS
All memory accesses checked against this
Memory accesses not checked beyond end of high memory(存储器访问未检查超过高位存储器( high memory )的末端.)
Such addresses reduced modulo memory size
So, process could access (memory size)+1, or word 1, which is part of OS …
OS
0
Exploitable Logic Error
(利用逻辑错误)
Problems not falling into other classes
Incorrect error handling, unexpected side effects(副作用), incorrect resource allocation, etc.
Example: unchecked return from monitor
Monitor adds 1 to address in user's PC, returns
Index bit (变址位;indicating indirection,间接寻址) is a bit in word
Attack: set address to be –1; adding 1 overflows, changes index bit, so return is to location stored in register 1(返回到存储在寄存器1中的存储单元)
Arrange for(安排)this to point to(指向,针对)bootstrap program(引导程序)stored in other registers
On return, program executes with system privileges
Legacy of RISOS
First funded(为…提供资金)project examining vulnerabilities(脆弱点)
Valuable(有价值的)insight into(对…的了解,对…的洞察力)nature of flaws
Security is a function of site requirements(站点需求)and threats
Small number of fundamental(基本的,原始的)flaws recurring(复发)in many contexts
OS security not critical factor(关键因素,主要因素)in design of OSes
Spurred(刺激, 鼓舞, 鞭策)additional research efforts into detection, repair(修理)of vulnerabilities
三,普通操作系统的安全特征
(Security Features of Ordinary Operating Systems)
多道程序操作系统实现了若干与安全有关的功能.
Multiprogramming (多道程序技术)
What we worry about(担忧,担心)in Ordinary Operating Systems(普通操作系统)
Authentication of users
Protection of Memory
File and I/O device access control
Allocation and access control to general objects (一般客体,一般对象)
Enforcement of sharing (integrity issue)
Guarantee of fair service(公平服务)
Interprocess communication and synchronization
Protection of operating system protection data
Multiprogramming OS Functions
Identification of users(用户身份识别)
Authentication of users(用户认证/鉴别)
Protection of memory(存储保护)
File and I/O device access control(文件和I/O 设备访问控制)
Allocation and access control to general objects: concurrency and synchronizing(对一般对象的分配和访问控制:并发和同步)
Enforcement of sharing(实施共享)
Guarantee of fair service(保证公平服务)
Interprocess communication and synchronization(进程之间的通信与同步)
Logging of user actions(用户活动的日志)
Report actual (and potential ) security violations(报告实际(和潜在)的安全违反)
注:Most of these functions are security based (立基于, 基于…, 以…为基础) 大部分这些功能是安全的基础.
Overview of an Operating System's Functions
User Interface
用户身份识别与鉴别
四,可信操作系统的安全特性
(Security Features of Trusted Operating System)
与常规(regular)操作系统不同,可信操作系统集成了(incorporate)致力于解决安全功能和安全保证(features and assurance)的技术.可信操作系统的设计是需要慎重处理的(delicate,微妙的, 需慎重考虑的),涉及合适的,一致的一组功能部件(features)的选择,以及这些功能部件已经正确地组合(have been assembled)和实现的合适的保证程度.
注意客体是如何被访问控制机制所包围.相对于传统的操作系统,该机制提供了更多的保护和分离.此外,内存也按用户划分,且数据和程序库有受控的共享和分离.
Notice how objects are accompanied(伴随,与…同时发生)or surrounded by an access control mechanism, offering far more protection and separation than does a conventional(常规的, 传统的)operating system. In addition, memory is separated by user, and data and program libraries(程序库)have controlled sharing(受控共享)and separation(分离).
Security Functions of a Trusted Operating System
Sharing Data
Authentication
User Interface
Access Control
服务,访问控制
资源分配
普通操作系统的安全特性
用户鉴别
内存保护
文件和输入,输出设备访问控制
对一般对象的分配和访问控制
共享的实施
保证公平服务
进程间通信和同步
对操作系统保护数据的保护
可信操作系统的安全特性
用户识别和鉴别
强制访问控制
自主访问控制
对象重用保护
完全检查
可信路径(可信通路)
审计
审计日志精简
入侵检测
用户身份识别和鉴别 身份识别和鉴别是众多计算机安全的基础.它包含用户鉴别和用户身份的内部唯一标识.
强制访问控制和自主访问控制
Mandatory Access Control (MAC)
访问控制策略的判决不受一个对象的单个拥有者的控制.
中央授权系统决定哪些信息可被哪些用户访问,而用户自己不能够改变访问权限.
强制访问控制出现在军事安全中.
Discretionary Access Control (DAC)
拥有者能够决定谁应该拥有对其对象的访问权及其内容.
在商业环境中,常用DAC来允许指定群体中的所有人(有时是其他的命名个体)改变访问权.
MAC和DAC可同时应用于同一个对象.MAC的优先权要高于DAC.
完全仲裁 所有主体对客体的的访问必须受到控制.高可信操作系统执行完全仲裁,意思就是所有的访问必须经过检查.
安全是系统范围的,包括初始化,恢复和关机.
完全仲裁允许取消访问.
系统的安全取决于鉴别机制.
为了让强制或者自主访问控制有效,所有的访问必须受到控制.
如果攻击者通过内存,外部端口,网络或者隐蔽通道请求访问,那么仅仅对文件的访问进行控制是不够的.由于需要控制更多的访问路径,可信操作系统的设计和实现难度就大大增加了.高可信操作系统执行完全检查(complete mediation),意思就是所有的访问必须经过检查.
对象重用(object reuse) 对曾经包含一个或几个客体的存储介质(如页帧,盘扇面,磁带)重新分配和重用.为了安全地进行重分配,重用,要求介质不得包含重分配前的残留数据.
对象重用保护
计算机保持其效率的一种方法就是对象重用;但对象重用可能产生严重的脆弱点.
通常,文件占用的空间来自于磁盘上先前被用过,但现在已被释放的空间,或其他存储设备上的空间.被释放的空间是"脏"的,也就是说,它仍然包含先前用户的数据.
恶意的用户会申请大量磁盘空间,然后从中获取敏感信息.这种攻击被称为对象重用攻击.
这个问题包括磁盘,主存,处理器的寄存器,其他磁介质(例如磁带)或者其他可重用的存储媒体.
磁介质对于此类攻击尤其脆弱.非常精密和昂贵的仪器有时候能够将最近的数据和它先前记录的数据分开,然后再将后者与后者之前的数据分开,依次类推.这种威胁,称为磁记忆(magnetic remanence,顽磁,剩磁) .
在任何情况下,操作系统在允许对资源的访问之前必须负责清除资源上的信息.
可信通路(Trusted Path )
终端人员能借以直接与可信计算基通信的一种机制.该机制只能由有关终端操作人员或可信计算基启动,并且不能被不可信软件模仿.
恶意用户获得不合适访问的一种途径就是"欺骗"用户,使他们认为自己正和一个合法的安全系统在通信,而实际上这时候他们键人的内容以及命令已经被截获且分析了.
因此,对于关键的操作,如设置口令或者更改访问许可,用户希望能进行无误的通信(称为可信通路),以确保他们只向合法的接收者提供这些重要的,受保护的信息.User-TCB (可信计算基)
在一些操作系统中,用户通过输入一个惟一的键序列(如Windows NT操作系统的Ctrl+Alt+Del键序列,称为安全注意序列(secure attention sequence,SAS)来请求一条可信通路.这个惟一键序列在设计上直接被安全实施软件截获.在其它可信系统中,与安全相关的改变只能在系统启动的时候进行,也就是说,改变只能在除安全实施代码外的其他任何进程运行之前进行.
可审计性和审计
(Accountability and Audit)
一个与安全相关的行为或许就像对对象的单独访问那样简单,如对文件的访问;或许就像集中访问控制数据库的改变一样重要.
可审计性(Accountability,责任性)通常涉及到维护与安全相关的,已发生的事件日志,即列出每一个事件和所有执行过添加,删除或改变操作的用户.
显然,需要保护审计日志不被外界访问,并且记录所有与安全相关的事件.
与安全有关的事件必须日志
审计跟踪
审计日志的简化
责任性和审计(Accountability and Audit)
Accountability usually entails(需要,要求)maintaining a log of security-relevant events that have occurred, listing each event and the person responsible for the addition, deletion, or change. This audit log(审计日志)must obviously be protected from(保护…不受,使…免于)outsiders(外来者,外人), and every security-relevant event must be recorded.
We have been referring to this as "audit." Systems should be built to audit themselves. Attackers are discouraged(使…气馁,阻止)by the very(很,极,完全 )knowledge that their actions are being recorded.
It is true that there are tensions(张力,紧张;平衡强烈对立的因素间的平衡关系)among the above principles. System designers make tradeoffs based on knowledge of context, etc.
审计日志精简
(Audit Log Reduction )
A final difficulty is the "needle in a haystack" (大海捞针)phenomenon.
一些可信系统执行审计精简(Audit reduction)用分离工具来精简审计数据的数量.
在这种方式中,对审计数据进行分析提取,只保留那些对判断事件有意义的数据,通过直接查阅这些数据,就能知道是否有安全事件发生了.对于大多数分析来说,精简的审计日志就够了.
入侵检测(Intrusion Detection)
与审计精简紧密联系的是检测安全漏洞的能力,理想情况下是在它们发生的时候就被检测出来.
在审计日志中有太多的信息需要人们去分析.但是计算机有助于将独立数据联系起来.
入侵检测(intrusion detection)软件构造了正常系统使用的模式,一旦使用出现异常就发出警告.
Logging and MACs (file hashes to detect alteration) are primary methods of detection, although intrusion detection systems which actively watch for(守候, 注意, 监视)intruders are becoming more common. Intrusion detection software builds patterns of normal system usage, triggering an alarm any time the usage abnormal(反常的,不规则的).
检测的基本方法:日志和消息认证码MAC(Message Authentication Code)
主动监视入侵者的异常行为,且能触发报警
五,内核化设计(Kernelized Design)
安全内核用来控制整个操作系统的安全操作.
可信应用软件由两部分组成,即系统管理员和操作员进行安全管理所需的应用程序,以及运行具有特权操作,保障系统正常工作需要的应用程序.
用户软件由可信软件以外的应用程序组成.
高安全级别的操作系统首先对整个操作系统的内核进行分解,产生安全内核;因此,安全内核是从内核中分离出来的,与系统安全控制相关的部分软件.例如,KSOS和UCLA Secure Unix,它们的安全内核已经足够小,所以能够对其进行严格的安全性验证.
User and Applications
可信应用软件
图4. 可信操作系统一般结构示意图
低开发代价的可信操作系统则不再对操作系统进行分解,此时安全内核就是内核.这种结构的例子有Linux IV,Secure Xenix,TMach和Secure TUNIS等.
操作系统的可信应用软件和安全内核组成了系统的可信软件,它们是可信计算基的一部分,系统必须保护可信软件不被修改和破坏.
TRUSTED OPERATING SYSTEM CONCEPTS
There are a few basic concepts(几个基本概念)that are fundamental(基本[础],重[主]要)when dealing with trusted OS: (在处理可信操作系统时,存在几个基本概念,它们是基础:)
the kernel(内核)is the part of the OS that performs the lowest-level functions
the security kernel (安全内核)is responsible for enforcing the security mechanisms of the entire OS
the reference monitor (RM ,基准监视器,引用监视器) is the part of the security kernel that controls access to objects
the trusted computing base (TCB ,可信计算基) is everything in the trusted OS necessary to enforce the security policy
受保护子系统是程序和数据的集合.只有在这个集合中的程序可以用来访问集合中的数据.同样,对程序的访问被限制到只允许从特定的入口点开始执行.
这个结构认为子系统有运行鉴别例程的习惯,且认证它自己.简言之,创建了对客体的可编程形式的访问控制.
优点:灵活,创建对客体访问控制的可编程形式.
缺点:改变访问控制策略要求替换程序;策略和机制分离的界线不清楚.
探索创建受保护子系统的机制驱动了在70年代的操作系统的安全研究.
A protected subsystem is a collection(集合,聚集;收集,汇集)of programs and data. Only programs in the collection can be used to access the data. Also, access to programs is limited to allowing execution starting from specified entry points.
安全内核
第二种感兴趣的体系结构是安全内核.
The second architecture of interest is a security kernel. We have already argued(证明,主张)that to provide assurance that a system is secure, all security mechanisms should be small and localized(局部的,定位的,固定的). Security should be a fundamental abstraction built into the lowest level of the system. The resulting abstraction, a reference monitor, mediates all access to all objects. To implement a reference monitor, a security kernel must be at the lowest level of the system so that all accesses will be mediated.
内核(kernel)是操作系统的一部分,它执行操作系统的最底层功能.在标准的操作系统设计中,内核实现这样一些操作,如同步,进程间通信,消息传递以及中断处理.
一个安全内核负责实施整个操作系统的安全机制.
安全内核负责在硬件,操作系统,计算系统的其他部分之间提供安全接口.
一般说来,安全内核被包含在操作系统内核中.
实现安全内核的若干原则:
There are several principles for implementing a security kernel:
Completeness (完备性) All accesses to all objects must be mediated(仲裁, 调停,斡旋)by the security kernel.
Isolation(隔离) The security kernel must be protected from outside tampering(窜改). 防止安全内核被窜改.
Verifiability(可验证性) To increase assurance, a correspondence must be shown(显示,证明)between the security policy and the actual implementation of the security mechanisms in the security kernel. 证明在安全内核实现的安全机制和安全策略之间的对应性.
注:完备性和隔离通常是借助某种硬件支持来完成的.验证则通过数学证明来完成.Completeness and isolation are usually done with some kind of hardware support (e.g. supervisor vs. user modes in a system). Verifiability is accomplished through a mathematical proof.
安全内核的成功依赖机制的完备性和隔离的机制.而在受保护环境子系统,成功依赖于鉴别和对数据的访问.
The success of the security kernel depends on mechanisms for completeness and isolation. In the case of(在…的情况)the protected subsystem, success depends on authentication and access to data. In both cases we have identified(确认,融入)a trusted computing base (TCB,可信计算基). This is the thing that must work for(为…工作,为…尽力)security to work(研究).
内核是操作系统的一部分,它执行操作系统最底层的功能.在标准的操作系统设计中,内核实现像同步,进程间通信,消息传递以及中断处理等功能.
The kernel is also called a nucleus(核心程序)or core (核心).
在操作系统内核内的安全内核负责整个操作系统的安全机制的实现.
Security Kernel(安全内核)within the OS Kernel is responsible for(为…负责)implementing the security mechanisms of the entire operating system.
安全内核为在硬件,操作系统和计算机系统的其它部分之间提供接口.
Security Kernel provides the security interfaces among the hardware, the operating system, and the other parts of the computing system(计算机系统).
安全内核(security kernel) 通过控制对系统资源的访问来实现基本安全规程的计算机系统的中心部分.实现基准监视器概念的可信计算基的硬件,固件和软件元素;包括引用验证机制,访问控制机制,授权机制和授权管理机制等部分.安全内核必须仲裁所有的访问,必须保护不被修改,并且证明是正确的.
构造安全内核的理由
覆盖 对受保护对象的每次访问必须通过安全内核.这样才能确保每次访问都被检查.
隔离 通过将安全机制从操作系统的其余部分和用户空间中隔离出来,容易保护安全机制免遭操作系统或用户的侵入.
统一(Unity,单一) 所有的安全功能都由单一的代码集合来执行,这样,追踪由于这些功能引起的任何问题的原因就会容易一些.
可修改性 易于对安全机制做出修改和对这种改变进行测试.
紧凑性(Compactness,致密性) 由于安全内核只是执行安全功能,所以它相对较小.
可验证性 由于相对较小,安全内核能够被严格地分析.例如,我们能够利用形式化的方法来确保设计覆盖了所有的安全状况.
Implementation of a security kernel:
May degrade(降低)system performance (one more layer,因为内核在用户程序和资源之间又添加了另外一层接口).
May be large(内核可能包含了所有的安全功能).
No guarantees(没有保证).
Addressing Computer Misuse (误用,滥用)
不需要安全内核的能力来解决(address):
用户错误 用户教育与培训.
特权的滥用(abuse of authority) 审计.
直接探测 健全的(sound)管理和审计.
安全内核特别适合于(suited for)解决几种类别的滥用:
恶意软件的探测 MAC策略.
渗透(penetration) 高保证系统
破坏(subversion) countered(反击,还击)by high assurance systems.
Security Kernel from a Existing Operating System No!
Security Kernel Design using Existing Operating System
Security functions may be diffused(散布)throughout system.
Collecting these functions into a security kernel may(收集这些安全功能到安全内核是可能的).
Create a large unverifiable(无法证明的; 无法检验的)kernel.
Destroy operating system's modularity(破坏了操作系统的模块性).
大量的重新设计要求:
隔离安全相关的功能性(functionality);
保证模块性;
保证使用支持安全内核的硬件特性(features).
Level
0: Hardware
1: Operating System Kernel:
Hardware interactions
Access control
2: Operating System:
Resource allocation
Sharing
Access control
Authentication functions
3: User tasks
Figure 4. Combined Security Kernel/Operating System
=Security activities
硬件安全机制
绝大多数实现操作系统安全的硬件机制也是传统操作系统所要求的.优秀的硬件保护性能是高效的,可靠的操作系统的基础.计算机硬件安全的目标是保证其自身的可靠性,并为系统提供基本安全机制.
基本硬件安全机制包括存储保护,运行保护,I/O保护等.
处理机提供的保护:
存储管理部件;
工作模式,保护环;
保护操作系统不受侵犯,第一个先决条件是区分代表用户的行为和代表操作系统行为的能力.
特权指令.
注:操作系统能够保护自己不受用户侵害的第一个必备条件是能够区分"代表"操作系统的计算和"代表"用户的计算.身份标志可用来表示这个意思,允许系统工作在不同的模式.
Unix操作系统能够区分超级用户(root)模式和用户模式.
为什么这些模式有用呢 比如,为阻止用户直接写内存和破坏逻辑文件结构,操作系统可以仅在处理器工作于超级用户模式时准许对存储单元进行写访问.
Motorola 68000上的保护
Motorola 68000是一个16位处理器,它有一个16位的状态寄存器,其高位部分(系统字节)包含了以下与安全控制相关的位.
T 跟踪位,在位(bit)15上
S 超级用户位,在位13上
I2I1I0 中断级别号,在位置10到8上
状态寄存器的低位字节是条件代码寄存器(CCR).68000用超级用户位S区分用户模式(user mode)和管理程序(系统)模式(supervisor(system)mode).
复位后68000总是以超级用户模式引导,超级用户模式允许访问状态寄存器的系统字节.
一旦S位被置成0且当前处于用户模式,那么只有中断和错误异常才能将S位切换回1,并以超级用户模式运行.
T
S
I2
I1
I0
X
N
Z
V
C
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
System byte
CCR
The 68000 status register
操作系统调用是通过TRAP #n指令实现的,并能以超级用户模式运行和访问超级用户存储器,操作数#n指示了32和47之间的一个异常矢量.
退出时,操作系统调用通过RTE指令切换回用户模式.
68000有7个中断优先级,当前的中断级别保存在状态寄存器的I2I1I0位中.
当68000正在处理一个中断而另一个具有较高优先级的中断到来时,新的中断得到优先处理,第一个中断被中断.较低优先级的中断则被忽略.为保护一个中断处理程序被进一步中断,必须通过在状态寄存器中设置中断级别号来屏蔽中断,因此中断级别7屏蔽所有其它的中断.
处理器使用内存映像I/O,即将输入/输出端口地址看成是内存地址空间的一部分,因此输入/输出操作和内存访问可用统一的方式处理.
处理器有64根连线(管脚,pins),其中的三根管脚被指定为功能代码,输出FC2,FC1和FC0,这些功能代码向地址译码器指示处理器的状态,地址译码器可以使用这些代码在用户存储器和超级用户存储器之间或者在数据和程序之间进行选择.
Motorola 68000 function code output
FC2 FC1 FC0
0 0 0 (undefined, reserved)
0 0 1 user data
0 1 0 user program
0 1 1 (undefined, reserved)
1 0 0 (undefined, reserved)
1 0 1 supervisor data
1 1 0 supervisor program
1 1 1 interrupt acknowledge
区分数据和程序的能力是一种非常有用的安全特性,它为保护程序不被修改提供了基础.
从较为抽像的观点来看,存储器已经被分成了不同的区域,于是访问控制就可以指一个数据客体或一个程序来自的位置.
上面介绍了一个在微观世界中基于位置的访问控制的例子,在分布式系统或计算机网络中,经常需要微观世界中基于位置的访问控制.
Intel 80386/80486上的保护
Intel 80386/80486是32位的微处理器,80386/80486上的保护模式支持多任务操作系统的完整性和机密性要求.
Intel 80386/80486在状态寄存器中有一个2比特的域,定义了四种特权级(保护环)(privilege levels(protection rings)), 特权级只能被运行在级别0上的单个指令(POPF)修改.软件可以被指派到如下各个级别上:
0 操作系统核心
1 操作系统的其余部分
2 I/O驱动程序等
3 应用软件
Unix操作系统和Windows NT只使用级别0(核心态)和3(用户态).
80386/80486实现了以下安全策略:
规则 程序只能访问位于自己环内或外环中的客体.程序只能在自己的环内调用子例程.
80386/80486保存关于像存储器段,访问控制表或门这样的系统客体的信息在描述符中.描述符(descriptor)保存在描述符表中,通过选择符进行访问.一个客体的特权级别保存在它的描述符的DPL域中.选择符是一个16位的域,包含一个指向描述符表中客体入口的索引以及一个被请求的特权级别(RPL,requested privilege level)域.
只有操作系统能够访问选择符.
包含关于主体(即进程)信息的系统客体当然也有描述符和选择符.当一个主体请求访问一个客体时,相关的选择符被装入专用的段寄存器中.比如,当前进程的特权级别,称为当前特权级(CPL),就是保存在代码段(CS)寄存器中的选择符的特权级.
TI=0
选择符索引(Index) TI RPL
段选择符
TI=1 ,表指示符
局部描述符表
全局描述符表
15 3 2 1 0
描述符213-1
描述符i
描述符1
描述符0(NULL)
描述符213-1
描述符I
描述符1
描述符0
毫不奇怪,又一次面对了这样的问题,就是必须对那些请求较高特权的操作进行访问管理.假设环3中的一个应用程序需要环1中一个操作系统例程的服务,在80386/486中这个问题是通过使用门来解决的.门(Gate)是一个指向某个程序(在某个代码段中)的系统客体,这里门具有与它所指向的代码不同的特权级别.门允许对内环中的程序进行只执行访问,但仍限制向外的调用.
如果一个过程(procedure)要使用门,门必须和过程位于同一个环内.当通过门调用一个子例程时,当前特权级别变为门正指向的代码的级别.
当从子例程返回时,特权级别恢复到调用程序的特权级别.子例程调用也在堆栈中保存指示调用程序状态的信息或返回地址.为了确定堆栈的合适的特权级别,记住调用程序不能写入内环.但是由于安全的原因,将堆栈留在外环也是不能解决问题的,因为它使得返回地址完全没有保护.因此,一部分堆栈(大小在门的描述符中规定)要拷贝到一个更有特权的堆栈段中.
通过允许外环程序调用内环程序,制造了一个潜在的安全漏洞,外环程序可以请求内环程序将位于内环上的一个客体拷贝到外环上.
迄今为止给出的任何安全机制都不能防止这种做法,事实上它也没有违反规定的安全策略.因此,可能希望扩展原来的安全策略,使其不仅考虑到当前的特权级别,也考虑到调用进程的(calling process)级别.在80386/486中,可以使用选择符中的RLP域和调整被请求的特权级别(ARPL,adjust requested privilege level)指令支持这种策略.ARPL指令将所有选择符的RLP域改为调用过程的CPL,然后系统可以比较RPL(在选择符中)和客体的DPL(在描述符中),如果它们不同的话,拒绝完成被请求的操作.
Descriptor
DPL
Index
TI
RPL
Selector
Descriptor Table
≤/≥
…
…
段描述符的格式
G(粒度位):G=0时,段长限以字节为单位;G=1时,段长度以页为单位
D(缺省操作数的大小):仅用于代码段描述符,D=0为16位代码段;D=1为32位代码段
P(存在位):0=不在内存;1=在内存
DPL:描述符特权级0-3
S(段描述符):0=系统描述符;1=代码/数据段描述符
TYPE(类型):段的类型
A(访问位):1表示已访问过
0表示保留位,该位必须是0
安全基准监视器
(SRM, Security Reference Monitor)
J. P. Anderson在1972年首次提出,D. B. Baker于1996年再次强调其重要性.
安全内核中最重要的部分就是基准监视器(引用监视器),它控制对客体的访问.基准监视器不一定是代码(a single piece of code ),它也可以是对设备,文件,内存,进程间通信以及其它种类的客体的访问控制的聚集.
基准(参照)监视器(reference monitor)是监督主体和客体之间授权访问关系的部件.
基准(引用)监视器 监督主体和客体之间的授权访问,这是一个访问控制的概念,它涉及到一个对所有主体对客体访问进行仲裁的抽象机.
基准监视器是一个抽象的概念,它表现的是一种思想,J.P.Anderson把基准监视器的具体实现称为引用验证机制,它是实现基准监视器思想的硬件和软件的组合.
Kernelized Design
Security Kernel within the OS Kernel
Reference Monitor
– Tamperproof (Isolated)
– Always Invoked (correct)
– Small enough to be verified (concise(简练的))
Access Matrix Implementation
Trusted Computing Base (TCB)
Figure 4. Reference Monitor Concepts
安全内核数据库/访问控制数据库 包含有关主体访问客体及其方式的信息.数据是动态的,它随着主体和客体的产生或删除及其权限的修改而改变.
安全内核数据库
主体 security clearance
客体 security classification
基准监视器必须控制主体对客体的每一次访问,并且将重要的安全事件存入审计文件中.
Security Reference Monitor
Always invoked(始终被调用)
Tamper Proof(防止窜改的)
Correctly enforces desired security policy(正确地实施了安全策略)
注:Performance is also a practical concern(关心,关注).
在抽象级,基准监视器支持两类功能:
Reference functions(基准/引用功能) for accessing information
Authorization functions(授权功能) change authorization database(授权数据库)
Support Functions(支撑功能) 基准监视器常利用(utilize)支持策略.
Identification and Authentication(身份识别和鉴别)
Identify users to the system - who you are
Authenticate users to system - what you have, know, or are
Reliably identify(识别)trusted part of system to users(对用户可靠地确认系统的可信部分)
Audit(审计)
记录安全相关的操作(operations)
Introduction of new objects into a domain(引入新的客体到一个域)
Deletion of objects(客体的删除)
创建由审计记录(audit records)组成的审计跟踪(audit trail)
Reference monitor may be source of only some of the audit trail information.(基准监视器可能是一些审计跟踪信息的唯一来源)
基准监视器需要同时满足以下三个原则:
防窜改的(tamperproof);
必须总是处于活跃状态,且在每次主体访问客体时必须调用基准监视器;
必须设计得足够小,以利于分析和测试,因而能够证明其实现是正确的.
性能也是一个实际关注的问题.
Definition A reference monitor(基准监视器)is an access control concept of an abstract machine(抽象机) that mediates(仲裁,调停,斡旋) all accesses to objects by subjects.
Definition 引用验证机制(RVM)是基准监视器概念的实现.RVM必须是防窜改的,必须始终被调用(且从来不能被旁路),并且RVM必须足够小以进行形式分析和测试,保证其完备性.
Definition 安全内核是实现基准监视器的硬件和软件的组合.
可信计算基(Trusted Computing Base)
可信计算基( TCB)是计算机系统内的所有保护机制的集合/总称(the totality); TCB包括硬件,固件(firmware)和软件,它们一起实施统一的系统安全策略
Common to these definition are the concepts of
enforcement of security policy;
sufficiency of measures and mechanisms; 措施和机制的充分性
evaluation(评估).
An imaginary boundary around TCB is called the security perimeter(安全周边/安全周界)
安全周界(security perimeter) 用半径来表示的空间.安全周界包围着用于处理敏感信息的设备,并在有效的物理和技术控制之下,防止未授权的进入或敏感信息泄露.
可信计算基 (trusted computing base,TCB):计算机系统内保护装置的总体,包括硬件,固件,软件和负责执行安全策略的组合体.它建立了一个基本的保护环境并提供一个可信计算机系统所要求的附加的用户服务.
The TCB contains mechanisms for implementing the various security policies enforced by a system, (MAC, DAC, I &A, Audit, etc.).
Of these policies the most crucial(有决定性的,至关重要的)is that MAC (recall the DAC is inherently flawed( 有缺陷的)due to(由于, 应归于)its susceptibility(易受攻击性;敏感度)to malicious software).
Special design and implementation requirements are needed for the portion of the TCB that implements MAC.
These special design and implementation requirements lead to the Reference Monitor Concept (基准监视器的概念).
TCB正确实施安全策略的能力完全依赖于TCB内部的机制,以及系统管理员对于与安全策略有关的参数(如用户许可)的正确输入.
基准监视器是一个抽象的概念,安全内核是基准监视器的实现,而TCB包含了安全内核和其它保护机制.
保持操作系统的安全内核尽可能简单,对于安全操作系统的设计与评估是至关重要的.
TCB必须是正确的和完备的;
关键是TCB和非TCB的分隔,即把操作系统的TCB和非TCB的元素分开.
It is easy to see that it is essential for the TCB to be both correct and complete (完备的). Thus, to understand how to design a good TCB, we focus on(集中)the division(分开,分隔)between the TCB and non-TCB elements of the operating system and spend our effort on ensuring the correctness of the TCB.
Level
0: Hardware
1: Security Kernel:
Access control
Authentication functions
2: Operating System:
Resource allocation
Sharing
Hardware interactions
3: User tasks
Figure 4. Separate(分离的, 单独的)Security Kernel
TCB的功能(TCB Functions)
假设把可信操作系统分为很多部分,有的属于TCB,而有的不是,然后让技术最高的恶意程序员编写所有不是TCB的部分.由于TCB处理所有的安全,所以恶意的非TCB部分想要削弱TCB的安全策略的正确实施是无能为力的.
安全环境依赖的系统元素(system elements):
硬件(hardware) 包括处理机,存储器,寄存器和I/O设备.
原始文件(primitive files) 如安全访问控制数据库和身份/鉴别数据.
受保护的存储器(protected memory) 保护基准监视器以防止窜改.
进程间的通信(some interprocess communication) TCB的不同部分可以传送数据到其它部分以及激活(activate)其它部分.例如,基准监视器能够调用和安全地传送数据到审计例程(audit routine).
TCB必须维护(maintain)每一个域(domain)的保密性(secrecy)和完整性,它监视四个基本的交互(basic interactions).
TCB监视着4个基本的交互
进程激活 在多道程序环境下,进程的激活和去活作用(deactivation)是经常发生的.从一个进程切换到另外一个进程需要一个完整的改变,内容包括寄存器,重定位映射表,文件访问表,进程状态信息以及其他指针,它们中的大部分都是安全敏感信息.
执行域切换 在一个域中运行的进程经常会激活其它域的进程以获得更多的敏感数据和服务.
内存保护 因为每个域包含的代码和数据都存储在内存中,因此TUB必须监视内存引用以确保每个域的保密性和完整性.
输入/输出(I/O)操作 在一些操作系统中,软件涉及I/O操作中每一个字符.这种软件将最外层域的用户程序和最内层(硬件)域的I/O设备连接起来.因此,I/O操作能够贯穿所有的域.
Figure 4. TCB and Non-TCB Code
User applications
Utilities(实用程序)
User request interpreter
User process coordination, synchronization
User environment: objects, names (e.g. files)
User I/O
Procedures, user processes
Creation and deletion of user objects
Directories
Extended types(扩展类型)
Segmentation, paging, memory management
Primitive I/O(原语I/O)
Basic operations
Clocks, timing(时钟,定时)
Interrupt handling
Hardware : registers, memory
Capabilities(权能,能力)
TCB
(Trusted Computing Base )
Non-TCB
TCB设计(TCB Design)
将操作系统划分为TCB和非TCB,这为设计者和开发者提供了便利,因为这意味着所有和安全相关的代码都被放置在某个(逻辑的)部分;这种区分不仅仅是逻辑上的.为了确保非TCB代码不会影响安全实施,TCB代码必须运行在一些可以将其区分开的受保护状态.这样,在TCB外部的代码的改变不会影响实施安全的TCB的能力.
Application
Non-TCB
TCB
硬件
这种区分是逻辑上的.
CPU的工作模式必须区分TCB和non-TCB,non-TCB不会影响TCB.
General (常规,总则)
Design Security Kernel First! 首先设计安全内核!
In a security based design:
Kernel is an interface layer (接口层).
Kernel lies just on top of system hardware(在系统硬件之上).
本质上,简化了操作系统的安全评估.
TCB实现(TCB Implementation)
与安全相关的活动可能会在不同的地方被执行.安全性潜在地与下述操作都有相关性,包括每一次的存储器访问,I/O操作,文件或者程序访问,用户的初始化及终止和进程间通信.
将所有的安全功能都包含在TCB中会破坏现有操作系统的模块性.
更切合实际的方法(A more sensible approach)必须首先设计安全内核,然后设计包围它的(around it)操作系统.
例:Honeywell在安全操作系统Scomp(Secure operating system)原型(prototype)设计中使用了这种技术.系统仅包含20个模块,用来实现原语安全功能(primitive security functions);它由少于1000行的高级语言源代码组成.实际的Scomp安全内核包含近似10000行代码.
在基于安全的设计中,安全内核形成了一个接口层(interface layer),它在系统硬件的上面.安全内核监视着所有的操作系统的硬件访问,并执行所有的保护功能.安全内核依赖硬件的支持,允许操作系统自身处理与安全无关的大部分功能.这样,安全内核就比较小且更有效.
在设计安全内核时,优先考虑的是完整性,隔离性和可验证性等三条基本原则,而不是那些通常对操作系统来说更为重要的因素,比如灵活性,性能,开发费用,方便性等.
分层设计
安全内核
用户进程的子进程
用户进程
编译器,数据库管理
工具库,实用程序(Utilities)
文件系统,设备分配
调度,共享,内存管理
同步,分配
安全功能
硬件
操作系统内核
操作系统
图4. Separate Security Kernel
基于不安全操作系统(ISOS)开发安全操作系统,一般有虚拟机法,改进/增强法和仿真法.
Secure kernel
Secure kernel
Secure kernel
Figure 4. Security Kernel based Trusted Operating System
原有系统 虚拟型系统 仿真型系统 安全系统
Figure 4. Kernel implementation strategies
虚拟机法
在现有操作系统与硬件之间增加一个新的分层作为安全内核,操纵系统几乎不变地作为虚拟机来运行.安全内核的接口几乎与原有硬件编程接口等价,仍然像在裸机上一样执行它自己的进程和内存管理功能,可以不变地支持现有的应用程序,且能很好地兼容ISOS的将来版本.
需要硬件支持.虚拟机法在KVM中运行相当成功,这是由于硬件(IBM 370)和原有操作系统的结构都支持虚拟机.
采用虚拟机法增强操作系统的安全性时,要求原系统的硬件和结构都支持虚拟机.
缺点:局限性.
改进/增强法
在现有操作系统的基础上对其内核和应用程序进行面向安全策略的分析,然后加入安全机制,经改造,开发后的安全操作系统基本上保持了原ISOS的用户接口界面.
优点 不破坏原系统的体系结构,开发代价小,且能很好地保持原ISOS的用户界面和系统效率.
缺点 受原体系结构和现有应用程序的限制,很难达到很高的(如B2级以上)安全级别.
仿真法
对现有操作系统的内核进行面向安全策略的分析与修改,形成安全内核,然后在安全内核与原ISOS用户接口界面中间再编写一层仿真程序.
优点 在建立安全内核时,可以不受现有应用程序的限制,且可以完全自由地定义ISOS仿真程序与安全内核之间的接口.
缺点 要同时设计仿真程序和安全内核,还要受顶层ISOS接口的限制.
根据安全策略,有些ISOS的接口功能不安全,因而不能仿真;有些接口功能尽管安全,但仿真实现特别困难.
Unix操作系统的安全性增强设计方法
系统运行状态:
核心态 内核中程序的进程运行在核心态.
用户态 内核之外的程序进程运行在用户态.
系统保证用户态下的进程只能访问它自己的指令和数据,而不能访问内核和其它进程的指令和数据,并且保证特权指令只能在核心态执行.
用户程序只能通过系统调用陷入核心态才能访问系统资源(文件,目录和设备等),在运行完系统调用后又返回用户态.
Unix支持访问控制机制的开发,因而支持安全性的增强.
以系统调用为基元,通过引入可信计算基机制,分别在系统调用中实现了安全强制访问控制,自主访问控制,审计,最小特权管理和可信通路等机制,并且进行了对隐蔽通道的分析和处理.另外,还增加了一部分支持现安全机制本身的系统调用.
图4. 某版本Unix操作系统的安全性增强设计方法
shell层
shell程序
_实用程序层
一般实用程序
可信服务程序
修改扩充的
新增加的
系统调用层
_与安全无关的系统调用
与安全有关的系统调用
(加入大部分安全检查)
新增加的系统调用(与安全检查机制有关)
_
内核程序层
与安全无关的内核程序
与安全有关的内核程序
(加入小部分安全检查)
新增加的
内核程序
硬件层
硬件接口程序
应用层
安全内核层
硬件层
系统主要进行如下安全性增强:
可信服务程序 注册程序,用户管理程序,特权用户程序等.
面向安全策略逐个分析Unix系统调用的安全性
对所有涉及安全事件的系统调用,加入相应的安全检验机制;
增加对审计机制相应的操作,主体安全等级的设置和读取,客体安全等级的设置和读取以及特权操作等系统调用.
内核程序分解为安全相关的和安全无关的两部分
安全相关部分指涉及安全事件的系统调用执行体,在系统调用层不易实现的少部分安全检查放在内核程序中完成;
增加一部分内核程序,作为安全检测的执行体和新增加系统调用的执行体.
六,虚拟化(Virtualization)
虚拟化允许用户谨慎地(carefully)以受控的方式访问复杂的对象(objects,客体),它为可信系统的设计者提供了强有力的支持.通过虚拟化,操作系统可以模拟一个计算机资源集合.一个虚拟机是真实的和模拟的硬件设施的集合:一个执行指令系统的(中央)处理机,许多可直接寻址的存储器和一些I/O设备.这些设施支持程序的运行.
很明显,虚拟资源必须通过实际的硬件或软件来支持,但真实的(real)资源未必是与仿真的资源一样的.存在许多这种类型的仿真的例子,如打印机,虚拟存储器等.
Virtualization(虚拟化)
Real machine(实机器)is emulated in a "virtual machine"
OS functionality on top of the virtual machine
Good protection and Isolation
Difficult to emulate hardware
虚拟机的概念
Multiple Virtual Memory Space
The IBM MVS/ESA operating system uses virtualization to provide logical separation that gives the user the impression(印象)of physical separation. IBM MVS/ESA is a paging system such that each user's logical space is separated from that of other users by the page mapping mechanism.
Additionally, MVS/ESA includes the operating system in each user's logical address space, so a user runs on what seems to(看来,似乎)be a complete, separate machines.
Operating System Space
User 1 Space
User 2 Space
User N Space
Operating System Space
0
A typical OS will isolate users and the OS in memory
…
Most paging system present to a user only the user's virtual addressing spaces(用户虚拟地址空间). However, the operating system is part of the logical space of each MVS/ESA user.
IBM处理机资源/系统管理器( PR/SM )系统提供了一个更强的保护.传统的操作系统有在其直接控制下的硬件设施和设备,如下屏中的图所示. PR/SM为每个用户提供一个完整的虚拟机.因此,每个用户不仅拥有逻辑内存,还拥有逻辑设备,逻辑文件以及其它的逻辑资源. PR/SM依靠严格的资源分离来执行这项技术.
PR/SM系统是虚拟内存概念的自然延伸.
MVS/ESA和PR/SM对用户之间和用户与系统硬件之间的隔离进行了改进.这种附加的复杂性增加了由于转换和保护所带来的开销.
虚拟机— IBM的VM操作系统
每个用户不仅有逻辑存储器
每个用户还有逻辑的I/O设备,逻辑的文件及其其他资源.
I/O
文件
外设
存储
CPU
操作系统
用户1
用户2
用户3
图4. 常规的(传统的)操作系统
Real machine(实机器)is emulated in a "virtual machine"
OS functionality on top of the virtual machine(虚拟机)
操作系统
图4. 常规的(传统的)操作系统
I/O设备
用户
文件
控制台
存储器
媒体/介质
处理器
Figure 4. Virtual Machine
Virtual Machine for User 1
Virtual Machine for User 3
Real System Resources
七,分层设计( Layered Designs)
正如前所述,内核化操作系统至少(at least)由四级(levels)组成:硬件,内核,操作系统和用户.这些层中的每一层自身能够包括(include)若干子层.例如,"A Security kernel for a Multiprocessor Microcomputer"中,内核有五个不同的层(five distinct layers).
在用户级,有准系统程序(quasi-system programs),如数据库管理程序(database manager)或用户接口shells,它们构成了它们自己不同的安全层.
Applications
OS
Kernel
Hardware
Layered Systems
One or more layers execute in kernel mode
Good performance, modular, extensible, rigid(严格的,固定的)structure
Difficult to design layers well
分层的信任(Layered Trust)
安全操作系统的分层视图(layered view)可以用一系列的同心圆来描述,其中最敏感的操作在最内层的层中.这样,一个进程的可信性(trustworthiness)和访问权限可以根据进程与中心的接近程度(by the process's proximity to he center)来判断.更可信的进程是更接近于中心的.
也可以将一个分层的可信操作系统描述成堆栈,其中安全功能离硬件最近,如后面中的图所示.
We can also depict the trusted operating system in layers as a stack, with the security functions closest(最靠近的)to the hardware.
Figure 4. Structure of kernel-based operating system
Figure 4. Hierarchy of sensitivities
Figure 4. Layered Operating System
Subprocesses of User Processes
User Processes
Compilers, Data Base Managers
Utility Functions
System, Device Allocation
Scheduling, Sharing, Memory Management
Synchronization, Allocation
Security Functions
Hardware
Security
kernel
Operating
System
Operating
System
Kernel
在这种设计中,一些与保护功能相关的活动都是在安全内核之外执行的.例如,用户鉴别可能包含一张口令表,要求用户提供其口令,验证口令的正确性,等等.
在安全内核内部完成所有这些操作的缺点是这些操作中的一些(例如格式化(formatting)与用户终端交互(interaction)和在已知用户的表中搜索(searching for)用户)不能保证高安全性.
换一种方法,可以在几个不同的模块中实现一个单一的逻辑功能.可信任性和访问权是分层的基础.换句话说,可以通过操作在不同层中的一组模块来执行一个单一的功能,如下屏中的图所示.每层的模块执行一个某种敏感等级的操作.
Alternatively, we can implement a single logical function in several different modules, we call this a layered design. Trustworthiness and access rights are the basis of the layering.
Figure 4. Modules Operating in Different Layers
操作系统代码
用户鉴别模块
用户接口
用户ID查表
鉴别数据更新
每一层的模块实现某种程度敏感性的操作.
鉴别数据比较
Neumann描述了用于可证明安全操作系统( PSOS, Provably Secure Operating System )的层次结构.如下屏中的表所示,一些低层向高层提供部分或全部的功能,但每一层适当地封装一些仅属于自己的内容.
分层的方法(approach)是实现封装的另外一种方法.分层被公认为是一种好的操作系统设计.每一层调用内层的服务,同时也向外层提供一定功能层次的服务.
Each layer uses the more central layers as services, and each layer provides a certain level of functionality(功能性)to the layers farther out.
Layering presents a good example of how to trade off(交换使用,折衷选择)and balance design characteristics. 分层提出了如何折衷选择和平衡设计特性.
Table 4.3 PSOS Design Hierarchy(层次)
Level
Function
Hidden by Level
Visible to User
16
User request interpreter
Yes
15
User environments and name spaces
Yes
14
User I/O
Yes
13
Procedure records
Yes
12
User processes and visible I/O
Yes
11
Creation and deletion of user objects
Yes
10
Directories
11
Partially
9
Extended types
11
Partially
8
Segments
11
Partially
7
Paging
8
No
6
System process and I/O
12
No
5
Primitive I/O
6
No
4
Arithmetic and other operations
Yes
3
Clocks
6
No
2
Interrupts
6
No
1
Registers and addressable memory
7
Partially
0
Capabilities
Yes
Table 4.4 Conventionally (Nonhierarchically) Designed System
分层的另一个理由是对破坏进行控制.
相反,分层结构有两个好处:
分层结构允许识别非常关键的部分,然后认真分析其正确性,这样问题就会少些.
隔离将问题的影响范围限制在问题发生的层及上层,从而可以限制大多数问题的影响.
Level
Functions (功能)
Risk (风险)
All
Noncritical functions
Disaster possible
All
Less critical functions
Disaster possible
All
Most critical functions
Disaster possible
Table 4.5 Hierarchically Designed System
这些设计特性-内核,分离,隔离和层次结构,一直以来都是很多可信系统模型的基础.作为最佳的设计和实现,它们经历了时间的考验.
Level
Functions
Risk(风险)
2
Noncritical functions
Few disasters likely from noncritical software (非关键软件基本不会造成灾难)
1
Less critical functions
Some failures possible from less critical functions, but because of separation, effect limited(因为分离,影响有限)
0
Most critical functions
Disasters possible but unlikely if system simple enough to be analyzed extensively(可能是灾难性,但如果系统足够简单,可以对其进行详尽地分析,不太可能发生)
八,Multics
以在历史上有重要影响的Multics操作系统为例,说明安全内核(kernel)是如何实施访问控制的.Multics是一个雄心勃勃的研究工程,其目标旨在开发安全的,可靠的,等等多用户操作系统.安全方面的许多研究,像BLP模型,都是由Multics工程计划引发的.由于它范围广泛的目标和安全需求( ,注:设计者并不完全清楚安全需求),该计划的一些成员觉得它太笨重了,于是建立了更简单的操作系统,就是Unix.就商业成功而言,这两个系统的历史就是可用性与安全性之间相平衡的一种表现.
MULTIple access Computer System,多路存取计算机系统(1965年,贝尔实验室,通用电公司和麻理工学院合作开发的操作系统)
Project MAC(Multiple Access Computer )
Multics (Multiplexed Information and Computing Service) is a mainframe timesharing operating system begun in 1965 and used until 2000. Multics began as a research project and was an important influence on operating system development. The system became a commercial product sold by Honeywell to education, government, and industry.
BLP的Multics解释
安全模型( Bell-LaPadula模型)如何用于一个安全的操作系统的设计的.作为访问控制的一个抽像模型,BLP非常适合于捕捉操作系统的安全需求.BLP中关于安全的归纳定义使它比较容易建立一个安全的系统,只需正确地定义状态转换来保证安全性.为了证明Multics是安全的,必须找到一种与BLP相一致的Multics描述,将BLP的安全概念是如何映射到Multics的.
Multics中的主体是进程,每个主体有一个包含进程信息的描述符段(descriptor segment) ,其中包括进程当前访问的客体的信息,即每个客体的段描述符字.
指向客体的指针
访问指示符标志
Segment_id
pointer
r: on
w: on
e: off
segment
descriptor
word
对于每一个这样的客体,在主体的描述符段中有一个段描述符字(SDW, segment descriptor word).SDW的格式如上屏中的图所示,包括客体名,指向客体的指针以及读,执行和写访问的指示符标志(indicator flags),这些指示符涉及表4.6中规定的访问属性.
表4 .6 Access rights in the Bell-LaPadula model
execute append read write
observe √ √
alter √ √
主体的安全等级保存在一个进程级别表(process level table)和一个当前级别表(current-level table)中,有效段表(active segment table)记录所有有效的(活跃的,active)的进程,只有活跃进程(active process)能够访问客体.
Multics中的客体是存储段,I/O设备等,客体按层次组织在一棵目录树中.目录也是段,有关一个客体的信息,像它的安全等级或访问控制列表(ACL),保存在客体的父目录中.因此,改变一个客体的访问控制参数以及建立或删除一个客体,需要对父目录写(write)或者添加(append)访问权限.
为访问一个客体,进程必须遍历从根目录到目标客体的目录树;如果路径中任何一个目录对于进程是不可访问的,则目标客体也不可访问.
相容性(Compatibility) 要求客体的安全等级支配(dominate)其父目录的安全等级.
注:Unix的文件系统已经处理了同样的问题.
在Multics系统中BLP状态集的组成(component)
用在Multics系统表和描述符段中的数据来标识(identify)BLP状态集的成分(component).
当前访问b(current access b) 保存在活跃进程的描述符段的SDW中;活跃进程可以在有效段表中找到.
描述符段基址寄存器(DSBR,descriptor segment base register)的内容指向当前进程的描述符段.
访问控制矩阵A 通过访问控制列表ACL表示;对于每个客体,ACL保存在它的父目录中;每个ACL表项指定一个进程以及进程对该客体的访问权限.
级别函数f 主体的安全等级保存在专门的进程安全等级表中,即进程级别表和当前级别表;客体的安全等级保存在其父目录中.
MAC in Multics
Multics access attributes for data segments:
read r
execute e, r
read and write w
write a
根据(in terms of)进程和数据段的安全等级以及存放在SDW中的指示符的信息描述BLP的安全特性.
Multics的星特性(*-property) 对于在活跃进程的描述符段中的任何SDW,进程的当前等级:
支配段的等级,如果读或执行指示符置位(on)且写指示符复位(off); r/e: on, w: off LC LO
受段的等级支配 ,如果读指示符复位(off)且写指示符置位(on); r: off, w: on LC LO
与段的等级相等,如果读指示符置位(on)且写指示符置位(on). r: on, w: on LC = LO
下屏中的图说明如何验证与星特性的(*-property)一致性.
current process
current-level table
DSBR
descriptor segment
of current process
subject
segment-id
object
current pro. Lc
segment-id LO
LC LO
parent directory
描述符段基址寄存器
图4. 对应访问属性只写的*-property
segment-id
Ptr
r:off
e:off
w:on
核心原语
如果在Multics内核的抽象模型中的状态转换保持了BLP的安全策略,则BLP基本安全定理就证明了Multics的"安全性".
当然,这不是安全性的一个完整证明,还必须证明核心原语的实现以及最后它们在一个给定硬件平台上的执行符合它们的规范.
例:get-read原语用process-id和segment-id作为它的参数,操作系统必须检查:
segment-id的ACL(保存在段的父目录中)是否列出了带有读允许的process-id;
process-id的安全等级支配segment-id的安全等级;
process-id是否是一个信任的主体,或者process-id的当前安全等级支配segment-id的安全等级.
如果所有三个条件都满足,访问被允许;且在process-id的描述苻段中的SDW被增加或修改.
如果segment-id的SDW不存在,一个对应的SDW被添加到process-id的描述符段中,且读指示符被置位.如果segment-id的一个SDW已经存在于process-id的描述符段中,则置位SDW中的读指示符.
如果以上三个条件中任何一个不满足,访问被拒绝.
以下是另外一些已经提出来要在Multics核心中实现的原语:
release-read 进程释放一个客体;对应SDW中的读标志被清除;如果此后没有指示器打开,SDW被从描述符段中删除.
give-read 进程向另一个进程授予读访问权限(自主性访问控制).
rescind-read 进程将赋予另一个进程的读权限收回.
create-object 进程创建一个客体;操作系统必须保证对客体目录段的写访问是允许的,并且段的安全等级控制进程的安全等级.
delete-object 当删除一个客体时,必须执行与create-object中一样的检查.
Change-subject-current-security-level 操作系统必须保证变化没有造成安全违背;这个核心原语以及原语.
change-object-security-level 不打算用于实现(稳定性).
理想的情况是,开发处理器时使它的指令集与操作系统的核心原语相吻合.相反地,核心原语可以设计成与现有处理器提供的支持相匹配.
4.3 可信操作系统的保证
(Assurance in Trusted Operating System)
考虑保证,向其他人证明模型,设计和实现是正确的方法.
一,典型的操作系统缺陷(Typical Operating System Flaws)
在操作系统安全特性的分析中,常常使用 "利用漏洞"这一术语.这些年来,在很多操作系统中都发现了漏洞.但是,这些漏洞逐渐得到了修补,而且关于可能出现薄弱点的部位的知识体系也扩大了.
已知的脆弱性(Known Vulnerabilities)-OS Flaws
I/O Processing( I/O处理)
Ambiguity in an access policy(在访问策略中的歧义)
Incomplete mediation(不完全检查)
Generality(通用性)
I/O 处理是操作系统脆弱性的最大的一个来源.
I/O是通过独立的,智能硬件子系统来完成的.所谓智能设备在自身方面(on its own)能够采取某些独立操作(action),如磁盘调度,这些独立部件常常落在(fall)安全内核的外面或在有操作系统实施的安全约束的范围之外.
执行I/O 的代码比计算机系统其它部件的代码复杂得多,并且更依赖于特定的硬件设备.由于这些理由,为了正确性复审(检查)I/O设备驱动程序,访问代码和服务例程则更困难,更不用说进行形式验证(let alone(更不用提;更别说)to verify them formally).
为了快速数据传送(in the interest of fast data transfer),I/O活动(activity)有时旁路(bypass)其它操作系统功能,如分页和分段地址转换.
I/O操作通常是面向字符的.为了速度的原因,在每个字符传送时消除了实施安全策略的指令.
访问策略的模糊性(Ambiguity in an access policy)
在操作系统安全方面的第二个重要的(prominent)弱点反映在访问策略的模糊性上.在一方面,分离用户,保护他们个体的资源;但在另一方面,用户依赖于对库文件,实用程序,公用数据和系统表的共享的访问.在策略级,在隔离和共享之间的区别(distinction)并不总是清楚的,所以在实现时也不能严格加以区分.
第三个潜在的问题领域是不完全仲裁( incomplete mediation,不完全检查).
Some systems check access only once per I/O operation, per process execution, or per machine interval(间隔,时间间隔,区间). 一些系统仅仅每次I/O操作,每次进程执行或每个机器时间间隔检查访问一次.
机制可用来实现全部保护(full protection),但在何时调用机制的策略决策是不完全的.
由于缺乏明确的需求,系统设计者采用了"最有效"的实施("most efficient" enforcement)
通用型(generality)是第四个保护弱点(weakness),特别是在大型计算机系统的商业操作系统中.
实现者设法提供用户定制他们的操作系统的安装,且允许安装其它公司的软件包;
第三方提供的软件中的一些软件作为操作系统的一部分运行.通过"(挂)钩"来安装软件包;然而,这些"(挂)钩"也成为任何人想要入侵操作系统的用户的陷门.The "hooks"( (挂)钩,异常分支(指令) )by which these packages are installed are also trapdoor for any user to penetrate(渗透)the operating system.
Examples of Exploitations (漏洞利用的例子)
在一些系统,在启动(initiate)I/O操作的访问被检查后,后来的I/O操作不再进行检查,导致了经典的检查时间到使用时间TOCTTOU缺陷.
I/O命令通常驻留在用户存储空间;在I/O操作正式开始后,任何用户可以都可以修改其命令中的源地址或目标地址.
完全的检查可以阻止这些攻击.
I/O操作也可以用于其它方式的恶意攻击.例如,如果知道操作系统使用一个公共系统缓冲区来存放即将传送给所有用户的数据;那么,任何用户都可以检索这个缓冲区,并从中提取敏感数据.利用完全检查可以消除这一缺陷.
I/O can also be involved(涉及,包含)in other ways(在其它方面)in malicious behavior. For instance, knowing the operating system uses a common system buffer to retain(保留,保持)data scheduled(预定的)for delivery(传递,发送) to all users, any user can search this buffer and extract data that would have been more carefully protected if they had been transferred to the user. In a particular attack, the data were for authentication, showing user IDs and passwords waiting to be read and validated(确认,验证)by the operating system.
Again, complete mediation would have eliminated this vulnerability.
利用漏洞进行攻击的另外一个例子涉及程序上的问题.在一个系统中,一个特殊的管理程序功能专供安装其它安全软件包之用.在其执行时,这个管理调用返回在特权模式的控制给用户.由于在这种模式下允许操作并不受到严格的监控;因此,管理程序可用于访问控制或任何其它高级安全系统访问.
在管理程序下进入的任何主体的访问权限仅局限于那些用于执行附加程序功能的客体.
Another example of exploitation involves a procedural problem. In one system a special supervisor(管理程序)function was reserved for the installation of other security packages. When executed, this supervisor call returned control to the user in privileged mode. The operation allowable in that mode were not monitored closely, so the supervisor call could be used for access control or for any other high-security system access. The particular supervisor call required some effort(费劲,努力)to execute, but it was fully available on the system.
检查时间到使用时间的失配也能引入安全问题.
The time-of-check to time-of-use mismatch(失配,配合不符)can introduce security problems, too.
在基于这种脆弱性的攻击中,一个用户访问一个客体,如缓冲区,要经过访问检查.但是在访问得到批准到访问正式开始之间的这段时间内,用户可以改变客体的指派(designation);这样用户可以访问其它不该访问的客体.
其它入侵则可以使用更复杂的脆弱性的组合.
利用简单的安全机制实现清楚的和完全的安全策略,入侵的数量就会显著地减少.
进行脆弱性分析,发现潜在的脆弱性,且使用保证技术来减轻或消除其影响.
二,关于TCB的设计与实现问题
J.P.Anderson指出,要开发安全系统首先必须建立系统的安全模型,完成安全系统的建模之后,再进行安全内核的设计和实现.在高可信操作系统开发中,要求采用形式化安全模型来模拟安全系统,以正确地综合系统的各类因素,这些因素包括系统的使用方式,应用环境类型,授权的定义,共享的客体(系统资源),共享的类型和受控共享的思想等.所有这些因素应构成安全系统的形式化抽象描述,使得系统可以被证明是完整的,反映真实环境的,逻辑上能够实现程序的受控执行的.
非形式化开发途径
安全需求
功能规范
实现
论证
测试
形式化开发途径
抽象模型
形式化规范
实现
证明
证明
图4. 安全模型与安全操作系统开发过程
形式化安全策略模型设计不仅要求建立深刻的模型设计理论,而且要发掘具有坚实理论基础的实现方法.为了模型的形式化,必须遵循形式设计的过程以及表示方法.
美国国防部的彩虹系列中的"对理解可信系统中安全模型的指导(A Guide to Understanding Security Modeling in Trusted System)",提出了指导实现的一般性步骤.
确定(identify,识别)对外部接口的需求(requirements) 给出系统安全的确切定义,提出支持可信对象的各种条件及描述安全需求的各种机制和方法,构造一个外部模型.
确定内部需求 把安全需求与系统的抽象进行结合,提出合理的模型变量,构造一个内部模型.
为策略的执行设计操作规则 把安全策略规则化,以确保系统在有效完成系统任务的同时,系统的状态始终处于安全状态中.注意,安全操作只是确保系统的状态始终处于安全状态的充分条件.
确定什么是已知的 选择适当的形式规范语言,开发相应的形式验证工具,尽量优化设计开发过程.
论证(demonstrate)一致性和正确性 模型的检查阶段,安全需求的表达是否准确,合理;安全操作规则是否与安全需求协调一致;安全需求是否在模型中得到准确反映;模型的形式化与模型之间的对应性论证等.
论证相关性 模型的实施阶段或模型在系统中的解释,也有人称为模型实现.论述关联性分层次进行,首先是实现的模式;其次是实现的架构;再其次是模型在架构里的解释;最后是实现的对应性论证.
要设计一个可信操作系统,必须从安全功能和安全保证两方面考虑其安全性.就安全保证的技术要求来说,在TCB的设计与实现中应特别注意如下方面的问题:
配置管理
分发和操作
开发
指导性文档
生命周期支持
测试
脆弱性评定
三,保证方法(Assurance Methods)
一旦了解了系统中潜在的脆弱性,就可以应用保证技术来找出脆弱点,且减低或消除其影响.Once we understand the potential vulnerabilities in a system, we can apply assurance techniques to seek out(搜出,找出, 想获得)the vulnerabilities and mitigate(减轻严重性)or eliminate their effects.
脆弱性分析
测试(Testing)
测试能够证明问题的存在性,但不能证明不存在.Testing can demonstrate(示范;证明, 论证)the existence of a problem, but passing tests does not demonstrate the absence(不存在)of problems.
在有限的时间内,很难达到充分的测试覆盖要求.It is hard to achieve(达到)adequate(足够的)test coverage(覆盖率) within reasonable time or effort.
测试仅仅基于可观察到的结果,而不是基于内部的结构,因此不能确保其完善程度.Testing based only on observable(可观察到的)effects(效果, 作用, 影响), not on the interval structure of a product, does not ensure any degree of completeness(完备性).
基于产品内部结构的测试涉及到通过增加代码来修改产品,以提取和展示内部状态.附加的功能性影响产品的行为,且自身可能是脆弱性的来源或屏蔽了其它的脆弱性. Testing based on the internal structure of a product involves(包含,涉及)modifying the product by adding code to extract and display internal states.
在实时系统的测试中,很难记录所有的状态和触发事件.和In testing real-time systems, it is difficult to keep track of all states and triggers(触发器,切换开关).
渗透测试(Penetration Testing)
为了保证可信操作系统的安全性,通常首先采用专用工具扫描操作系统的安全漏洞,从而达到发现漏洞和补救这些漏洞的目的.
操作系统安全漏洞扫描的主要目的 自动评估由于操作系统的固有缺陷或配置方式不当所导致的安全漏洞.
操作系统安全扫描的主要内容包括4个方面:
设置错误
黑客踪迹
特洛伊木马程序
关键系统文件完整性的威胁
A testing strategy often used in computer security is called penetration testing (渗入测试), tiger team analysis, or ethical(合乎道德的,伦理的)hacking.
在这种方法中,"老虎"小组成员试图摧毁正在测试中的可信操作系统."老虎"小组成员应当掌握操作系统典型的安全漏洞,且试图发现并利用系统中的这些安全缺陷.
一般来说,评价一个计算机系统安全性能的高低,应从如下两个方面进行:
安全功能 系统具有哪些安全功能;
保证 安全功能在系统中得以实现的可被信任的程度.通常以文档规范,系统测试,形式化验证等安全保证来实现.
形式化规范与验证
现在用于安全验证的形式化方法仍然是基于20世纪70年代的理论研究,在20世纪70年代后期和20世纪80年代初期也随之出现了一些实验性质的验证工具,并在这期间的一些可信操作系统原型(SAT,PSOS,Multics)的开发中得到了应用.
在可信操作系统的形式化验证中,常常用具有可推理特性规范语言和相关辅助验证工具来协助验证工作.当前与安全相关的形式化验证规范语言集和工具主要有Gypsy验证环境(gypsy verification environment,GVE),形式化开发方法(formal development methodology,FDM),层次开发方法( hierarchical development methodology,HDM),AFFIRM以及Z语言,其中Gypsy和FDM是橙皮书所建议使用的安全操作系统形式化验证工具,特别是Gypsy语言由于其特有的过程抽象技术特性,使得其在诸如LOCK和ASOS等安全操作系统的设计中得到了较为成功的应用.而Z语言则是近些年比较活跃的.应用范围较为广泛的一种形式化验证工具.
形式化安全验证技术属于形式化技术在安全信息系统规划,设计和开发过程中的应用.
形式化验证技术
形式化验证技术的目标在于提供一种方式:"允许在一个计算机系统的功能规范,开发过程和验证过程中使用一种严格的数学注释.使用一种形式化规范语言来描述一个系统,以使得它的一致性,完备性和正确性可以用一种系统的方式来获得".证明检查器和模型检查器是主要用于完成上述目标的两类工具.
证明检查器 有时也称为定理证明器,它不断地把从逻辑和集合理论中所得来的定理应用到一个假设集上直到一个所期望的目标被达到.
证明检查器自己并不产生整个证明,而是仅仅辅助用户从一个代数规范中构造一个证明,且自动执行一个定理证明过程中的冗长部分;
用户需要足够多的数学知识用于构造证明和进行证明;
不能自动完成证明,从证明检查器的行为中用户识别一个证明是处于即将被完成的过程中,还是在一个不能被完成的证明中.
模型检查器用来枚举一个系统可以处于的所有可能状态,并且依据由用户所规定的规则和条件来检查每一个状态的合法性.
模型检查器作用在一个系统的特定模型上(通常是一个有穷自动机),枚举系统可以进入的每一个状态并且依据一定的约束来检查这个状态.
一个状态机使用具有值返回函数(V-function,提供这个状态的细节)的状态和具有观察函数(O-function,定义变换)的变换来定义.
一个观察函数是通过改变一个状态的细节来工作的,这个状态是由一个函数返回的.
模型检查器的缺点:随着系统复杂度的增加,系统状态是以指数增长的,所有模型检查器易于产生不可忍受的资源竞争现象.
解决方法:可以借助于使用一个证明检查器,或同时组合这两种不同的,互相补充的形式化方法,以期这两种方法优势互补.
与可信操作系统开发相关的形式化验证技术
在可信操作系统开发中,可用形式化规范与形式化验证等形式化开发手段来提供系统的可信程度.
一般来说.形式化验证可分为两个基本阶段,即形式化安全策略模型和形式化规范模型之间的一致性验证,以及形式化规范和系统具体代码实现之间的一致性验证.
形式化规范的目的在于通过精确而又清晰的,可进行计算机处理的方法来描述系统的功能.
在一个形式化的规范中,层次化的概念通常是一个用于化简问题复杂度的最主要手段,如右图所示.
模型
顶层规范
中层规范
证明
底层规范
实现
测试/证明
证明
证明
规范的一致性
形式化规范
代码的一致性
图4. 规范层结构
形式化验证可以分几个不同的阶段,按实际要求和技术能力分别进行.
形式化验证是在形式化模型的基础上进行的,目的在于将系统所依赖的安全数学模型的完备性和一致性通过对规范的形式化验证带到系统的具体实现中.
形式化规范的目标 使用一种简洁的,无二义的且可被计算机处理的方式来描述系统的功能行为.
首先对系统的安全模型进行必要的改写,扩充,以便形成一个形式化顶层规范(FTLS),在这个形式化顶层规范中包含了用数学可验证形式来表示的安全策略.
为了确保形式化顶层规范的正确性,必须进行形式化顶层规范与系统安全模型之间的一致性证明.
类似地,形式化顶层规范被改写,扩充为更详细的形式化高层规范,并且证明形式化高层规范的正确性.
从低层形式化规范到代码的形式化验证中,所采用的技术和其它高层规范之间所采用的验证技术是不同的,这就需要引入异质的验证方式和工具;这增加了系统验证的复杂性 ,需要许多额外的开销.
Gypsy验证系统由于本身的一些特殊性,使得它可以应用在安全操作系统形式化设计的各个阶段.这也是Gypsy广泛应用于可信操作系统设计的一个重要因素.
在形式化验证中的层次分解技术,主要包括数据结构精化,算法精化和过程抽象等.
四,形式化安全验证系统结构
形式化安全验证系统又称之为安全规范和安全验证系统,典型的形式化安全验证系统至少由下列组件构成:
规范语言处理器;
验证条件生成器;
定理证明器.
语言规范处理器
规范语言是指从数学,逻辑和程序设计中派生出的形式化注释,它们的目的是用一种简捷的详细方式精确地陈述出一个给定程序系统所提供的功能.
出于和软件工具相兼容的目的,这些语言的语法已经被修改,使其具有适合于机器处理的目的.用这样的语言所写成的规范就叫做"形式化"规范,以便和那些依赖于自然语言描述的规范相区别.
一个功能规范是对一个系统的输出如何与系统输入自恰的描述.
从抽象系统属性到程序断言这个形式化验证过程序列来看,不同验证系统中的规范范畴是相当不同的.
一个规范语言处理器可以仅对规范进行语法检查,也可以产生用于表示安全性,一致性或者其它特性的逻辑表达式或者公式.
验证条件生成器
验证条件生成器(VCGs)在当前程序验证方式中扮演了一个不可或缺的角色.一个条件产生器把一个程序和有关这个程序的一些断言作为输入,生成用于宣称这两者是一致的公式.
通过把有关程序变量的断言插入到不同点的方式,一个程序就被准备为一个验证条件生成器的输入.
至少在程序体的入口处有一个进入断言,并且在程序的出口处有一个退出断言;这里假设在执行前如果进入断言是真的,则在执行后退出断言也将是真的.
在程序中的每一个循环必须为一个循环断言所"截";循环断言依赖于实现细节.
对于在程序中相邻两个断言之间的每一个途径,条件生成器都为之创建一个公式(验证条件);这个公式声称如果第一个断言是真,则第二个断言也为真,并且介于这两个断言之间的,将被执行的代码也将是正确的.如果所有的验证条件都可以被证明,则程序是部分正确的.
为了得到完全正确性,还要求一个附加的终止证明;即这个程序不含有死循环,是可终止的.
由于形式化验证系统中的证明规则和公理指定了程序断言的正确性,所以验证条件是在证明规则或者公理的帮助下产生的.
定理证明器
一个定理证明器用于处理由一个规范处理器,或者一个验证条件生成器所产生的公式.
不同形式化验证系统中的定理证明器对于从用户处获得协助的数量和类型的要求是各不相同的.一些定理证明器需要高度的人机交互,而其它则仅仅接受用于定理正面的,以公理或其它建议形式来表示的帮助.
LOCK,ASOS和DTOS被公认为形式化验证方法在系统设计中应用较为成功的几个项目,前两者使用Gspsy验证方法学,后者使用Z语言作为规范语言.
Gspsy方法学以结构化程序设计,递归证明和规范方法为基础,提供了一种形式化设计和验证的集成环境.
五,Open Source
A debate(争论)has opened in the software development community over so-called(所谓的,称做…的)open source operating systems (and other programs), ones for which the source code is freely released for public(公众)analysis.
Lawton lists additional benefits of open source:
Cost
Quality
Support
Extensibility(可扩展性)
Opponents(反对者)of public release(公开发行, 公诸于众)argue that giving the attacker knowledge of the design and implementation of a piece of code allows a search for shortcomings(缺点, 短处)and provides a blueprint(蓝图, 设计图, 计划)for their exploitation.
六,Evaluation
Most system consumers(消费者,用户)(that is, user or system purchasers) are not security experts.
安全系统的用户需要对他们使用的产品提供足够安全的保证.它们可能:
依赖制造商/服务提供商的保证;
自行测试安全系统本身;或者
依靠独立机构(评估机构)的公正评测.
若采用第2种方法,用户必须是安全领域的专家.但是大多数的用户并不是安全领域的专家.因此某种安全评估是信任安全产品所能作的唯一选择.
评估是搜集保证的证据和依据功能和保证的准则分析关于保证的证据的过程.(Evaluation is a process in which the evidence for assurance is gathered and analyzed against criteria for functionality and assurance.)它能够推断(result in)信任的度量(a measure of trust),表示系统在多大程度上满足特定的标准.
使用的标准依赖于评估的目标和使用的评测技术.
习题与思考题
一,名词解释
操作系统安全
操作系统的安全性
安全操作系统
可信软件
不可信软件
可信通路
基准[参照]监视器
引用验证机制(RVM)
安全内核
可信计算基(TCB)
受控调用
二,问答题
在多道程序系统,计算系统保护的对象是什么
描述操作系统的保护方法.
描述多道程序操作系统的主要保护功能.
描述操作系统安全的主要目标.
描述可信系统设计的基本原则.
描述安全机制的设计原则.
描述可信操作系统的安全特征(features).
在Motorola 68000中,如果状态寄存器中的跟踪位置位,每条指令执行后都会产生一个异常(中断),允许程序员运行一个异常处理例程(中断处理程序),比如用于调试程序.设置跟踪位隐含的安全问题是什么 为什么在处理异常时跟踪位必须清除
应当给多级安全操作系统的根目录分配什么样的标签
考虑多级安全操作系统中的一个目录,保存文件的安全级别有三种可供选择的方法:
将文件的安全级别和文件名一起保存在目录中.
将文件的安全级别和文件本身存放在一起,目录仅包含文件名.
将目录划分成若干区,每个安全级别对应一个区,文件名放入与它们的安全级别相对应的区中.
分析每一种方法隐含的安全问题和可用性问题.
当你注册到一个系统上后,你启动一个进程以你的身份运行.以你的身份运行的进程在你退出系统后能够继续运行吗 在你正在使用的操作系统上研究这个问题
*
*
be on the rise:上涨, 上升; 变得更有价值
*
*
laptop:便携式电脑,膝上型电脑
*
*
responsibility :(常与for, of连用)负责; 责任;职责
*
*
Release:释放, 解放, 放弃, 让与, 免除, 发表
*
Identify:识别,鉴别,标识;确认,验明确定…的起源,性质或起决定作用的特征
*
Index:索引 变址 索引信号;指数;下标
*
comes in:进来, 到达终点, 流行起来, 当选, (钱)到手
put away:放好, 储存…备用, 处理掉, 放弃, 抛弃
check in:登记, 报到
*
direct to:把(注意力,精力)贯注在…上
care about:担心
*
Authority: 权限,特许[权],授权;【信】当局
Usage: 应用,使用(情况),(习惯)用法
*
on::(在…之上, 依附于; 涉及
*
well formed: adj.形成良好的,合适的
conflict of interest:违背公众利益的行为,利益冲突
*
Multics (Multiplexed Information and Computing Service) is a mainframe timesharing operating system begun in 1965 and used until 2000. It was a major influence on subsequent systems.
MAC:多存取计算机
*
Fail Safe:故障安全;故障保险,系统可靠
*
checks on:检验,检查
*
State:声明, 陈述, 规定
as opposed to:与…相对;与…成对比;与…相反
*
Prep:(表示目的)为了, 因为, 至于, 对于, 适合于 conj. 因为
Stupid:愚蠢的,愚笨的,傻的
*
mediate :仲裁, 调停, 作为引起…的媒介, 居中调停;处于中间的
*
garbage :无用信息;垃圾, 废物;垃圾废料,无用单元,无用数据
*
Officer:官员,高级职员
Finegrained: adj.细颗粒的(粒子细小的,细纹的)
*
故障安全/失效安全默认
除非一个主体明确地给予对一个客体的访问权限,访问控制应该拒绝;Deny unless explicitly allowed.
*
Cryptic:;,;
(秘密的, 含义模糊的, 神秘的, 隐藏的
*
Spreadsheet: 电子表格,电子数据表;伸展表
stand in:v. 位于…中, 代替演员站好位置, 使花费
bypassed :绕过,给…设旁路;回避,忽视
*
encompass :包括,包含;围绕
come from:v.来自, 出生于;来自,出身于
touching on :提起;谈到;简略提到,涉及,与…有关
*
Implicit:内隐,隐(含,式) ;固有的, 不怀疑的, 绝对的
*
Legacy:遗产,传统
fund:支助, 投资;为…提供资金
*
-wise suff.(后缀);In a specified manner, direction, or position: 在特定的方式,方向或位置上:clockwise.
顺时针方向 Usage Problem With reference to; in regard to:【用法疑难】 与…有关,关于:
Shutdown: 停止系统运行,停工[机],关机
Revocation:合法性撤消;又称"合法性取消"
*
Pertinent adj. 有关的, 相干的, 中肯的
*
Argue: vt.辩论,证明,主张
*
*
Computer Security: Art and Science, P502
*
capability: 能[效,权]力,本领;权能(操作系统用)
*
Distinguish: 辨别,区别,判别
*
Distinguish: 辨别,区别,判别
*
*
*
so that: 以便,以致;所以
different from: 异于…
Overhead: (总)内务操作;(总,额外,系统)开销
*
trade off:v. 交替换位, 交替使用, 卖掉;折衷选择
*
MULTICS:MULTIple access Computer System,多路存取计算机系统(1965年,贝尔实验室,通用电公司和麻理工学院合作开发的操作系统)
*
Specify: 【动】指定,规定,确定
*
Hacking: 程序"挖口",不轨用机 ;〈计〉窃用(数据)
*
Community:社团,团体,公众;社区,共同体, (生物)群落
·上一篇:河北工程大学医学院(Operating System Security)
Operating System:
Provides an interface between the user and the hardware
Manages and allocates system resources
操作系统是计算机系统中安全的提供者.
操作系统控制程序的运行,实施资源的分配与管理;所以它也是攻击的主要目标.
User
Application Program
Command Interpreter
Graphical User Interface (GUI)
System Services
Operating System
可信系统
可信计算机系统 (trusted computer system):一个使用了足够的硬件和软件完整性机制,能够用来同时处理大量敏感或分类信息的系统.
操作系统安全 (operating system security):操作系统无错误配置,无漏洞,无后门,无特洛伊木马等,能防止非法用户对计算机资源的非法存取,一般用来表达对操作系统的安全需求.
操作系统的安全性 (security of operating system):操作系统具有或应具有的安全功能,比如存储保护,运行保护,标识与鉴别,访问控制,安全审计等.
安全操作系统 (secure operating system):能对所管理的数据与资源提供适当的保护级,有效地控制硬件与软件功能的操作系统.
就安全操作系统的形成方式而言,一种是从系统开始设计时就充分考虑到系统的安全性的安全设计方式.另一种是基于一个通用的操作系统,专门进行安全性改进或增强的安全增强方式.安全操作系统在开发完成后,在正式投入使用之前一般都要求通过相应的安全性评测.
多级安全操作系统 (multilevel secure operating system):实现了多级安全策略的安全操作系统,比如符合美国橙皮书(TCSEC)B1级以上的安全操作系统.
注:操作系统安全在计算机安全和信息系统安全中扮演着关键的角色!
操作系统安全控制中的关键技术措施往往又成为危害计算机安全的手段和环节.
操作系统实施系统安全策略,它不仅是访问请求的裁决者,它本身也是一个访问控制的安全保护对象,同时也是攻击的主要目标,是威胁信息安全的手段和途径.
工业界已经承认这样一个事实:任何操作系统都是有缺陷的;但另一方面,绝大多数操作系统是可靠的,可以基本完成其设计功能.
必须解决以下两个相互抵触的要求:
用户应能使用(调用)操作系统.
用户不能滥用操作系统.
在操作系统的某个功能模块上只有一个不太重要的故障时,可以忽略它,这对整个操作系统功能的影响甚微;一般而言,只有若干故障的某种特定组合才能对操作系统造成致命的影响.但在信息系统中与安全相关的每一个漏洞都会使整个系统的安全控制机制变得毫无价值.
最薄弱环节
安全操作系统通常与相应的安全等级相对应,例如,根据TCSEC标准,通常称B1级以上的操作系统为安全操作系统.
对操作系统安全的威胁主要有以下几个方面:
以操作系统为手段,获得授权以外或未授权的信息.它危害计算机及其信息系统的机密性和完整性.
以操作系统为手段,阻碍计算机系统的正常运行或用户的正常使用.它破坏了计算机系统的完整性,危害了计算机系统的可用性.
以软件为对象,非法复制和非法使用.
以操作系统为手段,破坏计算机及其信息系统的安全,窃取或非法获取系统的信息.
操作系统的安全性对计算机系统和信息系统的安全性有着至关重要的影响.
目前,大多电脑攻击都利用了操作系统和系统应用程序的安全漏洞,即操作系统存在的安全缺陷.
据统计,Unix操作系统已经发现100多个漏洞.主要表现在以下几个方面:
特权用户(root)有至高无上的权限,这是Unix系统的一个致命弱点;
口令与帐户不安全(每个用户都能读/etc/passwd);
系统的几种特殊命令容易被黑客利用;
suid,sgid的系统服务程序.
OS Vulnerabilities (OS Vulnerabilities discovered in 2000)
注:操作系统使用越广泛,发现的漏洞也越多!
Breakdown (击穿,破坏;崩溃) of Attackers by Operating Systems Used (July 1,2002 Dec31,2002)
Microsoft Windows suite (套件;(程序)组[集,序列]) of operating systems was used by a majority of(大部分)attackers (78%).
Considering the dominant(主要,最大;支配) market and the fact that most home users use Windows systems, this(penetration (穿过, 渗透, 突破) of Windows)was lower than expectations(预期).
在分布式安全体系中,Windows NT的集中实体认证和数据加密功能则比较脆弱,也不能限制对administrator帐户失败登录的次数.
Security breaches(破坏)are on the rise(上升)
A survey(调查,综述) of major companies reported
In 2000 25% reported system penetrations, in 2001 40% reported system penetrations
In 2000 27% reported DoS(拒绝服务)attacks, in 2001 38% reported such attacks
In 2000 85% reported viruses, in 2001 94% reported viruses
Unauthorized use of computer systems within the last 12 months
CSI/FBI 2000 Computer Crime and Security Survey
Source: Computer Security Institute
YES
NO
DON'T KNOW
Types of attack or misuse detected within the last 12 months
CSI/FBI 2000 Computer Crime and Security Survey
Source: Computer Security Institute
破坏;破坏行为
远程通信/电信欺诈
电信窃听
Dollar amount of losses by type
CSI/FBI 2000 Computer Crime and Security Survey
Source: Computer Security Institute
4.1 在通用操作系统中的保护
一,保护的客体和保护的方法
保护的客体(Protected Objects)
Memory
Sharable I/O devices, such as disks
Serially reusable(可连续重用的)I/O devices, such as printers and tape devices(磁带机,带传送机构)
Sharable programs and sub-procedures
Network
Sharable data(可共享的数据)
As it assumed(假定;担任; 承担)responsibility(责任;职责,响应性)for controlled sharing (受控的共享), the operating system had to protect these objects(客体).
操作系统保护的方法(Security Methods of Operating System)
Possible Information States …
Processing
Storage
Transmission(传输,传送)
The Information Security Objective(目标)then becomes - To preserve(保护, 保持, 保存)Security Characteristics across all three possible states of processing.
It Starts with Operating System Security …
最基本的保护是分离控制:保持一个用户的客体独立于其它客体. Rushby和Randell指出在操作系统中分离控制主要有以下几种方式:
The basis of protection is separation - keeping one s objects separate from (把…分开,把…隔开) other users. Rushby and Randell note that separation in an operating system can occur in several ways.
Physical separation(物理分离): Processes use different physical objects (e.g., separate printers for output)
Temporal separation(时间上分离) : Processes having different security requirements are executed at different times.
Logical separation(逻辑上分离) : Processes operate under the illusion (幻觉;错觉,假象) that no other processes exist.
Cryptographic separation(密码分离): Processes conceal(隐藏,隐蔽)their data & computation in a way that is unintelligible (不可理解的,难以理解的) to others.
实现的复杂度按序递增!
Systems Connected at a Single Security Level(安全等级)
Computing(计算[数据处理](技术,方法),信息处理技术)is sharing and non-location (单元;位置,定位), security is separation.
逻辑分离:操作系统实施了访问控制,程序不能访问许可域之外的对象,使得程序好像在没有其他程序的情况下运行.
Systems Connected Through A High Assurance Guard(高保证的守卫程序)
Guard might consist of four processes (Guard由4个进程组成) :
one multilevel process, P1 (multilevel),
three single level processes P2 (S), P3 (C), P4 (U)
P1 receives labeled information from multilevel input
P1 inspects(检查)label and puts information into a labeled object
P2, P3, or P4 send information from objects at its level to output system
Guard(守卫)is trusted(信任, 信赖)to insure(确保,保证)that labeled information is sent to the correct end system(端系统).
Guard可以由4个进程组成:
P1是多级安全进程,从多级安全信息输入接收标记信息;检查标记信息,插入信息到标记的客体.
P2,P3和 P4则是单级安全进程,它们只能传送在它们自己安全级的客体信息到输出系统.
Guard是可信的主体,保证加标记的信息发送到正确的终端系统.
…
S客体(P2) C2(Secret)
P1 C客体(P3) C2(Confidential)
U客体(P4) C2(Unclassified)
Levels of Information Protection
分离可以实现保护,但仍然需要某种共享.
几种方法可以帮助操作系统实现多级保护:(There are several ways an operating system can assist offering protections at any of several levels(级).)
Unprotected Systems(不保护) 敏感过程在不同的时间运行.
Isolate(隔离) 实现进程之间的隔离,并发运行的进程不知道相互之间的存在.每个进程有自己的地址空间,文件和其它客体.
Share all or share nothing(完全共享或不共享,公用或私有) 把资源划分成"共享"(public)或"独占"(private)两种,"共享"可以使资源为所有用户使用,"独占"只能由资源所有者使用.
Share via access limitation(通过访问限制的共享) 通过访问限制保护,操作系统检查用户对客体的访问是否允许;仅当允许时用户才能访问客体.
Controlled (Static) Sharing(受控的(静态)共享) 对用户和资源进一步划分,只有授权的用户才能访问指定资源.
Different people can access each item(项目;条款,内容)
Goal: control who may access each item stored in the system, e.g.
UNIX: user/group IDs, mode bits
NFS( Network File System ): access control lists(存取控制表)
Problems: implementation is complex
Programmable Sharing Controls(可设计/编程的共享控制)
Two users must agree to(同意, 允诺)modification
Access only between 2 am and 6 am
Implementation techniques
Reference monitors(基准监视器)
Capabilities(能[效,权]力;权能)
Share by capability(通过能力的共享) 受限制的访问共享的扩展,它允许动态创建对客体的共享权限.共享的程度可以依赖于拥有者或主体,计算的上下文环境或客体自己.
Limit use of an object(限制客体的使用) 不仅限制对客体的访问,而且限制对客体的使用.例如,允许查看敏感文档,但不准打印.
Tagged(标记)Information
Previous controls do checks prior to(在…以前)releasing(释放;核发,发布) information(前述的控制在核发信息以前进行控制)
May also want to control information after it is released(在信息释放后可能也要控制信息)
Very hard to do:
don't actually release(释放,解除)the information
rather(相反地), release a reference(引用)to the information
check access on each reference to it(在每次访问信息时检查访问)
what if a client memorizes(记忆,存储)accessed information (如果客户存储了访问的信息,会怎样呢 )
共享模式的实现难度按序递增,但保护强度也按序递增的.
对数据而言,控制访问的粒度
When we think about(考虑, 回想)data, we realize(认识)that access can be controlled at various (各种各样的)levels(级(别);层(次)): the bit, the byte, the element or word, the field, the record, the file or the volume. Thus, the granularity of control concerns(涉及,与…有关,参与)us.
User-programmable(可编程的)Sharing Controls
Allow weird(离奇的,古怪的,神秘的)access restrictions, e.g:
only between 9 am & 4 PM
modify only if two users agree(同意,意见一致)
Technique: build a protected subsystem(受保护的子系统)
only subsystem can access protected data
subsystem can do arbitrary checks before granting access request
Example: UNIX suid facility(设施)
二,存储器和地址空间保护
(Memory and Address Protection)
多道程序系统的最明显的(obvious)问题是防止一个程序(进程)影响其它程序(进程)的地址空间.
Isolate memory regions
Pre 70s: fence(电子篱笆)registers
1970's: base & bound registers
1990's: virtual address spaces
Who controls the address regions(区域)
Privileged status bit(特权状态位)in processor
Privilege bit must be set to manipulate(操作)any address region
Only supervisor program(管理程序)has the supervisor(管理程序,监控程序;超级用户)bit set
CPU工作模式:核心态,用户态
Memory Protection using a Fence
Processor checks all memory references(引用)to see if reference is beyond fence address.
Later implementations loaded a register with fence (电子篱笆)address so that operating system boundary could grow or shrink(收缩).
注:不可能防止用户代码,数据及其它段之间的相互干扰;
不可能防止用户进程之间的相互干扰.
Restriction: can not protect one user from(保护…不受,使…免于)another.
0
Memory Protection: Base and Bounds
Limitation: text versus data segment within same process not protected
Solution: two sets of base/bound registers
One for data
One for text
重定位(relocation) Relocation is the process of taking a program written as if(好像)it began at address 0 and changing all address to reflect the actual address at which the program i located in memory.
注:base/bounds只能实现完全共享或完全不共享环境.
Tagged Architecture(标记结构)
在标记结构中,每个数据项有一个说明其类型的标记(tag).在执行前,CPU可以从保存在存储器中的值直接检测出任何类型的违反.
标记也可以用来指示在一个存储位置上可以执行的哪一种访问操作.
标记也可以用于实施安全策略.
注:区分程序和数据的能力是一种
非常有用的安全特性,它为保护
程序不被破坏提供了基础.
缺点 存在兼容性问题.
INT
…
OP
…
STR
…
Tag Data
…
…
Tagged Architecture(标记结构)
机器内存的每个字单元都有一个或若干个额外的位(Bit)用来标识对这个字单元的访问权限,这样的访问结构称为标记结构.
Every word of machine memory has one or more extra bits to identify(识别,鉴别,标识;确认)the access rights to that word
这些访问位(标记)只能由操作系统的特权指令来设置.
Bits can only be set by privilege mode(特权模式)instructions
每次指令访问存储单元时检查和测试标记(tag).
Bits examined and tested every time(每次, 每当)that location(存储单元)is accessed
Code: R=Read-only
RW=Read/Write
X=Execute-only
tagged architecture
A tagged architecture is a hardware architecture where each memory word is divided into a "data" and a tag section. The data section is sufficiently large to contain a memory address and the tag section is used to describe how the data section is to be interpreted (that is, it encodes the type of the data).
Relevance(关联性,相关性)to memory management Tagged architectures greatly simplify the implementation of a memory manager because each word of memory is self-describing.
Historical note: The Lisp Machine is an example of a tagged architecture.
Tag
Memory Word
R
00002326
RW
8AB64210
R
X
X
RW
…
…
Tag bits
数据类型,访问权限
B6500-7500系统3位标记区分数据字(三种类型),描述符(指针)和控制字(堆栈指针和地址控制字).IBM操作系统/38用标记来控制完整性和访问.
在一组连续的地址上应用标记技术是使用标记的一种变形,如128或256个字节.
Intel I960使用标记结构扩充了处理器的体系结构,这种标记结构是每个内存字单元用一比特来标记这个字为"能力",而不是一般的数据或指令单元.访问能控制对变长存储块或段的访问.大量的可能标记值可支持60-40亿字节的内存段,并且潜在有2256个不同的保护域.
缺点 存在兼容性问题.
In an tagged architecture every word of machine memory has one or more extra bits to identify the access rights to that word. These access bits can be set only by privileged (operating system) instructions. The bits are tested every time(每次, 每当)an instruction acceses that location.
Furthermore, with a few extra tag bits, different classes of data (numeric, character, address or pointer, and undefined) can be separated, and data fields can be protected for privileged (operating system) access only.
分段(Segmentation)存储管理
Program divided into various(不同的)segments
Similar to Base bound registers
There is limited sharing in segments
Each segment could have different access right(访问权限)
One segment could be where only User A can write, and the other segments may be written by all
For indices(索引,变址;下标), Segment Translation Tables(地址转换表) are used
Segment
Starting Address
Length
Access Right
System
Segment A
Segment B
段描述符
…
User does not need to worry about(担忧,担心)segmentation(分段,分割), it is the job of the OS.
When the program run and then terminates, all its segments will be freed(释放)
If a high priority user comes in(进来,当选), then the current segments need to be temporarily put away(放好, 储存…备用)and new programs checks in(登记, 报到).
Problem with Segmentation: Fragmentation(碎片)
So Defragmentation(整理碎片)is needed, and its an overhead(开销).
逻辑地址(段名,符号名) 物理地址
(sno,offset) 段表
地址隐藏(hiding)对操作系统有三个优点:
操作系统可以存放任何段在存储器的任何位置,且可以在运行时动态搬迁;
可以实现虚拟存储管理;
每个地址访问通过操作系统,所以存在检查每次访问保护的机会.
分段管理提供的保护(Segmentation offers protective benefits):
Each address reference is checked for protection.
Many different classes of data items can be assigned a different levels of protection.
Two or more users can share access to a segment, with potentially different access rights.
A user cannot generate a address or access to an un-permitted segment.
问题:
变长段的管理,碎片问题;
分段在运行期间动态增长;
效率与保护的平衡.
从抽像的观点来看,存储器已经被分成不同的区域;于是访问控制涉及到一个数据客体或一个程序的存储位置.
注:在微观世界中基于位置的访问控制的例子;在分布式系统或计算机网络中,经常需要微观世界中基于位置的访问控制.
Virtual Memory and Limitations(虚拟存储器及其局限性)
Virtual Memory: separate(分离)virtual address spaces
Cannot share memory between programs
Can add additional descriptors(描述符)to set up(设立)shared memory, add read/write bits, etc.
Requires special hardware(专用硬件)
Performance cost(价值;成本,代价)for every memory access
分页( Paging )存储管理
Concept: Each segment is as long as another program. 每个段的长度是装入其程序所需要的长度.
Pages are fixed . 在一个系统中页的长度是固定的.
No way(无论如何不,决不 )you can write programs that can fit into(适合)these fixed sizes.
Security is difficult to implement in Paging(分页)since users are not separated.
So the problem is that security is controlled by users.
Techniques like Paging were directed to(把(注意力,精力)贯注在…上)increase the processing speed since in the older machines, speed was poor
Nowadays(如今)programmers don t care(担心)at all(根本)about speed since much faster processors are available.
逻辑地址:(Page No,off'set)
优点:消除了外部碎片,提高内存空间的利用率和性能.
缺点:保护问题,页面不是信息处理的逻辑单位.
段页式存储管理
(Combination of Paging and Segmentation )
Each segment is stored into pages :程序分段,段内分页.
分段是逻辑单元的一种划分,它是实施安全策略的良好基础.但段具有可变长度,这使得存储管理较为困难.
分页是将存储器划分成相同大小的页帧,同样地址由两部分组成,页帧号和页内偏移量.分页很流行,因为它允许高效的存储管理.
Multics的段实际上是分页的.另一方面,分页对于访问控制来说不是一个好基础,因为页不是逻辑单元.因此一个页可能包含要求不同保护的客体.
分页可能会打开一个隐蔽通道.逻辑客体可以跨越页边界存储,当这样的客体被访问时,操作系统在某个时候会要求一个新页,这时产生缺页故障中断.如果缺页可以被观察到,就像大多数操作系统中那样,那么用户就获得了比正确的访问请求结果更多的信息.
考虑一个口令方案.用户输入一个口令,该口令被逐个字符地扫描,并同保存在存储器中的一个参考口令进行比较,当发现不匹配时访问被拒绝.如果一个口令跨越页边界存放,那么攻击者可从观察到缺页推断出第一页上的口令片段已被正确猜测出来.如果攻击者可以控制将口令存放在页的什么地方,口令猜测就变得相当容易了.
三,一般客体的访问控制
(Control of Access to General Objects)
内存保护是保护一般客体的一种特殊情形.随着多道程序技术的发展,共享的数量和种类都逐渐增加.需要保护的客体:
Memory
Files or data sets(数据集)on an auxiliary storage devices
A directory of files
A hardware device
A data structure, such as a stack
A table of the operating system
A executing program in memory
Instructions,especially privileged instructions(特权指令)
Passwords and user authentication mechanism(用户鉴别机制)
The protection mechanism(保护机构,保护机制)itself
存储保护机制是简单的,因为每个存储器访问可以保证通过硬件中的某些点.对于更一般的客体(more general objects)访问点的数目要大得多,所有访问通过的中心机构(central authority)可能不存在, 且访问的种类可以不限制于读,写或执行.
保护客体的几点补充要求:
Check every access 应该检查用户对客体的每次访问.
Enforce least privilege 最小特权原则要求主体只应该访问为了完成任务必需的最小数量的客体.
例如,程序不应该访问绝对存储地址空间.
Verify acceptable usage(检验使用(情况)) Ability to access is yes-or-no decision. 还有检查对客体执行的操作.例如,对堆栈的操作是push,pop,clear等.
Need for a Secure Operating System
(安全操作系统的需要)
All applications are executed on (在…之上) the Operating System(所有应用程序在操作系统之上运行.)
Hostile (敌方的;有敌意的;不友好的) software runs with user s privileges and permissions(敌对的软件以用户特权和许可运行.)
Distinction(区别,特征)between data and code is vanishing (消失,消没,没影)(Von Neumann(冯·诺伊曼式)体系结构:不区分程序和数据.)
Malicious code is unknowingly (不知不觉地) introduced (传[引]入)
操作系统是攻击者的主要目标,所以必须维护操作系统的完整性.操作系统不仅是访问请求的仲裁者,它本身也是一个访问控制的客体(object).
规则(Rule) 用户不能修改操作系统.
这是一个通用的安全策略.必须解决如下相互抵触(对抗,竞争:competing)的要求:
用户应该能够使用(invoke,调用)操作系统;
用户不能滥用操作系统.
中断处理程序是操作系统的底层软件,工作在核心态
中断请求,系统调用(INT n,Trap n)引起CPU的模式切换到核心态
IRET,系统调用返回切换CPU的核心态到用户态
通常用于实现这些目标的两个重要概念是状态信息(status information)和受控调用(controlled invocation)(也称为受限特权(restricted privilege)).这些概念用于计算机系统的任一层次上.
受控调用
模式切换 用户程序在核心态下执行操作系统提供的系统服务,但必须加以控制.
系统在超级用户模式只能执行一组预先定义的操作;且在控制权交回给用户前返回用户模式(用户态),称这个过程(process)为受控调用.
受控调用-中断(Controlled Invocation-Interrupt) 中断处理程序在核心态(即系统态)运行.
处理器能处理程序错误,用户请求,硬件故障和处理时间引起的执行中断.
中断嵌套处理,可能会导致安全缺陷.例如,Ctrl-C;用户通过中断一个操作系统调用的执行进入管理员模式(核心态).
注:中断矢量表是一个特别令人兴奋的攻击点,必须受到充分的保护.同样,重定向指针是危害操作系统完整性的一种非常有效的方法.
4.2 可信操作系统的设计
(Designing Trusted Operating System)
操作系统安全的主要目标是:
标识系统中的用户,并进行身份鉴别;
依据系统安全策略对用户的操作进行访问控制,防止用户对计算机资源的非法访问(窃取,窜改和破坏);
监督系统运行的安全性;
保证系统自身的安全性和完整性.
软件可分为三大可信类别
可信的 软件保证能安全运行,但是系统的安全仍然依赖于对软件的无错误操作.
良性的 软件并不确保安全运行,但由于使用了特权或对敏感信息的访问权,因而必须确信它不会有意地违反规则.良性软件的错误被视为偶然性的,而且这类错误不会影响系统的安全.
恶意的 软件来源不明,从安全角度出发,该软件必须被视为是恶意的,即认为将对系统进行破坏.
注:有错的良性程序不会泄露或者破坏数据,但是不能保证它偶尔与恶意程序有同样的不良效果.
良性软件和恶意软件都归为不可信软件.
在上一节,从用户观点,要求操作系统提供的基本的(primitive)安全服务:
存储保护
文件保护
一般客体的访问控制(General object access control)
用户鉴别
如果操作系统有以一致的且有效的方式提供上述四个服务的置[可]信度,则称该操作系统是可信的.
Operating Systems(可信操作系统涉及下列关键概念)
Kernelised design(内核化设计)
Security kernel(安全内核)
Reference Monitor(基准监视器)
Trusted Computing Base (TCB,可信计算基)
Virtualization(虚拟化) –Layered Design(分层设计)
任何一个系统的开发过程一般包含以下几个步骤:
系统需求分析 描述各种不同的需求;
系统功能描述 准确定义应完成的功能,而且还应包括描述验证,即证明描述与需求分析相符合;
系统实现 设计并建立系统,其中包括实现验证,用于论证实现与功能描述之间的一致性.
安全操作系统的一般开发过程如右图所示.
安全需求分析
抽象,归纳出安全模型
建立安全模型
安全模型与系统的对应性说明
安全机制设计与实现
安全功能描述
安全操作系统可信度认证
阶段1
阶段2
阶段3
图4. 安全操作系统的一般开发过程
从设计者的观点,根据提供安全服务的构件的设计和功能来查看可信操作系统.
可信操作系统( Trusted Operating Systems )的四个主要基础(underpinning,支柱, 支撑)( Components(成分;构件)of a Trusted OS)
Policy 安全策略定义了一组意义明确的,一致的和可实现的规则,而且这些规则能被非常清楚地,无二义地表达处理.满足操作系统的安全需求.
Model 用形式化的方法来描述如何实现系统的机密性,完整性和可用性等安全需求.模型是策略的一种表示.
Design 设计包括可信操作系统是什么(它期望的功能(functionality))以及它是如何构造的(它的实现).
Trust Based on two aspects - features(特征[性];功能部件)(mechanisms,机制) and assurance(保证)(confidence(置[可]信度,信用)in its strength(强度)).
安全评估 安全功能(特征(features))- 操作系统有实施期望的安全策略的所有功能.
安全保证(assurance) 置[可]信度 - 操作系统正确地和有效地实现了安全策略.
信任
对一个系统的信任基于两个方面
特征 操作系统包含了实施安全策略所必需的所有功能
保证 操作系统的实现方式使我们信任它能够正确且有效地实施安全策略
What is a Trusted System
The word secure reflects a dichotomy(二分法): Something is either secure or not secure.
Security professionals(安全专业人员)prefer to speak of(说到,论及)trusted instead of(代替, 而不是…)secure. It is important to realize(认识)there can be degrees of trust (信任度(程度)); unlike security, trust(信任)is not dichotomy.
表4. Qualities of Security (安全质量)and Trustedness
Secure(安全的)
Trusted (可信的)
Either-or: Something either is or not secure.
Graded(分级): There are degrees of "trustworthiness."("可信赖"程度)
Property of presenter(提供者的特性)
Property of receiver(接受者的特性)
Asserted based on product characteristics(基于产品特性的断言)
Judged based on evidence and analysis(基于证据和分析的判断)
Absolute: not qualified(有资格的;合格的)as to(关于, 至于)how, where, when, or by whom used(绝对的:不受如何使用,在何处使用,什么时候使用,以及谁来使用等因素限制)
Relative: viewed(观察,查看)in context(在上下文中)of use(相对的:视应用环境而定)
系统配置,运行环境
A goal(一个目标)
A characteristic(一个特征)
例:
Trusted process(可信进程) that can affect system security(它可以影响系统安全)
Trusted product(可信产品) an evaluated and approved(已验收的,批准的)products
Trusted software(可信软件) the portion of software that can be relied on to enforce security policy(为了实施安全策略而被依赖的程序部分)
Trusted Computing base(可信计算基) the set of all protection mechanisms in a computing system
Trusted System(可信系统) able to process sensitive information(能够处理敏感信息的系统)
Common to these definitions are the concepts of
enforcements of security policy(安全策略的实施)
sufficiency of measures and mechanisms(措施和机制的充分性)
evaluation(评价,评估)
一,可信操作系统的研究发展史
Multics(Multiplexed Information and Computing Service)是开发可信操作系统最早期的尝试.1965年由美国贝尔实验室和麻省理工学院的MAC(Multiple Access Computer)课题组联合,其目标是向大的用户团体提供对计算的并发访问,支持强大的计算能力和数据存储,并且有很高的安全性.
Multics is a mainframe (主机,特大型机)timesharing operating system begun in 1965 and used until 2000. It was a major influence on subsequent systems.
虽然,Multics未能获得完全成功,但它在可信操作系统的研究方面迈出了重要的第一步,为后来的可信操作系统的研究积累了丰富的经验,其中由Mitre公司的Bell和LaPadula合作设计的BLP安全模型首次成功地用于Multics.
Adept-50是一个分时可信操作系统,可以实际投入使用,1969年C. Weissman发表了有关的Adept-50安全控制的研究成果. Adept-50运行于IBM/360硬件平台.它以一个形式化的安全模型-高水印模型(high-water-mark model)为基础,实现了美国的军事安全系统模型.
系统可以为客体标记敏感等级(sensitivity level)属性,为主体(用户)指定安全许可(clearance);系统支持的基本安全条件:
No read up
在授权情况下,可以write down
1969年B.W.Lampson通过形式化表示方法运用于主体,客体和访问矩阵(access matrix),对访问控制问题进行了抽象.
1972年,J.P.Anderson在一份研究报告中提出了基准[参照]监视器(reference monitor),访问验证机制(reference validation mechanism),安全内核(security kernel)和安全模型化(security modeling)等重要思想.
1973年,B.W.Lampson提出了隐蔽通道的概念.
D.E.Bell和L.J.LaPadula提出了第一个可证明的安全系统的数学模型,即BLP模型.
可验证安全操作系统(PSOS,Provably secure operating system)提供了一个分层结构的,基于能力(capability)的安全操作系统设计,1975年左右开始开发.
PSOS采用了分层式开发方法,通过形式化技术实现对可信操作系统的描述和验证,设计中的每一层管理一个特定类型的对象,系统中的每一个对象通过该对象的能力(权能)表示来进行访问.
内核化安全操作系统(KSOS,Kernelized secure operating system)是美国国防部研究计划局1977年发起的一个安全操作系统研究项目,由Ford太空通讯公司承担.
KSOS采用了形式化说明与验证的方法,目标是高安全和可信性.
UCLA secure Unix是美国国防部研究计划局于1978年前后发起的一个安全操作系统验证项目,由加利福尼亚大学承担.其系统设计方法与目标几乎与KSOS相同.
1983年,美国国防部发布了历史上第一个计算机安全评价标准-《可信计算机系统评估标准》(TCSEC,Trusted Computer System Evaluation Criteria ),1985年美国国防部对TCSEC进行了修订.TCSEC提供了四类七个级别.其封面是橙黄色(Orange),所以通常称为橙皮书.
Orange Book Classes
A1 Verified Design
B3 Security Domains
B2 Structured Protection
B1 Labeled Security Protection
C2 Controlled Access Protection
C1 Discretionary Security Protection
D Minimal Protection
其中,A1安全级别最高,D的安全级别最低;依次降低.
LINVS IV是1984年开发的基于Unix的一个实验安全操作系统,系统的安全性可达到橙皮书的B2级.它以4.1 BSD Unix为原型,实现了身份鉴别,自主访问控制,强制访问控制,安全审计,特权用户权限分离等安全功能.
Secure Xenix是IBM公司于1986年在SCO Xenix的基础上开发的一个安全操作系统,最初是在IBM PC/AT平台上实现的.对Xenix进行了大量的改造,且采用了一些形式化说明与验证技术.其目标是TCSEC的B2到A1级.
Secure Xenix系统采用的是改进/增强法.基于安全注意键(SAK,Secure attention key)实现了可信通路(trusted path),并且在安全保证方面重点考虑了以下目标:
系统设计与BLP模型之间的一致性;
实现安全功能的测试;
软件配置管理工具的开发.
1987年,美国Trusted Information System公司以Mach操作系统为基础开发了B3级的Tmach(Trusted Mach)操作系统.除了进行用户身份识别和鉴别及命名客体的访问控制外,它将BLP模型加以改进,运用到对Mach核心的端口,存储对象等的管理中.通过对端口间的消息传送进行控制和对端口,存储对象,任务等的安全标签来加强核心安全机制.
1989年,加拿大多伦多大学开发了与Unix兼容的安全TUNIX操作系统.改进了BLP模型,并且用Turning Plus语言重新实现了Unix内核,模块化相当好.
Turning Plus是一种强类型高级语言,其大部分语句都具有用于正确性证明的形式语义.
安全TUNIX系统的设计目标是B3-A1级,支持这个目标的关键方法在于:采用了Turning Plus语言,采用了安全策略与安全机制相当分离的方法,并且提供了一个简单而结构规范的TCB,从而简化了TCB的验证工作.
ASOS(Army secure operating system)是针对美军的战术需要而设计的军用安全操作系统,由TRW公司在1990年完成.ASOS由两类系统组成,其中一类是多级安全操作系统,设计目标是TCSEC的A1级;另一类是专用安全操作系统,设计目标是TCSEC的C2级,两类系统都支持Ada语言编写的实时战术应用程序.
ASOS操作系统具有下述特征:
操作系统本身主要是用Ada语言实现的;
采用访问控制表(ACL)实现了细粒度的自主访问控制;
根据BLP模型实现了防止信息泄漏的强制访问控制,依据Biba模型实现了确保数据完整性的强制访问控制;
在形式化验证中建立了两个层次的规范和证明,一个层次用于抽象的安全模型,另一个层次用于形式化顶层规范;
用于证明系统安全性的主要工具是Gypsy验证环境(GVE),ASOS开发了一个在GVE中工作的流分析工具,用于分析系统设计中潜在的隐蔽通道.
OSF/1是开放软件基金会于1990年推出的一个安全操作系统,被美国国家计算机安全中心(NCSC)认可符合TCSEC的B1级,其主要安全性表现为:
系统标识;
口令管理;
强制访问控制和自主访问控制;
审计.
UNIX SVR4.1ES是UI(Unix国际组织)于1991年推出的一个安全操作系统,被美国美国国家计算机安全中心(NCSC)认可符合TESEC的B2级.除OSF/1外的安全性主要表现在:
更全面的访问控制;
最小特权管理;
可信通路;
隐蔽通道分析和处理.
1991年,在欧洲共同体的赞助下,英,德,法,荷4国制订了拟为欧共体成员国使用的共同标准-信息技术安全评估标准(ITSEC,Information Technology Security Evaluation Criteria).
美国,加拿大及欧共体一起制订了通用安全评估标准(CC,Common Criteria for IT Security Evaluation),1996年1月发布了CC的1.0版.CC的2.0版已于1997年8月颁布,并于1999年7月通过国际标准组织认可,确立为国际标准.即ISO/IEC 15408.
在1992年到1993年之间,美国国家安全局(NSA)和安全计算公司(SCC)的研究人员在Tmach项目和LOCK项目的基础上,共同设计和实现了分布式可信Mach系统(DTMach,Distributed Trusted Mach).
DTMach项目的后继项目是分布式可信操作系统(DTOS, Distributed Trusted Operating System)
衍生物:供大学研究的原型系统
Fluke操作系统 Flask操作系统,增加了动态安全策略
Linux 安全性增强型版本的Linux(SELinux)
与传统的基于TCSEC标准的开发方法不同,1997年美国国家安全局和安全计算机公司完成的DTOS采用了基于安全威胁的开发方法.设计目标为:
策略灵活性,DTOS内核应该能够支持一系列的安全策略;
与Mach兼容,现有的Mach应用程序应能在不作任何修改的情况下运行;
性能应与Mach接近.
SELinux以Flask安全体系结构为指导,通过安全决策与安全实施的分离实现了安全策略的独立性,借助访问向量缓存(AVC)实现了对动态策略的支持.SELinux定义了一个类型实施(TE)策略,基于角色的访问控制(RBAC)策略和多级安全(MLS)策略组合的安全策略
极可靠操作系统(EROS,Extremely Reliably Operating System)是一个基于能力(capability,权能)的高性能微内核实时可信操作系统,是GNOSIS(后命名为KeyKOS)体系结构的第三代.
二,计算机系统安全体系结构设计的基本原则
可信系统设计的基本原则(Principles for a Secure Design)
从系统设计开始就考虑安全性(Design security in from the start)
经验丰富的系统设计专家M. Gasser在1988年指出,已有的大系统开发实践经验表明,除非在系统设计的早期考虑了安全对系统的影响,否则最后设计出来的系统很少会获得有意义的安全性.
应尽量考虑未来可能面临的安全需求(Allow for future security enhancements)
系统要实施安全增强包括两个方面的问题:
改进系统原有的安全性;
给系统增加新的安全性.
应该注意以下三个方面:
不能把"预设的"安全问题定义得太特殊,或太具体;否则会失去灵活性.
从适当的抽象层次来理解安全问题,即从问题类的角度来理解安全问题,而不是针对具体问题.
设计计划必须特别关注安全策略的定义.
隔离安全机制,并使其最小化(Minimize and Isolate security controls)
实施特权极小化(Employ least privilege)
与隔离安全机制紧密相关的概念是最小特权原理:无论在系统什么部分,只要执行某个操作,执行该操作的主体只能获得执行该操作所需要的特权,不能获得其它的特权.最小特权原理包括:
与硬件机制相关的最小特权;
与软件相关的最小特权;
最小特权总是包含用户的行为及系统管理者的行为.
结构化安全相关功能(Structure the security relevant features)
使用友好的安全相关的界面(Make security friendly) 在设计安全机制时,遵循如下的原则:
安全不应该对服从安全规则的用户引起功能障碍;
给予用户访问应该是容易的;
限制用户访问应该是容易的;
建立合理的默认规则.
不依赖于隐藏(Don't depend on secrecy for security)
系统安全体系的一个重要目标是安全不应该依赖于系统安全机制的任何部分的保密.
保护机制的设计原则
(Design Principles for Protection Mechanisms)
安全必须在整个操作系统的设计过程中考虑;在操作系统设计后,很难改进其安全性.安全考虑遍布(pervade)在操作系统设计和结构中,这隐含:
操作系统控制在主体和客体之间的交互[作用](interaction);
在操作系统设计中,包括这样的定义:哪些客体以什么样的方式被保护,什么样的主体具有访问权,以及这些访问权在什么等级上,等等.
因为安全出现(appear)在操作系统的各个部分,所以安全和其它的设计原则一直贯彻(be carried throughout )在实现,测试和维护过程中.
Saltzer(萨尔泽)and Schroeder(施罗德)describe eight principles for the design and implementation of security mechanisms. The principles draw on (吸收, 利用, 向…提取) the ideas of simplicity (简明性)and restriction (限制,约束).
Least Privilege(最小特权)
Economy of Mechanism(机制的经济性)
Complete Mediation(完全仲裁)
Open Design(开放系统设计)
Separation of Privilege(特权分离)
Least Common Mechanism(最小公用机制)
Fail Safe(故障安全,失效保护)Defaults(默认的故障安全)
Psychological Acceptability(心理上的接收能力) -Easy to use(容易使用)
这些原则建立在简明性和约束的概念上.
These principles build on the ideas of simplicity(简明性,简单性)and restriction(限制, 约束).
简明性使设计和机制容易理解.更重要的,对于简单设计能少走错路.
最小化系统构件之间的交互作用,使在构件之间传送的数据检查减到最少.
简明性也减少了在策略中潜在不一致性的可能.
Restriction(限制,约束)minimizes the power(能力,权力)of an entity(实体). The entity can access only information it needs.("须知"原则)
The principles of secure design discussed in this section express common-sense (常识,具有常识的) applications of simplicity(简单性)and restriction in terms of (根据, 按照, 用…的话, 在…方面) computing. 安全设计的原则反映了在信息处理技术方面的简明性和限制/约束的常识应用.
Least Privilege
(最小特权)
This principle restricts how privileges are granted (授权,允许(许可,同意)). 限制特权如何授予.
主体应该只给予为了完成任务所需要的特权.
类似于"须知"原则
除非必需,不授予权限
如果需要授予附加的权限,尽可能快地取消授予的权限
许多Unix的daemon进程并不需要授予root特权
Definition The principle of least privilege states (规定,声明) that a subject (主体) should be given only those privileges that it needs in order to(为了)complete its task.
In practice (在实践中, 实际上), most systems do not have the granularity (粒度) of privileges and permissions(特权和许可的粒度)required to apply this principle precisely.
Should only have rights needed to complete the task required
Default should be lack of(缺少)access(默认规则是拒绝访问)
Allow as little access as possible for job
Economy of Mechanism
(机制的经济性)
This principle simplifies (单一化, 简化) the design and implementation of security mechanisms.
保护系统的设计应小型化,简单,明确.
保护系统应该是经过完备测试或严格验证的.
安全内核
Definition The principle of economy of mechanism states that security mechanisms should be as simple as possible.
简化的优点:
Sufficiently(足够地,充分地)small and simple to be verified(验证)and implemented
Keep it small and stupid(傻的)
Example: security kernel
Interfaces to other modules are particularly suspect (令人怀疑的, 不可信的), because modules often make implicit (内隐,隐含) assumptions about input or output parameters or the current system state; should any of these assumptions be wrong, the module's actions may produce unexpected, and erroneous, results. Interaction (相互作用,交互作用) with external entities, such as other programs, systems, or humans, amplifies (放大, 增强) this problem.
Complete Mediation
(完全检查)
This principle restricts the caching (高速缓(冲)存(储)(技术,方法)) of information, which often leads to(导致)simpler implementations of mechanisms.
限制信息缓存
对客体的每次访问必须进行验证;不存在绕过访问控制的通路
完整的访问控制-基准监视器
例:对文件的访问.
Definition The principle of complete mediation requires that all accesses to objects (客体) be checked to ensure that they are allowed.
基于许可的原则,默认条件应是拒绝访问!
Open Design
(开放设计)
This principle suggests (建议, 认为, 暗示) that complexity (复杂性)does not add security.
简明性原则:复杂性并不能增加安全性
保护机制应该是公开的,安全性不应该依赖于设计或实现的保密.例:加密系统的安全性依赖于密钥而不是加密算法.
例:MAC(强制访问控制)
Definition The principle of open design states that the security of a mechanism should not depend on the secrecy (秘密,保密) of its design or implementation.
保护机制一定不能依赖于潜在攻击者的无知;机制必须是公开的,且依赖于相对很少的关键项的保护.
Separation of Privilege
(特权分离)
This principle is restrictive (限制性的) because it limits (限制,限定) access to system entities.
限制对系统实体的访问
责任分离
fine-grained control (细粒度控制)
Definition The principle of separation of privilege states that a system should not grant (同意, 准许,授权) permission based on a single condition.
对实体的访问应该受到多个安全条件的约束,如用户身份鉴别和密钥等.这样,能攻破一个保护系统的人员就不会获得完全的访问权.在BSD UNIX系统, 使用su命令进入root,需要口令和在wheel组中的uid .
Least Common Mechanism
(最少公用机制)
This principle is restrictive (限制性的) because it limits sharing.
用来访问资源的机制不能共享
共享资源(包括访问通道)可以导致隐蔽通道或者其它的不期望的风险.
Internet共享通道,导致了不期望的DOS攻击
Definition The principle of least common mechanism states that mechanisms used to access resources should not be shared.
共享的客体为信息流提供了潜在的隐蔽通道,系统为了防止这种潜在通道应采取物理或逻辑分离的方法.
用来访问资源的机制不能共享;
拒绝服务攻击(Denial of Service (DoS)).
Fail Safe Defaults
(故障安全/失效安全默认)
This principle restricts how privileges are initialized when a subject or object is created.
Definition The principle of fail-safe defaults states that, unless a subject is given explicit (明确;显式) access to an object, it should be denied access to that object.
故障安全/失效安全默认
Deny unless explicitly allowed.
默认许可必须是None;
如果操作不能完成,对安全状态的修改必须被撤销,系统恢复到在操作前的状态;
如果超级用户特权(root)需要用来完成特定操作,恢复部分必须取消特定的特权.
Those they need access should argue(说服;证明,主张) that they need access rather than there being an argument(论据, 论点)that access should be taken away(取走) 应该说明给予访问的理由而不是拒绝访问的理由.
默认情况下应该是拒绝访问.一个稳健的设计者要识别那些"将被"访问的项,而不是不能被访问的那些项.
Psychological Acceptability(or Easy of Use)
This principle recognizes (认可, 承认, 公认) the human (人的, 人类的) element in computer security. 这个原则考虑到在计算机安全中的人为因素.
资源访问不应该比不存在安全机制的访问更困难.
安全机制不应该使软件不必要地难于使用.
复杂性可能导致在建立/配置中出错;更糟地是,正确建立从来不能完成.
通用操作系统的安装
Definition The principle of psychological acceptability states that security mechanisms should not make the resource more difficult to access than if the security mechanisms were not present.
实际上,存在附加的负担,但负担必须减至最小,且是可接收的.
方便使用 友好的用户接口.
User interface should be easy to use so that users apply the mechanisms easily or they can be automatically applied easily
Don t confuse(使混乱,使迷惑;混淆,混同)users or drive them crazy (疯狂的,狂热的,不安全的)
Otherwise the mechanisms will be bypassed (绕过,忽视)
操作系统安全的可信性主要依赖于安全功能在系统中实现的完整性,文档系统的清晰性,系统测试的完备性和形式化验证所达到的程度.
Summary
上述设计原则对于安全机制的设计和实现是基本的;它不仅包含技术的详细说明,而且包括了人的交互作用,如最小特权原则.
这些原则贯穿在安全系统的设计和实现的所有过程中.
争议的是开放源软件.
These principles pervade (遍及;渗透) all research touching on (提起;谈到) the design and implementation of secure systems.
Experimental data for the debate(讨论,辩论) about the efficacy (效力,功效) of open source software is lacking. An interesting (有趣味的, 引起好奇(或注意)的) research project would be to design an experiment that would provide evidence (证据) either for (适合于) or against(反对)the proposition (主张, 命题) that if source code for software is available, then that software has (or causes) fewer security problems than software for which source code is not available. Part of the research would be to determine how to make this question precise, what metrics (度量,尺度;公制) and statistical techniques should be used to analyze the data, and how the data should be collected.
可信操作的设计
最少特权 (Least privilege) 每一个用户和程序都应该通过使用尽可能少的特权进行操作.这样,无意或者带有恶意的攻击所造成的危害就最小.
机制的经济性 (Economy 0f mechanism):保护系统的设计应该小而简单,且直截了当.这样的保护系统能够被详细分析和穷举测试,或者能够被验证,因而是值得信任的.
开放设计(Open design) 保护机制一定不能依赖于潜在攻击者的无知;机制应该是公开的,且依赖于相对很少的关键项的保密,如一个口令表.开放设计还应接受广泛的公开审查,这样就能够对设计安全性提供独立的验证.
完全检查(Complete mediation) 每次访问企图都必须被检查.直接访问企图(请求)和绕过访问检查机制的企图都应该被考虑,而且检查机制应被正确摆放以避免被绕过.
基于许可的(Permission based) 默认情况下应该是拒绝访问.一个稳健的设计者要识别那些"将被"访问的项,而不是不能被访问的那些项.
特权分离(Separation 0f privilege) 理想情况下,对对象的访问应依赖于多个条件,比如 用户鉴别再加上密钥.这样,能攻破一个保护系统的人就不会获得完全的访问权.
最少公用机制(Least common mechanism) 共享对象为信息流提供了潜在通道.采用物理或者逻辑隔离的系统减少了共享的风险.
易用性(Ease Of use) 如果一个保护系统用起来很简单,那么人们就会使用它.
Research Into Secure Operating Systems (RISOS)
Goal: 帮助计算机,系统管理人员理解在操作系统中存在的安全问题,并帮助决定为了加强系统安全要求多少程度的努力(工作).
企图为检测一些问题开发一套方法和软件,以及开发为避免和改善其它问题的技术.
Attempted to develop methodologies(一套方法)and software for detecting some problems, and techniques for avoiding and ameliorating(改善,改进)other problems
Examined Multics, TENEX, TOPS-10, GECOS, OS/MVT, SDS-940, EXEC-8
Classification Scheme(分类表)
Incomplete parameter validation(确认,验证)
Inconsistent parameter validation
Implicit sharing of privileged/confidential(秘密级) data
Asynchronous validation/inadequate serialization
Inadequate identification/authentication/authorization
Violable(可侵犯的,易受侵犯的)prohibition/limit
Exploitable(可利用的)logic error
Incomplete Parameter Validation
不完全参数验证
Parameter not checked before use
Example: emulating integer division in kernel(在内核中仿真整型数除法)(RISC chip involved,涉及,包含)
Caller provided addresses for quotient(商), remainder(余数)
Quotient address(商地址)checked to be sure it was in user's protection domain
Remainder address not checked(未检查余数地址)
Set remainder address to address of process' level of privilege (进程的特权级)
Compute 25/5 and you have level 0 (kernel) privileges
Check for type, format, range of values, access rights, presence (or absence)
Inconsistent Parameter Validation
不一致的参数验证
Each routine checks parameter is in proper format for that routine(例程)but the routines require different formats
每个例程检查参数是在其例程要求的正确的格式,但这些例程要求不同的格式.
Example: each database record 1 line(行), colons separating fields (冒号(:)分隔数据字段)
One program accepts colons, newlines(新行,换行)as pad(填充)of data within fields 一个程序接收冒号,换行字符作为在数据字段内的填充符.
Another program reads them as field and record separators(记录分隔符)
This allows bogus(伪造的) records to be entered 这样允许伪造输入记录.
Implicit Sharing of Privileged/Confidential Data
特权/机密数据的隐式共享
OS does not isolate users, processes properly
操作系统没有适度地隔离用户,进程.
Example: file password protection(文件口令保护)
OS allows user to determine when paging(分页)occurs 操作系统允许用户决定何时发生分页.
Files protected by passwords
Passwords checked char by char(逐个字符); stops at first incorrect char
Position guess for password so page fault(页(面)失效,缺页)occurred between 1st, 2nd char
If no page fault, 1st char was wrong; if page fault, it was right
Continue until password discovered
Asynchronous Validation/Inadequate Serialization
异步确认/不适当的串行化
Time of check to time of use flaws(检查时间到使用时间TOCTTOU的缺陷), intermixing((使)混杂; (使)混合)reads and writes to create inconsistencies (同时读和写产生不一致性)
Example: xterm flaw
Inadequate Identification/Authorization/Authentication
(不适当身份识别/授权/鉴别)
Erroneously identifying(识别,标识)user, assuming(擅取, 侵占; 采用)another's privilege, or tricking(欺骗,哄骗)someone into executing program without authorization(授权,委任,核准 )
Example: OS on which access to file named "SYS$*DLOC$" meant process privileged(在一操作系统中,访问命名为"SYS$*DLOC$" 文件的进程意思是特权进程.)
Check: can process access any file with qualifier(限定词;量词)name beginning with "SYS" and file name beginning with "DLOC"
If your process can access file "SYSA*DLOC$", which is ordinary file, your process is privileged(如果你的进程可以访问文件"SYSA*DLOC$",它是普通文件,你的进程是有特权的.)
Violable Prohibition/Limit
(违反禁止或限制)
Boundary conditions not handled properly(未适度地处理边界条件或限制条件)
Example: OS kept in low memory, user process in high memory
Boundary was highest address of OS
All memory accesses checked against this
Memory accesses not checked beyond end of high memory(存储器访问未检查超过高位存储器( high memory )的末端.)
Such addresses reduced modulo memory size
So, process could access (memory size)+1, or word 1, which is part of OS …
OS
0
Exploitable Logic Error
(利用逻辑错误)
Problems not falling into other classes
Incorrect error handling, unexpected side effects(副作用), incorrect resource allocation, etc.
Example: unchecked return from monitor
Monitor adds 1 to address in user's PC, returns
Index bit (变址位;indicating indirection,间接寻址) is a bit in word
Attack: set address to be –1; adding 1 overflows, changes index bit, so return is to location stored in register 1(返回到存储在寄存器1中的存储单元)
Arrange for(安排)this to point to(指向,针对)bootstrap program(引导程序)stored in other registers
On return, program executes with system privileges
Legacy of RISOS
First funded(为…提供资金)project examining vulnerabilities(脆弱点)
Valuable(有价值的)insight into(对…的了解,对…的洞察力)nature of flaws
Security is a function of site requirements(站点需求)and threats
Small number of fundamental(基本的,原始的)flaws recurring(复发)in many contexts
OS security not critical factor(关键因素,主要因素)in design of OSes
Spurred(刺激, 鼓舞, 鞭策)additional research efforts into detection, repair(修理)of vulnerabilities
三,普通操作系统的安全特征
(Security Features of Ordinary Operating Systems)
多道程序操作系统实现了若干与安全有关的功能.
Multiprogramming (多道程序技术)
What we worry about(担忧,担心)in Ordinary Operating Systems(普通操作系统)
Authentication of users
Protection of Memory
File and I/O device access control
Allocation and access control to general objects (一般客体,一般对象)
Enforcement of sharing (integrity issue)
Guarantee of fair service(公平服务)
Interprocess communication and synchronization
Protection of operating system protection data
Multiprogramming OS Functions
Identification of users(用户身份识别)
Authentication of users(用户认证/鉴别)
Protection of memory(存储保护)
File and I/O device access control(文件和I/O 设备访问控制)
Allocation and access control to general objects: concurrency and synchronizing(对一般对象的分配和访问控制:并发和同步)
Enforcement of sharing(实施共享)
Guarantee of fair service(保证公平服务)
Interprocess communication and synchronization(进程之间的通信与同步)
Logging of user actions(用户活动的日志)
Report actual (and potential ) security violations(报告实际(和潜在)的安全违反)
注:Most of these functions are security based (立基于, 基于…, 以…为基础) 大部分这些功能是安全的基础.
Overview of an Operating System's Functions
User Interface
用户身份识别与鉴别
四,可信操作系统的安全特性
(Security Features of Trusted Operating System)
与常规(regular)操作系统不同,可信操作系统集成了(incorporate)致力于解决安全功能和安全保证(features and assurance)的技术.可信操作系统的设计是需要慎重处理的(delicate,微妙的, 需慎重考虑的),涉及合适的,一致的一组功能部件(features)的选择,以及这些功能部件已经正确地组合(have been assembled)和实现的合适的保证程度.
注意客体是如何被访问控制机制所包围.相对于传统的操作系统,该机制提供了更多的保护和分离.此外,内存也按用户划分,且数据和程序库有受控的共享和分离.
Notice how objects are accompanied(伴随,与…同时发生)or surrounded by an access control mechanism, offering far more protection and separation than does a conventional(常规的, 传统的)operating system. In addition, memory is separated by user, and data and program libraries(程序库)have controlled sharing(受控共享)and separation(分离).
Security Functions of a Trusted Operating System
Sharing Data
Authentication
User Interface
Access Control
服务,访问控制
资源分配
普通操作系统的安全特性
用户鉴别
内存保护
文件和输入,输出设备访问控制
对一般对象的分配和访问控制
共享的实施
保证公平服务
进程间通信和同步
对操作系统保护数据的保护
可信操作系统的安全特性
用户识别和鉴别
强制访问控制
自主访问控制
对象重用保护
完全检查
可信路径(可信通路)
审计
审计日志精简
入侵检测
用户身份识别和鉴别 身份识别和鉴别是众多计算机安全的基础.它包含用户鉴别和用户身份的内部唯一标识.
强制访问控制和自主访问控制
Mandatory Access Control (MAC)
访问控制策略的判决不受一个对象的单个拥有者的控制.
中央授权系统决定哪些信息可被哪些用户访问,而用户自己不能够改变访问权限.
强制访问控制出现在军事安全中.
Discretionary Access Control (DAC)
拥有者能够决定谁应该拥有对其对象的访问权及其内容.
在商业环境中,常用DAC来允许指定群体中的所有人(有时是其他的命名个体)改变访问权.
MAC和DAC可同时应用于同一个对象.MAC的优先权要高于DAC.
完全仲裁 所有主体对客体的的访问必须受到控制.高可信操作系统执行完全仲裁,意思就是所有的访问必须经过检查.
安全是系统范围的,包括初始化,恢复和关机.
完全仲裁允许取消访问.
系统的安全取决于鉴别机制.
为了让强制或者自主访问控制有效,所有的访问必须受到控制.
如果攻击者通过内存,外部端口,网络或者隐蔽通道请求访问,那么仅仅对文件的访问进行控制是不够的.由于需要控制更多的访问路径,可信操作系统的设计和实现难度就大大增加了.高可信操作系统执行完全检查(complete mediation),意思就是所有的访问必须经过检查.
对象重用(object reuse) 对曾经包含一个或几个客体的存储介质(如页帧,盘扇面,磁带)重新分配和重用.为了安全地进行重分配,重用,要求介质不得包含重分配前的残留数据.
对象重用保护
计算机保持其效率的一种方法就是对象重用;但对象重用可能产生严重的脆弱点.
通常,文件占用的空间来自于磁盘上先前被用过,但现在已被释放的空间,或其他存储设备上的空间.被释放的空间是"脏"的,也就是说,它仍然包含先前用户的数据.
恶意的用户会申请大量磁盘空间,然后从中获取敏感信息.这种攻击被称为对象重用攻击.
这个问题包括磁盘,主存,处理器的寄存器,其他磁介质(例如磁带)或者其他可重用的存储媒体.
磁介质对于此类攻击尤其脆弱.非常精密和昂贵的仪器有时候能够将最近的数据和它先前记录的数据分开,然后再将后者与后者之前的数据分开,依次类推.这种威胁,称为磁记忆(magnetic remanence,顽磁,剩磁) .
在任何情况下,操作系统在允许对资源的访问之前必须负责清除资源上的信息.
可信通路(Trusted Path )
终端人员能借以直接与可信计算基通信的一种机制.该机制只能由有关终端操作人员或可信计算基启动,并且不能被不可信软件模仿.
恶意用户获得不合适访问的一种途径就是"欺骗"用户,使他们认为自己正和一个合法的安全系统在通信,而实际上这时候他们键人的内容以及命令已经被截获且分析了.
因此,对于关键的操作,如设置口令或者更改访问许可,用户希望能进行无误的通信(称为可信通路),以确保他们只向合法的接收者提供这些重要的,受保护的信息.User-TCB (可信计算基)
在一些操作系统中,用户通过输入一个惟一的键序列(如Windows NT操作系统的Ctrl+Alt+Del键序列,称为安全注意序列(secure attention sequence,SAS)来请求一条可信通路.这个惟一键序列在设计上直接被安全实施软件截获.在其它可信系统中,与安全相关的改变只能在系统启动的时候进行,也就是说,改变只能在除安全实施代码外的其他任何进程运行之前进行.
可审计性和审计
(Accountability and Audit)
一个与安全相关的行为或许就像对对象的单独访问那样简单,如对文件的访问;或许就像集中访问控制数据库的改变一样重要.
可审计性(Accountability,责任性)通常涉及到维护与安全相关的,已发生的事件日志,即列出每一个事件和所有执行过添加,删除或改变操作的用户.
显然,需要保护审计日志不被外界访问,并且记录所有与安全相关的事件.
与安全有关的事件必须日志
审计跟踪
审计日志的简化
责任性和审计(Accountability and Audit)
Accountability usually entails(需要,要求)maintaining a log of security-relevant events that have occurred, listing each event and the person responsible for the addition, deletion, or change. This audit log(审计日志)must obviously be protected from(保护…不受,使…免于)outsiders(外来者,外人), and every security-relevant event must be recorded.
We have been referring to this as "audit." Systems should be built to audit themselves. Attackers are discouraged(使…气馁,阻止)by the very(很,极,完全 )knowledge that their actions are being recorded.
It is true that there are tensions(张力,紧张;平衡强烈对立的因素间的平衡关系)among the above principles. System designers make tradeoffs based on knowledge of context, etc.
审计日志精简
(Audit Log Reduction )
A final difficulty is the "needle in a haystack" (大海捞针)phenomenon.
一些可信系统执行审计精简(Audit reduction)用分离工具来精简审计数据的数量.
在这种方式中,对审计数据进行分析提取,只保留那些对判断事件有意义的数据,通过直接查阅这些数据,就能知道是否有安全事件发生了.对于大多数分析来说,精简的审计日志就够了.
入侵检测(Intrusion Detection)
与审计精简紧密联系的是检测安全漏洞的能力,理想情况下是在它们发生的时候就被检测出来.
在审计日志中有太多的信息需要人们去分析.但是计算机有助于将独立数据联系起来.
入侵检测(intrusion detection)软件构造了正常系统使用的模式,一旦使用出现异常就发出警告.
Logging and MACs (file hashes to detect alteration) are primary methods of detection, although intrusion detection systems which actively watch for(守候, 注意, 监视)intruders are becoming more common. Intrusion detection software builds patterns of normal system usage, triggering an alarm any time the usage abnormal(反常的,不规则的).
检测的基本方法:日志和消息认证码MAC(Message Authentication Code)
主动监视入侵者的异常行为,且能触发报警
五,内核化设计(Kernelized Design)
安全内核用来控制整个操作系统的安全操作.
可信应用软件由两部分组成,即系统管理员和操作员进行安全管理所需的应用程序,以及运行具有特权操作,保障系统正常工作需要的应用程序.
用户软件由可信软件以外的应用程序组成.
高安全级别的操作系统首先对整个操作系统的内核进行分解,产生安全内核;因此,安全内核是从内核中分离出来的,与系统安全控制相关的部分软件.例如,KSOS和UCLA Secure Unix,它们的安全内核已经足够小,所以能够对其进行严格的安全性验证.
User and Applications
可信应用软件
图4. 可信操作系统一般结构示意图
低开发代价的可信操作系统则不再对操作系统进行分解,此时安全内核就是内核.这种结构的例子有Linux IV,Secure Xenix,TMach和Secure TUNIS等.
操作系统的可信应用软件和安全内核组成了系统的可信软件,它们是可信计算基的一部分,系统必须保护可信软件不被修改和破坏.
TRUSTED OPERATING SYSTEM CONCEPTS
There are a few basic concepts(几个基本概念)that are fundamental(基本[础],重[主]要)when dealing with trusted OS: (在处理可信操作系统时,存在几个基本概念,它们是基础:)
the kernel(内核)is the part of the OS that performs the lowest-level functions
the security kernel (安全内核)is responsible for enforcing the security mechanisms of the entire OS
the reference monitor (RM ,基准监视器,引用监视器) is the part of the security kernel that controls access to objects
the trusted computing base (TCB ,可信计算基) is everything in the trusted OS necessary to enforce the security policy
受保护子系统是程序和数据的集合.只有在这个集合中的程序可以用来访问集合中的数据.同样,对程序的访问被限制到只允许从特定的入口点开始执行.
这个结构认为子系统有运行鉴别例程的习惯,且认证它自己.简言之,创建了对客体的可编程形式的访问控制.
优点:灵活,创建对客体访问控制的可编程形式.
缺点:改变访问控制策略要求替换程序;策略和机制分离的界线不清楚.
探索创建受保护子系统的机制驱动了在70年代的操作系统的安全研究.
A protected subsystem is a collection(集合,聚集;收集,汇集)of programs and data. Only programs in the collection can be used to access the data. Also, access to programs is limited to allowing execution starting from specified entry points.
安全内核
第二种感兴趣的体系结构是安全内核.
The second architecture of interest is a security kernel. We have already argued(证明,主张)that to provide assurance that a system is secure, all security mechanisms should be small and localized(局部的,定位的,固定的). Security should be a fundamental abstraction built into the lowest level of the system. The resulting abstraction, a reference monitor, mediates all access to all objects. To implement a reference monitor, a security kernel must be at the lowest level of the system so that all accesses will be mediated.
内核(kernel)是操作系统的一部分,它执行操作系统的最底层功能.在标准的操作系统设计中,内核实现这样一些操作,如同步,进程间通信,消息传递以及中断处理.
一个安全内核负责实施整个操作系统的安全机制.
安全内核负责在硬件,操作系统,计算系统的其他部分之间提供安全接口.
一般说来,安全内核被包含在操作系统内核中.
实现安全内核的若干原则:
There are several principles for implementing a security kernel:
Completeness (完备性) All accesses to all objects must be mediated(仲裁, 调停,斡旋)by the security kernel.
Isolation(隔离) The security kernel must be protected from outside tampering(窜改). 防止安全内核被窜改.
Verifiability(可验证性) To increase assurance, a correspondence must be shown(显示,证明)between the security policy and the actual implementation of the security mechanisms in the security kernel. 证明在安全内核实现的安全机制和安全策略之间的对应性.
注:完备性和隔离通常是借助某种硬件支持来完成的.验证则通过数学证明来完成.Completeness and isolation are usually done with some kind of hardware support (e.g. supervisor vs. user modes in a system). Verifiability is accomplished through a mathematical proof.
安全内核的成功依赖机制的完备性和隔离的机制.而在受保护环境子系统,成功依赖于鉴别和对数据的访问.
The success of the security kernel depends on mechanisms for completeness and isolation. In the case of(在…的情况)the protected subsystem, success depends on authentication and access to data. In both cases we have identified(确认,融入)a trusted computing base (TCB,可信计算基). This is the thing that must work for(为…工作,为…尽力)security to work(研究).
内核是操作系统的一部分,它执行操作系统最底层的功能.在标准的操作系统设计中,内核实现像同步,进程间通信,消息传递以及中断处理等功能.
The kernel is also called a nucleus(核心程序)or core (核心).
在操作系统内核内的安全内核负责整个操作系统的安全机制的实现.
Security Kernel(安全内核)within the OS Kernel is responsible for(为…负责)implementing the security mechanisms of the entire operating system.
安全内核为在硬件,操作系统和计算机系统的其它部分之间提供接口.
Security Kernel provides the security interfaces among the hardware, the operating system, and the other parts of the computing system(计算机系统).
安全内核(security kernel) 通过控制对系统资源的访问来实现基本安全规程的计算机系统的中心部分.实现基准监视器概念的可信计算基的硬件,固件和软件元素;包括引用验证机制,访问控制机制,授权机制和授权管理机制等部分.安全内核必须仲裁所有的访问,必须保护不被修改,并且证明是正确的.
构造安全内核的理由
覆盖 对受保护对象的每次访问必须通过安全内核.这样才能确保每次访问都被检查.
隔离 通过将安全机制从操作系统的其余部分和用户空间中隔离出来,容易保护安全机制免遭操作系统或用户的侵入.
统一(Unity,单一) 所有的安全功能都由单一的代码集合来执行,这样,追踪由于这些功能引起的任何问题的原因就会容易一些.
可修改性 易于对安全机制做出修改和对这种改变进行测试.
紧凑性(Compactness,致密性) 由于安全内核只是执行安全功能,所以它相对较小.
可验证性 由于相对较小,安全内核能够被严格地分析.例如,我们能够利用形式化的方法来确保设计覆盖了所有的安全状况.
Implementation of a security kernel:
May degrade(降低)system performance (one more layer,因为内核在用户程序和资源之间又添加了另外一层接口).
May be large(内核可能包含了所有的安全功能).
No guarantees(没有保证).
Addressing Computer Misuse (误用,滥用)
不需要安全内核的能力来解决(address):
用户错误 用户教育与培训.
特权的滥用(abuse of authority) 审计.
直接探测 健全的(sound)管理和审计.
安全内核特别适合于(suited for)解决几种类别的滥用:
恶意软件的探测 MAC策略.
渗透(penetration) 高保证系统
破坏(subversion) countered(反击,还击)by high assurance systems.
Security Kernel from a Existing Operating System No!
Security Kernel Design using Existing Operating System
Security functions may be diffused(散布)throughout system.
Collecting these functions into a security kernel may(收集这些安全功能到安全内核是可能的).
Create a large unverifiable(无法证明的; 无法检验的)kernel.
Destroy operating system's modularity(破坏了操作系统的模块性).
大量的重新设计要求:
隔离安全相关的功能性(functionality);
保证模块性;
保证使用支持安全内核的硬件特性(features).
Level
0: Hardware
1: Operating System Kernel:
Hardware interactions
Access control
2: Operating System:
Resource allocation
Sharing
Access control
Authentication functions
3: User tasks
Figure 4. Combined Security Kernel/Operating System
=Security activities
硬件安全机制
绝大多数实现操作系统安全的硬件机制也是传统操作系统所要求的.优秀的硬件保护性能是高效的,可靠的操作系统的基础.计算机硬件安全的目标是保证其自身的可靠性,并为系统提供基本安全机制.
基本硬件安全机制包括存储保护,运行保护,I/O保护等.
处理机提供的保护:
存储管理部件;
工作模式,保护环;
保护操作系统不受侵犯,第一个先决条件是区分代表用户的行为和代表操作系统行为的能力.
特权指令.
注:操作系统能够保护自己不受用户侵害的第一个必备条件是能够区分"代表"操作系统的计算和"代表"用户的计算.身份标志可用来表示这个意思,允许系统工作在不同的模式.
Unix操作系统能够区分超级用户(root)模式和用户模式.
为什么这些模式有用呢 比如,为阻止用户直接写内存和破坏逻辑文件结构,操作系统可以仅在处理器工作于超级用户模式时准许对存储单元进行写访问.
Motorola 68000上的保护
Motorola 68000是一个16位处理器,它有一个16位的状态寄存器,其高位部分(系统字节)包含了以下与安全控制相关的位.
T 跟踪位,在位(bit)15上
S 超级用户位,在位13上
I2I1I0 中断级别号,在位置10到8上
状态寄存器的低位字节是条件代码寄存器(CCR).68000用超级用户位S区分用户模式(user mode)和管理程序(系统)模式(supervisor(system)mode).
复位后68000总是以超级用户模式引导,超级用户模式允许访问状态寄存器的系统字节.
一旦S位被置成0且当前处于用户模式,那么只有中断和错误异常才能将S位切换回1,并以超级用户模式运行.
T
S
I2
I1
I0
X
N
Z
V
C
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
System byte
CCR
The 68000 status register
操作系统调用是通过TRAP #n指令实现的,并能以超级用户模式运行和访问超级用户存储器,操作数#n指示了32和47之间的一个异常矢量.
退出时,操作系统调用通过RTE指令切换回用户模式.
68000有7个中断优先级,当前的中断级别保存在状态寄存器的I2I1I0位中.
当68000正在处理一个中断而另一个具有较高优先级的中断到来时,新的中断得到优先处理,第一个中断被中断.较低优先级的中断则被忽略.为保护一个中断处理程序被进一步中断,必须通过在状态寄存器中设置中断级别号来屏蔽中断,因此中断级别7屏蔽所有其它的中断.
处理器使用内存映像I/O,即将输入/输出端口地址看成是内存地址空间的一部分,因此输入/输出操作和内存访问可用统一的方式处理.
处理器有64根连线(管脚,pins),其中的三根管脚被指定为功能代码,输出FC2,FC1和FC0,这些功能代码向地址译码器指示处理器的状态,地址译码器可以使用这些代码在用户存储器和超级用户存储器之间或者在数据和程序之间进行选择.
Motorola 68000 function code output
FC2 FC1 FC0
0 0 0 (undefined, reserved)
0 0 1 user data
0 1 0 user program
0 1 1 (undefined, reserved)
1 0 0 (undefined, reserved)
1 0 1 supervisor data
1 1 0 supervisor program
1 1 1 interrupt acknowledge
区分数据和程序的能力是一种非常有用的安全特性,它为保护程序不被修改提供了基础.
从较为抽像的观点来看,存储器已经被分成了不同的区域,于是访问控制就可以指一个数据客体或一个程序来自的位置.
上面介绍了一个在微观世界中基于位置的访问控制的例子,在分布式系统或计算机网络中,经常需要微观世界中基于位置的访问控制.
Intel 80386/80486上的保护
Intel 80386/80486是32位的微处理器,80386/80486上的保护模式支持多任务操作系统的完整性和机密性要求.
Intel 80386/80486在状态寄存器中有一个2比特的域,定义了四种特权级(保护环)(privilege levels(protection rings)), 特权级只能被运行在级别0上的单个指令(POPF)修改.软件可以被指派到如下各个级别上:
0 操作系统核心
1 操作系统的其余部分
2 I/O驱动程序等
3 应用软件
Unix操作系统和Windows NT只使用级别0(核心态)和3(用户态).
80386/80486实现了以下安全策略:
规则 程序只能访问位于自己环内或外环中的客体.程序只能在自己的环内调用子例程.
80386/80486保存关于像存储器段,访问控制表或门这样的系统客体的信息在描述符中.描述符(descriptor)保存在描述符表中,通过选择符进行访问.一个客体的特权级别保存在它的描述符的DPL域中.选择符是一个16位的域,包含一个指向描述符表中客体入口的索引以及一个被请求的特权级别(RPL,requested privilege level)域.
只有操作系统能够访问选择符.
包含关于主体(即进程)信息的系统客体当然也有描述符和选择符.当一个主体请求访问一个客体时,相关的选择符被装入专用的段寄存器中.比如,当前进程的特权级别,称为当前特权级(CPL),就是保存在代码段(CS)寄存器中的选择符的特权级.
TI=0
选择符索引(Index) TI RPL
段选择符
TI=1 ,表指示符
局部描述符表
全局描述符表
15 3 2 1 0
描述符213-1
描述符i
描述符1
描述符0(NULL)
描述符213-1
描述符I
描述符1
描述符0
毫不奇怪,又一次面对了这样的问题,就是必须对那些请求较高特权的操作进行访问管理.假设环3中的一个应用程序需要环1中一个操作系统例程的服务,在80386/486中这个问题是通过使用门来解决的.门(Gate)是一个指向某个程序(在某个代码段中)的系统客体,这里门具有与它所指向的代码不同的特权级别.门允许对内环中的程序进行只执行访问,但仍限制向外的调用.
如果一个过程(procedure)要使用门,门必须和过程位于同一个环内.当通过门调用一个子例程时,当前特权级别变为门正指向的代码的级别.
当从子例程返回时,特权级别恢复到调用程序的特权级别.子例程调用也在堆栈中保存指示调用程序状态的信息或返回地址.为了确定堆栈的合适的特权级别,记住调用程序不能写入内环.但是由于安全的原因,将堆栈留在外环也是不能解决问题的,因为它使得返回地址完全没有保护.因此,一部分堆栈(大小在门的描述符中规定)要拷贝到一个更有特权的堆栈段中.
通过允许外环程序调用内环程序,制造了一个潜在的安全漏洞,外环程序可以请求内环程序将位于内环上的一个客体拷贝到外环上.
迄今为止给出的任何安全机制都不能防止这种做法,事实上它也没有违反规定的安全策略.因此,可能希望扩展原来的安全策略,使其不仅考虑到当前的特权级别,也考虑到调用进程的(calling process)级别.在80386/486中,可以使用选择符中的RLP域和调整被请求的特权级别(ARPL,adjust requested privilege level)指令支持这种策略.ARPL指令将所有选择符的RLP域改为调用过程的CPL,然后系统可以比较RPL(在选择符中)和客体的DPL(在描述符中),如果它们不同的话,拒绝完成被请求的操作.
Descriptor
DPL
Index
TI
RPL
Selector
Descriptor Table
≤/≥
…
…
段描述符的格式
G(粒度位):G=0时,段长限以字节为单位;G=1时,段长度以页为单位
D(缺省操作数的大小):仅用于代码段描述符,D=0为16位代码段;D=1为32位代码段
P(存在位):0=不在内存;1=在内存
DPL:描述符特权级0-3
S(段描述符):0=系统描述符;1=代码/数据段描述符
TYPE(类型):段的类型
A(访问位):1表示已访问过
0表示保留位,该位必须是0
安全基准监视器
(SRM, Security Reference Monitor)
J. P. Anderson在1972年首次提出,D. B. Baker于1996年再次强调其重要性.
安全内核中最重要的部分就是基准监视器(引用监视器),它控制对客体的访问.基准监视器不一定是代码(a single piece of code ),它也可以是对设备,文件,内存,进程间通信以及其它种类的客体的访问控制的聚集.
基准(参照)监视器(reference monitor)是监督主体和客体之间授权访问关系的部件.
基准(引用)监视器 监督主体和客体之间的授权访问,这是一个访问控制的概念,它涉及到一个对所有主体对客体访问进行仲裁的抽象机.
基准监视器是一个抽象的概念,它表现的是一种思想,J.P.Anderson把基准监视器的具体实现称为引用验证机制,它是实现基准监视器思想的硬件和软件的组合.
Kernelized Design
Security Kernel within the OS Kernel
Reference Monitor
– Tamperproof (Isolated)
– Always Invoked (correct)
– Small enough to be verified (concise(简练的))
Access Matrix Implementation
Trusted Computing Base (TCB)
Figure 4. Reference Monitor Concepts
安全内核数据库/访问控制数据库 包含有关主体访问客体及其方式的信息.数据是动态的,它随着主体和客体的产生或删除及其权限的修改而改变.
安全内核数据库
主体 security clearance
客体 security classification
基准监视器必须控制主体对客体的每一次访问,并且将重要的安全事件存入审计文件中.
Security Reference Monitor
Always invoked(始终被调用)
Tamper Proof(防止窜改的)
Correctly enforces desired security policy(正确地实施了安全策略)
注:Performance is also a practical concern(关心,关注).
在抽象级,基准监视器支持两类功能:
Reference functions(基准/引用功能) for accessing information
Authorization functions(授权功能) change authorization database(授权数据库)
Support Functions(支撑功能) 基准监视器常利用(utilize)支持策略.
Identification and Authentication(身份识别和鉴别)
Identify users to the system - who you are
Authenticate users to system - what you have, know, or are
Reliably identify(识别)trusted part of system to users(对用户可靠地确认系统的可信部分)
Audit(审计)
记录安全相关的操作(operations)
Introduction of new objects into a domain(引入新的客体到一个域)
Deletion of objects(客体的删除)
创建由审计记录(audit records)组成的审计跟踪(audit trail)
Reference monitor may be source of only some of the audit trail information.(基准监视器可能是一些审计跟踪信息的唯一来源)
基准监视器需要同时满足以下三个原则:
防窜改的(tamperproof);
必须总是处于活跃状态,且在每次主体访问客体时必须调用基准监视器;
必须设计得足够小,以利于分析和测试,因而能够证明其实现是正确的.
性能也是一个实际关注的问题.
Definition A reference monitor(基准监视器)is an access control concept of an abstract machine(抽象机) that mediates(仲裁,调停,斡旋) all accesses to objects by subjects.
Definition 引用验证机制(RVM)是基准监视器概念的实现.RVM必须是防窜改的,必须始终被调用(且从来不能被旁路),并且RVM必须足够小以进行形式分析和测试,保证其完备性.
Definition 安全内核是实现基准监视器的硬件和软件的组合.
可信计算基(Trusted Computing Base)
可信计算基( TCB)是计算机系统内的所有保护机制的集合/总称(the totality); TCB包括硬件,固件(firmware)和软件,它们一起实施统一的系统安全策略
Common to these definition are the concepts of
enforcement of security policy;
sufficiency of measures and mechanisms; 措施和机制的充分性
evaluation(评估).
An imaginary boundary around TCB is called the security perimeter(安全周边/安全周界)
安全周界(security perimeter) 用半径来表示的空间.安全周界包围着用于处理敏感信息的设备,并在有效的物理和技术控制之下,防止未授权的进入或敏感信息泄露.
可信计算基 (trusted computing base,TCB):计算机系统内保护装置的总体,包括硬件,固件,软件和负责执行安全策略的组合体.它建立了一个基本的保护环境并提供一个可信计算机系统所要求的附加的用户服务.
The TCB contains mechanisms for implementing the various security policies enforced by a system, (MAC, DAC, I &A, Audit, etc.).
Of these policies the most crucial(有决定性的,至关重要的)is that MAC (recall the DAC is inherently flawed( 有缺陷的)due to(由于, 应归于)its susceptibility(易受攻击性;敏感度)to malicious software).
Special design and implementation requirements are needed for the portion of the TCB that implements MAC.
These special design and implementation requirements lead to the Reference Monitor Concept (基准监视器的概念).
TCB正确实施安全策略的能力完全依赖于TCB内部的机制,以及系统管理员对于与安全策略有关的参数(如用户许可)的正确输入.
基准监视器是一个抽象的概念,安全内核是基准监视器的实现,而TCB包含了安全内核和其它保护机制.
保持操作系统的安全内核尽可能简单,对于安全操作系统的设计与评估是至关重要的.
TCB必须是正确的和完备的;
关键是TCB和非TCB的分隔,即把操作系统的TCB和非TCB的元素分开.
It is easy to see that it is essential for the TCB to be both correct and complete (完备的). Thus, to understand how to design a good TCB, we focus on(集中)the division(分开,分隔)between the TCB and non-TCB elements of the operating system and spend our effort on ensuring the correctness of the TCB.
Level
0: Hardware
1: Security Kernel:
Access control
Authentication functions
2: Operating System:
Resource allocation
Sharing
Hardware interactions
3: User tasks
Figure 4. Separate(分离的, 单独的)Security Kernel
TCB的功能(TCB Functions)
假设把可信操作系统分为很多部分,有的属于TCB,而有的不是,然后让技术最高的恶意程序员编写所有不是TCB的部分.由于TCB处理所有的安全,所以恶意的非TCB部分想要削弱TCB的安全策略的正确实施是无能为力的.
安全环境依赖的系统元素(system elements):
硬件(hardware) 包括处理机,存储器,寄存器和I/O设备.
原始文件(primitive files) 如安全访问控制数据库和身份/鉴别数据.
受保护的存储器(protected memory) 保护基准监视器以防止窜改.
进程间的通信(some interprocess communication) TCB的不同部分可以传送数据到其它部分以及激活(activate)其它部分.例如,基准监视器能够调用和安全地传送数据到审计例程(audit routine).
TCB必须维护(maintain)每一个域(domain)的保密性(secrecy)和完整性,它监视四个基本的交互(basic interactions).
TCB监视着4个基本的交互
进程激活 在多道程序环境下,进程的激活和去活作用(deactivation)是经常发生的.从一个进程切换到另外一个进程需要一个完整的改变,内容包括寄存器,重定位映射表,文件访问表,进程状态信息以及其他指针,它们中的大部分都是安全敏感信息.
执行域切换 在一个域中运行的进程经常会激活其它域的进程以获得更多的敏感数据和服务.
内存保护 因为每个域包含的代码和数据都存储在内存中,因此TUB必须监视内存引用以确保每个域的保密性和完整性.
输入/输出(I/O)操作 在一些操作系统中,软件涉及I/O操作中每一个字符.这种软件将最外层域的用户程序和最内层(硬件)域的I/O设备连接起来.因此,I/O操作能够贯穿所有的域.
Figure 4. TCB and Non-TCB Code
User applications
Utilities(实用程序)
User request interpreter
User process coordination, synchronization
User environment: objects, names (e.g. files)
User I/O
Procedures, user processes
Creation and deletion of user objects
Directories
Extended types(扩展类型)
Segmentation, paging, memory management
Primitive I/O(原语I/O)
Basic operations
Clocks, timing(时钟,定时)
Interrupt handling
Hardware : registers, memory
Capabilities(权能,能力)
TCB
(Trusted Computing Base )
Non-TCB
TCB设计(TCB Design)
将操作系统划分为TCB和非TCB,这为设计者和开发者提供了便利,因为这意味着所有和安全相关的代码都被放置在某个(逻辑的)部分;这种区分不仅仅是逻辑上的.为了确保非TCB代码不会影响安全实施,TCB代码必须运行在一些可以将其区分开的受保护状态.这样,在TCB外部的代码的改变不会影响实施安全的TCB的能力.
Application
Non-TCB
TCB
硬件
这种区分是逻辑上的.
CPU的工作模式必须区分TCB和non-TCB,non-TCB不会影响TCB.
General (常规,总则)
Design Security Kernel First! 首先设计安全内核!
In a security based design:
Kernel is an interface layer (接口层).
Kernel lies just on top of system hardware(在系统硬件之上).
本质上,简化了操作系统的安全评估.
TCB实现(TCB Implementation)
与安全相关的活动可能会在不同的地方被执行.安全性潜在地与下述操作都有相关性,包括每一次的存储器访问,I/O操作,文件或者程序访问,用户的初始化及终止和进程间通信.
将所有的安全功能都包含在TCB中会破坏现有操作系统的模块性.
更切合实际的方法(A more sensible approach)必须首先设计安全内核,然后设计包围它的(around it)操作系统.
例:Honeywell在安全操作系统Scomp(Secure operating system)原型(prototype)设计中使用了这种技术.系统仅包含20个模块,用来实现原语安全功能(primitive security functions);它由少于1000行的高级语言源代码组成.实际的Scomp安全内核包含近似10000行代码.
在基于安全的设计中,安全内核形成了一个接口层(interface layer),它在系统硬件的上面.安全内核监视着所有的操作系统的硬件访问,并执行所有的保护功能.安全内核依赖硬件的支持,允许操作系统自身处理与安全无关的大部分功能.这样,安全内核就比较小且更有效.
在设计安全内核时,优先考虑的是完整性,隔离性和可验证性等三条基本原则,而不是那些通常对操作系统来说更为重要的因素,比如灵活性,性能,开发费用,方便性等.
分层设计
安全内核
用户进程的子进程
用户进程
编译器,数据库管理
工具库,实用程序(Utilities)
文件系统,设备分配
调度,共享,内存管理
同步,分配
安全功能
硬件
操作系统内核
操作系统
图4. Separate Security Kernel
基于不安全操作系统(ISOS)开发安全操作系统,一般有虚拟机法,改进/增强法和仿真法.
Secure kernel
Secure kernel
Secure kernel
Figure 4. Security Kernel based Trusted Operating System
原有系统 虚拟型系统 仿真型系统 安全系统
Figure 4. Kernel implementation strategies
虚拟机法
在现有操作系统与硬件之间增加一个新的分层作为安全内核,操纵系统几乎不变地作为虚拟机来运行.安全内核的接口几乎与原有硬件编程接口等价,仍然像在裸机上一样执行它自己的进程和内存管理功能,可以不变地支持现有的应用程序,且能很好地兼容ISOS的将来版本.
需要硬件支持.虚拟机法在KVM中运行相当成功,这是由于硬件(IBM 370)和原有操作系统的结构都支持虚拟机.
采用虚拟机法增强操作系统的安全性时,要求原系统的硬件和结构都支持虚拟机.
缺点:局限性.
改进/增强法
在现有操作系统的基础上对其内核和应用程序进行面向安全策略的分析,然后加入安全机制,经改造,开发后的安全操作系统基本上保持了原ISOS的用户接口界面.
优点 不破坏原系统的体系结构,开发代价小,且能很好地保持原ISOS的用户界面和系统效率.
缺点 受原体系结构和现有应用程序的限制,很难达到很高的(如B2级以上)安全级别.
仿真法
对现有操作系统的内核进行面向安全策略的分析与修改,形成安全内核,然后在安全内核与原ISOS用户接口界面中间再编写一层仿真程序.
优点 在建立安全内核时,可以不受现有应用程序的限制,且可以完全自由地定义ISOS仿真程序与安全内核之间的接口.
缺点 要同时设计仿真程序和安全内核,还要受顶层ISOS接口的限制.
根据安全策略,有些ISOS的接口功能不安全,因而不能仿真;有些接口功能尽管安全,但仿真实现特别困难.
Unix操作系统的安全性增强设计方法
系统运行状态:
核心态 内核中程序的进程运行在核心态.
用户态 内核之外的程序进程运行在用户态.
系统保证用户态下的进程只能访问它自己的指令和数据,而不能访问内核和其它进程的指令和数据,并且保证特权指令只能在核心态执行.
用户程序只能通过系统调用陷入核心态才能访问系统资源(文件,目录和设备等),在运行完系统调用后又返回用户态.
Unix支持访问控制机制的开发,因而支持安全性的增强.
以系统调用为基元,通过引入可信计算基机制,分别在系统调用中实现了安全强制访问控制,自主访问控制,审计,最小特权管理和可信通路等机制,并且进行了对隐蔽通道的分析和处理.另外,还增加了一部分支持现安全机制本身的系统调用.
图4. 某版本Unix操作系统的安全性增强设计方法
shell层
shell程序
_实用程序层
一般实用程序
可信服务程序
修改扩充的
新增加的
系统调用层
_与安全无关的系统调用
与安全有关的系统调用
(加入大部分安全检查)
新增加的系统调用(与安全检查机制有关)
_
内核程序层
与安全无关的内核程序
与安全有关的内核程序
(加入小部分安全检查)
新增加的
内核程序
硬件层
硬件接口程序
应用层
安全内核层
硬件层
系统主要进行如下安全性增强:
可信服务程序 注册程序,用户管理程序,特权用户程序等.
面向安全策略逐个分析Unix系统调用的安全性
对所有涉及安全事件的系统调用,加入相应的安全检验机制;
增加对审计机制相应的操作,主体安全等级的设置和读取,客体安全等级的设置和读取以及特权操作等系统调用.
内核程序分解为安全相关的和安全无关的两部分
安全相关部分指涉及安全事件的系统调用执行体,在系统调用层不易实现的少部分安全检查放在内核程序中完成;
增加一部分内核程序,作为安全检测的执行体和新增加系统调用的执行体.
六,虚拟化(Virtualization)
虚拟化允许用户谨慎地(carefully)以受控的方式访问复杂的对象(objects,客体),它为可信系统的设计者提供了强有力的支持.通过虚拟化,操作系统可以模拟一个计算机资源集合.一个虚拟机是真实的和模拟的硬件设施的集合:一个执行指令系统的(中央)处理机,许多可直接寻址的存储器和一些I/O设备.这些设施支持程序的运行.
很明显,虚拟资源必须通过实际的硬件或软件来支持,但真实的(real)资源未必是与仿真的资源一样的.存在许多这种类型的仿真的例子,如打印机,虚拟存储器等.
Virtualization(虚拟化)
Real machine(实机器)is emulated in a "virtual machine"
OS functionality on top of the virtual machine
Good protection and Isolation
Difficult to emulate hardware
虚拟机的概念
Multiple Virtual Memory Space
The IBM MVS/ESA operating system uses virtualization to provide logical separation that gives the user the impression(印象)of physical separation. IBM MVS/ESA is a paging system such that each user's logical space is separated from that of other users by the page mapping mechanism.
Additionally, MVS/ESA includes the operating system in each user's logical address space, so a user runs on what seems to(看来,似乎)be a complete, separate machines.
Operating System Space
User 1 Space
User 2 Space
User N Space
Operating System Space
0
A typical OS will isolate users and the OS in memory
…
Most paging system present to a user only the user's virtual addressing spaces(用户虚拟地址空间). However, the operating system is part of the logical space of each MVS/ESA user.
IBM处理机资源/系统管理器( PR/SM )系统提供了一个更强的保护.传统的操作系统有在其直接控制下的硬件设施和设备,如下屏中的图所示. PR/SM为每个用户提供一个完整的虚拟机.因此,每个用户不仅拥有逻辑内存,还拥有逻辑设备,逻辑文件以及其它的逻辑资源. PR/SM依靠严格的资源分离来执行这项技术.
PR/SM系统是虚拟内存概念的自然延伸.
MVS/ESA和PR/SM对用户之间和用户与系统硬件之间的隔离进行了改进.这种附加的复杂性增加了由于转换和保护所带来的开销.
虚拟机— IBM的VM操作系统
每个用户不仅有逻辑存储器
每个用户还有逻辑的I/O设备,逻辑的文件及其其他资源.
I/O
文件
外设
存储
CPU
操作系统
用户1
用户2
用户3
图4. 常规的(传统的)操作系统
Real machine(实机器)is emulated in a "virtual machine"
OS functionality on top of the virtual machine(虚拟机)
操作系统
图4. 常规的(传统的)操作系统
I/O设备
用户
文件
控制台
存储器
媒体/介质
处理器
Figure 4. Virtual Machine
Virtual Machine for User 1
Virtual Machine for User 3
Real System Resources
七,分层设计( Layered Designs)
正如前所述,内核化操作系统至少(at least)由四级(levels)组成:硬件,内核,操作系统和用户.这些层中的每一层自身能够包括(include)若干子层.例如,"A Security kernel for a Multiprocessor Microcomputer"中,内核有五个不同的层(five distinct layers).
在用户级,有准系统程序(quasi-system programs),如数据库管理程序(database manager)或用户接口shells,它们构成了它们自己不同的安全层.
Applications
OS
Kernel
Hardware
Layered Systems
One or more layers execute in kernel mode
Good performance, modular, extensible, rigid(严格的,固定的)structure
Difficult to design layers well
分层的信任(Layered Trust)
安全操作系统的分层视图(layered view)可以用一系列的同心圆来描述,其中最敏感的操作在最内层的层中.这样,一个进程的可信性(trustworthiness)和访问权限可以根据进程与中心的接近程度(by the process's proximity to he center)来判断.更可信的进程是更接近于中心的.
也可以将一个分层的可信操作系统描述成堆栈,其中安全功能离硬件最近,如后面中的图所示.
We can also depict the trusted operating system in layers as a stack, with the security functions closest(最靠近的)to the hardware.
Figure 4. Structure of kernel-based operating system
Figure 4. Hierarchy of sensitivities
Figure 4. Layered Operating System
Subprocesses of User Processes
User Processes
Compilers, Data Base Managers
Utility Functions
System, Device Allocation
Scheduling, Sharing, Memory Management
Synchronization, Allocation
Security Functions
Hardware
Security
kernel
Operating
System
Operating
System
Kernel
在这种设计中,一些与保护功能相关的活动都是在安全内核之外执行的.例如,用户鉴别可能包含一张口令表,要求用户提供其口令,验证口令的正确性,等等.
在安全内核内部完成所有这些操作的缺点是这些操作中的一些(例如格式化(formatting)与用户终端交互(interaction)和在已知用户的表中搜索(searching for)用户)不能保证高安全性.
换一种方法,可以在几个不同的模块中实现一个单一的逻辑功能.可信任性和访问权是分层的基础.换句话说,可以通过操作在不同层中的一组模块来执行一个单一的功能,如下屏中的图所示.每层的模块执行一个某种敏感等级的操作.
Alternatively, we can implement a single logical function in several different modules, we call this a layered design. Trustworthiness and access rights are the basis of the layering.
Figure 4. Modules Operating in Different Layers
操作系统代码
用户鉴别模块
用户接口
用户ID查表
鉴别数据更新
每一层的模块实现某种程度敏感性的操作.
鉴别数据比较
Neumann描述了用于可证明安全操作系统( PSOS, Provably Secure Operating System )的层次结构.如下屏中的表所示,一些低层向高层提供部分或全部的功能,但每一层适当地封装一些仅属于自己的内容.
分层的方法(approach)是实现封装的另外一种方法.分层被公认为是一种好的操作系统设计.每一层调用内层的服务,同时也向外层提供一定功能层次的服务.
Each layer uses the more central layers as services, and each layer provides a certain level of functionality(功能性)to the layers farther out.
Layering presents a good example of how to trade off(交换使用,折衷选择)and balance design characteristics. 分层提出了如何折衷选择和平衡设计特性.
Table 4.3 PSOS Design Hierarchy(层次)
Level
Function
Hidden by Level
Visible to User
16
User request interpreter
Yes
15
User environments and name spaces
Yes
14
User I/O
Yes
13
Procedure records
Yes
12
User processes and visible I/O
Yes
11
Creation and deletion of user objects
Yes
10
Directories
11
Partially
9
Extended types
11
Partially
8
Segments
11
Partially
7
Paging
8
No
6
System process and I/O
12
No
5
Primitive I/O
6
No
4
Arithmetic and other operations
Yes
3
Clocks
6
No
2
Interrupts
6
No
1
Registers and addressable memory
7
Partially
0
Capabilities
Yes
Table 4.4 Conventionally (Nonhierarchically) Designed System
分层的另一个理由是对破坏进行控制.
相反,分层结构有两个好处:
分层结构允许识别非常关键的部分,然后认真分析其正确性,这样问题就会少些.
隔离将问题的影响范围限制在问题发生的层及上层,从而可以限制大多数问题的影响.
Level
Functions (功能)
Risk (风险)
All
Noncritical functions
Disaster possible
All
Less critical functions
Disaster possible
All
Most critical functions
Disaster possible
Table 4.5 Hierarchically Designed System
这些设计特性-内核,分离,隔离和层次结构,一直以来都是很多可信系统模型的基础.作为最佳的设计和实现,它们经历了时间的考验.
Level
Functions
Risk(风险)
2
Noncritical functions
Few disasters likely from noncritical software (非关键软件基本不会造成灾难)
1
Less critical functions
Some failures possible from less critical functions, but because of separation, effect limited(因为分离,影响有限)
0
Most critical functions
Disasters possible but unlikely if system simple enough to be analyzed extensively(可能是灾难性,但如果系统足够简单,可以对其进行详尽地分析,不太可能发生)
八,Multics
以在历史上有重要影响的Multics操作系统为例,说明安全内核(kernel)是如何实施访问控制的.Multics是一个雄心勃勃的研究工程,其目标旨在开发安全的,可靠的,等等多用户操作系统.安全方面的许多研究,像BLP模型,都是由Multics工程计划引发的.由于它范围广泛的目标和安全需求( ,注:设计者并不完全清楚安全需求),该计划的一些成员觉得它太笨重了,于是建立了更简单的操作系统,就是Unix.就商业成功而言,这两个系统的历史就是可用性与安全性之间相平衡的一种表现.
MULTIple access Computer System,多路存取计算机系统(1965年,贝尔实验室,通用电公司和麻理工学院合作开发的操作系统)
Project MAC(Multiple Access Computer )
Multics (Multiplexed Information and Computing Service) is a mainframe timesharing operating system begun in 1965 and used until 2000. Multics began as a research project and was an important influence on operating system development. The system became a commercial product sold by Honeywell to education, government, and industry.
BLP的Multics解释
安全模型( Bell-LaPadula模型)如何用于一个安全的操作系统的设计的.作为访问控制的一个抽像模型,BLP非常适合于捕捉操作系统的安全需求.BLP中关于安全的归纳定义使它比较容易建立一个安全的系统,只需正确地定义状态转换来保证安全性.为了证明Multics是安全的,必须找到一种与BLP相一致的Multics描述,将BLP的安全概念是如何映射到Multics的.
Multics中的主体是进程,每个主体有一个包含进程信息的描述符段(descriptor segment) ,其中包括进程当前访问的客体的信息,即每个客体的段描述符字.
指向客体的指针
访问指示符标志
Segment_id
pointer
r: on
w: on
e: off
segment
descriptor
word
对于每一个这样的客体,在主体的描述符段中有一个段描述符字(SDW, segment descriptor word).SDW的格式如上屏中的图所示,包括客体名,指向客体的指针以及读,执行和写访问的指示符标志(indicator flags),这些指示符涉及表4.6中规定的访问属性.
表4 .6 Access rights in the Bell-LaPadula model
execute append read write
observe √ √
alter √ √
主体的安全等级保存在一个进程级别表(process level table)和一个当前级别表(current-level table)中,有效段表(active segment table)记录所有有效的(活跃的,active)的进程,只有活跃进程(active process)能够访问客体.
Multics中的客体是存储段,I/O设备等,客体按层次组织在一棵目录树中.目录也是段,有关一个客体的信息,像它的安全等级或访问控制列表(ACL),保存在客体的父目录中.因此,改变一个客体的访问控制参数以及建立或删除一个客体,需要对父目录写(write)或者添加(append)访问权限.
为访问一个客体,进程必须遍历从根目录到目标客体的目录树;如果路径中任何一个目录对于进程是不可访问的,则目标客体也不可访问.
相容性(Compatibility) 要求客体的安全等级支配(dominate)其父目录的安全等级.
注:Unix的文件系统已经处理了同样的问题.
在Multics系统中BLP状态集的组成(component)
用在Multics系统表和描述符段中的数据来标识(identify)BLP状态集的成分(component).
当前访问b(current access b) 保存在活跃进程的描述符段的SDW中;活跃进程可以在有效段表中找到.
描述符段基址寄存器(DSBR,descriptor segment base register)的内容指向当前进程的描述符段.
访问控制矩阵A 通过访问控制列表ACL表示;对于每个客体,ACL保存在它的父目录中;每个ACL表项指定一个进程以及进程对该客体的访问权限.
级别函数f 主体的安全等级保存在专门的进程安全等级表中,即进程级别表和当前级别表;客体的安全等级保存在其父目录中.
MAC in Multics
Multics access attributes for data segments:
read r
execute e, r
read and write w
write a
根据(in terms of)进程和数据段的安全等级以及存放在SDW中的指示符的信息描述BLP的安全特性.
Multics的星特性(*-property) 对于在活跃进程的描述符段中的任何SDW,进程的当前等级:
支配段的等级,如果读或执行指示符置位(on)且写指示符复位(off); r/e: on, w: off LC LO
受段的等级支配 ,如果读指示符复位(off)且写指示符置位(on); r: off, w: on LC LO
与段的等级相等,如果读指示符置位(on)且写指示符置位(on). r: on, w: on LC = LO
下屏中的图说明如何验证与星特性的(*-property)一致性.
current process
current-level table
DSBR
descriptor segment
of current process
subject
segment-id
object
current pro. Lc
segment-id LO
LC LO
parent directory
描述符段基址寄存器
图4. 对应访问属性只写的*-property
segment-id
Ptr
r:off
e:off
w:on
核心原语
如果在Multics内核的抽象模型中的状态转换保持了BLP的安全策略,则BLP基本安全定理就证明了Multics的"安全性".
当然,这不是安全性的一个完整证明,还必须证明核心原语的实现以及最后它们在一个给定硬件平台上的执行符合它们的规范.
例:get-read原语用process-id和segment-id作为它的参数,操作系统必须检查:
segment-id的ACL(保存在段的父目录中)是否列出了带有读允许的process-id;
process-id的安全等级支配segment-id的安全等级;
process-id是否是一个信任的主体,或者process-id的当前安全等级支配segment-id的安全等级.
如果所有三个条件都满足,访问被允许;且在process-id的描述苻段中的SDW被增加或修改.
如果segment-id的SDW不存在,一个对应的SDW被添加到process-id的描述符段中,且读指示符被置位.如果segment-id的一个SDW已经存在于process-id的描述符段中,则置位SDW中的读指示符.
如果以上三个条件中任何一个不满足,访问被拒绝.
以下是另外一些已经提出来要在Multics核心中实现的原语:
release-read 进程释放一个客体;对应SDW中的读标志被清除;如果此后没有指示器打开,SDW被从描述符段中删除.
give-read 进程向另一个进程授予读访问权限(自主性访问控制).
rescind-read 进程将赋予另一个进程的读权限收回.
create-object 进程创建一个客体;操作系统必须保证对客体目录段的写访问是允许的,并且段的安全等级控制进程的安全等级.
delete-object 当删除一个客体时,必须执行与create-object中一样的检查.
Change-subject-current-security-level 操作系统必须保证变化没有造成安全违背;这个核心原语以及原语.
change-object-security-level 不打算用于实现(稳定性).
理想的情况是,开发处理器时使它的指令集与操作系统的核心原语相吻合.相反地,核心原语可以设计成与现有处理器提供的支持相匹配.
4.3 可信操作系统的保证
(Assurance in Trusted Operating System)
考虑保证,向其他人证明模型,设计和实现是正确的方法.
一,典型的操作系统缺陷(Typical Operating System Flaws)
在操作系统安全特性的分析中,常常使用 "利用漏洞"这一术语.这些年来,在很多操作系统中都发现了漏洞.但是,这些漏洞逐渐得到了修补,而且关于可能出现薄弱点的部位的知识体系也扩大了.
已知的脆弱性(Known Vulnerabilities)-OS Flaws
I/O Processing( I/O处理)
Ambiguity in an access policy(在访问策略中的歧义)
Incomplete mediation(不完全检查)
Generality(通用性)
I/O 处理是操作系统脆弱性的最大的一个来源.
I/O是通过独立的,智能硬件子系统来完成的.所谓智能设备在自身方面(on its own)能够采取某些独立操作(action),如磁盘调度,这些独立部件常常落在(fall)安全内核的外面或在有操作系统实施的安全约束的范围之外.
执行I/O 的代码比计算机系统其它部件的代码复杂得多,并且更依赖于特定的硬件设备.由于这些理由,为了正确性复审(检查)I/O设备驱动程序,访问代码和服务例程则更困难,更不用说进行形式验证(let alone(更不用提;更别说)to verify them formally).
为了快速数据传送(in the interest of fast data transfer),I/O活动(activity)有时旁路(bypass)其它操作系统功能,如分页和分段地址转换.
I/O操作通常是面向字符的.为了速度的原因,在每个字符传送时消除了实施安全策略的指令.
访问策略的模糊性(Ambiguity in an access policy)
在操作系统安全方面的第二个重要的(prominent)弱点反映在访问策略的模糊性上.在一方面,分离用户,保护他们个体的资源;但在另一方面,用户依赖于对库文件,实用程序,公用数据和系统表的共享的访问.在策略级,在隔离和共享之间的区别(distinction)并不总是清楚的,所以在实现时也不能严格加以区分.
第三个潜在的问题领域是不完全仲裁( incomplete mediation,不完全检查).
Some systems check access only once per I/O operation, per process execution, or per machine interval(间隔,时间间隔,区间). 一些系统仅仅每次I/O操作,每次进程执行或每个机器时间间隔检查访问一次.
机制可用来实现全部保护(full protection),但在何时调用机制的策略决策是不完全的.
由于缺乏明确的需求,系统设计者采用了"最有效"的实施("most efficient" enforcement)
通用型(generality)是第四个保护弱点(weakness),特别是在大型计算机系统的商业操作系统中.
实现者设法提供用户定制他们的操作系统的安装,且允许安装其它公司的软件包;
第三方提供的软件中的一些软件作为操作系统的一部分运行.通过"(挂)钩"来安装软件包;然而,这些"(挂)钩"也成为任何人想要入侵操作系统的用户的陷门.The "hooks"( (挂)钩,异常分支(指令) )by which these packages are installed are also trapdoor for any user to penetrate(渗透)the operating system.
Examples of Exploitations (漏洞利用的例子)
在一些系统,在启动(initiate)I/O操作的访问被检查后,后来的I/O操作不再进行检查,导致了经典的检查时间到使用时间TOCTTOU缺陷.
I/O命令通常驻留在用户存储空间;在I/O操作正式开始后,任何用户可以都可以修改其命令中的源地址或目标地址.
完全的检查可以阻止这些攻击.
I/O操作也可以用于其它方式的恶意攻击.例如,如果知道操作系统使用一个公共系统缓冲区来存放即将传送给所有用户的数据;那么,任何用户都可以检索这个缓冲区,并从中提取敏感数据.利用完全检查可以消除这一缺陷.
I/O can also be involved(涉及,包含)in other ways(在其它方面)in malicious behavior. For instance, knowing the operating system uses a common system buffer to retain(保留,保持)data scheduled(预定的)for delivery(传递,发送) to all users, any user can search this buffer and extract data that would have been more carefully protected if they had been transferred to the user. In a particular attack, the data were for authentication, showing user IDs and passwords waiting to be read and validated(确认,验证)by the operating system.
Again, complete mediation would have eliminated this vulnerability.
利用漏洞进行攻击的另外一个例子涉及程序上的问题.在一个系统中,一个特殊的管理程序功能专供安装其它安全软件包之用.在其执行时,这个管理调用返回在特权模式的控制给用户.由于在这种模式下允许操作并不受到严格的监控;因此,管理程序可用于访问控制或任何其它高级安全系统访问.
在管理程序下进入的任何主体的访问权限仅局限于那些用于执行附加程序功能的客体.
Another example of exploitation involves a procedural problem. In one system a special supervisor(管理程序)function was reserved for the installation of other security packages. When executed, this supervisor call returned control to the user in privileged mode. The operation allowable in that mode were not monitored closely, so the supervisor call could be used for access control or for any other high-security system access. The particular supervisor call required some effort(费劲,努力)to execute, but it was fully available on the system.
检查时间到使用时间的失配也能引入安全问题.
The time-of-check to time-of-use mismatch(失配,配合不符)can introduce security problems, too.
在基于这种脆弱性的攻击中,一个用户访问一个客体,如缓冲区,要经过访问检查.但是在访问得到批准到访问正式开始之间的这段时间内,用户可以改变客体的指派(designation);这样用户可以访问其它不该访问的客体.
其它入侵则可以使用更复杂的脆弱性的组合.
利用简单的安全机制实现清楚的和完全的安全策略,入侵的数量就会显著地减少.
进行脆弱性分析,发现潜在的脆弱性,且使用保证技术来减轻或消除其影响.
二,关于TCB的设计与实现问题
J.P.Anderson指出,要开发安全系统首先必须建立系统的安全模型,完成安全系统的建模之后,再进行安全内核的设计和实现.在高可信操作系统开发中,要求采用形式化安全模型来模拟安全系统,以正确地综合系统的各类因素,这些因素包括系统的使用方式,应用环境类型,授权的定义,共享的客体(系统资源),共享的类型和受控共享的思想等.所有这些因素应构成安全系统的形式化抽象描述,使得系统可以被证明是完整的,反映真实环境的,逻辑上能够实现程序的受控执行的.
非形式化开发途径
安全需求
功能规范
实现
论证
测试
形式化开发途径
抽象模型
形式化规范
实现
证明
证明
图4. 安全模型与安全操作系统开发过程
形式化安全策略模型设计不仅要求建立深刻的模型设计理论,而且要发掘具有坚实理论基础的实现方法.为了模型的形式化,必须遵循形式设计的过程以及表示方法.
美国国防部的彩虹系列中的"对理解可信系统中安全模型的指导(A Guide to Understanding Security Modeling in Trusted System)",提出了指导实现的一般性步骤.
确定(identify,识别)对外部接口的需求(requirements) 给出系统安全的确切定义,提出支持可信对象的各种条件及描述安全需求的各种机制和方法,构造一个外部模型.
确定内部需求 把安全需求与系统的抽象进行结合,提出合理的模型变量,构造一个内部模型.
为策略的执行设计操作规则 把安全策略规则化,以确保系统在有效完成系统任务的同时,系统的状态始终处于安全状态中.注意,安全操作只是确保系统的状态始终处于安全状态的充分条件.
确定什么是已知的 选择适当的形式规范语言,开发相应的形式验证工具,尽量优化设计开发过程.
论证(demonstrate)一致性和正确性 模型的检查阶段,安全需求的表达是否准确,合理;安全操作规则是否与安全需求协调一致;安全需求是否在模型中得到准确反映;模型的形式化与模型之间的对应性论证等.
论证相关性 模型的实施阶段或模型在系统中的解释,也有人称为模型实现.论述关联性分层次进行,首先是实现的模式;其次是实现的架构;再其次是模型在架构里的解释;最后是实现的对应性论证.
要设计一个可信操作系统,必须从安全功能和安全保证两方面考虑其安全性.就安全保证的技术要求来说,在TCB的设计与实现中应特别注意如下方面的问题:
配置管理
分发和操作
开发
指导性文档
生命周期支持
测试
脆弱性评定
三,保证方法(Assurance Methods)
一旦了解了系统中潜在的脆弱性,就可以应用保证技术来找出脆弱点,且减低或消除其影响.Once we understand the potential vulnerabilities in a system, we can apply assurance techniques to seek out(搜出,找出, 想获得)the vulnerabilities and mitigate(减轻严重性)or eliminate their effects.
脆弱性分析
测试(Testing)
测试能够证明问题的存在性,但不能证明不存在.Testing can demonstrate(示范;证明, 论证)the existence of a problem, but passing tests does not demonstrate the absence(不存在)of problems.
在有限的时间内,很难达到充分的测试覆盖要求.It is hard to achieve(达到)adequate(足够的)test coverage(覆盖率) within reasonable time or effort.
测试仅仅基于可观察到的结果,而不是基于内部的结构,因此不能确保其完善程度.Testing based only on observable(可观察到的)effects(效果, 作用, 影响), not on the interval structure of a product, does not ensure any degree of completeness(完备性).
基于产品内部结构的测试涉及到通过增加代码来修改产品,以提取和展示内部状态.附加的功能性影响产品的行为,且自身可能是脆弱性的来源或屏蔽了其它的脆弱性. Testing based on the internal structure of a product involves(包含,涉及)modifying the product by adding code to extract and display internal states.
在实时系统的测试中,很难记录所有的状态和触发事件.和In testing real-time systems, it is difficult to keep track of all states and triggers(触发器,切换开关).
渗透测试(Penetration Testing)
为了保证可信操作系统的安全性,通常首先采用专用工具扫描操作系统的安全漏洞,从而达到发现漏洞和补救这些漏洞的目的.
操作系统安全漏洞扫描的主要目的 自动评估由于操作系统的固有缺陷或配置方式不当所导致的安全漏洞.
操作系统安全扫描的主要内容包括4个方面:
设置错误
黑客踪迹
特洛伊木马程序
关键系统文件完整性的威胁
A testing strategy often used in computer security is called penetration testing (渗入测试), tiger team analysis, or ethical(合乎道德的,伦理的)hacking.
在这种方法中,"老虎"小组成员试图摧毁正在测试中的可信操作系统."老虎"小组成员应当掌握操作系统典型的安全漏洞,且试图发现并利用系统中的这些安全缺陷.
一般来说,评价一个计算机系统安全性能的高低,应从如下两个方面进行:
安全功能 系统具有哪些安全功能;
保证 安全功能在系统中得以实现的可被信任的程度.通常以文档规范,系统测试,形式化验证等安全保证来实现.
形式化规范与验证
现在用于安全验证的形式化方法仍然是基于20世纪70年代的理论研究,在20世纪70年代后期和20世纪80年代初期也随之出现了一些实验性质的验证工具,并在这期间的一些可信操作系统原型(SAT,PSOS,Multics)的开发中得到了应用.
在可信操作系统的形式化验证中,常常用具有可推理特性规范语言和相关辅助验证工具来协助验证工作.当前与安全相关的形式化验证规范语言集和工具主要有Gypsy验证环境(gypsy verification environment,GVE),形式化开发方法(formal development methodology,FDM),层次开发方法( hierarchical development methodology,HDM),AFFIRM以及Z语言,其中Gypsy和FDM是橙皮书所建议使用的安全操作系统形式化验证工具,特别是Gypsy语言由于其特有的过程抽象技术特性,使得其在诸如LOCK和ASOS等安全操作系统的设计中得到了较为成功的应用.而Z语言则是近些年比较活跃的.应用范围较为广泛的一种形式化验证工具.
形式化安全验证技术属于形式化技术在安全信息系统规划,设计和开发过程中的应用.
形式化验证技术
形式化验证技术的目标在于提供一种方式:"允许在一个计算机系统的功能规范,开发过程和验证过程中使用一种严格的数学注释.使用一种形式化规范语言来描述一个系统,以使得它的一致性,完备性和正确性可以用一种系统的方式来获得".证明检查器和模型检查器是主要用于完成上述目标的两类工具.
证明检查器 有时也称为定理证明器,它不断地把从逻辑和集合理论中所得来的定理应用到一个假设集上直到一个所期望的目标被达到.
证明检查器自己并不产生整个证明,而是仅仅辅助用户从一个代数规范中构造一个证明,且自动执行一个定理证明过程中的冗长部分;
用户需要足够多的数学知识用于构造证明和进行证明;
不能自动完成证明,从证明检查器的行为中用户识别一个证明是处于即将被完成的过程中,还是在一个不能被完成的证明中.
模型检查器用来枚举一个系统可以处于的所有可能状态,并且依据由用户所规定的规则和条件来检查每一个状态的合法性.
模型检查器作用在一个系统的特定模型上(通常是一个有穷自动机),枚举系统可以进入的每一个状态并且依据一定的约束来检查这个状态.
一个状态机使用具有值返回函数(V-function,提供这个状态的细节)的状态和具有观察函数(O-function,定义变换)的变换来定义.
一个观察函数是通过改变一个状态的细节来工作的,这个状态是由一个函数返回的.
模型检查器的缺点:随着系统复杂度的增加,系统状态是以指数增长的,所有模型检查器易于产生不可忍受的资源竞争现象.
解决方法:可以借助于使用一个证明检查器,或同时组合这两种不同的,互相补充的形式化方法,以期这两种方法优势互补.
与可信操作系统开发相关的形式化验证技术
在可信操作系统开发中,可用形式化规范与形式化验证等形式化开发手段来提供系统的可信程度.
一般来说.形式化验证可分为两个基本阶段,即形式化安全策略模型和形式化规范模型之间的一致性验证,以及形式化规范和系统具体代码实现之间的一致性验证.
形式化规范的目的在于通过精确而又清晰的,可进行计算机处理的方法来描述系统的功能.
在一个形式化的规范中,层次化的概念通常是一个用于化简问题复杂度的最主要手段,如右图所示.
模型
顶层规范
中层规范
证明
底层规范
实现
测试/证明
证明
证明
规范的一致性
形式化规范
代码的一致性
图4. 规范层结构
形式化验证可以分几个不同的阶段,按实际要求和技术能力分别进行.
形式化验证是在形式化模型的基础上进行的,目的在于将系统所依赖的安全数学模型的完备性和一致性通过对规范的形式化验证带到系统的具体实现中.
形式化规范的目标 使用一种简洁的,无二义的且可被计算机处理的方式来描述系统的功能行为.
首先对系统的安全模型进行必要的改写,扩充,以便形成一个形式化顶层规范(FTLS),在这个形式化顶层规范中包含了用数学可验证形式来表示的安全策略.
为了确保形式化顶层规范的正确性,必须进行形式化顶层规范与系统安全模型之间的一致性证明.
类似地,形式化顶层规范被改写,扩充为更详细的形式化高层规范,并且证明形式化高层规范的正确性.
从低层形式化规范到代码的形式化验证中,所采用的技术和其它高层规范之间所采用的验证技术是不同的,这就需要引入异质的验证方式和工具;这增加了系统验证的复杂性 ,需要许多额外的开销.
Gypsy验证系统由于本身的一些特殊性,使得它可以应用在安全操作系统形式化设计的各个阶段.这也是Gypsy广泛应用于可信操作系统设计的一个重要因素.
在形式化验证中的层次分解技术,主要包括数据结构精化,算法精化和过程抽象等.
四,形式化安全验证系统结构
形式化安全验证系统又称之为安全规范和安全验证系统,典型的形式化安全验证系统至少由下列组件构成:
规范语言处理器;
验证条件生成器;
定理证明器.
语言规范处理器
规范语言是指从数学,逻辑和程序设计中派生出的形式化注释,它们的目的是用一种简捷的详细方式精确地陈述出一个给定程序系统所提供的功能.
出于和软件工具相兼容的目的,这些语言的语法已经被修改,使其具有适合于机器处理的目的.用这样的语言所写成的规范就叫做"形式化"规范,以便和那些依赖于自然语言描述的规范相区别.
一个功能规范是对一个系统的输出如何与系统输入自恰的描述.
从抽象系统属性到程序断言这个形式化验证过程序列来看,不同验证系统中的规范范畴是相当不同的.
一个规范语言处理器可以仅对规范进行语法检查,也可以产生用于表示安全性,一致性或者其它特性的逻辑表达式或者公式.
验证条件生成器
验证条件生成器(VCGs)在当前程序验证方式中扮演了一个不可或缺的角色.一个条件产生器把一个程序和有关这个程序的一些断言作为输入,生成用于宣称这两者是一致的公式.
通过把有关程序变量的断言插入到不同点的方式,一个程序就被准备为一个验证条件生成器的输入.
至少在程序体的入口处有一个进入断言,并且在程序的出口处有一个退出断言;这里假设在执行前如果进入断言是真的,则在执行后退出断言也将是真的.
在程序中的每一个循环必须为一个循环断言所"截";循环断言依赖于实现细节.
对于在程序中相邻两个断言之间的每一个途径,条件生成器都为之创建一个公式(验证条件);这个公式声称如果第一个断言是真,则第二个断言也为真,并且介于这两个断言之间的,将被执行的代码也将是正确的.如果所有的验证条件都可以被证明,则程序是部分正确的.
为了得到完全正确性,还要求一个附加的终止证明;即这个程序不含有死循环,是可终止的.
由于形式化验证系统中的证明规则和公理指定了程序断言的正确性,所以验证条件是在证明规则或者公理的帮助下产生的.
定理证明器
一个定理证明器用于处理由一个规范处理器,或者一个验证条件生成器所产生的公式.
不同形式化验证系统中的定理证明器对于从用户处获得协助的数量和类型的要求是各不相同的.一些定理证明器需要高度的人机交互,而其它则仅仅接受用于定理正面的,以公理或其它建议形式来表示的帮助.
LOCK,ASOS和DTOS被公认为形式化验证方法在系统设计中应用较为成功的几个项目,前两者使用Gspsy验证方法学,后者使用Z语言作为规范语言.
Gspsy方法学以结构化程序设计,递归证明和规范方法为基础,提供了一种形式化设计和验证的集成环境.
五,Open Source
A debate(争论)has opened in the software development community over so-called(所谓的,称做…的)open source operating systems (and other programs), ones for which the source code is freely released for public(公众)analysis.
Lawton lists additional benefits of open source:
Cost
Quality
Support
Extensibility(可扩展性)
Opponents(反对者)of public release(公开发行, 公诸于众)argue that giving the attacker knowledge of the design and implementation of a piece of code allows a search for shortcomings(缺点, 短处)and provides a blueprint(蓝图, 设计图, 计划)for their exploitation.
六,Evaluation
Most system consumers(消费者,用户)(that is, user or system purchasers) are not security experts.
安全系统的用户需要对他们使用的产品提供足够安全的保证.它们可能:
依赖制造商/服务提供商的保证;
自行测试安全系统本身;或者
依靠独立机构(评估机构)的公正评测.
若采用第2种方法,用户必须是安全领域的专家.但是大多数的用户并不是安全领域的专家.因此某种安全评估是信任安全产品所能作的唯一选择.
评估是搜集保证的证据和依据功能和保证的准则分析关于保证的证据的过程.(Evaluation is a process in which the evidence for assurance is gathered and analyzed against criteria for functionality and assurance.)它能够推断(result in)信任的度量(a measure of trust),表示系统在多大程度上满足特定的标准.
使用的标准依赖于评估的目标和使用的评测技术.
习题与思考题
一,名词解释
操作系统安全
操作系统的安全性
安全操作系统
可信软件
不可信软件
可信通路
基准[参照]监视器
引用验证机制(RVM)
安全内核
可信计算基(TCB)
受控调用
二,问答题
在多道程序系统,计算系统保护的对象是什么
描述操作系统的保护方法.
描述多道程序操作系统的主要保护功能.
描述操作系统安全的主要目标.
描述可信系统设计的基本原则.
描述安全机制的设计原则.
描述可信操作系统的安全特征(features).
在Motorola 68000中,如果状态寄存器中的跟踪位置位,每条指令执行后都会产生一个异常(中断),允许程序员运行一个异常处理例程(中断处理程序),比如用于调试程序.设置跟踪位隐含的安全问题是什么 为什么在处理异常时跟踪位必须清除
应当给多级安全操作系统的根目录分配什么样的标签
考虑多级安全操作系统中的一个目录,保存文件的安全级别有三种可供选择的方法:
将文件的安全级别和文件名一起保存在目录中.
将文件的安全级别和文件本身存放在一起,目录仅包含文件名.
将目录划分成若干区,每个安全级别对应一个区,文件名放入与它们的安全级别相对应的区中.
分析每一种方法隐含的安全问题和可用性问题.
当你注册到一个系统上后,你启动一个进程以你的身份运行.以你的身份运行的进程在你退出系统后能够继续运行吗 在你正在使用的操作系统上研究这个问题
*
*
be on the rise:上涨, 上升; 变得更有价值
*
*
laptop:便携式电脑,膝上型电脑
*
*
responsibility :(常与for, of连用)负责; 责任;职责
*
*
Release:释放, 解放, 放弃, 让与, 免除, 发表
*
Identify:识别,鉴别,标识;确认,验明确定…的起源,性质或起决定作用的特征
*
Index:索引 变址 索引信号;指数;下标
*
comes in:进来, 到达终点, 流行起来, 当选, (钱)到手
put away:放好, 储存…备用, 处理掉, 放弃, 抛弃
check in:登记, 报到
*
direct to:把(注意力,精力)贯注在…上
care about:担心
*
Authority: 权限,特许[权],授权;【信】当局
Usage: 应用,使用(情况),(习惯)用法
*
on::(在…之上, 依附于; 涉及
*
well formed: adj.形成良好的,合适的
conflict of interest:违背公众利益的行为,利益冲突
*
Multics (Multiplexed Information and Computing Service) is a mainframe timesharing operating system begun in 1965 and used until 2000. It was a major influence on subsequent systems.
MAC:多存取计算机
*
Fail Safe:故障安全;故障保险,系统可靠
*
checks on:检验,检查
*
State:声明, 陈述, 规定
as opposed to:与…相对;与…成对比;与…相反
*
Prep:(表示目的)为了, 因为, 至于, 对于, 适合于 conj. 因为
Stupid:愚蠢的,愚笨的,傻的
*
mediate :仲裁, 调停, 作为引起…的媒介, 居中调停;处于中间的
*
garbage :无用信息;垃圾, 废物;垃圾废料,无用单元,无用数据
*
Officer:官员,高级职员
Finegrained: adj.细颗粒的(粒子细小的,细纹的)
*
故障安全/失效安全默认
除非一个主体明确地给予对一个客体的访问权限,访问控制应该拒绝;Deny unless explicitly allowed.
*
Cryptic:;,;
(秘密的, 含义模糊的, 神秘的, 隐藏的
*
Spreadsheet: 电子表格,电子数据表;伸展表
stand in:v. 位于…中, 代替演员站好位置, 使花费
bypassed :绕过,给…设旁路;回避,忽视
*
encompass :包括,包含;围绕
come from:v.来自, 出生于;来自,出身于
touching on :提起;谈到;简略提到,涉及,与…有关
*
Implicit:内隐,隐(含,式) ;固有的, 不怀疑的, 绝对的
*
Legacy:遗产,传统
fund:支助, 投资;为…提供资金
*
-wise suff.(后缀);In a specified manner, direction, or position: 在特定的方式,方向或位置上:clockwise.
顺时针方向 Usage Problem With reference to; in regard to:【用法疑难】 与…有关,关于:
Shutdown: 停止系统运行,停工[机],关机
Revocation:合法性撤消;又称"合法性取消"
*
Pertinent adj. 有关的, 相干的, 中肯的
*
Argue: vt.辩论,证明,主张
*
*
Computer Security: Art and Science, P502
*
capability: 能[效,权]力,本领;权能(操作系统用)
*
Distinguish: 辨别,区别,判别
*
Distinguish: 辨别,区别,判别
*
*
*
so that: 以便,以致;所以
different from: 异于…
Overhead: (总)内务操作;(总,额外,系统)开销
*
trade off:v. 交替换位, 交替使用, 卖掉;折衷选择
*
MULTICS:MULTIple access Computer System,多路存取计算机系统(1965年,贝尔实验室,通用电公司和麻理工学院合作开发的操作系统)
*
Specify: 【动】指定,规定,确定
*
Hacking: 程序"挖口",不轨用机 ;〈计〉窃用(数据)
*
Community:社团,团体,公众;社区,共同体, (生物)群落
·下一篇:医疗事故情报収集等事业

文件类型:PPT/Microsoft Powerpoint 文件大小:字节