首页
论坛
课程
招聘
[分享]《安全之美》(Beautiful Security)样章连载
2011-4-20 10:26 29248

[分享]《安全之美》(Beautiful Security)样章连载

2011-4-20 10:26
29248

书名:安全之美(分享卓越安全专家的思考)
原书名:Beautiful Security
作者:Andy Oram & John Viega  编
出版时间:2011年5月
定价:65.00元
出版社:机械工业出版社

内容简介:
大多数人不会太关注安全问题,直到他们的个人或商业系统受到攻击。这种发人深省的现象证明了数字安全不仅值得思考,而且是个迷人的话题。犯罪分子通过大量创新取得成功,因此防御他们的人们也必须具有同样的创新精神。
《安全之美》包含以下内容:


[*]  个人信息背后的经济:它的运作方式、犯罪分子之间的关系以及他们攻击猎物的新方法。
[*]  社交网络、云计算及其他流行的趋势如何帮助或损害在线安全。
[*]  度量指标、需求收集、设计和法律如何将安全提高到一个新水平。
[*]  PGP不为人所知的真实历史。


专家推荐:
“这本深思熟虑的论文集(《安全之美》)帮助读者摆脱安全领域闪烁着欺骗光芒的心理恐惧,转而欣赏安全的微妙美感。本书描述了安全的阴和阳,以及引人注目的破坏性和闪亮光辉的建设者之间剑拔弩张的气氛。”
——Gary McGraw,Cigital公司CTO,《Software Security》及其他9本书的作者

[培训] 优秀毕业生寄语:恭喜id咸鱼炒白菜拿到远超3W月薪的offer,《安卓高级研修班》火热招生!!!

收藏
点赞0
打赏
分享
最新回复 (12)
雪    币: 231
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zhengbindu 活跃值 2011-4-20 10:31
2
0
从20世纪末以来,Internet得到了极为迅猛的发展,仅用了十年左右的时间就在全球范围内普及。Internt已经融入绝大多数公司、家庭和个人的工作生活之中。我们可以真真切切地感受到层出不穷的新技术给我们的生活所带来的便捷。我们可以足不出户在网上订购自己喜欢的商品。在车站、机场等候时,我们不必像以前那样靠翻报纸来打发时间,而是可以通过无线上网,漫游精彩的网络世界。我们不必再为无法看到心爱的球队比赛而发愁,丰富的网络直播资源可以帮助我们解决这个烦恼。总之,Internet彻底改变了我们的生活方式,使我们的生活变得更加精彩。

但是,鲜花的后面往往可能就是陷阱。从Internet诞生之日起,网络安全就一直是个引人关注的话题。从历史悠久的病毒、木马到最新的网络诈骗,网络安全威胁一直是一把悬在Internet头上的达摩克利斯之剑。由于网络安全威胁的主流逐渐从单纯以破坏为主的病毒、木马转向以获取经济利益为目标的网络诈骗,因此它的危害也越来越大。近些年来,网络上所出现的网络诈骗案件越来越多,很多网友由于对假冒的网络购买链接警惕性不足而蒙受了经济损失。随着网络越来越广泛地渗透到人们的日常生活中,对网络安全的防范也必将越来越引起人们的重视。

《安全之美》萃取了十余位闻名瑕迩的安全专家的智慧,如Philip Zimmermann、Anton Chuvakin、Peiter“Mudge”Zatko等。有些专家着眼于网络安全威胁的心理因素,有些专家侧重于对安全度量指标的讨论,有些专家对电子商务中的网络支付平台的弱点进行了分析,有些专家则对近些年来所发生的几个重大网络犯罪事件进行了详尽分析,还有一些专家对未来的网络安全进行了展望。这些专家的论著对于网络安全从业人员的工作有着非常好的指导意义。对于关注网络安全的人们,这些文章能够极大地拓宽他们的视野,使他们能够发现网络安全的新天地。

