4.1 操作系统安全基础
在对具体操作系统实例进行分析之前,将首先对操作系统的基本概念进行讲解。
4.1.1 操作系统概述
1. 操作系统概念
操作系统(Operating System,OS)是一种软件,属于系统软件,从用户角度看,操作系统可以看成是计算机的硬件扩充;从人机交互方式来看,操作系统是用户与计算机的接口;从管理者角度看,操作系统也是管理资源的程序扩充。
从计算机的系统结构看,操作系统是一种层次、模块结构的程序集合,属于有序分层法,是无序模块的有序层次调用,如图4-1所示。
图4-1 操作系统与软硬件关系层次示意图
操作系统是计算机技术和管理技术的结合,相当于计算机系统的“管理机构”,是为计算机用户服务的,它的主人就是用户。
操作系统是方便用户管理和控制计算机软硬件资源的系统软件或程序集合。
硬件是计算机系统的基础,软件是提高计算机系统效率和方便用户使用计算机的程序,它们二者相互依赖、相互促进、共同发展。
2. 操作系统的五大类型
批处理操作系统、分时操作系统、实时操作系统、网络操作系统、分布式操作系统。
(1)批处理操作系统(单道批处理操作系统 、多道程序设计技术、 多道批处理操作系统):
● 单道运行:每次只调一个用户程序进入内存让它运行。
● 多道程序设计:即在系统内(内存)同时存放并运行几道相互独立的程序。
● 多道程序设计的基础:是将运行过程进一步细化成几个小的步骤,从而实现宏观上的并行。但从微观上看是串行的,内存中的多道程序轮流地或分时地占用处理机,交替执行。
● 多道程序系统 ≠ 多重处理系统 ≠ 多用户 ≠ 多终端:多道是指内存中驻留多个程序或一个程序的多个程序段,因此多用户系统一定是采用多道技术。而多道系统不一定是多用户系统,多重处理系统一般指多CPU系统。当然,一个CPU的系统采用分时技术可以为多用户服务,多用户的关键技术是在用户之间要有保密保安措施。终端指用户使用的硬件设备,即使一个终端也可为多用户使用,例如,银行的自动取款机(ATM)。
● 多用户系统中用到的几个概念:重入码、可重入程序、纯码 = 可重入代码
(2)分时操作系统
分时技术:把CPU的时间分成很短的时间片(例如,几十至几百毫秒)工作。随着时间片的时间减少,对换时间所占的比例随之增大。随着用户数目的不断增加,这种矛盾会越来越突出。特点是计算机规定人(用户)。
(3)实时操作系统
实时是指计算机对于外来信息能够以足够快的速度进行处理,并在被控对象允许的时间范围内做出快速反应。但交互作用能力较差,特点是人(用户)规定计算机。
(4)网络操作系统
计算机网络是计算机技术与通信技术相结合的产物,是互联起来的计算机的集合。
在通常的操作系统中增加了实现网络低层协议(一般到传送层)功能和网络设备管理功能的操作系统。
(5)分布式操作系统:运行在不具有共享内存的多台计算机上,但在用户眼里却像是一台计算机。
4.1.2 操作系统的形成和发展
早期计算机系统是用于科学与工程的数值计算,如第一台计算机(1944年)产生的原因就是解决大口径火炮设计中的计算问题:弹道轨迹、弹着点和材料的各种应力分布的计算。还有原子弹设计和实验中大量的计算问题,用当时的计算工具已经解决不了。
1946年—50年代末,当时计算机处于电子管时代,根本没有操作系统。用户只有单独的计算机,只能通过记录有程序和数据的卡片(punch card)或后期的打孔纸带去操作计算机。程序读入计算机后,计算机就开始工作直到程序停止。由于程序难免有误,所以计算机通常都会中途崩溃。程序一般通过控制板的开关和状态灯来调试。人们把这个时期称为“手工操作阶段”。顾名思义人们当时使用的计算机大量需要人工控制,还没有“管家”来为他们服务。
50年代后期,计算机的运行速度有了很大的提高,从每秒几千次、几万次发展到每秒几十万次、上百万次。出现了联机批处理系统、脱机批处理系统、执行系统(执行系统不仅负责调度作业自动地运行,而且还要控制I/O)。后来,计算机引入帮助程序输入输出等工作的代码库。这是现代操作系统的起源。然而,计算机每次只能执行一个任务。在英国剑桥大学,这些任务的磁盘从前是排成一排挂在衣钩上的,衣钩的颜色代表任务的优先级。
50年代末-60年代中期,此时计算机进入了第二代——晶体管时代。为了解决人机矛盾,提高自动化程度,人们研制了监督程序,由该程序自动依次处理一系列任务。早期的操作系统非常多样化,生产商生产出针对各自硬件的系统。每一个操作系统都有很不同的命令模式、操作过程和调试工具,即使它们来自同一个生产商。最能反映这一状况的是,厂家每生产一台新的计算机都会配备一套新的操作系统。这种情况一直持续到二十世纪六十年代IBM公司开发了System/360系列计算机。尽管这些计算机在性能上有明显的差异,但是他们有统一的操作系统——OS/360,OS/360的成功陆续地催化出MFT、MVT、SVS、MVS、MVS/XA、MVS/ESA、OS/390和z/OS。
60年代中期-70年代中期,计算机进入第三代——集成电路时代。在这一时期操作系统初步形成并完善。出现了三种最基本的操作系统类型:多道批处理操作系统、分时操作系统和实时操作系统。几种硬件支持相似的或提供端口的软件可在多种系统上运行。早期的系统已经利用微程序来在他们的系统上实现功能。事实上,除了360/165和360/168外,360/40之后的大部分360系列的计算机都实行微程序设计。UNIX操作系统是由AT&T公司开发出来的。由于它的早期版本是完全免费的,可以轻易获得并随意修改,所以它得到了广泛的接收。后来,它成为开发小型机操作系统的起点。由于早期的广泛应用,它已经成为的操作系统的典范。不过,它始终属于AT&T公司,只有那些能负担的起许可费的企业才用得起,这限制了它的应用范围。早期的操作系统是可以被用户软件所利用的功能的集合。一些有能力的公司发展更好的系统,但他们不支持其他公司硬件的特性。
80年代-至今,第四代计算机,大规模集成电路工艺技术飞速发展。操作系统也有了进一步发展:出现了个人计算机上的操作系统、网络操作系统和分布式操作系统。微型处理器的发展使计算机的应用普及至中小企及个人爱好者。而计算机的普及又推动了硬件组件公共接口的发展(如S-100,SS-50,Apple II,ISA和PCI总线),并逐渐地要求有一种“标准”的操作系统去控制它们。在这些早期的计算机中,主要的操作系统是8080/8085/Z-80 CPU用的Digital Research’s CP/M-80,它建立在数码设备公司(Digital Research)几个操作系统的基础上,主要针对PDP-11架构。在此基础上又产生了MS-DOS(或IBM公司的PC-DOS)。这些计算机在ROM(只读存储器)都有一个小小的启动程序,可以把操作系统从磁盘装载到内存。IBM-PC系列的BIOS是这一思想的延伸。自1981年第一台IBM-PC诞生以来,BIOS的功能得到不断地增强。
随着显示设备和处理成本的降低,很多操作系统都开始提供图形用户界面。如:许多UNIX提供的X Window一类的系统、微软的Windows系统、苹果公司的Mac系统和IBM公司的OS/2等。最初的图形用户界面是由Xerox Palo Alto研究中心于70年代初期研发出来的,之后被许多公司模仿,继承发展。
概念意义上的操作系统和通俗意义上的操作系统差距越来越大。通俗意义上的操作系统为了方便而把最普通的包和应用程序的集合包括在操作系统内。随着操作系统的发展,一些功能更强的“第二类”操作系统软件也被包括进去。在今天,没有图形界面和各种文件浏览器已经不能称为一个真正的操作系统了。
4.1.3 操作系统安全的研究发展及现状
随着Internet应用的广泛深入,计算机系统的安全问题日益引起人们的高度重视。操作系统是连接计算机硬件与上层软件及用户的桥梁,它的安全性是至关重要的。
操作系统安全性是计算机安全的重要基础,要妥善解决日益广泛的计算机安全问题,必须有坚固的安全操作系统做后盾,这要求我们去寻找切实有效的开发方法,开发出能够满足实际应用需要的安全操作系统来。
早在20世纪60年代,安全操作系统的研究就引起了研究机构(尤其是美国军方)的重视。至今,人们已在这个领域付出了三十几年的努力,开展了大量的工作,取得了丰富的成果。
1983年,美国国防部颁布了历史上第一个计算机安全评价标准,这就是著名的可信计算机系统评价标准,简称TCSEC,又称橘皮书。
1985年,美国国防部对TCSEC进行了修订,TCSEC标准是在基于安全核技术的安全操作系统研究的基础上制定出来的,标准中使用的可信计算机(TCB:Trusted Computing Base)就是安全核研究结果的表现。TCB的定义是G.H. Nibaldi 1979年在描述一个基于安全核的计算机安全系统的设计方法时给出的,该方法要求把计算机系统中所有与安全保护有关的功能找出来,并把它们与系统中的其他功能分离开,然后把它们独立出来,以防止遭到破坏,这样独立出来得到的结果就称为TCB。Nibaldi在同年提交的计算机安全评价建议标准中运用了TCB的思想。
TCB在TCSEC中的定义是:一个计算机系统中的保护机制的全体,它们共同负责实施一个安全政策,包括硬件、固件和软件;一个TCB由在一个产品或系统上共同实施一个统一的安全政策的一个或多个组件构成。安全核在TCSEC中的定义是:一个TCB中实现引用监控机思想的硬件、固件和软件成分;它必须仲裁所有访问、必须保护自身免受修改、必须能被验证是正确的。
TCSEC提供D、C1、C2、B1、B2、B3和A1等七个等级的可信系统评价标准,每个等级对应有确定的安全特性需求和保障需求,高等级的需求建立在低等级的需求的基础之上,可形象地表示成如图4-2所示的形式。
图4-2 TCSEC的构成与等级结构
TCSEC为安全系统指定的是一个统一的系统安全政策,这个统一的安全政策由诸如强制访问控制和自主访问控制的子政策构成,这些子政策紧密地结合在一起形成一个单一的系统安全政策。
随着90年代初Internet影响的迅速扩大,分布式应用的迅速普及,单一安全政策的范型与安全政策多种多样的现实世界之间拉开了很大的差距。1992年,美国推出联邦标准草案,欲以取代TCSEC,消除TCSEC的局限性。1993年,美国国防部在TAFIM(Technical Architecture for InformationManagement)计划中推出新的安全体系结构DGSA(DoD Goal Security Architecture),DGSA的显著特点之一是对多种安全政策支持的要求,这为安全操作系统的研究提出了新的挑战[FEUS1998, CFS1996, HALF1999],促使安全操作系统研究进入了一个新的时期。
DGSA是讨论安全政策及其实现问题的一个概念框架,它给安全操作系统开发者带来的挑战是,安全操作系统应该能够灵活地支持在一个计算机平台上,同时工作的多种安全政策,应该能够与不同平台上支持相同安全政策的其他操作系统进行互操作。
从单一政策支持到多种政策支持,安全操作系统迈出了向实际应用环境接近的可喜一步。然而,R.Spencer等指出从支持多种安全政策到支持政策灵活性,还有相当一段距离,支持政策灵活性的系统,必须有能力对执行安全政策控制下的高级功能的低级对象进行细粒度的访问控制,必须能够确保访问权限的传播与安全政策保持一致,必须有能力撤回先前已授予的访问权限,这是处理政策变化或动态政策的需要,因为安全政策通常并不是静止的。
相对来说,中国的安全操作系统研究起步比较晚,但也开展了一系列的工作。1993年,国防科技大学对基于TCSEC标准和UNIX System V 3.2版的安全操作系统SUNIX的研究与开发进行了探讨。
在“COSA国产系统软件平台”国家“八五”科技攻关项目中,围绕着UNIX类国产操作系统COSIX V2.0的安全子系统的设计与实现工作,中国安全操作系统的研究得到了进一步的深入。中国计算机软件与技术服务总公司海军计算技术研究所和中国科学院软件研究所等单位参加了COSIX V2.0安全子系统的开发工作。
“九五”期间,信息产业部电子第15研究所开展了UNIX操作系统的安全性研究工作。1998年,该研究所按照TCSEC标准的B1安全等级的要求对UNIX操作系统的内核进行了改造。以Linux为代表的自由软件在中国的广泛流行对中国安全操作系统的研究与开发具有积极的推动作用。1999年,中国科学院软件研究所推出了红旗Linux中文操作系统发行版本,同时,开展了基于Linux的安全操作系统的研究与开发工作。
到2000年,中国的安全操作系统研究人员相继推出了一批基于Linux的安全操作系统开发成果。