全书共分3篇15章。第1篇为网络安全基础,共3章,主要讨论网络安全的基础知识;第2篇为密码学基础,共5章,详细讨论各种密码算法和技术,特别深入地介绍我国已公布的标准密码算法;第3篇为网络安全技术与应用,共7章,深入介绍网络实践中常用的一些网络安全技术及产品。本书内容丰富,概念清楚,语言精练。在网络安全基本知识和密码学理论的阐述上,力求深入浅出,通俗易懂;在网络安全技术与产品的讲解上,力求理论联系实际,面向具体应用。本书在每章的后面提供了思考题和练习题,以便于读者巩固所学的知识点;在书末也提供了大量的参考文献,便于有兴趣的读者继续深入学习有关内容。本书可作为信息安全、信息对抗技术、密码学等专业的本科生教材,也可以用作网络空间安全一级学科的研究生教材。对于广大网络安全工程师、网络管理员和IT从业人员来说,本书也是很好的参考书和培训教材。
本书由教育部高等学校信息安全专业教学指导委员会、中国计算机学会教育专业委员会共同指导,为普通高等教育“十一五”规划教材并获得教育部普通高等教育精品教材奖、中央网信办和教育部评选的国家网络安全教材奖,符合《高等学校信息安全专业指导性专业规范》。本书而深入地阐述了密码学理论及信息安全相关技术,将密码学理论与信息安全实践有机结合,是国内近年来出版的同类教材中的教材和经典教材。全书整体结构合理,层次清晰,内容,深入浅出,不但收入了近年来国内外密码学理论和信息安全实践中的技术和研究成果,而且还特别注重理论联系实践,并符合教育部高等学校信息安全专业教学指导委员会编制的《高等学校信息安全专业指导性专业规范》,特别适合作为高等院校信息安全、信息对抗、计算机工程和通信工程等专业的本科生和研究生教材。本书的配套教材《网络安全实验教程(第2版)》(ISBN:978-7-302-28321-8)为普通高等教育“十一五”规划教材,并被评为北京市精品教材。本书自出版以来,已经多次再版和重印,累计发行逾2万册,深受广大师生和读者欢迎,100多所高校选用本书作为专业课教材,普遍反映该教材特色突出,教学效果很好。
刘建伟,博士,北京航空航天大学教授,博士生导师,荣获国家网络安全教师奖、北京市教学名师奖、北航教学名师奖。长期从事网络安全、信息安全和密码学的教学和科研工作。任中国密码学会理事,教育部高等学校信息安全专业教学指导委员会委员,武汉大学、中国海洋大学、福州大学、北京邮电大学兼职教授。出版教材5部、译著1部,其中4部教材分别荣获得全国普通高校教材一等奖、教育部普通高等教育精品教材、国家网络安全教材奖及北京市精品教材,1部译著荣获第四届中国科普作家协会科普作品奖(图书类)金奖。发表学术论文100余篇,已授权发明专利近30项。获国家技术发明一等奖、国防技术发明一等奖、山东省计算机应用新成果二等奖、山东省科技进步三等奖各1项。王育民,西安电子科技大学教授,博士生导师,中山大学兼职教授,享受政府特殊津贴。长期从事通信、信息论、编码、密码和信息安全的教学和科研工作。曾任全国高等学校通信和信息工程专业教学指导委员会主任,陕西电子学会副理事长、学术委员会主任等职。现为中国电子学会和中国通信学会会士,中国电子学会信息论学会委员,中国自然基金研究会会员,IEEE高级会员。在差错控制、多用户编码、TCM、密码学和语音加密等方面有深入研究,主持的科研项目多次获电子部科技成果奖。在国内外学术刊物和会议上200余篇,出版著作多部,合写著作曾获教育部全国普通高校教材一等奖等奖项。
第1篇 网络安全基础
第1章 引言 3
1.1 对网络安全的需求 5
1.1.1 网络安全发展态势 5
1.1.2 敏感信息对安全的需求 6
1.1.3 网络应用对安全的需求 7
1.2 安全威胁与防护措施 7
1.2.1 基本概念 7
1.2.2 安全威胁的来源 8
1.2.3 安全防护措施 10
1.3 网络安全策略 11
1.3.1 授权 12
1.3.2 访问控制策略 12
1.3.3 责任 13
1.4 安全攻击的分类 13
1.4.1 被动攻击 13
1.4.2 主动攻击 14
1.5 网络攻击的常见形式 15
1.5.1 口令窃取 16
1.5.2 欺骗攻击 16
1.5.3 缺陷和后门攻击 17
1.5.4 认证失效 18
1.5.5 协议缺陷 19
1.5.6 信息泄漏 19
1.5.7 指数攻击——病毒和蠕虫 20
1.5.8 拒绝服务攻击 21
1.6 开放系统互连安全体系结构 22
1.6.1 安全服务 23
1.6.2 安全机制 25
1.6.3 安全服务与安全机制的关系 26
1.6.4 在OSI层中的服务配置 27
1.7 网络安全模型 27
习题 28
第2章 计算机网络基础 30
2.1 计算机网络的定义 30
2.2 计算机网络体系的结构 30
2.2.1 网络体系结构的定义 30
2.2.2 两种典型的网络体系结构 32
2.2.3 网络协议及协议封装 34
2.3 分组交换技术 35
2.3.1 分组交换技术的概念 35
2.3.2 分组交换的特点 35
2.4 Internet的基本知识 36
2.4.1 Internet的构成 36
2.4.2 服务类别 37
2.4.3 IPv4地址 37
2.4.4 端口的概念 40
习题 41
第3章 Internet协议的安全性 43
3.1 Internet协议概述 43
3.2 网际层协议 43
3.2.1 IP协议 43
3.2.2 ARP协议 45
3.2.3 ICMP协议 46
3.2.4 IGMP协议 47
3.2.5 OSPF协议 48
3.2.6 BGP协议 49
3.3 传输层协议 50
3.3.1 TCP协议 51
3.3.2 UDP协议 52
3.4 应用层协议 53
3.4.1 RIP协议 53
3.4.2 HTTP协议 54
3.4.3 TELNET协议 55
3.4.4 SSH协议 56
3.4.5 DNS协议 57
3.4.6 SMTP协议 58
3.4.7 MIME协议 60
3.4.8 POP3协议 60
3.4.9 IMAP4协议 61
3.4.10 PGP协议 63
3.4.11 FTP协议 64
3.4.12 TFTP协议 65
3.4.13 NFS协议 65
3.4.14 SNMP协议 66
3.4.15 DHCP协议 67
3.4.16 H.323协议 68
3.4.17 SIP协议 69
3.4.18 NTP协议 70
3.4.19 FINGER协议 71
3.4.20 Whois协议 72
3.4.21 LDAP协议 73
3.4.22 NNTP协议 74
习题 75
第2篇 密码学基础
第4章 单(私)钥密码体制 79
4.1 密码体制的定义 79
4.2 古典密码 80
4.2.1 代换密码 81
4.2.2 换位密码 83
4.2.3 古典密码的安全性 84
4.3 流密码的基本概念 85
4.3.1 流密码框图和分类 86
4.3.2 密钥流生成器的结构和分类 87
4.3.3 密钥流的局部统计检验 88
4.4 快速软、硬件实现的流密码算法 89
4.4.1 A5 89
4.4.2 加法流密码生成器 90
4.4.3 RC4 91
4.4.4 祖冲之密码 92
4.5 分组密码概述 98
4.6 数据加密标准 101
4.6.1 DES介绍 101
4.6.2 DES的核心作用:消息的随机非线性分布 103
4.6.3 DES的安全性 103
4.7 高级加密标准 104
4.7.1 Rijndael密码概述 105
4.7.2 Rijndael密码的内部函数 106
4.7.3 AES密码算法 109
4.7.4 AES的密钥扩展 111
4.7.5 AES对应用密码学的积极影响 112
4.8 中国商用分组密码算法SM4 113
4.8.1 SM4密码算法 113
4.8.2 SM4密钥扩展算法 116
4.8.3 SM4的安全性 117
4.9 分组密码的工作模式 117
4.9.1 电码本模式 118
4.9.2 密码分组链接模式 118
4.9.3 密码反馈模式 119
4.9.4 输出反馈模式 120
4.9.5 计数器模式 122
习题 122
第5章 双(公)钥密码体制 124
5.1 双钥密码体制的基本概念 125
5.1.1 单向函数 125
5.1.2 陷门单向函数 126
5.1.3 公钥系统 126
5.1.4 用于构造双钥密码的单向函数 126
5.2 RSA密码体制 128
5.2.1 RSA密码体制 129
5.2.2 RSA的安全性 130
5.2.3 RSA的参数选择 133
5.2.4 RSA体制应用中的其他问题 135
5.2.5 RSA的实现 135
5.3 ElGamal密码体制 136
5.3.1 密钥生成 136
5.3.2 加解密 136
5.3.3 安全性 136
5.4 椭圆曲线密码体制 137
5.4.1 实数域上的椭圆曲线 137
5.4.2 有限域Zp上的椭圆曲线 138
5.4.3 GF(2m)上的椭圆曲线 140
5.4.4 椭圆曲线密码 141
5.4.5 椭圆曲线的安全性 142
5.4.6 ECC的实现 143
5.4.7 当前ECC的标准化工作 143
5.4.8 椭圆曲线上的RSA密码体制 144
5.4.9 用圆锥曲线构造双钥密码体制 144
5.5 基于身份的密码体制 145
5.5.1 引言 145
5.5.2 双线性映射和双线性D-H假设 146
5.5.3 IBE方案 147
5.5.4 IBE方案的安全性 148
5.6 中国商用密码SM2算法 151
5.6.1 SM2椭圆曲线推荐参数 151
5.6.2 辅助函数 151
5.6.3 密钥生成 152
5.6.4 加密 152
5.6.5 解密 153
5.6.6 实例与应用 155
5.7 公钥密码体制的安全性分析 155
习题 157
第6章 消息认证与杂凑函数 159
6.1 认证函数 159
6.1.1 消息加密 159
6.1.2 消息认证码 163
6.1.3 杂凑函数 165
6.2 消息认证码 166
6.2.1 对MAC的要求 167
6.2.2 基于杂凑函数的MAC 168
6.2.3 基于分组加密算法的MAC 169
6.3 杂凑函数 169
6.3.1 单向杂凑函数 169
6.3.2 杂凑函数在密码学中的应用 170
6.3.3 分组迭代单向杂凑算法的层次结构 170
6.3.4 迭代杂凑函数的构造方法 171
6.3.5 应用杂凑函数的基本方式 172
6.4 常用杂凑函数 174
6.4.1 MD系列杂凑函数 174
6.4.2 SHA系列杂凑函数 178
6.4.3 中国商
第3章Internet协议的安全性TCP/IP协议族在诞生之初,网络中的用户彼此之间被认为是互相信任的,没有提供任何安全措施。现今,已不能认为网络中的用户是互相信任的,不能认为网络是安全的。Internet协议概述Internet协议的主要协议及其层次关系如图3-1所示。
图3-1 TCP/IP协议族不同层次划分示意图网际层协议3.2.1 IP协议1.概述网际协议(Internet Protocol,IP)是TCP/IP协议族的核心,也是网际层中最重要的协议。IP数据报构成了TCP/IP协议族的基础。典型的IP数据报有几百个字节,其中首部占20~60字节,其余为数据净荷部分。IP层接收由更低层(例如网络接口层)发来的数据包,对数据包进行处理后交付到更高层(TCP或UDP协议);相反,IP层也把从TCP或UDP协议来的数据包传送到更低层。IP采用尽较大努力交付的服务,是一种不的无连接数据报协议。每个IP数据报独立路由,各个数据报可能沿不同路径由发送方传送到接收方,因此,IP无法确认数据报是否丢失、失序或延迟到达。另外,虽然IP首部中存在校验位,但此校验位只用于检测IP数据报首部的正确性,并没有使用任何机制保障数据净荷传输的正确性,因此,无法确认IP数据报是否损坏。较高层的协议(如TCP)负责处理这些问题,以便为应用程序提供一条的网络通信链路。2.IP协议的安全问题及防护措施IP协议存在一系列典型的安全问题。(1)IP数据报在传递过程中易被攻击者监听、窃取。此种攻击是一种被动的攻击方式,攻击者并不改变IP数据报的内容,但可截取IP数据报,解析数据净荷,从而获得数据内容。这种类型的攻击很难被检测,因为攻击过程并不影响IP数据报的正确传递。针对这种攻击的方法是对IP数据报进行加密。(2)由于IP层并没有采用任何机制保障数据净荷传输的正确性,攻击者可截取IP数据报,修改数据报中的内容后,将修改结果发送给接收方。针对这种攻击的方法是对IP数据报净荷部分实行完整性检测机制。接收方在收到IP数据报时,可先应用完整性检测机制检测数据报的完整性,从而保障收到的IP数据报在传输过程中未被恶意篡改。(3)高层的TCP和UDP服务在接收IP数据报时,通常假设数据报中的源地址是有效的。事实上,IP层不能保障IP数据报一定是从源地址发送的。任意一台主机都可以发送具有任意源地址的IP数据报。攻击者可伪装成另一个网络主机,发送含有伪造源地址的数据包以欺骗接收者。此种攻击称为IP欺骗攻击。针对此种攻击可以通过源地址鉴别机制加以防御。一般来说,认证需要采用高层协议中的安全机制来实现。(4)IP数据报在传递过程中,如果数据报太大,该数据报就会被分段。也就是说,大的IP数据报会被分成两个或多个小数据报,每个小数据报都有自己的首部,但其数据净荷仅是大数据报净荷的一部分。每个小数据报可以经由不同的路径到达目的地。在传输过程中,每个小数据报可能会被继续分段。当这些小数据报到达接收方时,它们会被重组到一起。按照协议规则,中间节点不能对小数据报进行拼装组合。一般来说,包过滤器完成IP数据报的分段和重组过程。然而,正是由于IP数据报在传输过程中要经历被分段和重组的过程,攻击者可在包过滤器中注入大量病态的小数据报,来破坏包过滤器的正常工作。当重要的信息被分成两个IP数据报时,过滤器可能会错误地处理数据报,或者仅传输第2个IP数据报。更糟的是,当两个重叠的IP数据报含有不同的内容时,重组规则并不提示如何处理这两个IP数据报。许多防火墙能够重组分段的IP数据报,以检查其内容。(5)使用特殊的目的地址发送IP数据报也会引入安全问题。如发送目的地址是直接广播地址的IP数据报,发送这样的数据包是非常危险的,因为它们可以很容易地被用来攻击许多不同类型的主机。许多攻击者已将定向广播作为一种网络攻击手段。其实许多路由器具有阻止发送这类数据包的能力,因此,强烈建议网络管理员在配置路由器时,一定要启用路由器的这个功能。3.2.2 ARP协议1.概述在通常情况下,当我们访问一台机器的时候一定可以知道它的逻辑地址,而物理地址就不一定知道。如果不知道物理地址则不能把网络层的数据包封装成MAC帧,完不成通信。ARP协议正是为了解决这个问题而设置的。在每台主机上都设置有一个所在网段上的各主机和路由器的 IP 地址到硬件地址的映射表,也称为ARP高速缓存。在数据发送方,当网络层的数据报要封装成MAC帧时,首先在高速缓存中查看有无该数据报首部的目的地址所对应的硬件地址,若有,则将该硬件地址写入MAC帧的目的地址中,完成数据报的封装。若无,ARP协议则在本局域网上广播发出一个ARP请求分组。在ARP请求分组中,发送方的IP地址和发送方硬件地址,以及目标IP地址都是应该写入已知的数据,要寻找的目标硬件地址写入全0。当该请求分组到达每一个机器上时,每一台机器都要拿自己的IP地址和请求分组中的目标IP地址进行比较,如果不同则不做任何动作;若相同则发送一个ARP相应分组给请求方(这里不再使用广播,而是单播)。在相应分组中发送方写明了自己的硬件地址。当这一通信过程完成时,通信双方都要对自己的ARP高速缓存进行修改,添加上一条记录。2.ARP协议的安全问题及防护措施通过上述ARP协议的工作原理可知,一名黑客只要能把他的主机成功插入某个网段,这台主机就能够接收到所在网段的ARP请求分组,从而获知该网段上主机IP和MAC地址的对应关系。从这里也可以看出,ARP攻击仅仅在内网进行,它无法对外网(互联网、非本区域内的局域网)进行攻击。局域网中有一台主机C,其MAC地址为00-aa-00-F2-c8-04,现在假设它感染了ARP木马。 那么主机C将会向某主机A发送一个伪造的ARP响应,告知主机A:主机B的IP地址192.168.10.8对应的MAC地址是00-aa-00-F2-c8-04(其实是主机C的MAC地址),于是,主机A将这个对应关系写入自己的ARP缓存表中。以后当主机A向主机B发送数据时,都会将本应发往主机B的数据发送给攻击者(主机C)。同样地,如果攻击者向主机B也发送一个伪造的ARP响应,告诉主机B:主机A的IP地址192.168.0.1对应的MAC地址是00-aa-00-F2-c8-04,主机B也会将数据发送给攻击者。至此攻击者就控制了主机A和主机B之间的流量,他可以选择被动地监测流量,获取密码和其他涉密信息,也可以伪造数据,改变主机A和主机B之间的通信内容。这种攻击称为ARP欺骗。为了解决ARP攻击问题,可以在网络中的交换机上配置802.1x协议。IEEE 802.1x是基于端口的访问控制协议,它对连接到交换机的用户进行认证和授权。在交换机上配置802.1x协议后,攻击者在连接交换机时需要进行身份认证(结合MAC、端口、账户、VLAN和密码等),只有通过认证后才能向网络发送数据。攻击者未通过认证就不能向网络发送伪造的ARP报文。另外,建立静态ARP表,也是一种有效地抵抗ARP攻击的方法,而且对系统影响不大。缺点是破坏了动态ARP协议。3.2.3 ICMP协议1.概述Internet控制报文协议(Internet Control Message Protocol,ICMP)是一个重要的错误处理和信息处理协议,运行在网际层。它可以用来通知主机到达目的地的路由,报告路由故障,或者因网络故障中断某个连接。ICMP的主要功能之一是向IP节点发送一个简单消息,并将消息回显到发送主机。因而,它可以提供目的节点的可达性和到达目的节点所采用的传输路径等信息,在网络监控和故障诊断方面具有重要作用,是网络管理员常用的两个监控工具——Ping和Traceroute的重要组成部分。ICMP提供了IP路由和交付问题的关键反馈信息,以及重要的IP诊断和控制能力,可用于网络的可达性分析、拥塞控制、路由优化和超时错误报告等方面[Jeffrey等 2014]。ICMP最典型的用途是差错报告。例如,当某个网关发现传输错误时,该协议会立即向信源主机发送ICMP报文,报告出错信息,让信源主机采取相应处理措施。在运行Telnet、FTP或HTTP会话时,通常会遇到如“目的网络不可达”之类的错误报文,这些报文就是在ICMP中产生的。IPv6有新版本的ICMP。ICMPv6与ICMPv4的很多消息是相似的,如Echo请求与应答消息、路由请求和公告等,但ICMPv6也新增了一些消息,如路由器重编号等。2.ICMP协议的安全问题及防护措施ICMP能够提供有关网络配置和连接状态等信息,为网络监控和故障诊断提供了重要依据。然而,黑客也能够利用ICMP提供的这些信息,进行各种网络攻击和信息侦察。例如,一些黑客会滥用ICMP来中断某些连接,网上流行的nuke.c黑客程序就采用了这类攻击方式。此外,ICMP还存在一些典型的安全问题。(1)ICMP重定向攻击。ICMP可以用来对主机之间的消息进行重定向,同样,黑客也能够用ICMP对消息进行重定向,进而使得目标机器遭受连接劫持和拒绝服务等攻击。一般来说,重定向消息应该仅由主机执行,而不是由路由器来执行。仅当消息直接来自路由器时,才由路由器执行重定向。然而,网络管理员有时可能会使用ICMP创建通往目的地的新路由。这种非常不谨慎的行为最终会导致非常严重的网络安全问题。(2)ICMP路由器发现攻击[James等 2014]。在进行路由发现时,ICMP并不对应答方进行认证,这使得它可能遭受严重的中间人攻击。例如,在正常的路由器响应ICMP询问之前,攻击者可能会假冒正常的路由器,使用伪造的响应信息应答ICMP询问。由于在路由发现的过程中,ICMP并不对应答方进行认证,因此接收方将无法知道这个响应是伪造的。(3)防火墙穿越攻击。通过防火墙穿越攻击技术(Firewalking),攻击者能够穿越某个防火墙的访问控制列表和规则集,进而确定该防火墙过滤的内容和具体的过滤方式。尽管防火墙面临着启用ICMP所带来的风险,但在防火墙上封堵所有的ICMP消息并不妥当。这是因为主机常采用一种称为Path MTU的机制,来测试究竟多大的数据包可以不用分段发送,而这种测试需要依赖于地址不可达的ICMP数据包穿过防火墙。3.2.4 IGMP协议1.概述IGMP(Internet Group Management Protocol)作为因特网组播管理协议,是TCP/IP协议族中的重要协议之一,所有IP组播系统(包括主机和路由器)都需要支持IGMP。IGMP运行于主机和组播路由器之间,用来在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。到目前为止,IGMP共有三个版本,即IGMP v1、v2和v3。IGMP实现的主要功能包括:主机通过IGMP通知路由器希望接收或离开某个特定组播组的信息;路由器通过IGMP周期性地查询局域网内的组播组成员是否处于活动状态,实现所连网段组成员关系的收集与维护。2.IGMP协议的安全问题及防护措施IGMP组播报文在IP数据包的基础上封装了组播地址等信息,鉴于组播报文基于UDP进行传输并缺少用户认证措施,网络中任何主机都可以向组播路由器发送IGMP包,请求加入或离开,导致非法用户很容易加入组播组,窃听组播数据或者发动其他针对计算机网络系统的攻击。目前,针对IGMP协议的攻击主要有以下几种:(1)利用查询报文攻击。利用具有较低数值的 IP 地址路由器发送伪造的查询报文,由当前的查询方转变为响应查询请求,并且不再发出查询报文。攻击产生的效果包括:组播路由器对子网内各主机的加入请求不做任何响应,将屏蔽合法用户;组播路由器对子网内主机撤离报文不做响应,造成该子网内不存在组播用户,但是,组播数据又不断向该子网组播路由器发送请求报文,浪费有限的带宽和资源。(2)利用离开报文进行 DOS 攻击。子网内非法用户通过截获某个合法用户信息来发送伪造的 IGMP 离开报文,组播路由器接收到报文后误认为该合法用户已经撤离该组播组,则不再向该用户发送询问请求,导致该合法用户不能再接收到组播数据包,造成拒绝服务攻击。(3)利用报告报文攻击。非法用户伪装报告报文,或截获合法用户的报告报文向组播路由器发送伪造报文,使组播路由器误以为有新用户加入,于是将组播树扩展到非法用户所在的子网,此后非法用户就可以接收到来自组播路由的组播报文,并分析该报文以展开新的攻击。IGMP安全性的基本要求是只有注册的合法主机才能够向组播组发送数据和接收组播数据。但是,IP 组播很难保障这一点。首先,IP 组播使用UDP,网络中任何主机都可以向某个组播地址发送UDP 包;其次,Internet缺少对于网络层的访问控制,组成员可以随时加入和退出组播组;,采用明文传输的IGMP组播报文很容易被窃听、冒充和篡改,使得组播安全性问题仍然是一个技术难点。针对以上安全问题,一种有效的安全增强措施是利用IGMP v3的扩展性在组播报文中未使用的辅助字段部分增加认证信息,即在每个首次加入组播的报文中添加关联主机身份的认证信息,组播路由器接收到认证信息并通过公钥密码技术实现成员身份的认证,随后,在发送给组播成员的查询信息中添加成功/失败标识的认证信息。通过此认证机制来保障IGMP的安全运行。3.2.5 OSPF协议1.概述由于Internet规模太大,所以常把它划分成许多较小的自治系统(Autonomous System,AS)。自治系统内部的路由协议称为内部网关协议,自治系统之间的协议称为外部网关协议。常见的内部网关协议有RIP协议和OSPF协议;外部网关协议有BGP协议。OSPF协议和BGP协议都位于网络层,但RIP协议位于应用层。OSPF协议是分布式的链路状态路由协议。链路在这里代表该路由器和哪些路由器是相邻的,即通过一个网络是可以连通的。链路状态说明了该通路的连通状态以及距离、时延、带宽等参数。在该协议中,只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送路由信息。所发送的信息是与本路由器相邻的所有路由器的链路状态。为了保存这些链路状态信息,每个路由器都建立有一个链路状态数据库,因为路由器交换信息时使用的是洪泛法,所以每个路由器都存有全网的链路状态信息,也就是说每个路由器都知道整个网络的连通情况和拓扑结构。这样每个路由器都可以根据链路状态数据库的信息来构造自己的路由表。路由表内包含有数据包去往目的地地址的下一跳路由信息。OSPF协议是TCP/IP工作的基础。2.OSPF协议的安全问题及防护措施OSPF的报文中包含了认证类型以及认证数据字段,如图3-2所示。其中主要有密码认证、空认证以及明文认证这3种认证模式。明文认证是将口令通过明文的方式来进行传输,只要可以访问到网络的人都可以获得这个口令,易遭受来自网络内部的攻击。密码认证则能够提供良好的安全性。为接入同一个网络或者是子网的路由器配置一个共享密钥,然后这些路由器所发送的每一个OSPF报文都会携带一个建立在这个共享密钥基础之上的消息认证码。当路由器接收到报文之后,根据路由器上的共享密钥以及接收到的报文通过MD5 Hash函数生成一个消息认证码,并将生成的消息认证码与接收到的消
图3-2 OSPF报文结构息认证码进行对比,如果两者一致就接收,反之则丢弃。OSPF协议规定了认证域,但其作用非常有限。主要原因有:(1)即使OSPF提供了较强的认证,但某些节点仍然使用简单的口令认证。那些能够戏弄路由协议的人也就有能力收集到本地以太网上传送的口令。(2)在路由对话中,如果有一个合法的用户遭到破坏,那么它的消息就不再可信。(3)在许多路由协议中,每台机器只对它邻近的计算机对话,而这些邻近的计算机将会重复旧的会话内容。这样,欺骗就会得到传播扩散。路由信息确定了两条通道:一条是从主叫机器到目标主机,另一条是从目标主机返回到主叫机器。第2条通道可以是第1条的逆通道,也可以不是。当它们不是逆通道的时候,就叫非对称路由。这种情况在Internet上非常普遍。当网络有多个防火墙时,就会产生问题。从安全的角度看,返回通道通常更加重要。当目标主机遭到攻击的时候,反向流动的数据包是通过什么通道到达攻击主机的呢?如果敌人能够破坏路由机制,那么目标主机就会被欺骗,使其相信敌人的机器是一台真正可信赖的机器。如果这种情况发生,那么依赖于源地址验证的认证机制将会失败。3.2.6 BGP协议1.概述BGP(Border Gateway Protocol)是边界网关协议,它将单一管理的网络转化为由多个自治系统分散互联的网络。它通常工作于ISP内部或ISP之间,有时也工作于Intranet内部。BGP使用TCP作为路由交换的底层传输协议,其以增量的更新实现路由信息交换。首个BGP协议版本在RFC1105中规定,目前实际运行版本为BGP-4(RFC1771)。有关BGP的详细描述可参阅相关文献[Stewart 1999]。2.BGP协议的安全问题及防护措施BGP协议最主要的安全问题在于:每个自治系统向外通告自己所拥有的CIDR(Classless Inter-Domain Routing)地址块,并且协议无条件信任对等系统的路由宣告,这就导致一个自治系统向外通告不属于自己的前缀时,也会被BGP用户认为合法,从而接受和传播。有研究人员[Li等2013]将问题归结为BGP缺乏一个安全可信的路由认证机制,即BGP无法对所传播的路由信息的安全性进行验证。为了抵抗针对BGP协议的攻击,研究人员主要提出了两类方案:路由认证类方案和前缀劫持检测类方案。路由认证类方案利用数字证书、签名和其他密码学技术来保护路由信息的真实性和完整性。(1)首先出现的是针对劫持BGP TCP会话的MD5 BGP认证技术[Heffernan 1998]。会话者通过验证TCP伪首部、首部、数据段和共享秘密的MD5杂凑值,来实现认证。这种方法比较成熟,也具有很高的效率,但是其安全性随着MD5算法的安全性减弱已经逐渐降低。(2)S-BGP方案[Kent等2000a,2000b]利用PKI技术来增强BGP的安全性。该方案在BGP会话者接收到的整个路径上提供数字签名链。这种方案受到PKI技术的制约,存在计算开销大等问题。同时,受制于各厂商和管理机构的标准难于统一,该方案推广与部署困难。(3)为了解决S-BGP方案不易部署等缺陷,出现了许多基于S-BGP的改进方案。如Cisco公司的soBGP方案[White 2003]、IRV(Interdomain Routing Validation)方案[Goodell等 2003]以及IETF的SIDR工作组开发的RPKI(Resource Public Key infrastructure)& BGPsec方案[Lepinski 2012a,2012b]。前缀劫持检测类方案利用异常检测(Anomaly Detection)技术提取BGP协议运行中的异常信息,对前缀劫持行为进行检测,从而提高BGP的安全性。(1)多源AS(Multiple Origin AS,MOAS)检测技术[Zhao等 2001]通过获取网络中控制平面的信息,对比MOAS列表的一致性,来区分有效的MOAS和攻击的MOAS。PHAS(Prefix Hijack Alert System)检测技术通过审查BGP协议获得的路由数据,发现前缀劫持威胁,并向管理者通报路由异常[Lad等 2006]。(2)主动探测技术是利用数据平面反馈的信息来发现前缀劫持行为。根据观测点(Vantage Point)与被测自治系统位置的对应关系,可以分为由外及内探测[Zheng等 2007]和由内及外探测[Zhang等 2010]两类主动探测技术。为了综合利用以上两类检测技术的优点,研究人员也提出了将主动探测技术和MOAS检测技术结合的前缀劫持混合检测技术[Hu等 2007]。传输层协议本节主要讨论传输层协议及其安全性分析。传输层的任务是在源主机和目的主机之间提供的、性价比合理的数据传输功能,向下利用网络层提供给它的服务,向上为其用户(通常为应用层中的进程)提供高效、和性价比合理的服务。传输层的存在使得传输服务有可能比网络服务更加,丢失的分组和损坏的数据可以在传输层上检测出来,并进行纠正。Internet传输层有两个主要协议,一个是面向连接的TCP协议,一个是无连接的UDP协议。3.3.1 TCP协议1.概述TCP是一个面向连接的传输协议,提供了一些用户所期望的而IP协议又不能提供的功能。如IP层的数据包非常容易丢失、被复制或以错误的次序传递,无法保障数据包一定被正确递交到目标端。而TCP协议会对数据包进行排序和校验,未按照顺序收到的数据包会被重排,而损坏的数据包也可以被重传。TCP协议的原始正式定义位于RFC793中,此外在RFC1122中详细阐述了一些错误的修补方案,在RFC1323中又进一步作了扩展。
2.TCP协议的安全问题及防护措施目前针对TCP协议的攻击主要可以划分为以下三类。及时类攻击是针对TCP连接建立阶段的三次握手过程。TCP是一个面向连接的协议,即在数据传输之前要首先建立连接,然后传输数据,当数据传输完毕后释放所建立的连接。TCP使用三次握手来建立连接,这种方式大大增强了传输的性,如防止已失效的连接请求报文段到达被请求方,产生错误造成资源的浪费。具体过程如图3-3所示。但与此同时,三次握手机制却给攻击者提供了可以利用的漏洞,这类攻击中最常见的就是SYN FLOOD攻击,攻击者不断向服务器的监听端口发送建立TCP连接的请求SYN数据包,但收到服务器的SYN包后却不回复ACK确认信息,每次操作都会使服务器端保留一个半开放的连接,当这些半开放连接填满服务器的连接队列时,服务器便不再接受后续的任何连接请求,这种攻击属于拒绝服务(DoS)攻击。防御这类攻击的主要思路是在服务器前端部署相应的网络安全设备(如防火墙设备)对SYN FLOOD攻击数据包进行过滤。第二类攻击针对TCP协议不对数据包进行加密和认证的漏洞,进行TCP会话劫持攻击。TCP协议有一个关键特征,即TCP连接上的每一个字节都有它自己独有的32位序列号,数据包的次序就靠每个数据包中的序列号来维持。在数据传输过程中所发送的每一个字节,包括TCP连接的打开和关闭请求,都会获得的标号。TCP协议确认数据包的真实性的主要根据就是判断序列号是否正确,但这种机制的安全性并不够,如果攻击者能够预测目标主机选择的起始序号,就可以欺骗该目标主机,使其相信自己正在与一台可信主机进行会话。攻击者还可以伪造发送序列号在有效接收窗口内的报文,也可以截获报文并篡改内容后再发送给接收方。防御此类攻击的思路是在TCP连接建立时采用一个随机数作为初始序列号,规避攻击者对序列号的猜测。第三类攻击是针对TCP的拥塞控制机制的特性,在TCP连接建立后的数据传输阶段进行攻击,降低网络的数据传输能力。拥塞控制是TCP的一项重要功能,所谓拥塞控
图3-3 TCP三次握手连接建立过程制就是防止过多的数据注入网络,使网络中的链路和交换结点(路由器)的负荷不致过载而发生拥塞,TCP的拥塞控制主要有以下4种方法:慢启动、拥塞避免、快重传和快恢复。发送端主机在确定发送报文段的速率时,既要考虑接收端的接收能力,又要考虑网络的传输能力。因此,每一个 TCP 连接都需要维护接收窗口和拥塞窗口两个状态变量,接收窗口是接收端主机根据其目前的接收缓存大小所许诺的近期窗口值;拥塞窗口的大小表示了当前网络的传输能力,由发送端设置。发送窗口取这两者中的较小值。攻击者会利用发送端计算拥塞窗口的漏洞,通过降低拥塞窗口大小来降低发送窗口的大小。拥塞窗口的计算采用了所谓的慢启动(slow start)算法,其具体特征就是拥塞窗口在传输正常时成指数增长,增长到一定阈值后按线性增长,一旦出现数据包传输超时,则拥塞窗口变为最小值,阈值变为原来一半。有经验的攻击者可以利用这种特性,周期性地制造网络关键节点的拥塞,不断触发拥塞窗口的慢启动过程,最终达到降低正常数据传输能力的目的。因为此类攻击的具体手段比较灵活,防御此类攻击的难度较大,需要网络管理人员实时监测网络的异常流量,避免攻击者制造网络关键节点的拥塞。3.3.2 UDP协议1.概述相较于TCP提供的丰富功能,UDP协议只在IP的数据报服务之上增加了很少的一点功能,即端口的功能和差错检测的功能。虽然UDP用户数据报只能提供不的交付,但UDP在某些方面有其特殊的优点:及时,发送数据之前不需要建立连接