本书的翻译工作主要由徐波、沈晓斌完成。另外,姚雪存、陈永军、李福军、杨洁、应巧敏、张瑜等人也为本书的翻译工作作出了贡献。
雪    币: 231
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zhengbindu 活跃值 2011-4-20 10:33
3
0
前言   
第1章 心理上的安全陷阱(作者:Peiter“Mudge”Zatko)        1
1.1 习得性无助和无从选择    2
1.1.1 实例:Microsoft是如何允许L0phtCrack的    3
1.1.2 密码和身份认证可以从一开始就做得更好    6
1.1.3 客户的习得性无助—无从选择    8
1.2 确认陷阱    9
1.2.1 概念简介    10
1.2.2 分析师确认陷阱    11
1.2.3 陈腐的威胁模型    11
1.2.4 正确理解功能    12
1.3 功能锁定    13
1.3.1 安全位置的潜在风险    14
1.3.2 降低成本与未来收益:ISP实例    15
1.3.3 降低成本与未来收益:能源实例    16
1.4 小结    19
第2章 无线网络:社会工程的沃土    (作者:Jim Stickley)    21
2.1 轻松赚钱    22
2.1.1 设置攻击    23
2.1.2 隐私的聚宝盆    24
2.1.3 Web安全的基本缺陷:不要相信可信系统    25
2.1.4 建立无线信任    25
2.1.5 采用可靠的解决方案    26
2.2 无线也疯狂    27
2.2.1 无线侧信道    28
2.2.2 无线接入点自身如何    30
2.3 无线仍然是未来    30
第3章 美丽的安全度量指标(作者:Elizabeth A. Nichols)    31
3.1 安全度量指标的类比:健康    32
3.1.1 不合理的期待    33
3.1.2 数据透明性    33
3.1.3 合理的度量指标    34
3.2 安全度量指标的实例    36
3.2.1 巴林银行:内部侵害    36
3.2.2 TJX:外部侵害    46
3.2.3 其他公共数据来源    56
3.3 小结    57
第4章 安全漏洞的地下经济(作者:Chenxi Wang)    59
4.1 地下网络的组成和基础设施    60
4.1.1 地下通信基础设施    61
4.1.2 攻击基础设施    61
4.2 回报    62
4.2.1 数据交换    62
4.2.2 信息来源    63
4.2.3 攻击向量    64
4.2.4 洗钱游戏    66
4.3 如何对抗日益增长的地下网络经济    66
4.3.1 降低数据的价值    67
4.3.2 信息的权限分离    67
4.3.3 构建动力/回报结构    67
4.3.4 为数据责任建立评估和声誉体系    67
4.4 小结    68
第5章 美丽的交易:重新思考电子商务的安全(作者:Ed Bellis)    69
5.1 解构商业    70
5.1.1  分析安全环境    71
5.2 微弱的改良尝试    71
5.2.1 3D安全    72
5.2.2 安全电子交易    74
5.2.3 单用途和多用途虚拟卡    75
5.2.4 破灭的动机    75
5.3 重塑电子商务:新的安全模型    78
5.3.1 需求1:消费者必须通过认证    78
5.3.2 需求2:商家必须通过认证    79
5.3.3 需求3:交易必须经过授权    79
5.3.4 需求4:认证数据不应被认证方和被认证方之外的其他各方所共享    79
5.3.5 需求5:过程不能完全依赖共享秘密    80
5.3.6 需求6:认证应该是可移植的(不受硬件或协议所限)    80
5.3.7 需求7:数据和交易的机密性和完整性必须得到维护    80
5.4 新模型    80
第6章 捍卫在线广告:新狂野西部的盗匪和警察(作者:Benjamin Edelman)    83
6.1 对用户的攻击    83
6.1.1 充满漏洞的横幅广告    83
6.1.2 恶意链接广告    86
6.1.3 欺骗式广告    88
6.2 广告客户也是受害者    91
6.2.1 虚假的印象    92
6.2.2 避开容易受骗的CPM广告    93
6.2.3 广告客户为何不奋起反击    97
6.2.4 其他采购环境的教训:在线采购的特殊挑战    98
6.3 创建在线广告的责任制    98
第7章 PGP信任网络的演变(作者:Phil Zimmermann和Jon Callas)    99
7.1 PGP和OpenPGP    99
7.2 信任、验证和授权    100
7.2.1 直接信任    101
7.2.2 层次式信任    101
7.2.3 累积式信任    102
7.2.4 基本的PGP信任网络    104
7.2.5 最早的信任网络的毛边    106
7.3 PGP和加密的历史    108
7.3.1 早期的PGP    108
7.3.2 专利和输出问题    109
7.3.3 密码战争    110
7.3.4 从PGP 3到OpenPGP    111
7.4 对最初信任网络的改进    111
7.4.1 撤销    111
7.4.2 伸缩性问题    114
7.4.3 签名的膨胀和困扰    115
7.4.4 证书内偏好    117
7.4.5 PGP全球目录    118
7.4.6 可变信任评分    119
7.5 未来研究的有趣领域    119
7.5.1 超级合法    119
7.5.2 社交网络和流量分析    119
7.6 参考资料    120
第8章 开源Honeyclient:先发制人的客户端漏洞检测(作者:Kathy Wang)    123
8.1 进入Honeyclient    124
8.2 世界上第一个开源Honeyclient简介    125
8.3 第二代Honeyclient    127
8.4 Honeyclient的操作结果    130
8.4.1 Windows XP的透明活动    130
8.4.2 Honeyclient数据的存储和关联    131
8.5 漏洞攻击的分析    132
8.6 当前Honeyclient实现的限制    134
8.7 相关的工作    135
8.8 Honeyclient的未来    137
第9章 未来的安全齿轮和杠杆(作者:Mark Curphey)    139
9.1 云计算和Web服务:这里是单机    141
9.1.1 创建者和破坏者    142
9.1.2 云计算和Web服务是拯救方案    144
9.1.3 新曙光    145
9.2 结合人、流程和技术:业务流程管理的潜力    146
9.2.1 发散型世界的发散型安全    146
9.2.2 BPM作为多站点安全的指导方针    147
9.3 社交网络:当人们开始通信时,大变革发生了    149
9.3.1 社交网络的艺术状态和潜力    150
9.3.2 安全行业的社交网络    151
9.3.3 数字中的安全    152
9.4 信息安全经济:超级数据解析和网络新规则    153
9.5 长尾变型的平台:未来为什么会截然不同    156
9.5.1 生产工具的大众化    156
9.5.2 发行渠道的大众化    157
9.5.3 连接供应和需求    158
9.6 小结    158
9.7 致谢    159
第10章 安全设计(作者:John McManus)    161
10.1 无意义的指标    162
10.2 市场还是质量    164
10.3 符合准则的系统开发周期的作用    168
10.4 结论:安全之美是系统之美的象征    170
第11章 促使公司思考:未来的软件安全吗(作者:Jim Routh)    173
11.1 隐式的需求也可能非常强大    173
11.2 公司为什么需要安全的软件    175
11.2.1 如何制订安全计划    176
11.2.2 修正问题    178
11.2.3 把安全计划扩展到外包    179
11.3 对现有的软件进行安全化    180
11.4 分析:如何使世界上的软件更安全    182
11.4.1 最好的软件开发人员创建了具有漏洞的代码    182
11.4.2 Microsoft领先一步    183
11.4.3 软件开发商给了我们想要的,却不是我们需要的    184
第12章 信息安全律师来了(作者:Randy V. Sabett)    187
12.1 文化    188
12.2 平衡    190
12.2.1 数字签名指南    190
12.2.2 加利福尼亚数据隐私法    191
12.2.3 安全的投资回报率    192
12.3 通信    194
12.3.1 技术狂为何需要律师    194
12.3.2 来自顶层的推动力,通过合作实现    197
12.3.3 数据泄露小虎队    197
12.4 正确做事    198
第13章 美丽的日志处理(作者:Anton Chuvakin)    199
13.1 安全法律和标准中的日志    199
13.2 聚焦日志    200
13.3 什么时候日志是极为珍贵的    201
13.4 日志所面临的困难    202
13.5 案例研究:瘫痪服务器的背后    204
13.5.1 事故的架构和环境    204
13.5.2 被观察的事件    204
13.5.3 调查开始    204
13.5.4 使数据起死回生    206
13.5.5 小结    207
13.6 未来的日志    207
13.6.1 来源的扩大化    207
13.6.2 未来的日志分析和管理工具    208
13.7 结论    209
第14章 事件检测:寻找剩余的68%(作者:Grant Geyer和Brian Dunphy)    211
14.1 一个常见起点    212
14.2 改进与上下文相关的检测    213
14.2.1 用流量分析提高覆盖率    214
14.2.2 对监测列表进行综合分析    216
14.3 使用主机日志增强洞察力    217
14.3.1  创建富有弹性的检测模型    218
14.4 小结    222
第15章 无需真实数据就能出色完成工作(作者:Peter Wayner)    225
15.1 数据半透明化的工作原理    226
15.2 一个现实的例子    228
15.3 为便利而存储的个人数据    230
15.4 如何权衡    230
15.5 进一步深入    231
15.6 参考资料    232
第16章 铸造新词:PC安全剧场(作者:Michael Wood和Fernando Francisco)    233
16.1 攻击不断增加,防御不断倒退    234
16.1.1 在Internet的传送带上    234
16.1.2 不正当行为的回报    235
16.1.3 暴徒的响应    236
16.2 揭穿假象    237
16.2.1 严格审查:传统的和更新的反病毒扫描    237
16.2.2 沙盒和虚拟化:新的银弹    240
16.3 桌面安全的更佳实践    242
16.4 小结    243
附录 作者简介    245
雪    币: 231
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zhengbindu 活跃值 2011-4-20 10:47
4
0
如果有人相信新闻标题可以揭示趋势,那么对于计算机安全领域而言现在是个有趣的时刻。当《安全之美》出版时,我阅读了一个能够打开麦克风和摄像头并窃取数据的软件的部分代码。这个软件在103个国家的超过1200台计算机上安装,尤其是在大使馆和其他敏感的政府部门。另外,一家法庭支持美国调查官在没有得到授权的情况下可以查看电话和Internet记录(只要交谈的另一端是在美国境外)。最新公布的漏洞包括Adobe Acrobat和Adobe Reader的一个缓冲区溢出漏洞(当前常称为漏洞攻击,英文为exploit),允许攻击者在用户打开PDF之后在用户的系统中通过用户的权限执行任意代码。
新闻标题实际上并不能很好地提示趋势,因为在漫长的历史中,它是由微妙的革命性变化所驱动的,而这种变化往往只有少数人注意到,例如编写本书的前沿安全专家们。读者可以在本书中发现安全威胁的发展方向以及针对它们的响应。
我在第一段中所提到的所有令人惊恐的新闻对于安全领域而言只是普通的业务而已。是的,它们正是我们应该担忧的安全趋势的一部分,但我们还需要注意更新的、更不易被觉察的漏洞。《安全之美》的作者们数十年来一直奋斗在第一线,努力发现我们的工作习惯中的脆弱环节,并提议用非常规的方式来处理它们。

