安全通信具有下列所需要的特性。
入侵者能够潜在地执行下列行为:
密码技术使得发送方可以伪装数据,使入侵者不能从截取到的数据中获得任何信息。
当然,接收方必须能够从伪装的数据中恢复出初始数据。
报文的最初形式被称为明文。
使用加密算法加密明文报文,生成的加密报文被称为密文,该密文对任何入侵 看起来是不可懂的。
上图中,Alice提供了一个密钥(key) K A K_A KA,它是一串数字或字符,作为加密算法的输入。
加密算法以密钥和明文报文 m 为输入,生成的密文作为输出。
用符号 K A ( m ) K_A(m) KA(m)表示(使用密钥 K A K_A KA加密的)明文报文 m 的密文形式。
使用密钥 K A K_A KA的诗句加密算法显然与上下文有关。
Bob将为解密算法提供密钥 K B K_B KB,将密文和Bob的密钥作为输入,输出初始明文。
如果Bob接收到一个加密的报文 K A ( m ) K_A(m) KA(m),可通过计算 K B ( K A ( m ) ) = m K_B(K_A(m))=m KB(KA(m))=m进行解密。
在对称密钥系统中,Alice和Bob的密钥是相同的并且是秘密的。
在公开密钥系统(也称为公钥系统)中,使用一对密钥:一个密钥为Bob和Alice俩人所知(实际上为全世界所知),,另一个密钥只有Bob和Alice知道(而不是双方都知道)。
凯撒密码,一种加密数据的方法。
凯撒密码用于英语文本时,将明文报文中的每个字母表中该字母后第 k 个字母进行替换(允许回绕,即把字母 “a ”排在字母 “z”之后)。
凯撒密码的一种改进方法是但码代替密码,也是使用字母表中的一个字母替换该字母表中的另一个字母。
然而,并非按照规则的模式进行替换,只要每个字母都有一个唯一的替换字母,任一字母都可用另一字母替换,反之亦然。
破解加密方案,可以根据入侵者所拥有的信息分为三种不同的情况。
多码代替密码,这种技术是对单码代替密码的改进。
基本思想:使用多个单码代替密码,一个单码代替密码用于加密某明文报文中一个特定位置的字母。
1. 块密码
对称加密技术有两种宽泛的类型:流密码和块密码。
块密码,用在多种因特网协议的加密中,包括PGP(用于安全电子邮件)、SSL(用于使TCP连接更安全)和 IPsec(用于使网络层传输更安全)。
在块密码中,要加密的报文处理为k比特的块。
为了加密一个块,该密码采用了一对一映射,将 k 比特块的明文映射为k比特块的密文。
对这种密码的蛮力工具即通过使用所有映射来尝试解密密文。
为了挫败蛮力工具,块密码通常使用大得多的块,由64比特甚至更多比特组成。
对于通常的k比特块密码,可能映射数量是 2 k ! 2^k! 2k!,对于即使不大的k值(如k=64),这也是一个天文数字。
块密码通常使用函数模拟随机排列表。
目前有一些流行的块密码,包括 DES(数据加密标准)、3DES 和 AES(高级加密标准)。
2. 密码块链接
在计算机网络应用中,通常需要加密长报文(或长数据流)。
对于相同的块,块密码当然将产生相同的密文。
当攻击者看到相同的密文块时,它可能潜在地猜出其明文,并且通过识别相同的密文块和利用支撑协议结构的知识,甚至能够解密整个报文。
对解决这个问题,可以在密文中混合某些随机性,使得相同的明文块产生不同的密文块。
令m(i) 表示第 i 个明文块, c(i) 表示第 i 个密文块,并且 a ⊕ b 表示两个比特串 a 和 b 的异或(XOR)。
将具有密钥 S 的块密码加密算法表示为 K s K_s Ks。
基本思想如下:发送方为第 i 块生成一个随机的k比特数 r(i) ,并且计算 c ( i ) = K s ( m ( i ) ⊕ r ( i ) ) c(i) = K_s(m(i)⊕r(i)) c(i)=Ks(m(i)⊕r(i))。
接收方接收到 c(i) 和 r(i),它能够通过计算 m ( i ) = K s ( c ( i ) ⊕ r ( i ) ) m(i) = K_s(c(i)⊕r(i)) m(i)=Ks(c(i)⊕r(i))而恢复每个明文块。
引入随机性产生了另一个问题:必须传输以前两倍的比特。
块密码通常使用了一种称为密码块链接(CBC)的技术。
基本思想是仅随第一个报文发送一个随机值,然后让发送方和接收方使用计算的编码块代替后继的随机数。
CBC运行过程如下:
这种方法的后果:
1. RSA
RSA 广泛地使用了模 n 算术的算术运算。
当用RSA加密一个报文时,等价于加密表示该报文的这个唯一的整数。
RSA有两个互相关联的部分:
2. 会话密钥
RSA所要求的指数运算是相当耗费时间的过程。
DES用软件实现要比 RSA 快100倍,用硬件实现则要快 1000~10000倍。
在实际应用中,RSA通常与对称密钥密码结合起来使用。
例如:如果Alice要向Bob发送大量的加密数据。
首先,Alice选择一个用于加密数据本身的密钥,这个密钥有时称为**会话密钥**,好会话密钥表示为 $K_s$。
Alice必须把这个会话密钥告知Bob,因为这是他们在对称密钥密码(如DES或AES)中所使用的共享对称密钥。
Alice可以使用Bob的RSA公钥来加密该会话密钥,即计算 $c=(K_s)^e mod \ n$。
Bob收到了该RSA加密的会话密钥 c 后,解密得到会话密钥 $K_s$。
Bob此时已经知道Alice将要用于加密数据传输的会话密钥了。
3. RSA的工作原理
RSA的安全性以利于这样的事实:目前没有已知的算法可以快速进行一个数的因数分解,这种情况下公开值 n 无法快速分解成素数 p 和 q。如果已知 p 和 q ,则给定公开值 e,就很容易计算出秘密密钥 d。 另一方面,不确定是否存在因数分解一个数的快速算法,从这种意义上来说,RSA的安全性也不是确保的。
另一种流行的公钥加密算法是 Diffie-Hellman,即它不能用于加密任意长度的报文;然而,它能够用来创建一个对称的会话密钥,该密钥再被用于加密长报文。
报文完整性也称为报文鉴别。
假定Bob接收到一个报文(这可能已经加密或可能是明文),并且他认为这个报文是由Alice发送的。
为了鉴别这个报文,Bob需要证实:
散列函数以 m 为输入,并计算得到一个称为散列的固定长度的字符串 H ( m ) H(m) H(m)。
因特网检验和和CRC都满足这个定义。
密码散列函数要求具有下列附加的性质:
目前正使用的第二个主要散列算法是安全散列算法 SHA-1。
SHA-1 生成一个160比特的报文摘要。较长的输出长度可使SHA-1更安全。
如何执行报文完整性:
1)Alice生成报文 m 并计算散列 H(m)。
2)然后Alice将 H(m)附加到报文 m 上,生成一个扩展报文(m, H(m)),并将该扩展报文发给Bob。
3)Bob接收到一个扩展报文(m, h) 并计算H(m)。如果 H(m)=h,Bob得到结论:一切正常。
这种方存在明显缺陷。Trudy能够生成虚假报文 m’,在其中声称她就是Alice,计算H(m’)并发送给Bob (m’, H(m’))。当Bob接收到该报文时,在步骤3中核对通过,并且Bob无法猜出这种不贵的行为。
为了执行报文完整性,除了使用密码散列函数外,将需要共享秘密 s。
这个共享的秘密只不过是一个比特串,它被称为鉴别密钥。
使用这个共享秘密,报文完整性能够执行如下:
1)Alice生成报文m,用s级联m以生成 m+s,并计算散列 H(m+s) 。 H(m+s)被称为报文鉴别码( Message Authentication Code , MAC)。
2)然后Alice将MAC附加到报文m上,生成扩展报文(m, H(m+s) ),并将该扩展报文发送给Bob。
Bob接收到一个扩展报文(m, h),由于知道s,计算出报文鉴别码 H(m+s)。如果 H(m+s) = h, Bob得到结论:一切正常。
MAC的一个优良特点是它不要求一种加密算法。
使用MAC,实体能鉴别它们相互发送的报文,而不必在完整性过程中综合进复杂的加密过程。
MAC目前最为流行的标准是HMAC,它能够与MD5或SHA-1 一道使用。
HMAC实际上通过散列函数运行数据和鉴别密钥两次。
在数字领域,人们通常需要指出一个文件的所有者或创作者,或者表明某人认可一个文件内容。
数字签名就是一种在数字领域实现这些目标的密码技术。
数字签名也应当可以鉴别的、不可伪造的方式进行。即,必须能够证明由某个人在一个文件上的签名确实是由该人签署的(GIA签名必须是可证实的),且只有那个人能够签署那个文件(该签名无法伪造)。
公钥密钥是一种提供数字签名的优秀候选者。
数字签名的一个重要应用是公钥认证,即证实一个公钥属于某个特定的实体。
公钥认证用在许多流行的安全网络协议中,包括 IPsec 和 SSL。
要使公钥密码有用,需要能够证实你具有的公钥实际上就是与你要进行通信的实体(人员、路由器、浏览器等)的公钥。
将公钥与特定实体绑定通常是由认证中心(CA)完成的,CA的职责就是使识别和发行证书合法化。
CA具有下列作用:
端点鉴别就是一个实体经过计算机网络向另一个实体证明其身份的过程,例如一个向某个电子邮件服务器证明其身份。
当经网络进行鉴别时,通信各方不能依靠生物信息比如外表、声波纹等进行身份鉴别。
鉴别应当在报文和数据交换的基础上,作为某鉴别协议的一部分独立完成。
鉴别协议通常在两个通信实体运行其他协议(例如,可靠数据传输协议、路由选择信息交换协议或电子邮件协议)之前运行。
鉴别协议首先建立相互满意的各方的标识;仅当鉴别完成之后,各方才继续下面的工作。
Alice直接发送一个报文给Bob,说她是Alice。
缺陷:Bob无法判断发送报文的人是Alice。
如果Alice有一个总是用于通信的周知网络地址(如一个IP地址),则Bob能够试图通过验证携带鉴别报文的IP数据报的源地址是否与Alice的周知IP地址相匹配来进行鉴别。
进行鉴别的一种经典方法是使用秘密口令。
口令是鉴别者和被鉴别者之间的一个共享秘密。
明显的安全缺陷:如果Trudy窃听了Alice的通信,则可得到Alice的口令。
考虑这样的事实,当你Telnet到另一个机器上并登录时,登录口令未加密就发送到了Telnet服务器。
连接到Telnet客户或服务器LAN的某个人都可能嗅探(读并存储)在局域网上传输的所有数据分组,并因此窃取到该注册口令。
这是一种窃取口令的周知方法。
通过加密口令,我们能够防止 Trudy 得知Alice的口令。
如果假定Alice和Bob共享一个对称秘密密钥 K A − B K_{A-B} KA−B,则Alice可以加密口令,并向Bob发送其识别报文“我是Alice”和加密的口令。
Bob则解密口令,如果口令正确则鉴别了Alice。
因为Alice不仅知道口令,而且知道用于加密口令的共享秘密密钥值,Bob才可以轻松地鉴别Alice的身份。
但使用密码技术并不能解决鉴别问题。
Bob受制于回放攻击;Trudy只需窃听Alice的通信,并记录下该口令的加密版本,并向Bob回访该口令的加密版本,以假装她就是Alice。
不重数是在一个协议的生成期中使用一次的数。
也就是说,一旦某协议使用了一个不重数,就永远不会再使用那个数字了。
协议 ap4.0以如下方式使用一个不重数:
通过使用这个在生存期中只出现一次的值R,然后核对返回的值 K A − B ( R ) K_{A-B}(R) KA−B(R),Bob能够确定两点:Alice是她所声称的那个人(因为她知道加密R所需的秘密密钥),Alice是活跃的(因为她已经加密了Bob刚刚产生的不重数R)。
不重数和对称密钥密码体制的使用形成了 ap4.0 的基础。
上图所示的安全电子邮件系统可能在大多数情况下都能为大对数电子邮件用户提供满意的安全性。
图8-21中的设计要求Alice获得Bob的公钥,也要求Bob获得Alice的公钥。但这些公钥的分发并不是一个小问题。
例如,Trudy可能假冒Bob,发给Alice她自己的公钥,并告诉Alice这个公钥是Bob的公钥,使得Trudy就能接收到Alice发给Bob的报文。
安全地分发公钥的一种常用方法是通过CA验证该公钥。
PGP是电子邮件加密方案的一个范例。
在公共领域中有各种版本的PGP可供使用。
PGP软件的不同版本使用MD5或使用SHA来计算报文摘要;使用CAST、三重DES或IDEA进行对称密钥加密;使用RSA进行公开密钥加密。
安装PGP时,软件为用户产生一个公开密钥对。
该公钥能被张贴到用户的网站上或放置在某台公钥服务器上。
私钥则使用用户口令进行保护。
用户每次访问私钥时都要输入这个口令。
PGP允许用户选择是否对报文进行数字签名、加密报文,或同时进行数字签名和加密。
下图显示了一个秘密PGP报文。
这个报文也出现在MIME首部之后。当然,明文报文不包括在这个秘密电子邮件报文中。
当一个发送方(例如Alice)要确保机密性和完整性时,PGP在下图中所示的报文中包含一个类似于上图中的报文。
PGP也提供了一种公钥认证机制。
PGP公钥由一个可信Web验证。
PGP允许Alice为她所信任的用户鉴别更多密钥提供担保。
安全套接字层(SSL)
SSL版本3的一个稍加修改的版本被称为运输层安全性(TLS),已经由IETF标准化。
SSL得到了所有流行Web浏览器和Web服务器的支持,并基本上被用于所有因特网商业站点(包括Amazon、eBay、Yahoo!、MSN等等)。
SSL通过采用机密性、数据完整性、服务器鉴别和客户鉴别来强化TCP,就可以解决问题。
SSL经常用来为发生在HTTP之上的事务提供安全性。然而,因为SSL使TCP安全了,因此它能被应用于运行在TCP之上的任何应用程序。
SSL提供了一个简单的具有套接字的应用编程接口(API),该接口类似于TCP的API。
当一个应用程序要使用SSL时,它包括了SSL类/库。
将SSL的简化版本称之为“类SSL”。
类SSL(和SSL)具有三个阶段:握手、密钥导出和数据传输。
1. 握手
在握手阶段,Bob需要:1)与Alice创建一条TCP连接;2)验证Alice是真实的Alice;3)发送给Alice一个主密钥,Bob和Alice持用该主密钥生成SSL会话所需的所有对称密钥。
一旦创建了TCP连接,Bob就向Alice发送一个hello报文。Alice则用她的证书进行响应,证书中包含了她的公钥。
2. 密钥导出
Alice和Bob都使用MS生成4个密钥:
Alice和Bob没人都从MS生成4个密钥。
这能够通过直接将该MS分为4个密钥来实现。
在密钥导出结点结束时,Alice和Bob都有了4个密钥。
其中的两个加密密钥将用于加密数据;两个MAc密钥将用于验证数据的完整性。
3. 数据传输
TCP是一种字节流协议,一种自然的方法是用SSL在传输中加密应用数据,然后将加密的数据在传输中传给TCP。
SSL将数据流分割成记录,对每个记录附加一个MAC用于完整性检查,然后加密该“记录+MAC”。
假定每个TCP报文段正好封装了一个记录,Alice将如下处理这些报文段。
SSL序号的使用阻止了Trudy执行诸如重排序或重放报文段等中间人攻击。
4. SSL记录
该记录由类型字段、版本字段、长度字段、数据字段和MAC字段组成。
前三个字段是不加密的。
类型字段指出了该字段是握手报文还是包含应用数据的报文。它也用于关闭SSL连接。
在接收端的SSL使用长度字段以从到达的TCP字节流中提取SSL记录。
版本字段是自解释的。
1. SSL握手
SSL并不强制Alice和Bob使用一种特定的对称密钥算法、一种特定的公钥算法或一种特定的MAC。
SSL允许Alice和Bob在握手阶段在SSL会话开始时就密码算法取得一致。
在握手阶段,Alice和Bob彼此发送不重数,该数被用于会话密钥( E B , M B , E A 和 M A E_B, M_B,E_A 和 M_A EB,MB,EA和MA)的生成中。
真正的SSL握手的步骤如下:
2. 连接关闭
终止SSL会话。
一个方法是让Bob通过直接终止底层的TCP连接来结束该SSL会话,就是说,通过让Bob向Alice发送一个TCP FIN 报文段。
但这种设计为截断攻击创造了条件,Trudy再一次介入一个进行中的SSL会话中,并用TCP FIN 过早地结束了该会话。这会导致Alice可能只接收到一部分的内容。
解决方法是,在类型字段中指出该记录是否是用于终止该SSL会话的。通过包括这样一个字段,如果Alice在收到一个关闭SSL记录之前突然收到了一个TCP FIN,她可能指定正在进行着某些耍花招的事情。
IP安全协议更常被称为 IPsec,它为网络层提供了安全性。
IPsec为任意两个网络层实体(包括主机和路由器)之间的IP数据报提供了安全。
许多机构(公司、政府部门、非营利组织等等)使用IPsec创建了运行在公共因特网之上的虚拟专用网(VPN)。
在网络实体对之间(例如,两台路由器之间,两台主机之间,或者路由器和主机之间)具有网络层机密性,发送实体加密它发送给接收实体的所有数据报的载荷。
这种载荷可以是一个TCP报文段、一个UDP报文段、一个ICMP报文等等。
网络层安全性被认为提供了“地毯覆盖”。
除了机密性,网络层安全协议潜在地能够提供其他安全性服务。
网络层安全协议能够提供数据完整性,使得接收实体能够核对在数据报传输过程中可能出现的任何篡改。
网络层安全服务也能提供防止重放攻击功能,这意味着Bob能够检查任何攻击者可能插入的任何冗余数据报。
IPsec 提供了用于这些安全服务的机制,即机密性、源鉴别、数据完整性和重放攻击防护。
跨越在多个地理区域上的某机构常常希望有自己的IP网络,使它的主机和服务器能够以一种安全和机密的方式彼此发送数据。
为了达到这个目标,该机构能够实际部署一个单独的物理网络,该网络包括路由器、链路和DNS基础设置且与公共因特网完全分离。
这样一种为特定的机构专用的分立网络被称为专用网络。
IPsec 数据报的 载荷包括了一个IPsec首部,该首部被用于IPsec处理;此外,IPsec数据报的载荷是被加密的。
当该IPsec数据报到达销售员的便携机时,便携机的操作系统解密载荷(并提供其他安全服务,如验证数据完整性),并将解密的载荷传递给上次协议(例如,给TCP或UDP)。
IPsec是一个相当复杂的整体,即它被定义为10多个RFC文档。
两个重要的文档是 RFC 4301 和 RFC 6701,前者描述了总体IP安全体系结构,后者提供了一个IPsec协议集的概述。
在 IPsec 协议族中,有两个主要协议:鉴别首部(AH)协议和封装安全性载荷(ESP)协议。
当某源IPsec实体(通常是一台主机或路由器)向一个目的实体(通常也是一台主机或路由器)发送安全数据报时,它可以使用AH协议或ESP协议来做到。
AH协议提供源鉴别和数据完整性服务,但不提供机密性服务。
ESP协议提供了源鉴别、数据完整性和机密性服务。
机密性通常对VPN和其他IPsec应用是至关重要的,所以ESP协议的使用比AH协议要广泛得多。
IPsec 数据报在网络实体对之间发送,例如两台主机之间、两台路由器之间或一台主机和一台路由器之间。
在从源实体向目的实体发送IPsec数据报之前,源和mid实体创建了一个网路层的逻辑连接。这个逻辑连接称为安全关联(SA)。
一个SA是一个单工逻辑连接;即,它是从源到目的地单向的。
如果两个实体要互相发送安全数据报,则需创建两个SA,每个方向一个。
无论何时路由器R1需要构建一个IPsec数据报经过这个SA转发,它访问该状态信息以决定它应当如何鉴别和加密该数据报。
类似地,路由器R2将维护对此SA的相同的状态信息,并将使用该信息鉴别和加密任何从该SA到达的IPsec数据报。
一个IPsec实体在它的安全关联数据库(SAD)中存储其所有SA的状态信息,SAD是实体操作系统内核中的一个数据结构。
IPsec 有两种不同的分组形式,一种用于所谓隧道模式,另一种用于所谓运输模式。
路由器R1使用下列方法将这个“普通 IPv4数据报”转换成一个 IPsec 数据报:
图中的ESP尾部由三个字段组成:填充、填充长度和下一个首部。
使用填充(由无意义的字节组成),使得当其加上初始数据报(连同填充长度字段和下一个首部字段)形成的“报文”是块的整数倍。
填充长度字段指示接收实体插入的填充是多少(并且需要被删除)。
下一个首部字段指示包含在载荷数据字段中数据的类型(例如UDP)。
载荷数据(通常是初始IP数据报)和ESP尾部级联起来并被加密。
附加到这个加密单元前面的是ESP首部,该首部以明文发送,它由两个字段组成:SPI字段和序号字段。
SPI字段指示接收实体该数据报属于哪个SA;接收实体则能够用该SPI索引其SAD以确定适当的鉴别/解密算法和密钥。
序号字段用于防御重放攻击。
发送实体也附加一个鉴别MAC。
当R2接收到 IPsec数据报时,R2看到该数据报的目的IP地址是R2自身。
R2处理该数据报:
第一,针对 enchilada,R2使用SPI以确定该数据报属于哪个SA。
第二,它计算该 enchilada的MAC并且验证该MAC与在ESP MAC字段中的值一致。
第三,它检查序号字段以验证该数据报是新的(并且不是重放的数据报)。
第四,它使用与SA关联的解密算法和密钥解密该加密单元。
第五,它删除填充并抽取初始的普通IP报文。
最后,它朝着其最终目的地将该初始数据报转发进分支机构网络。
除了SAD外,IPsec实体也维护另一个数据结构,它称为安全策略库(SPD)。
该SPD指示哪些类型的数据报(作为源IP地址、目的IP地址和协议类型的函数)将被IPesc处理;并且对这些将被 IPsec处理的数据报应当使用哪个SA。
大型的、地理上分散的部署要求一个自动的机制来生成SA。
IPsec使用因特网密钥交换(IKE)协议来从事这项工作,IKE由RFC 5996 定义。
每个IPsec实体具有一个证书,该证书包括了该实体的公开密钥。
IKE协议让两个实体交换证书,协商鉴别和加密算法,并安全地交换用于在IPsec SA中生成会话密钥的密钥材料。
IKE应用两个阶段来执行这些任务。
图8-28中两台路由器R1和R2场景下的两个阶段。
第一个阶段由R1和R2之间报文对的两次交换组成:
在IKE 的第二个阶段,两侧生成在每个方向的一个SA。在阶段2结束时,对这两个SA的每一侧都建立了加密和鉴别会话密钥。然后这两侧都能使用SA来发送安全的数据报。
在计算机网络中,当通信流量进入/离开网络时要执行安全检查、做记录、丢弃或转发,这些工作都由被称为防火墙、入侵检测系统(IDS)和入侵防止系统(IPS)的运行设备来完成。
防火墙是一个硬件和软件的结合体,它将一个机构的内部网络与整个因特网隔离开,允许一些数据分组通过而阻止另一些分组通过。
防火墙允许网络管理员控制外部和被管理网络内部资源之间的访问,这种控制是通过管理流入和流出这些资源的流量实现的。
防火墙具有3个目标:
防火墙能够分为3类:传统分组过滤器、状态过滤器和应用程序网关。
1. 传统的分组过滤器
一个机构通常都有一个将其内部网络与其ISP(并因此与更大的公共因特网相连)相连的网关路由器。
所有离开和进入内部网络的流量都要经过这个路由器,而这个路由器正是分组过滤出现的地方。
分组过滤器独立地检查每个数据报,然后基于管理员特定的规则决定该数据报应当运行通过还是应当丢弃。
过滤决定通常基于下列因素:
网络管理员基于机构的策略配置防火墙。
一条过滤策略能够基于地址和端口号的结合。
过滤也可根据TCP ACK比特是否设置来进行。
在路由器中使用访问控制列表实现防火墙规则,每个路由器接口有它自己的列表。
2. 状态过滤器
状态过滤器实际地跟踪TCP连接,并使用这种知识作出过滤决定。
状态过滤器通过用一张连接表来跟踪所有进行中的TCP连接来解决这个问题。
这种方法是可能的:因为防火墙能够通过观察三次握手(SYN、SYN ACK 和 ACK)来观察一条新连接的开始;而且当它看到该连接的一个FIN分组时,它能够观察该连接的结束。
3. 应用程序网关
应用程序网关除了看IP/TCP/UDP首部外,还基于应用数据来做策略决定。
一个应用程序网关是一个应用程序特定的服务器,所有应用程序数据(入和出的)都必须通过它。
多个应用程序网关可以在同一主机上运行,但是每一个网关都是有自己的进程的单独服务器。
内部网络通常有多个应用程序网关,例如 Telnet 、HTTP、FTP 和电子邮件网关。
一个机构的邮件服务器和Web高速缓存都是应用程序网关。
应用程序网关也有缺陷。
首先,每一个应用程序都需要一个不同的应用程序网关。第二,因为所有数据都由网关转发,付出的性能负担较重。最后,当用户发起一个请求时,客户软件必须知道如何联系这个网关,并且必须告诉应用程序网关如何连接到哪个外部服务器。
深度分组检查,即查看首部字段以外部分,深入查看分组携带的实际应用数据。
应用程序网关经常做深度分组检查。而一个应用程序网关仅对一种特定的应用程序执行这种检查。
当观察到潜在恶意流量时能产生告警的设置称为入侵检测系统(IDS)。
滤除可疑流量的设备称为入侵防止系统(ISP)。
IDS能够用于检测多种攻击,包括网络映射(例如使用 nmap 进行分析)、端口扫描、TCP栈扫描、DoS带宽洪泛攻击、蠕虫和病毒、操作系统脆弱性攻击和应用程序脆弱性攻击。
一个机构可能在它的机构网络中部署一个或多个IDS传感器。
下图显示了一个具有3个IDS传感器的机构。
当部署了多个传感器时,它们通常共同工作,向一个中心IDS处理器发送有关可疑流量活动的信息,中心处理器收集并综合这些信息,当认为适合时向网络管理员发送告警。
下图中,该机构将其网络划分为两个区域:一个高度安全区域,由分组过滤器和应用程序网关包含,并且由IDS系统监视;一个较低度安全区域(称之为非军事区(DMZ)),该区域仅由分组过滤器包含,但也由IDS系统监视。
IDS系统大致可分类为基于特征的系统或基于异常的系统。
-基于特征的IDS维护了一个范围广泛的攻击特征数据库。
每个特征是与一个入侵活动相关联的规则集。
一个特征可能只是有关单个分组的特性列表,或者可能与一系列分组有关。
这些特征通常由研究了已知攻击、技艺娴熟的网络安全工程师生成。
一个机构的网络管理员能够定制这些特征或者将其加进数据库中。
从运行上讲,基于特征的IDS嗅探每个通过它的分组,将每个嗅探的分组与数据库中的特征进行比较。
基于特征的IDS对不得不记录的新攻击完全缺乏判断力。
另一个缺点是,即使与一个特征匹配,它也可能不是一个攻击的结果,因此产生了一个虚假告警。
最后,因为每个分组必须与范围广泛的特征集合相比较,IDS可能处于处理过载状态并因此难以检测出许多恶意分组。
当基于异常的IDS观察正常运行的流量时,它会生成一个流量概况文件。
然后,它寻找统计上不寻常的分组流,例如,ICMP分组不寻常的百分比,或端口扫描和 ping 掠过导致指数性突然增长。
基于异常的IDS系统最大的特点是它们不依赖现有攻击的以前知识。
在另一方面,区分正常流量和统计异常流量是一个极具挑战性的问题。
Snort
Snort 是一种公共域开发源码的IDS,现有部署达几十万。
它能够运行在 Linux、UNIX和Windows平台上。
它使用了通用的嗅探接口 libpcap, Wireshark 和许多其他分组嗅探器也使用了 libpcap 。
它能够轻松地处理 100Mbps的流量;安装在千兆比特/秒流量速率下工作,需要多个 Snort 传感器。
学习参考资料:
《计算机网络——自顶向下方法》 第7版