检查分娩宫口视频:互联网协议安全分析及PKI体系应用

来源:百度文库 编辑:偶看新闻 时间:2024/04/28 09:02:25

摘要:

 

本文主要分析了当前互联网中主流协议的特点及所存在的安全问题,以作者本人的长期信息安全工作经验为基础,提出了一些合理的安全解决方案,并在本文的后部着力介绍了当前较为成熟的互联网安全体系— Public Key Infrastructure (公钥基础结构)。

 

 

目录:

第一部分协议安全

1.    Tcp/Ip协议族历史背景

2.    开放系统互联(OSI)七层模型

3.    旧有协议对当前开放的互联网安全体系的影响

4.    物理层:  非法接入与嗅探(Sniffe)

5.    数据链路层: 地址解析协议(ARP)安全

6.    网络层: 网际协议(Internet Protocol)安全

7.    传输层: 传输控制协议(TCP)与用户数据报协议(UDP)安全

8.    应用层:HTTP、FTP、SMTP、DNS协议安全

9.    保障旧有协议安全运行的基本理论及方法

 

第二部分 公钥基础结构(PKI)

1.    公钥基础结构(Public Key Infrastructure)简介

2.    对称密钥加密技术(共享密钥加密 DES、3DES、IDEA、Blowfish)

3.    非对称密钥加密技术(公钥加密 RSA、Diffie-Hellman、DSA、椭圆曲线算法)

4.    单向散列函数技术及应用(MD5、SHA1)

5.    认证中心 (Certificate Authority)及数字证书(X.509)

6.    密钥交换技术

7.    数字签名技术

8.    数字信封技术

9.     公钥基础结构的应用(SSL、IPSec、Vpn)

 

 

 

第一部分协议安全

 

1.   Tcp/Ip协议族历史背景及现状

目前互联网广为采用的通讯协议族Tcp/Ip起源于20世纪60年代末美国政府资助的一个分组交换网络研究项目,后借助于美国军方的军用实验网络(ARPANET,也就是后来的国际互联网)实现部署,由于互联网的快速发展导致该协议族成为事实上的标准协议,协议族本身设计为四个层次(链路层、网络层、传输层、应用层),在每一个层次上分别运行着相关协议,如链路层的ARP、RARP,网络层的Internet Protocol 、ICMP、IGMP,传输层的 TCP、UDP,应用层的HTTP、FTP、SMTP等。

 

2.   开放系统互联(Open System Interconnection)参考模型

Open System Interconnection Reference Model,OSI/RM是在TCP/IP协议族出现之后的一段时间,由ISO(国际标准化组织) 为了解决不同体系结构的网络互联问题,于1981年制定的网络通讯规范模型。该参考模型共分为七层: 物理层(Physical Layer),数据链路层(Data Link Layer),网络层(Network Layer),传输层(Transport Layer),会话层(Session Layer),表示层(Presentation Layer)和应用层(Application Layer)。

TCP/IP协议设计模型与OSI参考模型的对应关系为:

(TCP/IP) 应用层 <-> (OSI) 应用层 表示层 会话层

(TCP/IP) 传输层 <-> (OSI) 传输层

(TCP/IP) 网络层 <-> (OSI) 网络层

(TCP/IP) 链路层 <-> (OSI) 数据链路层 物理层

 

3.   旧有协议对当前开放的互联网安全体系的影响

 

TCP/IP协议设计的初衷是为大型分组交换网络提供有效的寻址及数据传输能力,其设计思想是开放并且友好的,应用层所使用到的敏感数据及传输内容基本为明文传送,仅支持有限的加密能力。

在互联网高速发展的今天,各种网络应用对协议安全性提出了更高的要求,如电子商务平台、网上银行、企业办公系统等。业务要求所传送的关键业务信息具有确定性、保密性及可靠性,要求交易双方或交换双方的身份认证能力,凭据签署能力及防篡改、防伪造、防重发、防窃听能力等。原有的协议设计不但不能满足日益增长的安全需求,而且在协议本身的设计上也暴露出了许多的安全隐患及缺陷。

TCP/IP协议族为当代互联网运行的基础结构,互联网在短时间内也不可能转换到另一个协议体系平台之上。为了更好更安全的实现网络业务,我们必须对现有协议体系存在的问题有一个清晰的认识及正确的应对方法。

 

 

 

 

4.   物理层:  非法接入与嗅探(Sniffe)

 

在一个共享或交换式的网络结构下,网络中的任何一点都有可能成为关键信息的外泄渠道。特别是在没有使用加密技术或仅使用了WEP加密技术的无线网络环境,入侵者可以使用网络嗅探器(Sniffer、OmniPeek、Iris、Cain等)轻而易举的获得关键资料。

在共享网络环境或无线网络环境下,非法接入人员无须使用特别的手段既可通过网卡的混杂模式获得未经加密或经过弱加密的敏感数据。

在交换网络环境下,非法接入人员需要采用一种中间人(Middle-man)技术使网络信息流动路径发生改变,指引业务数据经由中间人(非法接入者或代理服务器)的网络线路传送,流经的途中既可被非法接入者所部署的嗅探装置捕获,而该业务双方都不能感觉到明显的交互异常。

更有甚者于企业或组织核心网络边界安装嗅探系统,或使路由交换设备受控进入到端口镜像模式(如 Cisco Catalyst 端口监控模式)以捕获关键数据。而嗅探可能发生在数据通路的任何一个位置,可以在客户端网络、可以在服务端网络、更可以在公共的线路资源之中。

 

#对策:

a. 企业或组织的网络核心区域实行严格的准入制度。

b. 合理规划使用Vlan、PVlan等逻辑结构,使用交换设备提供的端口安全能力。

c. 对网络接入点实行严格的身份验证(如 802.1X ),控制接入设备及接入用户。

d. 对关键业务进行认证及加密(SSL、IPSec),利用PKI体系保障数据安全。

e. 部署网络入侵侦测系统(NIDS)或网络入侵保护系统(NIPS)发现异常网络行为。

5.   数据链路层: 地址解析协议(ARP)安全

 