为什么安全是美丽的
我要求安全专家John Viega想方设法为本书寻找一些作者,以便向普通计算机用户提供一些与安全有关的观点。除了在媒体上所看到的骇人听闻的关于网络入侵和盗窃的新闻之外,普通人一般都觉得安全是一件乏味的事情。
对许多人而言,安全就是系统管理员喋喋不休地提醒他们创建备份文件夹,无穷无尽的在网页显示之前跳出来的要求输入密码的对话框。办公室职员每次抄读办公桌边的笔记本上所记录的密码时都怒目圆睁小声咒骂(笔记本就放在打印出来的预算材料的上面,事实上办公室管理人员要求应该将它锁在抽屉里面)。如果这就是安全,那还会有谁想从事这个职业呢?谁会从O'Reilly购买一本关于安全的书呢?谁会一次花费半分钟以上的时间去思考安全呢?
对于那些肩负创建安全系统任务的人们,他们所付出的努力看上去是毫无希望的。站在旁边的人不会对他们的工作提供任何协助,业务经理也拒绝在安全上多花一分钱。程序员和系统管理员由于他们必须使用的工具和语言存在没完没了的零日攻击和未打补丁的漏洞也逐渐变得懒散起来。
这就是为什么关于安全的书卖得很差(尽管在过去的一两年里销量有所上扬)。关于如何入侵系统的书要比关于如何保护系统的书好卖得多,这个趋势着实令我震惊。
是的,本书应该改变这个现象。它应该向读者展示安全是一项最为激动人心的职业。它并不枯燥,也没有太多的官僚主义,更没有太多的约束。事实上,它和其他技术一样充满着想象力。
多年以来,我编辑过的大多数编程书籍都提供了关于安全的内容。这样的内容当然是非常实用的,因为它们允许作者讲述一些基本原则和一些良好习惯。但是,我已经对这种做法感到厌烦,因为它为安全话题划了一条分界线。它所灌输的都是一些老生常谈的安全观点,是一些锦上添花或者事后诸葛亮的东西。本书将颠覆这些观念。
John为本书选择了一些作者,他们已经在安全领域证明了自己具有独特的观点,并且有一些新的思路要和大家分享。有些作者设计了数以千计的人所依赖的系统,有些作者在大型公司担任高管职位,有些作者曾为法庭作证并为政府部门工作。所有的作者都在寻找普通人所不知道的问题和解决方案,但是这可能需要几年的时间才会收到成效。
本书的作者指出:有效的安全需要你始终保持警惕。它会打破技术、认知和组织结构的边界。安全界的黑帽们千方百计通过创新来取得成功。因此,负责防御他们的人们同样需要创新。
本书的作者肩负着世界范围内的信息安全使命,让他们抽出时间编写本书是一件很困难的事。事实上,许多作者在平衡本职工作和本书的写作任务时感受到了压力。但是,他们所花的时间是值得的,因为本书将会促进他们实现更远大的目标。如果有更多的人对安全领域产生兴趣,决定进一步对它进行探索,并向尝试通过组织上的变化以实现更好保护的人们给予他们的关注和支持,这本书就值得作者所付出的心血。
2009年3月19日,美国参议院商业、科学和交通委员会举行了一个听证会,它的主题是信息技术专家的缺乏以及这种现象对美国的网络安全的危害。让学生和专业人员对安全问题产生兴趣是一项极为迫切的需求,本书就代表了迈向这个目标的一小步。

