密码学与网络安全.docx
《密码学与网络安全.docx》由会员分享,可在线阅读,更多相关《密码学与网络安全.docx(13页珍藏版)》请在冰点文库上搜索。
密码学与网络安全
第1章安全的基本概念
1.1简介
本书介绍网络与Internet安全,因此,在介绍与安全相关的各种概念与技术问题(即了解如何保护)之前,先要了解保护什么。
在使用计算机、计算机网络和其中最大的网络Internet时,会遇到哪些危险?
有哪些陷阱?
如果不建立正确的安全策略、框架和技术实现,会发生什么情形?
本章要回答这些基本问题。
我们首先要介绍基本点:
为什么我们需要安全?
有人说,安全就像统计一样:
反映的内容是平凡的,而产生的影响是巨大的。
换句话说,正确的安全基础设施只允许打开绝对必要的门,而保护其余所有内容。
我们用几个实例说明安全的重要性是不庸置疑的。
由于如今Internet上发生的业务和其他事务非常多,不正确或不充分的安全机制可能使企业关闭,给人们的生活带来混乱。
然后要介绍关键安全原则,用这些原则标识确定安全威胁和解决方案的关键领域。
关于电子文档与消息与纸质文档具有同样的法律效力,因此我们要介绍这方面的意义。
然后要介绍攻击类型,包括理论概念和实际应用方面,我们将一一介绍。
最后,我们要概述本书内容与范围,使读者更容易学习网络与Internet概念。
1.2安全需求
最初的计算机应用程序通常没有或很少安全性,这种情况一直持续了多年,直到人们真正认识到数据的重要性之前,人们虽然知道计算机数据有用,却没有加以保护。
开发处理财务和个人数据的计算机应用程序时,对安全性产生了前所未有的需求。
人们认识到,计算机数据是现代生活的重要方面。
因此,安全的不同领域开始受到重视。
下面是两个典型的安全机制示例:
♦向每个用户提供用户ID和口令,用这个信息鉴别用户。
♦以某种方式编码数据库中存储的信息,使没有正确权限的用户看不见。
公司用自己的机制提供这类安全机制。
随着技术的改进,通信基础结构不断成熟,针对不同用户需求开发了更新的应用程序。
很快,人们发现仅有基本安全措施是不够的。
此外,Internet给这个世界带来了一场风暴,如果为Internet开发的应用程序没有足够的安全性,那么什么事都可能发生。
图1.1显示了在Internet上购物时使用信用卡的情形。
在用户计算机上,用户信息(如用户ID)、订单细节(如订单ID和项目ID)和付款信息(如信用卡信息)经过Internet到达商家服务器(即商家计算机),商家服务器把这些信息存放在其数据库中。
图1.1信息通过Internet从客户端传递到服务器
这里存在各种安全漏洞。
首先,侵入者可能捕获从客户端传递到服务器的信用卡信息。
即使防止了侵入者的中途攻击,仍然不能解决问题。
商家收到信用卡信息并进行检验后,要处理订单和取得付款,把信用卡信息存放在数据库中。
这样,攻击者只要能访问这个数据库,就可以得到其中的所有信息。
一个俄罗斯攻击者(Maxim)就曾经侵入了商家的Internet站点,从其数据库中得到30万个信用卡号码,然后向商家索要保护费(10万美元)。
商家拒绝后,Maxim在Internet上发布了其中25 000多个信用卡号码。
有些银行重新签发了所有信用卡,每张卡20美元,而有些则警告客户注意报表中的异常项目。
这种攻击可能造成巨大的财务和物质损失。
一般来说,更换每张卡花费20美元,如果银行要更换30万张卡,则要花费600万美元!
如果这些商家采用正确的安全措施,则可以省下这笔钱,少惹这个麻烦。
当然,这只是一个示例。
近几个月又出现了几个案例,每次攻击都让人们更加意识到需要采用正确的安全措施。
其中一个示例是在1999年,一个瑞典黑客攻入Microsoft公司的Hotmail站点,并建立一个镜像站点,使任何人可以输入任何Hotmail用户的电子邮件ID,读别人的电子邮件。
1999年,两个独立调查问卷询问了安全攻击成功造成的损失:
一家的结论是平均每次事故造成256 296美元损失,另一家的结论是平均每次事故造成759 380美元损失,第二年,这个数字升高到了972 857美元。
1.3安全方法
1.3.1安全模型
可以用以下几种方法实现安全模型,下面进行一个总结。
♦无安全性:
这是最简单情形,可以根本不实现安全性。
♦隐藏安全:
系统安全性就是别人不知道它的内容和存在。
这个安全模型不能长久使用,因为攻击者可能用许多方式发现目标。
♦主机安全性:
这种安全模型中每个主机单独实现安全性,非常安全,但伸缩性不好。
现代站点/组织的复杂性与多样性使这个工作更加困难。
♦网络安全性:
随着组织的增长和差异化,很难实现主机安全性。
网络安全性控制各个主机及其服务的网络访问,是非常有效和可伸缩的模型。
1.3.2安全管理实务
好的安全管理实务首先要有好的安全策略。
实施一个安全策略其实并不容易。
安全策略及其正确实现有助于长期保证充分的安全管理实务。
好的安全策略通常要考虑四个关键方面。
♦经济性:
这个安全实现需要投入多少经费和成本?
♦实用性:
用什么机制提供安全性?
♦文化问题:
安全策略是否符合人们的预期和工作风格等?
♦合法性:
安全策略是否符合法律要求?
一旦有了安全策略后,要保证下面几点:
(a)向各有关方面解释安全策略;
(b)概要介绍每个人的责任;
(c)在所有沟通中使用简单语言;
(d)要建立可监查性;
(e)提供预期和定期审查。
1.4安全原则
介绍实际生活中遇到的一些攻击后,下面要对相关安全原则进行分类,以便更好地了解攻击和考虑可能的解决方案。
下面举例说明这些概念。
假设A要向B发一个100美元的支票。
通常,A和B会考虑什么因素?
A要开具一张100美元的支票,放在信封中,发给B。
♦A要保证只有B能收到信封,即使别人收到,也不知道支票的细节。
这是保密性(confidentiality)原则。
♦A和B还要保证别人不会篡改支票内容(如金额、日期、签名、收款人等)。
这是完整性(integrity)原则。
♦B要保证支票是来自A,而不是别人假装A(否则是假支票)。
这是鉴别(authentication)原则。
♦如果B把支票转入账号中,钱从A账号转到B账号之后,A否认签发了支票呢?
法院要用A的签名否认A的抵赖,解决争端。
这是不可抵赖(non-repudiation)原则。
这就是四大安全原则。
还有两个安全原则是访问控制(accesscontrol)与可用性(availability),这些原则不针对特定消息,而是针对整个系统。
下面几节介绍这些安全原则。
1.4.1保密性
保密性原则要求做到只有发送人和所有接收人才能访问消息内容。
如果非法人员能够访问消息内容,则破坏了保密性原则。
图1.2显示了一个破坏了保密性原则的示例。
这里,计算机A的用户向计算机B的用户发一个消息(实际上,从这里开始,A指用户A,B指用户B,但我们只显示这些用户的计算机)。
另外一个用户C访问这个消息(这是不应该的),因此破坏了保密性原则。
这种示例包括A发给B的保密电子邮件消息,用户C未经A和B许可或知道而访问,这种攻击称为截获(interception)。
图1.2破坏了保密性原则
注意:
截获破坏了保密性原则。
1.4.2鉴别
鉴别机制可以建立身份证明。
鉴别过程保证正确标识电子消息或文档来源。
例如,假设用户C通过Internet向用户B发送一个电子文档,但用户C假装用户A,将文档发给用户B。
B怎么知道消息来自C呢?
实际示例可能是C假装用户A,发一个转账请求(从A账号到C账号)给银行B。
银行从A账号转账到C账号,以为这是A要求的。
这个概念如图1.3所示,这种攻击称为伪造(fabrication)。
图1.3缺乏鉴别
注意:
缺乏鉴别机制时可能导致伪造。
1.4.3完整性
消息内容在发送方发出后和到达所要接收方之前发生改变时,就会失去消息的完整性(integrity)。
例如,假设开出了一张100美元支票,支付从美国购买的货款。
但是,若下次看到账号报表时,发现支票付款为1000美元,则表明已经失去消息的完整性。
这个概念如图1.4所示。
这里,用户C篡改用户A发出的消息,其接收方为B。
用户C设法访问消息,改变其内容,然后将改变后的消息发送到B。
用户B不知道A发出的消息已经被改变,A也不知道这个改变。
这类攻击称为修改(modification)。
注意:
修改会失去消息的完整性。
图1.4失去消息的完整性
1.4.4不可抵赖
有时用户发了消息后,又想否认发了这个消息。
例如,用户A通过Internet向银行B发了一个转账请求。
银行按A的请求转账之后,A声称没有发这个转账请求。
这样,A想否认(抵赖)这个转账请求。
不可抵赖(non-repudiation)原则可以防止这类抵赖现象。
注意:
不可抵赖不允许发消息者拒绝承认发消息。
1.4.5访问控制
访问控制(accesscontrol)原则确定谁能访问什么。
例如,可以指定允许用户A浏览数据库中的记录,但不能更新这些记录。
而用户B则可以更新这些记录。
访问控制机制可以保证这些设置。
访问控制与两大领域相关:
角色管理与规则管理。
角色管理考虑用户方(哪个用户可以干什么),而规则管理考虑资源方(什么条件下允许访问什么资源)。
根据所采用的决策,可以建立访问控制矩阵,列出用户及其可以访问的项目(例如,允许A写入文件X,但只能更新文件Y和Z)。
访问控制表(ACL)是访问控制矩阵的子集。
注意:
访问控制指定和控制谁能访问什么。
1.4.6可用性
可用性(availability)原则指定要随时向授权方提供资源(即信息)。
例如,由于某个非授权用户C的故意操作,使授权用户A无法与服务器计算机B联系,如图1.5所示,从而破坏可用性原则,这种攻击称为中断(interruption)。
图1.5破坏可用性原则
注意:
中断会破坏可用性原则。
介绍各种安全原则后,下面从技术角度介绍不同类型的攻击。
1.5攻击类型
我们把计算机与网络系统的攻击类型分成两大类,便于理解:
(a)这些攻击的理论概念;(b)攻击者使用的实际方法。
下面一一进行介绍。
1.5.1理论概念
图1.6攻击类型
前面曾介绍过,安全原则可能受各种攻击的威胁。
这些攻击可以分成前面介绍的四类:
♦截获——见前面“保密性”一节介绍。
♦伪造——见前面“鉴别”一节介绍。
♦修改——见前面“完整性”一节介绍。
♦中断——见前面“可用性”一节介绍。
这些攻击又可以分成两类:
主动攻击和被动攻击,如图1.6所示。
下面分别介绍这两种攻击。
1.被动攻击
被动攻击(passiveattacks)的攻击者只是窃听或监视数据传输,即取得中途的信息。
这里的被动指攻击者不对数据进行任何修改。
事实上,这也使被动攻击很难被发现。
因此,处理被动攻击的一般方法是防止而不是探测与纠正。
注意:
被动攻击不对数据进行任何修改。
图1.7又把被动攻击分成两类,分别是消息内容泄漏和通信量分析。
图1.7被动攻击
消息内容泄漏很容易理解。
当发送保密电子邮件消息时,我们希望只有对方才能访问,否则消息内容会被别人看到。
利用某种安全机制,可以防止消息内容泄漏。
例如,可以用代码语言编码消息内容,使消息内容只有指定人员才能理解,别人没有这个代码语言。
但是,如果传递许多这类消息,则攻击者可以猜出某种模式的相似性,从而猜出消息内容。
这种对编码消息的分析就是通信量分析。
2.主动攻击
与被动攻击不同的是,主动攻击(activeattacks)以某种方式修改消息内容或生成假消息。
这些攻击很难防止。
但是,这是可以发现和恢复的。
这些攻击包括中断、修改和伪造。
在主动攻击中,会以某种方式修改消息内容。
♦中断攻击又称为伪装(masquerade)攻击。
♦修改攻击又可以分为重放攻击(replayattacks)和改变消息(alterationofmessages)。
♦伪造会产生拒绝服务(DOS,DenialOfService)攻击。
图1.8显示了这个分类。
伪装就是将非法实体假装成另一个实体。
前面曾介绍过,用户C可能假冒用户A,向用户B发一个消息。
用户B可能相信这个消息来自用户A。
在重放攻击中,用户捕获一系列事件(或一些数据单元),然后重发。
例如,假设用户A要向用户C的账号转一些钱。
用户A与C都在银行B有账号。
用户A向银行B发一个电子消息,请求转账。
用户C捕获这个消息,然后向银行再发一次这个消息。
银行B不知道这是个非法消息,会再次从用户A的账号转钱。
因此,用户C得到两笔钱:
一笔是授权的,一笔是用重放攻击得到的。
图1.8主动攻击
消息改变就是改变原先的消息。
例如,假设用户A向银行B发一个电子消息“向D的账号转1000美元”。
用户C捕获这个消息,改成“向C的账号转10 000美元”。
注意,这里收款人和金额都做了修改,即使只改变其中一项,也是消息改变。
拒绝服务攻击使合法用户无法进行合法访问。
例如,非法用户可能向一个服务器发出太多的登录请求,快速连续地发出一个个随机用户ID,使网络拥堵,其他合法用户无法访问这个网络。
1.5.2实际攻击
前面介绍的攻击在实际中有几种表现形式,可以分成两大类:
应用层攻击和网络层攻击,如图1.9所示。
图1.9实际攻击
下面分别介绍这些攻击。
♦应用层攻击:
应用层攻击发生在应用层,攻击者访问、修改和防止访问特定应用程序的信息或该应用程序本身。
例如,取得Internet中某人的信用卡信息或改变消息内容,从而改变事务金额等。
♦网络层攻击:
网络层攻击通常用各种方法减少网络能力。
这些攻击通常减慢或停止计算机网络。
注意,这样可能自动导致应用层攻击,因为一旦能够访问网络,通常至少可以访问/修改某些敏感信息,造成混乱。
这两种攻击可以使用各种机制实现,见下面介绍。
我们不把这些攻击分为上面两类,因为它们可能既是应用层攻击,又是网络层攻击。
注意:
安全攻击可能发生在应用层或网络层。
1.病毒
可以用病毒启动应用层攻击或网络层攻击。
注意:
病毒(virus)就是程序代码段,它连接到合法程序代码中,在合法程序代码运行时运行。
病毒可以影响计算机中的其他程序或同一网络中其他计算机上的程序,如图1.10所示。
本例中,删除当前用户计算机上的所有文件之后,病毒自动传播,将代码发送到当前用户地址簿中含有地址的所有用户。
图1.10病毒
病毒也可以由特定事件触发(如在每天上午12时自动执行)。
通常,病毒会导致计算机与网络系统损坏,但只要组织部署了良好的备份与恢复过程,还可以修复。
注意:
病毒可以修复,可以用良好的备份与恢复过程控制其破坏。
2.蠕虫
蠕虫(worm)与病毒相似,但实际上是另一种实现方法。
病毒修改程序(即连接到被攻击的程序上),而蠕虫并不修改程序,只是不断复制自己,如图1.11所示。
蠕虫复制速度很快,最终会使相应计算机与网络变得很慢,直到停滞。
这样,蠕虫攻击的基本目的不同于病毒,它是想通过吃掉所有资源使相应计算机与网络变得无法使用。
注意:
蠕虫不进行任何破坏性操作,只是耗尽系统资源,使其停滞。
3.特洛伊木马
特洛伊木马(Trojanhorse)是像病毒一样的隐藏代码,但特洛伊木马具有不同目的。
病毒的主要目的是对目标计算机或网络进行某种修改,而特洛伊木马则是为了向攻击者显示某种保密信息。
特洛伊木马一词源于希腊士兵的故事,他们隐藏在一个大木马中,特洛伊市民把木马搬进城里,不知道其中藏了士兵。
希腊士兵进入特洛伊城后,打开城门,把其他希腊士兵放了进来。
图1.11蠕虫
同样,特洛伊木马可能把自己连接到登录屏幕代码中。
用户输入用户名和口令信息时,特洛伊木马捕获这些信息,将其发送给攻击者,而输入用户名和口令信息的用户并不知道。
然后攻击者可以用这个用户名和口令信息访问系统,如图1.12所示。
注意:
特洛伊木马使攻击者可以取得计算机和网络的某种保密信息。
图1.12特洛伊木马
4.小程序与ActiveX控件
小程序与ActiveX控件是随Internet的万维网(WWW)应用程序(通常称为Web)发展而产生的。
最简单的Web是客户机与服务器计算机之间用超文本传输协议(HTTP,HyperTextTransferProtocol)通信。
客户机使用Web浏览器软件,服务器运行Web服务器程序。