地址解析协议基本被认为属于数据链路层协议,它的工作职责为在以太网环境中实现MAC(媒体访问控制)地址与其上一层结构网络层IP地址提供映射能力。

在现代的交换以太网环境中,ARP的作用十分重要。交换机通过内置的MAC地址-端口映射表完成关键性的数据交换工作,局域网终端计算机则通过MAC地址-IP地址映射表完成对等通讯。建立该映射表的工作即是由ARP(地址解析协议)来完成的。

其在以太网中的工作原理如下:

a.  计算机X (192.168.0.10) 准备发送数据给计算机 Y (192.168.0.20)

b.  X检查自身的MAC-IP映射表,未找到符合Y的条目。

c.  X向网络中以广播的方式请求(Request) Y(192.168.0.20)的MAC地址

d.  Y收到X的广播请求后对照请求中的IP地址,发现与自己的IP地址相符,此时Y明白了X正在寻找自己,随即Y给X的MAC地址发送回复(Reply),并同时将X的MAC地址存入自己的MAC-IP映射表(Y是如何得到X的MAC地址?因为X在寻找Y的广播Frame中发送了自己的MAC地址及IP地址)

e.  X收到了来自Y的回复(Reply),同时将提取出的Y的MAC地址加入到自己的映射表中。

f.  随后 X 以此映射表为依据向 Y发送数据,地址解析过程结束。

*可以通过执行 Arp –a 命令查看本机的MAC-IP映射表:

C:\Documents and Settings\Administrator>arp -a

Interface: 192.168.0.3 --- 0x20003

  Internet Address      Physical Address      Type

  192.168.0.1           00-14-6c-9e-3d-46    dynamic

可以看到,当前此计算机中存在 192.168.0.1 的IP地址与 00-14-6c-9e-3d-46 的物理(MAC)地址映射.

 

这个在以太网中运行了多年的协议存在着巨大的缺陷!

请注意该协议工作原理中的e这个阶段,X在接收声称是Y的回复(Reply)后,无条件的信任了这个回复,并且修改了自己与Y之间的通讯映射!

假如这个回复并不是出自Y的呢?如果有人冒充了Y呢? 是的, X不会做任何的真实性验证,完全的信任了这个信息!

回过头去看一下c的步骤,X发送请求(Request)后,在d步骤中,Y同样无条件的信任了声称是X发送过来的信息,修改了自己对 X的通讯映射!

 

利用此协议缺陷,攻击者可以通过制造伪造的ARP (Request、Reply) Frame修改任意一台网内计算机的映射表来达到切断其通讯、改变其数据交换流向以便于嗅探(前面所讲的交换环境中的嗅探技术)的目的。我本人开发的相关ARP安全测试工具可以用于构建这种伪造的ARP Frame。

  

 

 

 

下面将分析两种ARP欺骗攻击:

 

A. 利用ARP缺陷切断局域网中 Y 的互联网通讯

 

   a. Y实现互联网通讯,必须通过正确的网关进行,假设Y的网关R的IP地址为192.168.0.1 网关R的MAC地址为 00-14-6c-9e-3d-46

   b. Y通过ARP 获得正确的网关R的 MAC-IP映射表,表内容如下:

     Interface: 192.168.0.20 --- 0x20003

     Internet Address      Physical Address      Type

     192.168.0.1           00-14-6c-9e-3d-46    dynamic

   c. Y依靠该映射表完成与网关R 的通讯,以完成互联网访问及通讯。

   d. 攻击者 H 对Y声称自己是网关R (192.168.0.1),并对其发送伪造的ARP Reply,其中声明自己的MAC地址为(11-11-11-11-11-11)

   e. Y接收到该Reply后,将自己的映射表修改为:

     Interface: 192.168.0.20 --- 0x20003

     Internet Address      Physical Address      Type

     192.168.0.1           11-11-11-11-11-11    dynamic

   f. 此时攻击者已经成功切断了Y的上行数据流向。

   g. 攻击者 H 同时对网关R 发送伪造的ARP Reply,就可以同时切断Y的下行数据流向。

   h. 至此,Y 与互联网的通讯已经完全被切断,攻击者只要保持低频率的ARP Reply,就可以持续切断Y的外部通讯。

 

B. 利用ARP缺陷,实行中间人攻击,窃取敏感信息

 

   a. X ( IP:192.168.0.10 MAC: 11-11-11-11-11-11) 将与

Y ( IP:192.168.0.20 MAC: 22-22-22-22-22-22) 交换重要信息。

   b. 攻击者 H ( IP:192.168.0.30 MAC: 33-33-33-33-33-33) 希望得到 X 与 Y 间交换的重要信息,启动嗅探装置。

   c. X 与 Y 间的交换数据流通过交换机自身的MAC-Port映射完成端口选择, 重要信息并没有流经攻击者 H的网络端口。

   d. 此时 H 决定采用中间人攻击,H先对X持续发送ARP Reply,声称自己是 Y,同时又对 Y持续发送 ARP Reply,生成自己为 X 。X 与 Y 均无条件的信任该伪造信息。

   e. X 再次发送重要信息给 Y , X参照自己的MAC-IP映射表,提取出Y (H)的MAC地址后按照该地址发送握手信息。

   f. X的握手请求发送到攻击者 H 处,H必须充当中间人完成握手操作,于是将接收于X的信息修改为自己的地址后声称为 X 发往 Y 。

   g. Y接收到声称来自 X(H) 的 握手信息后发送握手信息给 X(H) 。

   h. H接收到来自Y的握手信息,修改为自己的地址后声称为 Y 发往 X 。

   i. X完成与Y的握手,开始发送重要数据。

   j. H接收到来自 X的重要数据,同时转发给 Y 。

   k. 数据交换完成,H 恢复正确的 X 、Y 映射。

此时,H已经完全得到了X 与 Y之间交换的重要信息,而交换双方完全没

有感觉到有H的存在,中间人攻击完成。

 

#对策:

 

a. 由于ARP协议攻击难以准确追踪及定位,应对方法多为保护为主。

  企业应该建立完善的客户端计算机登记,合理分配IP地址,并对客户端计算机IP地址及MAC地址进行备案,方便在出现异常时进行分析。