本书的读者
《安全之美》适用于那些对计算机技术感兴趣并希望在最尖端领域体验生活的人们。本书的读者包括可能追求职业生涯的学生、具有一定编程背景的人们以及对计算机有着适度或深入了解的人们。
本书的作者在解释技术时尽量放低门槛,使相对新手级的读者也能领略到攻击和防御活动方式的感觉。专家级的读者能够更多地享受讨论的乐趣,因为本书能够加深他们对安全原则的理解,并提供了未来研究的指导方针。

捐赠

《安全之美》的作者们向互联网工程任务组(The Internet Engineering Task Force,IETF)捐赠本书的版税。这个组织对于Internet以及其具有远见的自我管理式的迷人模型的发展极为关键。如果没有IETF具有奉献精神的成员们的科学讨论、灵活的标准制定和明智的妥协,Internet的发展是无法想象的。IETF在自己的网页上把自己描述成“由网络设计者、操作者、生产商和研究人员所组成的大型开放式国际社区”。O'Reilly将把版税汇给互联网社会(The Internet Society,ISOC),该组织长期向IETF提供资金和有组织的支持。

材料的组织
本书内容并没有按任何特定的方案进行排列,但还是经过了整理,以便提供引人入胜的阅读体验,方便读者惊喜地发现新观点。不过,还是将那些讲述相似主题的内容放在了一起。
第1章   心理上的安全陷阱  作者Peiter“Mudge”Zatko
第2章   无线网络:社会工程的沃土  作者Jim Stickley
第3章   美丽的安全度量指标  作者Elizabeth A. Nichols
第4章   安全漏洞的地下经济  作者Chenxi Wang
第5章   美丽的交易:重新思考电子商务的安全  作者Ed Bellis
第6章   捍卫在线广告:新狂野西部的盗匪和警察  作者Benjamin Edelman
第7章   PGP信任网络的演变  作者Phil Zimmermann和Jon Callas
第8章   开源Honeyclient:先发制人的客户端漏洞检测  作者Kathy Wang
第9章   未来的安全齿轮和杠杆  作者Mark Curphey
第10章   安全设计  作者John McManus
第11章   促使公司思考:未来的软件安全吗  作者Jim Routh
第12章   信息安全律师来了  作者Randy V. Sabett
第13章   美丽的日志处理  作者Anton Chuvakin
第14章   事件检测:寻找剩余的68%  作者Grant Geyer和Brian Dunphy
第15章   无需真实数据就能出色完成工作  作者Peter Wayner
第16章   铸造新词:PC安全剧场  作者Michael Wood和Fernando Francisco

