计算机安全入门(4)

作者:陆麟
转载请征得作者同意.
2010.9.24


5年前的文章,才刚刚导入到了特权的概念,到底要讲多少东西才能真正算得上“计算机安全入门”,老实讲我也说不清楚。 现在市面上也有不少书籍讲述计算机安全,但是主要却是偏重数据的加密解密,很显然,单独只考虑数据的加密本身恐怕谈不上数据安全,只要看过本人前面已经发布的那几篇计算机安全入门就知道,忽略了TCB,数据是谈不上安全的。

今天想继续由TCB和特权这些个概念继续发展下去,不过我们也需要回顾一下已经掌握的概念。假定PC是我们自己的,我们理所当然就有了PC的所有权,处置权,收益权。这可是法律赋予我们的权限。但是为什么在打开电脑的时候电脑要问我密码?输错了还不让我用?软件厂商是不是明显侵犯我的权益?其实普通软件厂商并没有兴趣侵犯任何人的权益。(我其实没有办法排除是否会有厂商还真的从本质上就是意图侵犯用户的权益。说不定真的有哦。)对于那些OS厂商而言,询问用户名,密码已经是操作第一步,天经地义。用户名的询问,密码的确认,体现的是交互认证的概念。为什么说是交互认证呢? 一旦当操作者想某个设备递交了用户名和密码,这里面就隐含了一个“用户对操作对象的认证已经PASS”的概念和事实。排除欺诈行为,操作者本身很显然看到陌生的设备不会提供用户名和密码,现实世界中所暴露出来的漏洞往往都是诱导“用户对操作对象的认证PASS”为开始。举个通俗点的例子,你不会无缘无故把银行卡的帐号和密码告诉他人吧,但是如果商场里面上有个看上去像真的,但是实际却是假的ATM机,会有相当多的人会向假的ATM机去递交自己的银行卡和密码。问题就出在交互认证的第一环:交互认证出了问题。交互认证的关键在于“交互”。在某些特定的场景下会变成“单向认证”:用户不认证设备,而单方面要求设备认证用户。这是大大的问题,而又极其难处理。Kerberos等有第三方参与的协议往往对于这种问题的解决,有极大的帮助。(Kerberos协议是什么,是怎么一回事,我想早晚会写到的)

好吧,通过地理位置/物件上的标签LOGO/提示信息等一系列条件的组合,我们暂且假定电脑是被交互认证通过,我们输入的帐号和密码顺利地登入了系统。用的还是管理员帐号,拥有了"被授权关机"的特权,我们试图访问另外一台主机,发现无法关闭另外的机器,这是什么缘故。这就引出了另外一个概念,被授予的特权仅仅局限于提供授权的授权当局所能完全掌控的范围。在这里写“授权当局”有点生硬,authority这个词其实很难准确描述。但是系统设计的时候,一定是需要能区分某个特权到底能在什么范围内起作用。从逻辑上考虑,特权的有效范围一定是有边界的。其实不仅特权,任何操作都是是有其作用域的。

由于很多系统上都运行相同的软件,在这相同的软件中为了识别不同系统的用户,往往都在用户ID前面加上域限定符号。我们发现有很多分布式系统的场景下,来自总部的操作人员可以操作分支机构的数据,总部的操作人员从来就没有在分支机构的机器设备上登录过,这样的情形,往往需要牵扯到的是“信任”,也就是“Trust”这个术语。


今天我们了解了“交互认证”的真正含义,从特权的边界导入了“信任”这个术语,暂且到此为止, 关于“信任”的详解,敬请期待下文.