b. 企业或组织网关与客户端计算机尽可能采用静态MAC-IP地址映射表。

   Cisco路由及交换设备可以采用 Arp 命令指定MAC-IP映射表。

   Windows XP Sp3系统可采用 Arp 命令指定静态的MAC-IP 映射表。

   该静态映射都可以防止伪造的ARP Reply 进行映射欺骗。

特别注意:在早期的Windows Server 2000等系统中,经过我个人的实际测试发现,虽然在Win2000中指定了静态的MAC-IP映射表,但映射地址依然可以被伪造的ARP Reply所动态修改,此BUG已由我上报微软,微软已在后续的操作系统中修复了此问题。

c. 为终端接入的交换机端口启用端口安全,并指定允许接入的MAC地址,防止伪造MAC地址出现造成的切断逻辑链路的攻击,即使出现中间人攻击,也便于追踪与定位。

d. 在企业网络中部署入侵侦测及保护(NIDS/IPS)系统,该系统可以及时的发现异常的ARP协议过程,并对受影响的网络提供自动的攻击保护。

  在客户端系统部署ARP保护程序,防止恶意的ARP Reply 或 Request。

e. 对关键会话及数据使用数据加密技术,使中间人无法还原明文信息。

  目前较为成熟的对称加密算法有 DES、3DES、RC4、AES等,公钥体系(非对称)较成熟的方法有RSA等,这些都可以有效的对抗中间人攻击及信息嗅探。具体的协议应用有SSL、IPSec、SSH等。

 

6.   网络层: 网际协议(Internet Protocol)安全

 

IPv4及IPv6是当前网际协议的两大版本,目前互联网广泛采用IPv4协议版本,第六版IP协议出现的主要原因是为了解决IP地址不足的问题。下文中的讨论以IPv4为例。

IP协议的出现为网间选路提供了极大的便利,依靠协议中的地址字段及网络中的路由设备,可以很高效的将数据送到指定的目标计算机。IP是不可靠,无连接的协议。

首先来看一下

IP的数据报格式:普通的IP头部长度为20字节(160位)

4位版本+4位头部长度+8位服务类型(TOS)+16位数据报总长度 +

16位序列标识+3位标志+13位片偏移 +

8位生存时间(TTL)+8位协议+16位头部校验和 +

32位源IP地址 +

32位目的IP地址 +

(总长度-头部长度的)载荷数据

 

A.分段所带来的问题:

从IP数据报的第一个32位格式定义可以看出,一个IP数据报理论的最大的字节数为(2的16次方-1)个字节=65535 字节。

而在实际情况中,MTU(最大传输单元)可能远小于Ip数据报所规定的65535字节,因此IP数据报也提供了分段能力(第二个32位格式),以适应不同的传输传输需求 。

在现代的入侵侦测系统中,IDS多依靠特征数据库识别数据包中的攻击行为(也有一些通过特定的行为模式分析算法判断入侵行为)

 

例如:

 123456789 为一个攻击特征,IDS在数据包中进行该特征分析,发现该攻击特征后报警并阻拦。而在早期的一些成功的攻击或渗透事件中,入侵者在具有IDS的网络环境下使用已知特征的攻击模式进行攻击并且成功,是什么原因导致了IDS系统的失灵?

 

答案的一部分就在IP数据报头所提供的这种分段能力,攻击者预先构造了分段的IP数据报,将本可以在一个数据报内所承载的有效载荷内容分布在多个数据报中,例如 123456789 这个攻击特征串,攻击者可以构建三个分段的IP数据报:

IP1:  IP1包头(经过分段)+数据部分{123}

IP2:  IP2包头(经过分段)+数据部分{456}

IP3:  IP3包头(经过分段)+数据部分{789}

这三个经过分段的IP数据报可能经过不同的路由表抵达目的网络,在经过被攻击组织的防火墙或入侵侦测系统时可能是无序通过:(IPn为其他无关数据报)

顺序1:  IP3 , IPn , IP1 , IPn , IPn , IP2 , IPn ……

顺序2:  IPn , IP2 , IPn , IPn , IP1 , IPn , IP3 ……

每一个单独的IP报都不会构成攻击特征的成立,防御系统允许其通过,而当该经过分段的数据包到达被攻击端点时,操作系统对分段的数据报进行重组,重组后,该攻击特征呈现(123456789),但为时已晚!客户端应用程序接收到该攻击内容后执行!

在IP数据报头中还存在着多种类似分段所产生的问题,严格来将,分段所带来的问题并不能认为是协议的设计问题,但良好的并且安全的协议设计在当今的开放网络环境下却是尤为重要的。

B. 源地址的可靠性问题

在IP数据报头的第四个32位格式段,定义了IP数据报的来源地址,其格式为点分8位四段:  11111111.11111111.11111111.11111111 如: 202.106.0.20 每一段的取值范围为十进制的0~255

源地址说明了数据报的来源及所属,操作系统在进行网络通讯时自动于协议栈生成了相应的地址格式段,但遗憾并且危险的是,我们可以伪造它。

一个声称来自 A(211.1.2.1) 的数据包要求B执行他的指令,B和A是生活中的相互信任的好友,于是B按照A的指令执行了。在没有足够安全知识的情况下, B 可能完全不会认为来自A的数据报实际上是恶意者C发送的伪造数据报,但实际上,完成这种欺骗易如反掌。

IP 数据报的报头缺乏对来源的认证和审核,唯一的校验是对自身数据的CRC,而该校验同样可以进行伪造!

当前互联网上存在的各种各样的攻击行为,尤其是D.O.S(拒绝服务)攻击,多半使用了伪造的源IP地址,这使得对于攻击的防御和追查难上加难。

源地址的可伪造性,造成了我们不能充分的信任所接收到的数据包,曾经轰动一时的分布式反射攻击将源地址伪造的问题充分放大:

服务器 Sa(运行重要业务) 服务器 Sb(互联网中的任意服务器)  攻击者 A 

a. 攻击者 A 伪造源地址,声称自己是服务器Sa , 向服务器 Sb 发送请求数据

b. 不管 A 向 Sb 发送任何请求,Sb均要对该请求做出答复,Sb构建了对Sa的应答包。