使用本书的代码示例
《安全之美》是为了帮助你完成工作。通常来说,你可以在你的程序和文档中使用本书的代码。除非你使用了本书的大量代码,否则你无需获取我们的许可。例如,写一个程序用到本书的几段代码不需要获得许可;销售和分发O'Reilly 丛书的代码需要获得许可;引用本书的样例代码来解决一个问题不需要获得许可;使用本书的大量代码到你的产品文档中需要获得许可。
我们不要求你(引用本书时)给出出处,但是如果你这么做,我们对此表示感谢。出处通常包含标题、作者、出版社和 ISBN。例如:   “Beautiful Security, edited by Andy Oram and John Viega. Copyright 2009 O誖eilly Media, Inc., 978-0-596-52748-8”。
如果你觉得你对本书样例代码的使用超出了这里给出的许可范围,请和我们联系:permissions@oreilly.com。

如何联系我们
    请把对本书的评论和问题发给出版社:
    美国:
    O'Reilly Media, Inc.
    1005 Gravenstein Highway North
    Sebastopol, CA 95472
    中国:
    北京市西城区西直门南大街2号成铭大厦C座807室(100035)
    奥莱利技术咨询(北京)有限公司
    O'Reilly的每一本书都有专属网页,你可以在那儿找到关于本书的相关信息,包括勘误表、示例代码以及其他的信息。本书的网站地址是:
    http://www.oreilly.com/catalog/9780596527488/
    对于本书的评论和技术性的问题,请发送电子邮件到:
    bookquestions@oreilly.com
    关于本书的更多信息、会议、资料中心和网站,请访问以下网站:
    http://www.oreilly.com
