即便操做系统拥有再强壮的内核和再安全的用户应用,若是一开始没有把好关,那形成的损失要比一个不安全的内核更大,试想,国家安全局确定是再安全不过了,可是若是一个反动组织控制了国家安全局,那么国安局将变成一个十分危险的地方,它将会给人民带来灾难。linux
在操做系统的意义上就是要提供一条所谓安全的路径,该路径的一端是用户,另外一端是绝对可信的可信计算基(TCB),而安全原则促使这个可信路径实现成为一个能够保证不会有任何实体监控和篡改信息的机制。任何须要安全的机构都须要这么作,操做系统固然须要安全,之因此提供一条安全路径是由于内核不能保证每一个用户都是好人或者即便都是好人也不能保证用户对安全很在乎,这样其实能够卸下用户的不少负担。操做系统原理上说只有内核在系统中是可信软件,对于在intel的保护模式上运行的系统来讲就是在0环运行的程序是可信,其实就是内核,而全部的用户空间的程序都是不能保证安全的,也就是不可信的,如此一来,即便经销商宣称再安全的用户应用,操做系统也不会认为就是安全的,操做系统为了提供给用户一个单点进入的钥匙,就利用了可信路径,注意单点进入很重要,这样对于验证更加有效,大厦是安全的,安保十分不错,可是必须在嘉宾进入大厦的时候进行单点监测,可是必须保证执行监测的人员是可信的,这好像进入了一个无限死循环,可是事实上没有多少次重要会议会死循环在那或者大厦爆炸,这就是可信路径的约定。操做系统既然不能保证用户程序安全,那就要对用户程序进行检测,可是又不能每一个都检测,因而在将权力转交给一个计算机用户的时候,必须保证转交过程绝对安全,接下来转交完毕之后用户的安全策略就能够发挥效用了,转交过程就是在可信路径中进行的,转交在可信路径下执行能够给操做系统一个安全的单点验证环境,保证执行单点验证的执法程序是可信的而不是冒充的,这是进入一个系统最基本的。shell
各大操做系统都实现了可信路径,好比windows的可信路径实现为ctrl/alt/del三键组合,运行于可信的0环的驱动随后开启一个专用的登陆桌面,而只有winlogon程序能够访问这个登陆桌面,从而保证没有别的恶意程序能够监控登陆过程。windows启动后有三个桌面,一个是咱们使用的这个,一个是专用于登陆的,一个是屏保的,windows靠桌面的隔离实现了可信路径,实际上是shell的隔离;linux的实现更加简单易于理解,linux是基于统一的资源保护实现安全的,所以它没有必要存在一些太过“策略”性的复杂的东西,感受可能会遇到安全问题的地方直接将访问控制映射到经典的unix访问控制上就能够(想象一下,linux中就没有全局钩子),unix/linux的安全主要做用于被保护的对象而windows的安全主要做用于发起访问的对象,这个区别致使了linux的可信路径实现比windows简单很多,因为linux启动的时候就是root根用户,所以它所启动的getty程序是绝对可信的,再者,此时刚刚从内核过来,刚开始/sbin/init进程,只要init进程可信那么迄今为止一切就是可信的,而/sbin/init是否被替换掉就是另一个问题了,既然init启动的getty是可信的,那么当你输入用户名后它启动的login以及之后的登陆过程也是可信的,可是仅仅保证这些程序自己是可信的还不够,由于你不能保证没有恶意的程序在探测咱们的密码输入动做,好比在getty启动以前可能启动了一个***,这虽然不是安全自己的内容可是这里有问题,所以还得防着一些,再者,getty自己若是被替换,那就真的很差办了。要想作到登陆时没有别的恶意进程监听,此时可信路径派上了用场,当你的alt/sysrq/k组合键被按下时,可信路径就被打通了,它的打通靠的是杀死一切此终端的别的进程来实现的,虽然linux的作法有点粗暴,可是十分安全,若是本终端有恶意进程,那么这个组合键一下去,一切就都被杀死了,但是linux的可信路径看起来没有windows安全,由于你再杀进程也会有漏网之鱼,好比守护进程就没有在任何终端,并且运行在同一个用户可是不一样终端下的恶意进程仍然能够检测登陆,因而linux必须加大可信路径中杀死进程的约束强度,好比只要有进程打开了当前终端,那么也一并杀死,如此一来就安全了,由于linux中,一切都是文件,因而一个进程是否打开了当前终端只须要检测一下进程的打开文件就能够了,一切都统一的进行,而且只要要监控终端,必然要先打开这个终端,linux又没有windows中的全局钩子之类的东西(linux不是消息驱动的),所以就相应的少了不少事。windows