c. 服务器 Sb 将应答包发往 真正的Sa

如果攻击者A对互联网上的服务器 Sb1、Sb2、Sb3…… 进行大量的伪造请求,可能的请求包括ICMP回显、TCP Syn、UDP 端口请求,那么真正的Sa会被大量的真正回复堵塞线路或服务能力耗尽,我们可以归结这种方法为:借刀杀人。

#对策:

a. 在边界路由器上严格校验所处理的IP数据报的源地址合法性。比如不应该出现不属于该自治区域IP地址段的源地址数据报。在交换及路由设备上使用ACL过滤所处理的数据报,以保证其地址的真实性及合法性。以及在公共线路上传输的被分配为私有地址段的源地址数据报。

b. 在企业或组织内部终端计算机上启用防止使用RAW包构建技术的保护程序,及启用防止伪造包发送的智能防火墙,如Windows Xp 系统自带的“连接防火墙”,该防火墙可以自动的阻止该计算机机伪造的源IP地址的数据报发送。

c. 使用基于PKI体系的应用, 公钥基础结构可以通过CA颁发的证书认证对方身份,即使对方伪造了源地址,由于其没有真正使用者的数字证书,导致关键应用不信任该身份而中断会话。同时,数字签名技术也可保证接收信息的真实性及完整性,真实的数据发送方会将所发送信息通过单向散列算法(MD5或SHA1)计算出一个固定位数的摘要值,并使用自己的私钥将该值加密;接收方也将接收到的数据信息进行同样的单向散列计算,得到一个自己的摘要值,同时使用发送方已公布的公钥对发送方的签名数据进行解密,得到对方计算的摘要值,并与接收方摘要值进行比对,若相同,则即可认定发送方身份,又可认定信息的完整性。

d. 使用支持数据流状态的智能防火墙及IDS/IPS, 侦测防御系统必须具备分段重组及分片重组能力,并可对数据流状态及会话状态进行动态监测与跟踪,简单的包过滤防火墙及特征检测IDS已经不能满足更高的网络安全需求,基于行为模式的侦测防御系统可能会增加入侵误报的概率,但同时可以大大提高网络整体的安全性。

e. 网络边界使用采用“数据流指纹识别”技术的抗攻击硬件产品,如绿盟科技黑洞系列产品。

  “数据流指纹识别”是近年来识别伪造报文信息及会话的重要技术,该技术为一种综合分析手段,大大提高了对伪造数据包及会话的识别能力。

7.   传输层: 传输控制协议(TCP)与用户数据报协议(UDP)安全

该层协议为上层提供数据传输服务而设计。

TCP为面向连接的协议,在数据传送前需要建立逻辑连接。

UDP为非连接的协议,可以直接进行数据传送无需连接。

TCP的头部格式为:

16位源端口号 + 16位目的端口号 +

32位序列号 +

32位确认序列号 +

4位头部长度 + 6位保留位 + 6位标志(URG、ACK、PSH、RST、SYN、FIN) + 16位窗口 +

16位校验和 + 16位紧急指针

 

UDP的头部格式为:

16位源端口号 + 16位目的端口号 +

16位长度 + 16位校验和

 

可以看到,同为传输层协议,TCP面向连接的协议远比UDP非连接协议复杂。

简单的UDP包结构给攻击者提供了巨大的便利,不需要连接,不需要序列号匹配,不需要认证,伪造一个UDP包是如此的简便!

许多的网络应用程序基于UDP协议,虽然上层协议可以弥补UDP的安全弱点,但简单的UDP包结构还是留给了攻击者极大的便利。2001年发生的导致全球互联网堵塞的蠕虫事件既是病毒使用了简单的UDP包结构,发送了大量的垃圾数据包从而耗尽了互联网带宽。

 

本节的重点在于讨论TCP的安全性问题。

众多的网络应用程序使用了TCP协议作为其基础传输协议,该协议与UDP协议相比,安全性要好于UDP。TCP的基本安全性来自于其面向连接的特性,我们来看一个TCP握手建立连接的过程: (A为Web服务器监听在80端口 B为访问者)

a.  A启动Web服务器,使用TCP协议监听在80端口

b.  B启动TCP协议,在本地随机打开一个1024以上的端口 例:1025

c.  B向A所在服务器地址发送同步 ( 标志SYN位被置1 )数据包,并携带初始序列号ISN

B:1025 ( SYN  ISN:1745382928) à A:80

d.  A向B的端口1025返回同步确认数据包,并携带自身ISN,并将B的ISN+1作为确认.

A:80 ( SYN-ACK  ISN:2765382987 ACK:1745382929) à B:1025

e.  B向A的端口80发送确认数据包,将A的ISN+1作为确认.

B:1025 ( ACK ACK:2765382988 ) à A:80

f.  至此,著名的 Three-way handshake 完成,双方准备进行数据交换。

 

可以看出,TCP基于连接的基础是序列号的逻辑对应关系。

假设某攻击者伪造了源地址试图与服务器A通讯,由于其无法知晓服务器A所返回的初始化序列号,导致三次握手无法完成,也就无法建立连接,攻击被迫终止。

此时我们的心情稍微放松了一些。

但问题随之又来,我们发现操作系统对TCP初始序列号ISN的生成并不是完全随机的,其生成序列和系统时钟有关,换句话说,我们几乎可以预测对方的ISN范围,那接下来我们又能做什么呢?

 

让我们来看两个实验:

实验A:

基于UNIX的操作系统提供一些安全管理工具,这些管理工具很多在一定程度上为了方便管理员的使用而设置了信任名单,信任名单的信任基础是IP地址。当真正的管理员连接服务器时,服务器检查信任名单的IP地址,发现许可这个管理员地址进入管理,就不加任何的阻拦允许管理员登陆。如果攻击者也希望不受任何阻拦的管理系统呢?

显然,在通常情况下,他做不到,因为他不具有信任名单中包括的 IP 地址,入侵的关键在于建立连接,随后发送指令数据。看看他是如何能做到的?

a. 攻击者 H 首先 伪造了 受信任的管理员IP地址的TCP SYN,发往服务器的登陆端口。

