阿姆斯特丹 Vrije 大学的计算机科学教授 Andrew S. Tanenbaum 正领导着一个开发 MINIX 3 操作系统的项目,MINIX 3 的目标是比 Windows 或 Linux 更安全。
在他那份获得欧盟研究委员会(European Research Council)5 年 250 万欧元资助的研究计划书里,Tanenbaum 解释了为何他认为现有的操作系统不安全:
最严重的可靠性及安全问题是与操作系统相关的那些。核心问题在于现有操作系统都不符合 POLA——最低授权原则(Principle Of Least Authority)。POLA 说的是系统划分组件的方式,应当使必然存在于某个组件中的缺陷,不至于波及其他组件。每个组件仅应该得到完成它本身工作所需的权限,不多不少。具体来说,它应该无权读写属于其他组件的数据,无权读取它自身地址空间之外的任何计算机内存,无权执行与它无关的敏感操作指令,无权访问不该访问的 I/O 设备,诸如此类。现有操作系统完全违反以上原则,结果就是造成众多可靠性及安全问题。
Tanenbaum 认为设备驱动程序是主要的肇事者:
典型的操作系统代码中大约有 70% 属于设备驱动代码。我们知道设备驱动部分的每行缺陷数量是其他部分的 3 到 7 倍。有据可查 63% 到 85% 的 Windows XP 崩溃根源是驱动错误,Linux 的情况也没什么理由会不一样。
MINIX 的操作系统架构稍有不同:
Tanenbaum 指出其中的主要区别是令设备驱动运行在用户态能提高安全性:
设备驱动处于内核之上,运行在用户态。每个驱动都作为单独的进程运行,受到内存管理硬件的严格约束,只能访问自己拥有的内存。设备驱动需要执行 I/O 操作的时候向微内核发出调用以获得服务(比如向物理设备发出指令)。微内核在执行任何调用之前,首先会检查该调用是否被许可。因此从声音驱动发出控制声卡的调用会被接受,而从声音驱动发出控制硬盘的调用会被拒绝。
总体目标是:
……将操作系统的结构重新组织为一个运行于内核态的微内核,外加若干用户进程去完成真正的操作系统任务。尽管一个微内核离完整的操作系统还很远,但这样的设计达到了我们的主要目标。我们的目标是将大部分操作系统代码移出到用户空间,这样我们就能将之划分成进程并阻止它们执行“危险”(控制)指令,内存管理硬件也能防止进程访问自身所属以外的内存。
目前 MINIX 3 的版本是 3.1.3a 版,它的主要特性包括:
- 符合 POSIX
- TCP/IP 网络
- X Window 系统
- 语言支持包括 cc、gcc、g++、perl、python 等等
- 超过 650 个 UNIX 程序
- 完全支持多用户和 multiprogramming 多任务
- 设备驱动作为用户进程运行
- 高度容错
- 提供完整的 C 源代码。
由于 MINIX 实现了 POSIX 标准,大多数 UNIX 程序只要细微修改或无需修改就能在上面运行。该项目进入了 Google’s Summer of Code 2008 ,还设立了相应的 MINIX 讨论组。
查看英文原文: MINIX 3 Promises to Be More Secure Than Windows or Linux
评论