雪    币: 231
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zhengbindu 活跃值 2011-4-20 11:08
5
0
在我对软件及其所驱动的工具的攻击生涯中,许多同事认为我采用了一种不符合标准的方法。对于这种说法,我颇感诧异。对我而言,我所采用的方法不仅符合逻辑,而且简单明了。反之,我觉得那些学院派采用的方法对于现实世界的应用程序而言显得过于抽象,难以获得普遍的成功。这些看上去更常规的方法几乎不成章法,没有抓住问题的焦点,甚至完全背道而驰。这些方法往往需要花费数百小时进行逆向工程和应用程序跟踪,才可能在精力耗尽之前发现它们所存在的漏洞。
现在,请不要采用这种错误的方法。我并没有诅咒前面所提到的技巧,事实上我同意它们是发现和利用漏洞的关键工具。但是,我相信可以采用一些捷径,并从另一个视角封装、改进甚至绕过这些方法。
在本章中,我将讨论这些另外的视角,看看它们是如何帮助我们深入到那些被称为安全专家的开发人员的思维中。
为什么要深入到开发人员的思维之中呢?原因有很多,但是在本章中,我们将把注意力集中在对代码的创建过程以及对编写代码的人们所施加的各种约束上。从安全的角度出发,这种问题常常会产生并不是最理想的系统。理解了代码完成时所处的环境、心理和哲学框架之后,我们更容易发现系统中包含可能被攻击者所利用的漏洞的区域。在适当的时候,我会和大家分享一些逸闻作为例子,对一些理念问题进行探讨。
在过去几年里,我的精力集中在大规模的环境,例如大公司、政府机构以及它们的各种附属机构,甚至是州政府。虽然有许多要素也适用于更小的环境,甚至适用于个人,但我喜欢从更广的角度展示这些问题,展现更广阔的社会画面。当然,用这种更为粗犷的画笔作画需要进行一些归纳,读者可能会发现有些情况与这些例子存在冲突。由于篇幅的限制,我并不会举出这方面的反例。
本章的目标并不是强调特定的技术,而是讨论一些导致安全脆弱性的环境和心理情况。对技术实现者所受到的外部影响和限制进行考虑是非常重要的,可以更好地理解这些脆弱性在逻辑上是如何产生的。虽然这对于攻击方而言是一种好玩的智力游戏,但是如果防守方也参与到这个游戏中,就需要考虑一些新的因素:1) 防止可能会导致攻击的错误,2) 使用与攻击者相同的游戏技巧并采用相同的操作方式。此时,这个安全游戏才是我心中最美丽的。
我所讨论的理念可以分为三类:习得性无助和无从选择、验证陷阱和功能锁定。在安全的设计和实现中,这并不是影响因素的安全列表,但它可以作为一个起点,鼓励我们进一步发现自己在系统中所创建或依赖的潜在安全危险。

1.1   习得性无助和无从选择
社会学家和心理学家发现人类和其他动物存在一种现象,这种现象称为习得性无助。它来源于个人在实现自己的目标或者摆脱坏习惯时屡次遭受的挫折。最终,动物们会采取极端的毁灭性措施,就是从内心深处放弃尝试。即使在出现了实现目标的机会或者存在逃脱的良机时,动物们也会表现得很消极,无法利用这些机会。
为了证明即使是资深和理智的软件工程师也会受这个畏缩毛病的影响,我将描述一个由于向后兼容所导致的不良安全性的例子。
向后兼容是现有的技术部署一直存在的一个问题。发现新的技术,并需要部署到不兼容的(甚至在本质上不同的)现有解决方案中。
在系统演化的每个时刻,开发商需要决定是否必须结束现有解决方案的生命,还是提供一条迁移路径或者设计一种方法允许遗留解决方案能够与现代解决方案共存。这样的决定在商业和技术的角度上往往存在很大的分歧。但是,决定通常是从商业的角度作出的,开发人员和工程师必须照办(注1)。出现这种情况时,负责创建实际实现方案的人们就会产生这样一个印象,就是决定已经作出,他们只要照章办理就可以了,不需要进一步的评估或考虑。
想象一下有这样一个决策,在进行技术替换时要求维护与旧技术的兼容。管理层进一步决定,以后不会再向遗留解决方案提供进一步的开发或支持工作,这是为了鼓励现有的顾客迁移到新的替代解决方案。
尽管这种决策在许多方面向开发过程施加了压力(涉及安全问题),但是当一个解决方案(通常是新技术)比其他解决方案更为安全时,无疑会更加引人注目。事实上,新技术的开发常常明确要求满足更高的安全需求,但是仍然必须支持旧技术。在这种情况下会产生什么安全问题呢?
实现向后兼容可以采取不同的方法,有些方法较之其他方法更为安全。但是,一旦开发人员理解了需要让更旧、更缺乏安全的技术继续存活时,那些常常可以缓解这种风险的解决方案往往就不在考虑之列。焦点集中在新技术上,遗留技术将在最大限度地减少遗留效果的情况下被嵌入到新技术中(或反过来)。总之,实际新技术的开发队伍通常并不是开发遗留代码的队伍,他们的最终目标是想方设法移植遗留解决方案,是不是这样呢?
最直接的解决方案是对新技术的健壮性和安全强度作出妥协,以匹配遗留解决方案。在本质上就是允许现代技术和遗留技术共存。当开发人员在迁移遗留代码的漏洞时想不出可以做什么(或更糟,想不出应该做什么)时,就出现了习得性无助。遗留代码对他们施加了压力,他们觉得这不应该在他们的职责范围之内(即使把新技术降低到旧技术的水平而影响了它的安全性)。对于公司的决策,他们觉得不知道做什么好,感觉力不从心。