b. 服务器给真正的管理员IP返回TCP SYN-ACK,并包含了服务器的ISN(1234567890)。

c. 如果攻击者够幸运的话,管理员的计算机并没有打开,这条服务器发来的 SYN-ACK

照理会像石沉大海一样没有回映;如果不幸的话,管理员计算机是运行的,在接收到该

  条SYN-ACK时发现自己并未激活这次连接,操作系统会发回一条RST 来复位连接。

d. 在前者讨论的幸运的情况下,攻击者H 预测了该系统在此刻可能产生的序列号范围,

  在服务器超时之前,攻击者H向服务器发送了该范围所有可能的序列号(并不多)的

ACK,其中包括正确对应服务器ISN的ACK。此时,攻击者顺利的建立起了以假冒的管

理员IP地址为源地址的连接。随后他要做的,只是发送什么指令而已。

e. 如果在c阶段,攻击者H是不幸运的,是不是入侵就终止了呢?当然不是!攻击者可

  以使用一种叫做拒绝服务的攻击手段让服务器没有时间理会或错过该 TCP SYN-ACK,

  而拒绝服务的时间仅需几秒甚至更短,可能还没有触发侦测系统就已经停止了,序列号

  基础的薄弱可窥一斑。

实验A中,如果不是UNIX服务器,而是同样以IP地址为审核标准的防火墙或应用系统呢?

实验B:

在实验A中的c步骤,我们注意到操作系统会发送一个TCP RST包给对方。该标志的作用是复位当前的连接,这是一个很厉害的指令,完全不考虑正在进行中的会话及未接收的数据,直接关闭该连接。而关闭连接的能力同样是基于对序列号的确知之上的。

也就是说,结合IP地址伪造技术与序列号预测技术,我们基本上可以关闭互联网中的任何一条TCP连接!我们只需要知道一个正确的Socket Pair及 序列号,就可以完成这一切!而如何得知这样一个正确信息呢? 前面已经提过了序列号预测,但事实上,存在着比上述方法更简单的办法。

回想一下在物理层提到的嗅探(Sniffe)技术,以及在数据链路层提到的ARP 中间人攻击,配合这几项技术,我们可以在以太交换网络中无所不能!

此实验为一个非法入侵者通过公司废弃的网络接入点接入公司内部网络,并取得员工之间交换的重要文件及密码,并中断了公司正在进行的重要业务连接。

实验的具体过程,此处略去,只需要结合上面所分析内容即可还原出操作模型。           

 

TCP协议所带来的问题远不止于此:

同步洪水攻击:

由于需要完成握手程序,服务器回复SYN-ACK后要处于等待状态,如果大量的 SYN-ACK处于等待状态,服务器就无法接受新的客户端 SYN请求。攻击者利用这一弱点设计了 TCP SYN FLOOD 攻击。攻击者发送大量的SYN请求,但并不对此进行第三次确认,大量的确认等待占满了服务器的缓存,导致D.O.S 拒绝服务式攻击。现在的D.O.S攻击已呈现出分布式,攻击能量更大,追查更困难。

反射洪水攻击: 前文已提到该攻击方法,TCP本身的机制造成了攻击的可能。

全连接洪水攻击:

虽然操作系统在保持全连接状态时的缓存空间要远大于保存半连接的空间,但依然容易受到洪水攻击,造成拒绝服务式攻击。但组织全连接洪水攻击的难度要大于组织半连接攻击,原因是全连接需要攻击者真实的IP地址。如果使用预测序列号方法进行伪造IP地址的攻击,那么攻击者的资源消耗可能要远远大于服务器本身的消耗。

 

#对策:

a. 不要以IP地址为信任依据,在IP地址审核的基础上使用数字证书、口令审核等。

b. 结合多种方式防止TCP序列号被他人取得。

c. 使用专门的结构与硬件来预防TCP SYN FLOOD此类攻击,关键业务服务器采用负载均衡及集群技术。

d. 使用操作系统防火墙隔离系统不需要对外开放的端口,防止基于端口的扫描*及被利用作为反射攻击的傀儡服务器。

e. 对于关键网络业务,一定要使用成熟的加密体系。如基于公钥体系结构的SSL、IPSec等,此种加密体系可以很好的保护数据在传输中的安全,已经被银行、军队、政府广泛采用。

f. 在企业外部连接企业内部系统时,尽量使用VPN进行访问,VPN 技术使用SSL、IPSec等加密框架建立安全的访问隧道,在牺牲一定带宽和效率的情况下保证了企业敏感信息的安全。

*关于扫描技术:

       攻击者在对某一目标进行攻击前总会进行TCP端口扫描,以知晓目标所开放的相关TCP服务。对于TCP各端口,攻击者发送SYN请求,如果目标返回SYN-ACK,则该端口开放;如果返回RST,则该端口关闭;如果无返回,则可分析出该端口被防火墙保护。

8.   应用层 :  HTTP、FTP、SMTP、DNS协议安全

 

 应用层包涵了众多的协议,这些协议与互联网应用息息相关。

目前这些协议共有的问题是:

a. 容易伪造,缺乏强健的身份认证。

b. 所承载的数据均为明文传送,未经过任何加密处理。

c. 无法防止信息篡改及破坏。

d. 所产生的会话易被劫持及破坏。

 

现今大部分的商业协议设计都集中在应用层,应用层协议工作在底层协议之上,而底层协议目前的安全状况另人担忧,所以应用层协议本身的安全设计就成为了重中之重。

协议中的安全性设计主要应遵循以下原则:

a. 承载数据的机密性: 使用可靠的加密算法对承载数据进行加密,并提供可靠密钥管理。

b. 承载数据的完整性: 使用可靠的单向散列算法对承载数据生成指纹,防止数据篡改及破坏。

c. 协议端点的认证性: 提供有效的端点身份认证机制,保证身份的确定性及合法性。

d. 协议端点及承载数据的不可否认性:提供严密的机制确定数据由发送者产生,即使他否认。

 

9.   保障旧有协议安全运行的基本理论及方法

