第9章网络安全本章学习目标本章主要讲述与网络安全有关的背景知识和防范措。通过本章学习,应掌握以下内容:l网络安全隐患l加密技术基本知识l身份认证技术l网络安全标准、措施和有关法规9.1网络安全隐患9.2数据加密9.3数据完整性验证与数字签名9.5防火墙技术9.4网上身份认证常识第9章网络安全9.6网络病毒及防杀9.7网络安全标准9.8安全防范原则与安全教育9.9网络安全的相关法律法规第9章网络安全9.1网络安全隐患计算机犯罪始于二十世纪80年代。随着网络应用范围的逐步扩大,其犯罪技巧日见“高明”,犯罪目的也向越来越邪恶的方向发展。与网络安全有关的新名词逐渐为大众所知,例如黑客(hecker)、破解者(cracker)等。凡此种种,都传递出一个信息——网络是不安全的。9.1网络安全隐患大部分网络安全问题都与TCP/IP有关。TCP/IP是Internet的标准协议,传统的网络应用都是基于此协议的。近来在局域网中,TCP/IP也逐渐流行,这使得通过Internet侵入局域网变得十分容易。为网络安全担忧的人大致可分为两类,一类是使用网络资源的一般用户,另一类是提供网络资源的服务提供者。9.1.1计算机网络犯罪及特点据伦敦英国银行协会统计,全球每年因计算机犯罪造成的损失大约为80亿美元。而计算机安全专家则指出,实际损失金额应在100亿美元以上。网络犯罪的特点是,罪犯不必亲临现场、所遗留的证据很少且有效性低。并且,与此类犯罪有关的法律还有待于进一步完善。遏制计算机犯罪的有效手段是从软、硬件建设做起,力争防患于未然,例如,可购置防火墙(firewall)、对员工进行网络安全培训,增强其防范意识等。9.1.2先天性安全漏洞Internet的前身是APPANET,而APPNET最初是为军事机构服务的,对网络安全的关注较少。在进行通信时,Internet用户的数据被拆成一个个数据包,然后经过若干结点辗转传递到终点。在Internet上,数据传递是靠TCP/IP实现的。但是TCP/IP在传递数据包时,并未对其加密。换言之,在数据包所经过的每个结点上,都可直接获取这些数据包,并可分析、存储之。如果数据包内含有商业敏感数据或个人隐私信息,则任何人都可轻易解读。9.1.3几种常见的盗窃数据或侵入网络的方法本节介绍几种常见的盗窃数据或侵入网络的方法,以使大家能了解网络的脆弱性和网络犯罪分子的恶劣性。1.窃听(Eavesdropping)最简易的窃听方式是将计算机连入网络,利用专门的工具软件对在网络上传输的数据包进行分析。进行窃听的最佳位置是网络中的路由器,特别是位于关卡处的路由器,它们是数据包的集散地,在该处安装一个窃听程序,可以轻易获取很多秘密。窃听程序的基本功能是收集、分析数据包,高级的窃听程序还提供生成假数据包、解码等功能,甚至可锁定某源服务器(或目标服务器)的特定端口,自动处理与这些端口有关的数据包。利用上述功能,可监听他人的联网操作、盗取信息。这里以图9-1-1为例,说明普通网络通信遭窃听的可能性。其中,假设数据由网络λ传送至网络μ。可被窃听的位置至少包括:l网络中的计算机l数据包在Internet上途经的每一路由器。l网络μ中的计算机。2.窃取(Spoofing)这种入侵方式一般出现在使用支持信任机制网络中。在这种机制下,通常,用户只需拥有合法帐号即可通过认证,因此入侵者可以利用信任关系,冒充一方与另一方连网,以窃取信息。假设某入侵者欲利用主机A入侵某公司的的内部网络主机B,则其步骤大致如下:1.确定要入侵的主机B。2.确定主机B所信任的主机A。3.利用主机X在短时间内发送大量的数据包给A,使之穷于应付。4.利用主机X向B发送源地址为A的数据包。窃取技术的要点如图9-1-2所示:3.会话窃夺(Spoofing)会话劫夺指入侵者首先在网络上窥探现有的会话,发现有攻击价值的会话后,便将参与会话的一方截断,并顶替被截断方继续与另一方进行连接,以窃取信息。会话劫夺不像窃取那样容易防范。对于由外部网络入侵内部网络的途径,可用防火墙切断,但对于内、外部网络之间的会话,除了采用数据加密手段外,没有其他方法可保绝对安全。以图9-1-3为例,当主机A正与主机B进行会话时,X切入会话,并假冒B的名义发送数据包给A,通知其中断会话,然后X顶替A继续与B进行会话。图9-1-3会话劫夺过程示意图4.利用操作系统漏洞任何操作系统都难免存在漏洞,包括新一代操作系统。操作系统的漏洞大致可分为两部分:一部分是由设计缺陷造成的。包括协议方面的、网络服务方面的、共用程序库方面的等等。另一部分则是由于使用不得法所致。这种由于系统管理不善所引发的漏洞主要是系统资源或帐户权限设置不当。5.盗用密码盗用密码是最简单和狠毒的技巧。通常有两种方式:l密码被盗用,通常是因为用户不小心被他人“发现”了。而“发现”的方法一般是“猜测”。猜密码的方式有多种,最常见的是在登录系统时尝试不同的密码,系统允许用户登录就意味着密码被猜中了。l另一种比较常见的方法是先从服务器中获得被加密的密码表,再利用公开的算法进行计算,直到求出密码为止,这种技巧最常用于Unix系统。6.木马、病毒、暗门l计算机技术中的木马,是一种与计算机病毒类似的指令集合,它寄生在普通程序中,并在暗中进行某些破坏性操作或进行盗窃数据。木马与计算机病毒的区别是,前者不进行自我复制,即不感染其他程序。l暗门(trapdoor)又称后门(backdoor),指隐藏在程序中的秘密功能,通常是程序设计者为了能在日后随意进入系统而设置的。l病毒是一种寄生在普通程序中、且能够将自身复制到其他程序、并通过执行某些操作,破坏系统或干扰系统运行的“坏”程序。其不良行为可能是悄悄进行的,也可能是明目张胆实施的,可能没有破坏性,也可能毁掉用户几十年的心血。病毒程序除可从事破坏活动外,也可能进行间谍活动,例如,将服务器内的数据传往某个主机等。木马、病毒和暗门都可能对计算机数据资源的安全构成威胁(例如数据被窜改、毁坏或外泄等)。免受木马、病毒和暗门威胁的最有效的方法是不要运行来历不明的程序。7.隐秘通道安装防火墙、选择满足工业标准的的安全结构、对进出网络环境的存储媒体实施严格管制,可起到一定的安全防护作用,但仍然不能保证绝对安全。例如,系统内的木马可以使用如下手段数将据送达外界:约定木马忙碌代表1,不忙碌代表0,当木马忙碌时,因其占用系统资源,计算机的响应速度将便慢,否则,响应速度较高。外界接应者可每隔一秒,对计算机的响应速度测试一次,以得知木马是否忙碌,从而可获得数据。但是,通过隐秘通道外运数据的速度通常甚低。9.2数据加密加密指改变数据的表现形式。加密的目的是只让特定的人能解读密文,对一般人而言,其即使获得了密文,也不解其义。加密旨在对第三者保密,如果信息由源点直达目的地,在传递过程中不会被任何人接触到,则无需加密。Internet是一个开放的系统,穿梭于其中的数据可能被任何人随意拦截,因此,将数据加密后再传送是进行秘密通信的最有效的方法。9.2.1加密与解密图9-2-1示意了加密、解密的过程。其中,“Thisisabook”称为明文(plaintext或cleartext);“!@#$~%^~&~*()-”称为密文(ciphertext)。将明文转换成密文的过程称为加密(encryption),相反的过程则称为解密(decryption)。Thisisabook!@#$~%^~&~*()-Thisisabook!@#$~%^~&~*()-加密解密图9-2-1加、解密示意图9.2.2算法类型当代加密技术趋向于使用一套公开算法及秘密键值(key,又称钥匙)完成对明文的加密。公开算法的前提是,如果没有用于解密的键值,即使知道算法的所有细节也不能破解密文。由于需要使用键值解密,故遍历所有可能的键值便成为最直接的破解方法。键值的长度决定了破解密文的难易程度,显然键值越长,越复杂,破解就越困难。目前加密数据涉及到的算法有秘密钥匙(secretkey)和公用钥匙(publickey)加密算法,上述算法再加上Hash函数,构成了现代加密技术的基础。1.秘密钥匙加密秘密钥匙加密法又称为对称式加密法或传统加密法。其特点是加密明文和解读密文时使用的是同一把钥匙,如图9-2-2所示。缺点:由于至少有两个人持有钥匙,所以任何一方都不能完全确定对方手中的钥匙是否已经透露给第三者。Thisisabook!@#$~%^~&~*()-Thisisabook!@#$~%^~&~*()-加密解密秘密钥匙2.公用钥匙加密公用钥匙加密法又称非对称式(asymmetric)加密,是近代密码学新兴的一个领域。公用钥匙加密法的特色是完成一次加、解密操作时,需要使用一对钥匙。假定这两个钥匙分别为A和B,则用A加密明文后形成的密文,必须用B方可解回明文,反之,用B加密后形成的密文必须用A解密。通常,将其中的一个钥匙称为私有钥匙(privatekey),由个人妥善收藏,不外泄于人,与之成对的另一把钥匙称为公用钥匙,公用钥匙可以像电话号码一样被公之于众。假如X需要传送数据给A,X可将数据用A的公用钥匙加密后再传给A,A收到后再用私有钥匙解密。如图9-2-3所示。缺点:利用公用钥匙加密虽然可避免钥匙共享而带来的问题,但其使用时,需要的计算量较大。Thisisabook!@#$~%^~&~*()-Thisisabook!@#$~%^~&~*()-加密解密私有钥匙公用钥匙9.3数据完整性验证与数字签名9.3.1Hash函数Hash函数又名信息摘要(messagedigest)函数,可将一任意长度的信息浓缩为较短的固定长度的数据。其特点是:1.浓缩结果与源信息密切相关,源信息每一微小变化,都会使浓缩结果发生变化。2.Hash函数所生成的映射关系是多对一关系。因此无法由浓缩结果推算出源信息。3.运算效率较高。Hash函数一般用于为信息产生验证值,此外它也被用于用户密码存储。为避免密码被盗用,许多操作系统(如WindowsNT、Unix)都只存储用户密码的Hash值,当用户登录时,则计算其输入密码的Hash值,并与系统储存的值进行比对,如果结果相同,就允许用户登录。Hash函数另一著名的应用是与公用钥匙加密法联合使用,以产生数字签名。9.3.2数据完整性验证完整性(integrity)验证用于确认数据经长途劳顿、长期保存后是否仍然保持原样,不曾改变。验证数据完整性的一般方法用Hash函数对原数据进行处理,产生一组长度固定(例如32比特)的摘要值。需要验证时,便重新计算摘要值,再与原验证值进行比对,以判别数据是否发生了变化。完整性验证可见于许多软、硬件应用中。例如传统的磁盘用校验和或循环冗余校验(CRC)等技巧产生分区数据的验证值,在低层网络协议中也可见到类似技术的应用,以检测所传送的数据是否受到了噪音的干扰。传统的完整性验证方式虽然可检测物理信号的衰退或被噪音改变的情况,但无法抵御人为的窜改。防止这种情形发生的技术之一就是将验证值加密后再行传送或存储。9.3.3数字签名利用钥匙加密验证值可防止信息遭篡改。进一步地,采用公用钥匙算法中的私有钥匙加密验证值,则除了可防止信息遭篡改外,该加密值也同时是数字签名。如下页图9-3-1所示为甲和乙之间进行数字签名的生成和确认流程。从图中可看出,数字签名的功能有三:可证明信件的来源;可判定信件内容是否被篡改;发信者无法否认曾经发过信。邮件内容验证值验证值密文邮件内容验证值密文+乙(收)方收件验证值验证值密文邮件内容发件验证值比对Hash处理私钥加密传送Hash处理公钥解密甲(发)方操作流程乙(收)方操作流程图9-3-1数字签名的生成和确认流程示意图9.4网上身份认证常识认证即“验明正身”,用于确认某人或某物的身份。在网络上,需要确认身份者,大致可分为人类用户和物理设备两类。本书只介绍与人类用户身份认证有关的基本知识。9.4.1认证类型传统的认证,凭据一般是名称和一组秘密字符组合。前者称为标识(ID),后者称为密码(password)。进行认证时,被认证者需要提供标识(一般为