1.1.1    实例:Microsoft是如何允许L0phtCrack的
数年前,为了帮助系统管理员发现漏洞,我编写了一个密码破解工具,用于恢复Microsoft的用户密码。当时,这个工具称为L0phtCrack,后来重命名为LC5。再后来,Symantec(得到了它的版权)担心违反国际武器限制公约(ITAR)而将它停用了。(注2)网络和技术书籍上有许多文章描述了L0phtCrack的工作原理,但没人关注它为什么会起作用。L0phtCrack所利用的Microsoft Windows的漏洞可能会产生什么影响呢?
事实上,这个工具直接利用了Windows的加密程序的实现和使用中所存在的大量问题。所有这些问题都源于各种版本的Windows(直到Vista)中继续使用的遗留LAN Manager(LANMAN)的散列函数。它的散列表示形式尽管基于已经成熟的数据加密标准(DES),但并没有包含salt。另外,LANMAN中的密码不区分大小写。这个函数把14个字符(或更短)的密码分解为2个7字节的值,每个值根据同一个键进行加密,并连接在一起。当我于20世纪90年代后期在BugTraq的一个帖子上描述这个问题时,基本的加密序列是(见图1-1):

图1-1   LANMAN旧算法的总结


  • 如果密码小于14个字符,就用null字符填满,以便为密码保留14个字符的空间。反之,如果密码大于14个字符,就将它截断。
  • 把14个字符的密码转换为大写形式,并把它分割成7个字符的两半。注意,如果原密码为7个或更少的字符,那么后半部分总是7个null字符。
  • 把7个字符的每半部分转换为一个8字节的检校DES键。
  • 使用前面所提到的每个键对一个已知的常量(“KGS!@#$%”)进行DES加密。
  • 把两个输出连接在一起,形成LM_HASH表示形式。

  由于许多技术上的原因,这种选择组合存在问题。
Windows NT的开发人员意识到了LANMAN散列的脆弱性,并使用一种更健壮的算法进行密码信息的存储,称为NT散列。它维护字符的大小写情况,允许密码长于14个字符,并使用更现代的MD4信息摘录产生它的16字节散列值。
遗憾的是,Windows系统在每个密码的更健壮版本旁边继续存储更脆弱的版本,并在用户每次登录时同时在网络上发送这两个版本。在网络上,更脆弱的16字节LANMAN散列值和更健壮的16字节NT散列值都会经历下面的过程,如图1-2所示:

图1-2   在网络上同时处理LANMAN和NT散列


  • 用null字符把散列值填充为21个字节。
  • 把21字节的结果分割为3个7字节的子部分。
  • 把每个7字节的子部分转换为8字节的检校DES键。
  • 使用前面所提及的DES键,对一个8字节的挑战口令(challenge)进行加密,它在网络上发送时是可见的。
  • 把步骤4的3个8字节输出连接在一起,创建一个将通过网络发送的24字节表示形式。

当然,Microsoft希望他们的所有顾客都升级到更新版本的Windows,但是不敢切断使用旧版本的顾客,甚至不敢用新的散列函数对旧版本进行更新。由于密码是网络的一个关键部分,他们不得不假设在可预见的将来,不理解新散列函数的旧系统可以继续连接到使用更安全的散列函数的新系统。
如果登录两端的系统都是使用新散列函数的新系统,就可以使用更健壮的NT散列执行实际的身份认证。但是,在发送更健壮的新散列表示形式时,必须同时发送更旧、更脆弱的LANMAN散列版本。
由于最大限度地照顾了向后兼容,而忽视了它所产生的复杂后果,Microsoft完全破坏了更新的安全技术所带来的技术优点。
L0phtCrack利用了脆弱的LANMAN密码的编码形式,并根据它的结果破解存储在它旁边的更健壮的NTLM表示形式。即使用户选择了长于14个字符的密码,对LANMAN散列的破解仍然要提供前14个字符,只剩下很少一部分需要通过推断或穷举来猜测。和LANMAN不同,NT散列区分大小写。但是,一旦脆弱的版本被破解之后,最多只要尝试2x次(其中x是密码字符串的长度)就可以推断出NT散列的密码大小写情况,因为每个字符最多只有2种选择(大写或小写)。记住,x小于或等于14,因此对于穷举法来说是小意思。
尽管NTLM网络认证引入了一个挑战,可以扮演支持salt机制的角色,但它的输出仍然包含了太多可以被攻击者看到并利用的信息。16个字节的原散列中只有2个字节进入第3个7字节部分。类似,散列值的前半部分中只有1个字节(第8个)进入第2个7字节部分。
想象一下,如果原密码是7个字符或更短(对于粗心的用户,情况很可能是这样)的情况。在LANMAN散列中,第2组的7个输入字节都是null字符,因此输出散列中第9~16字节将总是相同的值。这个情况进一步随着NTLM算法而传播。至少,它并没有设法确定24字节的NTLM认证响应中的最后8个字节是否来自一个短于8个字符的密码。
简而言之,新的现代安全解决方案的问题来自于遗留系统的脆弱LANMAN密码,因此把整体安全性能降低到最小公分母的水平。过了没多久,在接收到太多的负面安全报道之后,Microsoft引入了在默认情况下只发送一种(或另一种)散列值的功能,而不是两者都发送。后来,他们甚至停止了在本地系统中同时存储LANMAN散列值和NT散列值的做法。

1.1.2     密码和身份认证可以从一开始就做得更好
我讲述这个L0phtCrack故事是为了强调一个常见的安全问题。有许多理由支持多种安全实现,即使其中一种被认为优于其他方案。但是如前所述,在许多情况下,这样做的原因是为了支持向后兼容。如果对遗留系统的支持被认为是非常重要的,可以预计在协议和服务方面将会出现相当数量的冗余。
站在安全的角度,现在问题变成了如何在实现向后兼容的同时不降低新系统的安全性。Microsoft的幼稚解决方案嵌入了所有可能性中许多不好的东西:它把不安全的散列值和更安全的散列值存储在一起,通过网络传输这两种散列的表示形式(即使在不需要的情况下),这就为攻击者提供了便利。
记住,习得性无助就是指一个人得出结论,他已经无能为力或者无法通过学习来解决,而不是想方设法对手头上的情况进行实际分析。换句话说,有人告诉你已经没有希望,并且你相信他的原因也仅仅是因为他说“不行”。在工程任务中,习得性无助可以由处于明显权威位置的人们所作的陈述、对向后兼容(或遗留顾客的要求)的消极抵触以及成本或财政压力(预想或真实)而产生。
Microsoft相信遗留系统非常重要,足以阻止废弃这些系统。为此,他们决定继续支持LM散列。
但是,他们采取了第二个关键的步骤,在选择处理遗留系统和现代系统交互的协议问题时迫使新系统同时与当前协议和遗留协议进行对话,而没有考虑遗留系统的安全问题。其实,他们可以要求遗留系统对一些支持登录所需要的函数进行修补,作为遗留系统的最后升级。也许这个解决方案被拒绝的原因是它可能会设置一个危险的前提条件,就是要求支持一些他们已经声称结束了生命的系统。类似,他们可以选择当新旧系统都可以与更现代、更健壮的函数进行对话时,就不在网络上同时发送新旧散列值。这可以帮助他们的旗舰“新技术”同时提供实际的和预想的安全。
最终,由于媒体和顾客对安全脆弱性的持久抱怨,另外也由于像L0phtCrack这样的攻击工具的出现,Microsoft决定让它们的系统避免传递更脆弱的LANMAN散列表示形式。它显示了生产商应该选择一条不同的起始路径,允许终端用户根据自己的安全需求来配置系统。反之,如果相信确实需要遗留系统,必须简单地把它们和新产品放在一起,并让所有的系统把标准降低到最小公分母的水平,终端用户就会成为牺牲品。这是开发商内部设计人员和实现人员的习得性无助的一个例子。
Microsoft并不孤单
为了避免让读者觉得我是专门找Microsoft的茬,我提供了下面这些平等机会(并且可能具有冒犯性)的评论。
在20世纪90年代中期至晚期,Microsoft在市场和媒体上所持的立场是它的系统比Unix更安全。Internet上的服务器大多是Unix系统,Microsoft试图打入这个市场。众所周知,占据公共Internet上的绝大部分系统的各种Unix操作系统已经发现了许多安全漏洞。但是,很少有人从Internet的角度对Microsoft的Windows NT 4.0的安全性进行探索。这是因为NT 4.0系统在网络上只占据了很少一部分的市场份额。
从本质上说,Microsoft的立场就是“我们是安全的,因为我们不是Unix”。但是直到Windows操作系统的Vista版本,Microsoft才真正拥有了具有强大、现代的安全行为的操作系统。Vista存在一些问题,但主要不是安全方面的问题。因此,当NT 4.0作为新产品出现时,Microsoft把矛头对准了Unix,在各种安全问题上对Unix横加指责。后来,情况掉了个头,人们开始指责Microsoft所存在的各种安全问题。现在,Microsoft实际上提供了一种拥有许多强大的安全组件的操作系统,还有哪一家值得挑剔呢?请看Apple。
在历史上,Apple Computer的市场策略与Microsoft有些相似。正如Microsoft以它们并不是Unix为由吹嘘自己的安全性一样,Apple的市场和用户部门声称它们的OS X平台能够更有效地抵御各种攻击和病毒,但所持的理由也仅仅是它们不是Windows。仔细查看了OS X的内核和userland空间之后,我可能断定它还是存在许多安全漏洞(不论是远程还是本地)需要指出和修正。和Microsoft刚开始提供NT时一样,Apple也