保障旧有协议安全运行是一个困难的工作,基本方面既上文提出的机密性、完整性、认证性及不可否认性。目前实现上述四点的成熟安全理论为: Public Key Infrastructure (公钥基础结构),具体实现方法将在第二部分讨论。

 

第二部分公钥基础结构(PKI)

 

1.   公钥基础结构(Public Key Infrastructure)简介

PKI(Public Key Infrastructure公钥基础结构)是一种遵循标准的利用公钥加密技术为电子商务的开展提供一套安全基础平台的技术和规范。它能够为所有网络应用提供加密和数字签名等密码服务及所必需的密钥和证书管理体系,简单来说,PKI就是利用公钥理论和技术建立的提供安全服务的基础设施。用户可利用PKI平台提供的服务进行安全的电子交易,通信和互联网上的各种活动。 
    为解决Internet的安全问题,世界各国对其进行了多年的研究,初步形成了一套完整的Internet安全解决方案,即目前被广泛采用的PKI-公钥基础设施。PKI(公钥基础设施)技术采用证书管理公钥,通过第三方的可信任机构--CA认证中心把用户的公钥和用户的其他标识信息捆绑在一起,在互联网上验证用户的身份。目前,通用的办法是采用建立在PKI基础之上的数字证书,通过把要传输的数字信息进行加密和签名,保证信息传输的机密性、认证性、完整性和不可否认性,从而保证信息的安全传输。PKI是基于公钥算法和技术,为网上通信提供安全服务的基础设施。是创建、颁发、管理、注销公钥证书所涉及到的所有软件、硬件的集合体。其核心元素是数字证书,核心执行者是CA认证机构。

 

PKI体系所涉及到的加密算法技术有:

1.公钥加密技术 (RSA、Diffie-Hellman、DSA、椭圆曲线算法)

2.共享密钥加密技术 (DES、3DES、IDEA、Blowfish)

3.单向散列式函数 (MD5、SHA1)

 

2.   对称密钥加密技术(共享密钥加密 DES、3DES、IDEA、Blowfish)

 概念:

对称密钥加密技术指加密与解密的双方都使用同一个预先协商好的算法及密钥。

 解释:

对称密钥加密有许多种算法,但所有这些算法都有一个共同的目的-以可还原的方式将 明文(未加密的数据)转换为密文 。密文使用加密密钥编码,对于没有解密密钥的任何人来说它都是没有意义的。由于对称密钥加密在加密和解密时使用相同的密钥,所以这种加密过程的安全性取决于是否有未经授权的人获得了对称密钥。这就是它为什么也叫做机密密钥加密的原因。希望使用对称密钥加密通信的双方,在交换加密数据之前必须先安全地交换密钥。

衡量对称算法优劣的主要尺度是其密钥的长度。密钥越长,在找到解密数据所需的正确密钥之前必须测试的密钥数量就越多。需要测试的密钥越多,破解这种算法就越困难。有了好的加密算法和足够长的密钥,如果有人想在一段实际可行的时间内逆转转换过程,并从密文中推导出明文,从计算的角度来讲,这种做法是基本上不可行的。

代表算法:

   DES: 由IBM开发,使用56位密钥长度,1976年被采纳为美国联邦标准加密算法。

  3DES: 使用两个56位密钥进行三次DES,加密速度慢,但安全性高。

  IDEA: 使用128位密钥,于1991年发表,在PGP中广泛应用,必须用于商业目的。

Blowfish: 可以使用最多448位的密钥,1993年发表,加密速度快,简洁流畅。

呈现出的问题:

    由于在加解密双方均使用预先协商好的同一个密钥,因此密钥的传递成为信息保密的关键,也成为该种加密方式的应用难点,目前通常不做为单一加密手段使用,常与公钥加密混合使用。

3.   非对称密钥加密技术(公钥加密 RSA、Diffie-Hellman、DSA、椭圆曲线算法)

概念:

非对称密钥加密技术使用两个不同但数学相关的密钥(公钥、私钥)进行信息的加解密。

解释:

公钥加密所使用的两个密钥是分别放置的,私钥隐秘保存在个人手中,不能泄露;而公钥可以进行广泛的发布;加密数据时,加密方使用对方公布的公钥对数据进行加密,解密方收到密文后使用(也仅能通过)自己的私钥对数据进行解密;同样,私钥持有者使用该私钥加密的数据也仅能被自己发布的公钥所解密。公钥加密不仅可以加密数据,还可以配合CA完成对身份的认证。

与对称密钥加密相似,公钥加密也有许多种算法。然而,对称密钥和公钥算法在设计上并无相似之处。可以在程序内部使用一种对称算法替换另一种,而变化却不大,因为它们的工作方式是相同的。而另一方面,不同公钥算法的工作方式却完全不同,因此它们不可互换。

代表算法:

RSA: 唯一广泛采用的公钥加密算法,普遍采用1024位密钥,效率十分低下。

DSA: 数字签名算法,仅用于数字签名领域。

Diffie-Hellman:  仅用于安全密钥交换领域。

椭圆曲线算法: 可实现加密操作,但应用不广泛,快于RSA,密钥短,安全性不如RSA。

 

呈现出的问题:

    由于公钥加密技术计算量较大,导致加密效率低下,实际应用中多采用公钥加密算法进行对称密钥的安全交换,数据的实际加密仍采用了对称加密技术。

   

4.   单向散列函数技术及应用(MD5、SHA1)

 

概念:

    通过把一个散列算法的单向数学函数应用于数据,将任意长度的一块数据转换为一个定长的、不可逆转的数字。

 

解释:

    通过单向散列函数对一个数据块进行计算后,将产生一个较长的散列值(也称为消息摘要),该散列值可以近似的被看做该数据块的指纹,因为通过此算法在不同的数据块上产生出相同的散列值的几率非常之小,也因此一旦数据块发生了十分微小的改动,则所产生的散列值将发生很大的变化,单向散列函数的计算效率较公钥加密算法高。

 

代表算法:

MD5: 消息摘要5,是由 Ron Rivest 设计的可产生一个 128 位的散列值的散列算法。

