打字猴:1.70043713e+09
1700437130 3. UUCP
1700437131
1700437132
1700437133
1700437134
1700437135
1700437136 在20世纪70年代中期,迈克尔·莱斯克编写了UUCP,即Unix到Unix的拷贝程序(Unix to Unix copy program)。它用于在Unix系统之间(一般通过普通电话线)传送文件。虽然电话线传数据速度很慢,有时还很昂贵,但电话线无处不在,而且当时大多数Unix系统都具备某种拨号访问功能。不过具有外拨能力的较少,因为这需要支付话费。
1700437137
1700437138 尽管UUCP主要用于软件发布,但早在互联网普及之前,它也是远程命令执行、邮件传输和新闻组的基础。Usenet是最早的世界性信息发布系统之一,它就建立在UUCP基础之上。
1700437139
1700437140 第一个UUCP发行版包含在Unix第7版中;在接下来的几年里,它得到改进,被移植到其他操作系统上,并且开源了。后来,随着互联网成为标准通信网络,其协议后来居上,UUCP“寿终正寝”。
1700437141
1700437142 4.安全
1700437143
1700437144
1700437145
1700437146
1700437147
1700437148 Unix社区很早就开始关注安全问题,这种兴趣部分来自Multics,部分来自密码学方面的经验。
1700437149
1700437150 有个安全问题关乎允许文件系统用户控制对其文件的访问。Unix文件系统使用9个权限位来控制文件访问。文件的所有者有3个权限位,分别控制读访问、写访问和执行访问。对于所有者来说,通常允许读和写普通的文本文件,而执行则不允许,除非该文件是可执行程序或shell脚本。还有3个权限位用于所有者的组,大概类似于部门、项目与成员的关系,或教职工与学生的关系。最后3个权限位适用于所有其他用户。
1700437151
1700437152 这种机制比Multics那套本质上要简单得多,但它在很长一段时间内都发挥了很好的作用。例如,像编辑器、编译器、shell等标准命令,都是由一个有特权的账户(通常是root用户)拥有的,它可以随意读写和执行这些命令,但普通用户只能执行(也许还可以读)而不能写。需要注意的是,可以在不能读取程序内容的情况下执行程序,这样一来,程序就可以安全地包含受保护的信息。
1700437153
1700437154 早期有个改进是为文件设置了第10个权限位,称为setuid (意为“设置用户ID”)位。设置这个权限位后,文件作为程序执行时,检查权限的用户ID不是运行程序的用户,而是文件的所有者。如果设置了该权限位,普通用户就可以借用程序所有者的权限运行程序。这可以用于操作文件系统创建目录、重命名文件等的程序:执行有特权的系统调用的程序由超级用户拥有,其访问权限不受限制。当然,setuid程序的编写和管理必须小心翼翼,如果不小心,就会严重危害系统安全。setuid由丹尼斯·里奇发明,他在1979年获得了专利。
1700437155
1700437156 如前所述,密码的概念起源于CTSS,在Multics中沿用,然后被采纳进Unix。在名为/etc/passwd的文本文件中,每个用户占一行,记录登录名、用户ID、密码和其他一些字段。从一开始,密码就是以哈希而非明文的形式存储。哈希是一种扰乱形式,要想重新创建原始密码,唯一切实可行的方法是尝试所有可能的密码。这意味着任何人都可以读取密码文件,但不能使用哈希密码以别人的身份登录。
1700437157
1700437158 理论如此。但是,如果哈希没做好,或者密码太简单,就有可能被解密。肯和鲍勃·莫里斯收集了各种Unix系统的密码文件,进行字典攻击实验,尝试疑似密码,看它们哈希之后是否与密码文件中存储的内容相同。他们在20世纪70年代中期的研究表明,10%~30%的密码可以通过这种方式获得。
1700437159
1700437160 尽管各方的技术都更加复杂,字典攻击仍然有效。我们希望今天的用户能更多地意识到弱密码的危险性,但从最近经常使用的密码列表来看,他们并没有意识到。顺便提一下,这种攻击方式也曾在1988年的莫里斯蠕虫(Morris Worm)中使用过。当时鲍勃的儿子罗伯特·莫里斯无意中发布了一个程序,该程序试图在互联网上登录Unix系统并进行自我传播。其机制之一是使用可能的密码字典,如“password”和“12345”。
1700437161
1700437162 鲍勃编写了最初的Unix crypt命令。他于1986年从贝尔实验室退休,成为美国国家安全局(National Security Agency,NSA)的首席科学家,这说明他确实对计算机安全和密码学相当了解。他于2011年去世,享年78岁。
1700437163
1700437164 密码学是鲍勃、肯、丹尼斯、彼得·温伯格和弗雷德·格兰普(图5-19)等几位1127中心成员一直以来的兴趣所在。(丹尼斯的网页讲述了一些有趣的幕后故事。)虽然今天的加密技术都用软件实现,但在第二次世界大战期间,加密技术是通过机械装置完成的。弗雷德不知怎么搞到一台德国军方使用的恩尼格玛机(Enigma)。有人说是他在公开市场上买来的;也有人说是他的父亲,一个美国大兵,在战争结束后从德国带回来的。弗雷德把它保存在贝尔实验室。他离世前,把它留给了肯·汤普森。这台机器就放在我对面的肯办公室文件柜底部抽屉里。
1700437165
1700437166
1700437167
1700437168
1700437169 图5-19 弗雷德·格兰普,约1981年(杰勒德·霍尔兹曼供图)
1700437170
1700437171 有一天,我借它去普林斯顿大学上一堂密码学讲座。我问有没有人见过恩尼格玛机。没有,没人见过,然后我把它从桌子底下拿出来。我从没见过学生们对什么东西有如此大的兴趣,有些学生甚至站到桌子上,想看个究竟。肯后来把恩尼格玛机捐给了一家博物馆。
1700437172
1700437173 1983年,肯和丹尼斯获得图灵奖时,肯发表了颇具先见之明的演讲“Reflections on Trusting Trust”(关于信任的思考),阐述了可以对编译器进行一系列修改,最终在系统的登录程序中安装木马。
1700437174
1700437175 “万勿相信不是完全由你自己创建的代码(尤其是来自雇我这种人的公司的代码)。再多的源码级验证或审查也无法保护你免遭不受信任的代码之害。”
1700437176
1700437177 正如他所指出的那样,同样的技巧也可以应用到硬件。在硬件上,漏洞更难被发现。情况并没有好转,这次演讲在今天仍然具有很强的现实意义。
1700437178
1700437179 5.硬件
[ 上一页 ]  [ :1.70043713e+09 ]  [ 下一页 ]