最近,我学习了可信计算基础的概念,并看到了两种类型的TCB:
根据我的理解,这里的主要区别是,在前者中,我们有许多面向OS的进程,比如在内核中运行的文件系统或虚拟内存管理系统(因此在最受信任的级别上,在最高的权限中),而在后面,我们尽可能多地移动到在用户空间中运行。(通常权限较小)
做一个更小的内核背后的理性是什么?例如,在内核中运行设备驱动程序,难道不是更安全吗?
发布于 2017-07-04 04:30:51
在内核模式下运行的代码始终具有执行任何操作的完全权限,包括崩溃内核或破坏其内部数据结构。用户模式驱动程序限制了这些功能,因此必须通过指定的接口与微内核进行通信。例如,如果存储设备驱动程序存在错误,以致它用作复制缓冲区目标的指针有时未初始化,则在宏内核中,未初始化的指针有可能指向内核自己的内存,驱动程序可能会覆盖内核的数据结构,如进程表,可能会导致整个系统崩溃(内核恐慌)。在微内核中,由于驱动程序不能直接写入内核内存,这样的错误最多只会使设备驱动程序本身崩溃,并且内核可以重新启动设备驱动程序进程。
一般来说,人们认为微内核比宏内核具有更好的安全体系结构,但是它会带来性能上的损失。现代的微内核和宏内核使用了许多技巧来最小化它们的弱点。
https://security.stackexchange.com/questions/163332
复制相似问题