SHA1: 安全散列算法1由NSA设计,并由 NIST 将其收录到 FIPS 中,作为散列数据的标准。它可产生一个 160 位的散列值。SHA-1 是流行的用于创建数字签名的单向散列算法。

 

5.   认证中心 (Certificate Authority)及数字证书(X.509)

    在PKI体系中,CA(Certificate Authority,认证中心)和数字证书是密不可分的两个部分。认证中心又叫CA中心,它是负责产生、分配并管理数字证书的可信赖的第三方权威机构。认证中心是PKI安全体系的核心环节,因此又称作PKI/CA。

 

6.   密钥交换技术

 

对称密钥算法非常适合于快速并安全地加密数据。但其缺点是,发送人和接收人必须在交换数据之前先交换共享密钥。这一点给使用对称密钥算法带来了很大的问题。而使用公钥加密技术又因为公钥加密算法的低效率,导致对数据的加密及解密需要耗费大量的CPU时间及资源。通过结合使用加密数据的对称密钥算法与交换共享密钥的公钥算法可产生一种既快速又安全的解决方案。

 

基于公钥加密的密钥交换步骤如下:

a. 发送人获得接受人的公钥。

b. 发送人创建一个随机共享密钥(在对称密钥加密中使用的单个密钥)。

c. 发送人使用共享密钥和对称密钥算法将明文数据转换为密文数据。

d. 发送人使用接收人的公钥将共享密钥转换为密文共享密钥。

e. 发送人将密文数据和密文共享密钥一起发给接收人。

f. 接收人使用其私钥将密文共享密钥转换为明文。

g. 接收人使用明文共享密钥将密文数据转换为明文数据。

 

密钥交换技术解决了长期存在于对称加密技术中的密钥分配问题,同时在数据的加密及解密效率上又较公钥加密算法有了较大的进步。这种方案也是目前业界广泛采用的PKI应用方式,如在Secure Sockets Layer(安全套接层)中的具体应用。

 

 

7.   数字签名技术

 

数字签名是指使用公钥加密技术对数据进行完整性、认证性及不可否认性的签署操作。

数字签名使用个人私钥及单向散列函数产生签名,该签名标识了数据发送方的准确身份及所发送数据的完整性。该技术仅用于识别数据发送方身份及数据完整性,并不对数据本身进行加密操作。根据最新的中国法律,数字签名具有和手写签名一样的法律效力。

 

数字签名的签署及验证过程:

 a. 发送方对所要发送的数据进行单向散列计算,生成该数据指纹(128或160位)。

 b. 发送方使用本人私钥对该数据指纹进行非对称加密。

 c. 发送方将数据及用本人私钥加密后的数据指纹一同发送给接收方。

 d. 接收方接到数据后对数据进行同样算法的单向散列计算,生成该数据指纹。

 e. 接收方随后使用发送方发布的公钥对其发送过来的加密数据指纹进行解密。

 f. 解密后接收方比对两个数据指纹,如果相同则说明数据确实由发送方所发并且没有经过篡改。

 

    数字签名技术通过成熟的PKI体系进行,具有成熟的理论保障和技术支持。目前已经被广泛采用,并且现今大部分的国家均认可数字签名的法律效力。

 

 

 

8.   数字信封技术

   

数字信封技术与数字签名类似,不同点在于,数字信封技术对数据也进行了加密,该加密技术结合了对称加密技术与公钥加密技术。在数字签名技术中,发送方使用私钥对数据指纹进行加密,接收方使用发送方公钥进行解密;而数字信封技术中恰好相反,发送方使用对方公钥进行共享密钥的加密,接收方使用个人私钥对共享密钥进行解密,才能利用该密钥对密文数据进行对称加密的解密过程。

 

数字信封的密封和解封过程:(未填加数字签名的过程)

a. 发送方随机生成一个共享密钥,并对数据进行对称加密。

b. 发送方使用接收方公钥对该共享密钥进行非对称加密。

c. 发送方将密文数据及加密后的共享密钥发送给接收方。

d. 接收方接收数据后使用个人私钥解密加密后的共享密钥。

e. 接收方使用解密后的共享密钥解密密文数据。

 

可以看到,数字信封的密封与解封,其核心在于共享密钥的交换。使用公钥技术既保证了共享密钥的安全交换,又保证了该数字信件只能被指定的接收方所查看。上述实现过程中为了使过程更加清晰,没有加入数字签名的过程,在实际使用中,数字信封技术应与数字签名技术相结合,以保证信件的保密性、完整性、认证性及不可否认性。

 

 

9.   公钥基础结构的应用(SSL、IPSec、Vpn)

     目前,公钥基础结构PKI广泛的应用于互联网,根据其规范制定的相关具有代表性的安全应用标准主要有:

Secure Socket Layer : 安全套接层。

    SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

  SSL协议提供的服务主要有:

  1)认证用户和服务器,确保数据发送到正确的客户机和服务器;

  2)加密数据以防止数据中途被窃取;

  3)维护数据的完整性,确保数据在传输过程中不被改变。

常见的使用SSL的应用有:

HTTPS:  Hypertext Transfer Protocol over Secure Socket Layer

FTPS:  File Transfer Protocol Over Secure Socket Layer

SSL协议的握手过程:

SSL 协议既用到了公钥加密技术又用到了对称加密技术,对称加密技术虽然比公钥加密技术的速度快,可是公钥加密技术提供了更好的身份认证技术。SSL 的握手协议非常有效的让客户和服务器之间完成相互之间的身份认证,其主要过程如下:

  ①客户端的浏览器向服务器传送客户端 SSL 协议的版本号,加密算法的种类,产生的随机数,以及其他服务器和客户端之间通讯所需要的各种信息。

  ②服务器向客户端传送 SSL 协议的版本号,加密算法的种类,随机数以及其他相关信息,同时服务器还将向客户端传送自己的证书。

  ③客户利用服务器传过来的信息验证服务器的合法性,服务器的合法性包括:证书是否过期,发行服务器证书的 CA 是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。如果合法性验证没有通过,通讯将断开;如果合法性验证通过,将继续进行第四步。

  ④用户端随机产生一个用于后面通讯的“对称密码”,然后用服务器的公钥(服务器的公钥从步骤②中的服务器的证书中获得)对其加密,然后将加密后的“预主密码”传给服务器。

  ⑤如果服务器要求客户的身份认证(在握手过程中为可选),用户可以建立一个随机数然后对其进行数据签名,将这个含有签名的随机数和客户自己的证书以及加密过的“预主密码”一起传给服务器。

  ⑥如果服务器要求客户的身份认证,服务器必须检验客户证书和签名随机数的合法性,具体的合法性验证过程包括:客户的证书使用日期是否有效,为客户提供证书的CA 是否可靠,发行CA 的公钥能否正确解开客户证书的发行 CA 的数字签名,检查客户的证书是否在证书废止列表(CRL)中。检验如果没有通过,通讯立刻中断;如果验证通过,服务器将用自己的私钥解开加密的“预主密码”,然后执行一系列步骤来产生主通讯密码(客户端也将通过同样的方法产生相同的主通讯密码)。

⑦服务器和客户端用相同的主密码即“通话密码”,一个对称密钥用于 SSL 协议的安全数据通讯的加解密通讯。同时在 SSL 通讯过程中还要完成数据通讯的完整性,防止数据通讯中的任何变化。

⑧客户端向服务器端发出信息,指明后面的数据通讯将使用的步骤⑦中的主密码为对称密钥,同时通知服务器客户端的握手过程结束。

  ⑨服务器向客户端发出信息,指明后面的数据通讯将使用的步骤⑦中的主密码为对称密钥,同时通知客户端服务器端的握手过程结束。

  ⑩SSL 的握手部分结束,SSL 安全通道的数据通讯开始,客户和服务器开始使用相同的对称密钥进行数据通讯,同时进行通讯完整性的检验。

 

Internet Protocol Security: 网际协议安全。

IPSec 协议不是一个单独的协议,它依靠PKI公钥基础结构给出了应用于IP层上网络数据安全的一整套体系结构,包括网络认证协议 Authentication Header(AH)、封装安全载荷协议Encapsulating Security Payload(ESP)、密钥管理协议Internet Key Exchange (IKE)和用于网络认证及加密的一些算法等。IPSec 规定了如何在对等层之间选择安全协议、确定安全算法和密钥交换,向上提供了访问控制、数据源认证、数据加密等网络安全服务。

  IPSec的安全特性主要有:

  ·不可否认性 "不可否认性"可以证实消息发送方是唯一可能的发送者,发送者不能否认发送过消息。"不可否认性"是采用公钥技术的一个特征,当使用公钥技术时,发送方用私钥产生一个数字签名随消息一起发送,接收方用发送者的公钥来验证数字签名。由于在理论上只有发送者才唯一拥有私钥,也只有发送者才可能产生该数字签名,所以只要数字签名通过验证,发送者就不能否认曾发送过该消息。但"不可否认性"不是基于认证的共享密钥技术的特征,因为在基于认证的共享密钥技术中,发送方和接收方掌握相同的密钥。

  ·反重播性 "反重播"确保每个IP包的唯一性,保证信息万一被截取复制后,不能再被重新利用、重新传输回目的地址。该特性可以防止攻击者截取破译信息后,再用相同的信息包冒取非法访问权(即使这种冒取行为发生在数月之后)。

  ·数据完整性 防止传输过程中数据被篡改,确保发出数据和接收数据的一致性。IPSec利用Hash函数为每个数据包产生一个加密检查和,接收方在打开包前先计算检查和,若包遭篡改导致检查和不相符,数据包即被丢弃。

  ·数据可靠性(加密) 在传输前,对数据进行加密,可以保证在传输过程中,即使数据包遭截取,信息也无法被读。该特性在IPSec中为可选项,与IPSec策略的具体设置相关。

  ·认证 数据源发送证书,由接收方验证证书的合法性,只有通过认证的系统才可以建立通信连接。

    

  IPSec使用的数据加密算法是DES--Data Encryption Standard(数据加密标准)。DES密钥长度为56位,在形式上是一个64位数。DES以64位(8字节)为分组对数据加密,每64位明文,经过16轮置换生成64位密文,其中每字节有1位用于奇偶校验,所以实际有效密钥长度是56位。 IPSec还支持3DES算法,3DES可提供更高的安全性,但相应地,计算速度更慢。

  ·密钥交换-Diffie-Hellman算法

  要启动安全通讯,通信两端必须首先得到相同的共享密钥(主密钥),但共享密钥不能通过网络相互发送,因为这种做法极易泄密。

  Diffie-Hellman算法是用于密钥交换的最早最安全的算法之一。DH算法的基本工作原理是:通信双方公开或半公开交换一些准备用来生成密钥的"材料数据",在彼此交换过密钥生成"材料"后,两端可以各自生成出完全一样的共享密钥。在任何时候,双方都绝不交换真正的密钥。

通信双方交换的密钥生成"材料",长度不等,"材料"长度越长,所生成的密钥强度也就越高,密钥破译就越困难。除进行密钥交换外,IPSec还使用DH算法生成所有其他加密密钥。

 

Virtual Private Network: 虚拟专有网络。

虚拟专用网(VPN)被定义为通过一个公用网络(通常是因特网)建立一个临时的、安全的连接,是一条穿过混乱的公用网络的安全、稳定的隧道。虚拟专用网是对企业内部网的扩展。虚拟专用网可以帮助远程用户、公司分支机构、商业伙伴及供应商同公司的内部网建立可信的安全连接,并保证数据的安全传输。虚拟专用网可用于不断增长的移动用户的全球因特网接入,以实现安全连接;可用于实现企业网站之间安全通信的虚拟专用线路,用于经济有效地连接到商业伙伴和用户的安全外联网虚拟专用网。

目前的VPN多采用SSL或IPSec技术,SSL技术VPN为近年来开始采用的一种形式。其保证安全性的重要基础是公钥基础结构(PKI)。

 

我们可以看到,公钥基础结构(PKI)为互联网提供了全面可靠的安全基础,并且PKI可以有效解决互联网旧有协议所带来的主要安全隐患,合理的使用PKI体系及其他安全保障措施,可以确保网络关键业务安全、可靠的运行。