章节概述
本章节涉及到全部的网络层,由于每一个网络层都可能会有漏洞被黑客利用。网络安全的目的就是对付各种各样的网络威胁,通常我们使用加密技术来防止漏洞。
可是本章仅仅是网络安全的一个概要。假设你感兴趣的话能够參加还有一门网络安全的课程。
网络安全就像性能。有些人很看中安全,有些人却不一定须要。网络安全最关键的部分是建立威胁模型。描写叙述威胁的原理以及攻击者能利用威胁做什么,这是评估危急程度的主要方法。可是网络安全并不都是将消息进行加密。
网络威胁有盗窃信息、篡改信息、欺骗SNS、破坏网络服务等。
要保证网络安全是一件非常困难的事情,由于我们要保证网络的每一个环节都没有缺陷。网络的安全程度取决于最脆弱的环节,可是软件中往往都会存在BUG。就拿WIFI举例说明吧。早期的wifi通过WEP算法进行加密,这样的算法非常easy破解,黑客仅仅要通过一些破解软件就能读取WiFi的全部信号。
如今,有了WPA2/802.11i。安全性能提升了非常多,由于这样的加密算法是无法在有限时间内破解的。可是即使加密无法破解,还是有非常多其它的途径来破解网络,比方推測WiFipassword,从计算机上获取password,物理盗窃等。
当中推測Wifipassword相对来说还是比較easy的。
password学有着丰富的历史。最初是从希腊開始发展的。password学研究的是怎样加密信息,而password分析学研究的是怎样破解加密信息。
现代password学强调计算量。强调破解一段password须要非常大的计算量,须要计算非常久的时间才干破解。
接下来介绍一下password学的用途。password学能够证明通信对方确实是目标用户而不是黑客。能够确认消息没有被篡改或偷听。
设计安全的加密方法是很困难的,由于一不小心就会出现缺陷导致密文被破解。
好的加密算法须要经得起数学证明。
大部分的网络协议都是在互联网还没普及的时候发明的。
当时的互联网非常小,也不须要考虑安全性。所以眼下非常多网络协议都是有安全问题的。可是现在互联网普及了,非常多安全性须要得到保证。
接下来几节将会讲到威胁模型、消息保密、信息验证、无线安全、Web安全、DNS安全、VPN、防火墙、DDOS。
消息保密
本节主要讲的是通过加密技术来保证信息不被泄漏。加密方法主要分为对称加密和公钥加密。
加密的目标就是要保证信息不被泄漏。由于网络在传输的过程中信息可能会被窃听。
加密解密模型就是发送放将消息进行加密,再通过网络传输,对方接收到之后将消息进行解密。得到明文。这样。消息即使在传输的过程中被黑客窃听,他也无法得到消息的明文。
这样的模式下,须要保证密文是能够解密的。须要如果黑扩知道加密算法,由于安全性并非依赖于加密算法。而是通过密钥来保证安全性。
有两种常见的加密方法,有对称加密和公钥加密。对称加密比較常见的有AES,这样的算法两方都有同样的密钥。
公钥加密比較常见的有RSA,这样的算法须要两方各有一套公钥密钥对。它基于数学上的大数不可分解性。
接下来介绍一下对称加密的通信过程。
首先发送方将消息通过密钥进行加密。再通过网络传输给对方。对方接收到消息后使用同样的密钥将消息进行解密。这样就得到了明文内容。
以下介绍一下公钥加密的通信过程。首先发送方有对方公钥。接收方有自己的私钥。公钥是公开的。即使黑客知道了也不会造成安全隐患。发送方使用公钥将消息进行加密,再通过网络传输到对方。
对方接收到消息后,使用自己的私钥进行解密得到明文内容。因为世界上仅仅有他知道密钥。所以世界上能解密的人也仅仅有他一个。
密钥和公钥怎样通过网络传输呢?实际应用中,我们常常须要和一些从未接触过的主机进行通信。这样的情况下密钥和公钥的传输是一个非常大的问题。
对称加密须要将密钥通过网络传输。这就有可能造成密钥的泄漏。公钥加密系统能够将公钥告诉对方。可是公钥在网络传输的过程中也有可能会被黑客篡改。所以须要引入富有公信力的第三方来保证公钥的安全。这就是证书的概念。
关于证书在兴许的章节中还会具体分析。
以下对照一下对称加密和公钥加密。对称加密的密钥非常难通过网络进行传输,而公钥加密系统能够将公钥通过网络传输而不会造成安全问题。对称加密的计算速度相对来说是比較快的。而公钥加密系统的计算性能是比較慢的。并且仅仅能将非常小的一段数据进行加密。
这两种加密算法各有优缺点,所以假设将这两种加密方法组合在一起。就能得到更强大的加密系统。
组合加密的通信过程是这种。发送方使用公钥加密系统将对称加密的密钥进行加密后传输给对方,对方使用自己的私钥得到对称加密的密钥。
这样,两方就能够通过对称加密进行通信了。
这里对称加密的密钥称之为会话密钥。它仅仅是暂时生成的一段密钥。仅用于短期通信。
消息验证
本节主要介绍消息的验证方法,通过加密信息来确保对方是发送者而不是黑客,确保消息没有被中途篡改。
为什么已经将信息加密了,信息还会被篡改呢?由于黑客能够将密文进行改动,这样接收方解密之后得到的明文是乱码。黑客还能够将密文的顺序颠倒。
假设软件设计不严格就会造成安全问题。
MAC消息验证码是一小段代码,用于验证消息的正确性。过程是。首先发送方在数据的末尾加入MAC信息,经过加密后发送给对方。对方接收数据。解密,再通过MAC验证消息是否正确。
实际应用中经常使用的MAC是HMAC(Hash MAC)算法。
第二种验证消息的方法是通过数字签名。
数字签名类似MAC,仅仅是数字签名使用了类似公钥加密的机制。
实际应用中常见的数字签名有RSA数字签名。
发送方使用私钥将数据进行签名,接收方能够使用公钥验证消息是否准确。
实际应用中。假设将整个消息进行签名,那须要非常大的计算两。
所以为了加速签名的计算过程,实际应用中往往会先计算消息的摘要。再对摘要进行签名。接收方先计算消息的摘要,再对摘要进行验证。
消息摘要是一种安全的哈希函数。这样的函数将输入转换成看起来随机的输出。无法在短时间内找到哈希碰撞,并且输出的哈希代码都是固定长度的。固定长度非常实用。它能简化非常多算法。
另外一个问题是。黑客能够将窃听到的消息又一次发送一遍。接收方能够正常解密数据。并且数字签名也是正确的。
为了防止这个问题。我们须要在消息中增加特殊的消息来保证消息不是反复发送的。一般能够在消息中增加时间戳或者序号。
password学的设计能够保证信息是正确的。能够保证信息确实来自对方,能够保证信息不是被黑客反复发送的,能够保证信息不被窃听。实际应用中的各种协议将各种加密技术混合在一起。每种协议都有不同的混合方法。混合方法不当就会导致缺陷。
无线安全
本节基本的话题是无线网络中的安全问题,主要讨论802.11。
无线网络和有线网络的差别在于,无线网络的通信都是广播的。附近全部的设备都能接收到信号。这就导致了非常多安全问题。黑客能够劫持用户的网络通信,而且能够越过权限訪问网络。就802.11而言,黑客能够通过无线网络接收或者发送数据。
802.11的安全性是基于password的。1999年使用WEP来确保安全性,可是后来发现WEP有严重缺陷。很easy破解。
2004年有了WPA/802.11i。
眼下使用WPA2来保证无线安全。安全性是802.11协议的一部分。它将IP层进行加密。然后通过物理层进行传输。因此。802.11仅仅能保证IP层是安全的,IP层下面的网络层就无法保证安全了。
在家庭无线网络中。通常设置AP的password。每一个设备都须要知道password。每一个设备都须要证明它知道password。设备连接无线时,须要经过验证程序。AP和设备各自依据password生成一段会话密钥。假设设备的会话密钥和AP的会话密钥一直,则说明设备的WiFipassword是正确的。
当通信时。设备和AP在发送数据时都须要对数据进行加密。
以下介绍一下WiFi建立连接的过程。首先是AP向client发送一个随机序号。client依据MAC地址、序号、password生成会话密钥,并将序号和MIC-S发送给AP。AP依据client的MAC地址、序号、password生成KeyS。假设没有错误的话,AP生成的KeyS和client生成的KeyS应该是一样的。AP使用KeyS将对称密钥KeyG进行加密,并将加密结果和MIC-S发送给client。client使用KeyS将确认信息ACK进行加密,并将加密结果和MIC-S发送给AP。
企业的无线网络更加复杂。
它须要一台专门的验证server。每一个client都有不同的身份凭证。
具体的工作原理因为太复杂,这门课程中就不再具体展开了。
Web安全
本节主要讲的是怎样保证Web的安全。主要介绍了SSL、TLS、HTTPS和证书机制。
在Web中。有非常多安全问题值得注意。client可能会遇到恶意的网页内容,钓鱼站点可能会欺骗用户,server和client之间可能会被黑客介入,从而导致数据泄漏。为了解决安全问题,有人发明了HTTPS。它能防止client和服务端之间被黑客介入,能防止假冒的站点。
HTTPS仅仅是HTTP的扩展,它仅仅是让普通的HTTP执行于SSL/TLS之上。而不是TCP之上。SSL最初由Netscape发明。1995年发明了SSL2。可是有缺陷。
1996年。修复了SSL2中的缺陷,成为SSL3。
TLS是一种开放的安全协议,在1999年的时候出现TLS 1.0,2006年1.1。2008年1.2。
SSL/TLS能够用在不论什么应用中,不一定仅仅能使用HTTP。
SSL的作用就是保证client和服务端之间没有不论什么中介,保证消息的传输是私密的、正确的、经过验证的、新奇的。SSL由验证阶段和传输阶段组成。
SSL/TLS的验证过程是重点要介绍的。client必须可以安全地连接到server。并且这个server是从未连接过的,client不知道server的公钥。SSL/TLS的验证过程主要是通过公钥进行验证的,可是client怎样获取server的公钥呢?答案是通过证书来获取。
证书就是将SSL/TLS的公钥和站点的信息绑定在一起。
证书的格式称之为X.509。证书是PKI公钥基础设施的一部分。
公钥基础设施见下图。它是一种分层结构的系统,上级可以验证下级。最高的一级是公钥根,它能验证RA的合法性。RA能验证CA的合法性。CA能验证证书的合法性。
证书在整个系统中是最底层的。浏览器或者操作系统都会内置非常多Root公钥(100多个)。在实际应用中,公钥可能会被篡改,证书也有可能会过期。所以PKI就须要一种机制让过期的证书得到更新。
SSL3的验证步骤例如以下:
- 协商加密算法、发送证书
- client得到证书之后,再联系CA来验证证书的正确性。
验证通过后得到server的公钥
- client使用server的公钥将一段随机数和会话密钥进行加密,加密后发送给server
- server收到密文后,使用私钥进行解密,得到随机数和会话密钥,并将随机数发送给client
- client检查随机数是否正确。
假设正确的话,就表明对方的身份是正确的,能够安全通信
- 随后的通信都使用会话密钥将数据加密后通信
总结一下。SSL/TLS用于安全通信。实际应用中广泛被採用。client通过PKI和证书来验证server的身份。
DNS安全
本节主要介绍怎样通过DNSSEC实现DNS安全。
域名是网络服务的关键。
DNS将域名映射到IP地址。假设映射到错误的IP地址上。就会发生灾难性的安全问题。
DNS安全的目标就是保证DNS是正确的。
DNS在网络传输的过程中可能会被篡改。
DNS欺骗就是黑客取代DNSserver作出应答,然后将错误的解析地址返回给client。有时候client是下游的DNSserver,假设下游的DNSserver被污染,那么非常多计算机都会遭受污染。影响范围非常大。DNS欺骗有非常多难点,黑客怎么知道DNS请求什么时候发送?域名是什么?黑客要如何回应DNS。使得它看起来像真的一样?当真的DNSserver作出回应后会发生什么?以下对这几个问题进行解答。
黑客怎么知道主机什么时候发送DNS请求?请求的域名是什么?事实上黑客能够自己发送DNS请求,然后自己作出应答。这样就能污染server的缓存。让用户受害。
黑客怎样回应DNS请求。使得它看起来像真的一样?DNS回应时会检測来源IP和请求ID。黑客能够将自己的IP改动成正规IP,通过暴力破解DNS请求ID。
client发送DNS请求之后。黑客抢先于真server作出应答。
通过这几个方法,黑客就有非常大的可能性成功。
真server返回DNS应答之后会发生什么?会被忽略掉。由于假冒的DNS应答已经被计算机接受了。所以真server即使返回了正确的应答,也会被忽略掉。
DNSSEC就是DNS安全扩展的简称。
它在DNS中增加了新的记录类型:RRSIG DNSKEY DS。
眼下DNSSEC还在普及中,须要升级世界上全部的client和server。
RRSIG记录中保存了域名记录的数字签名。DNSKEY记录中保存了RRSIG的公钥。DS保存了托付域名的公钥。NSEC/NSEC3记录用于验证拒绝存在的域名。
DNSSEC的实现原理是如何的呢?首先client发送常规的DNS请求。服务端作出了普通的回应。client须要做的就是验证server的回应没有被篡改过。验证的原理和SSL证书类似。也是通过公钥签名算法。也是分层结构的。高层server验证下一级的server是正常的。以此循环。
DNSSEC还有其它一些特性。NSEC/NSEC3记录用来证明某个域名的记录不存在。DNSSEC能够选择将请求和应答绑定在一起防止DNS欺骗。
DNSSEC还在DNS头部中增加了一些标志,用于今后的部署。
总结一下,DNS因为没有安全措施,在现实生活中非常easy实现DNS欺骗。
DNSSEC通过公钥分层结构来验证DNS回应,防止DNS欺骗。
防火墙
防火墙禁用了某些IP,让某些IP仅仅能单向通信。
防火墙让内网的机器可以连接到外网,可是外网的机器不能连接到内网。
在前几章中讲到了中间件的概念。处于和路由器同样的位置,可是比路由器的功能很多其它。防火墙就是中间件的一种。
防火墙分为两个部分内部和外部。当有数据包试图通过防火墙时,防火墙会依据规则来推断是否同意它通过。假设同意。那就不改变数据包的不论什么数据,让数据包通过;假设拒绝。那就默默地丢包。
防火墙最关键的问题在于怎样设置过滤规则。策略配置是一种高级配置,由于和数据包的应用、内容有关。而数据包过滤是一种低级的配置。它只限制了网络可以訪问的范围。防火墙分为有状态和无状态。无状态防火墙是最简单的防火墙。它只会依据IP、port规则来过滤数据包,无法依据数据包的内容进行过滤。
有状态防火墙比无状态防火墙略微好一些。它可以依据数据包的前后关系来过滤数据包。
比方NAT在连接之后才同意外部的TCP数据包通过防火墙。应用层防火墙比有状态防火墙更好一些。
它会依据应用的使用、数据包的内容来过滤数据包。比方有些数据包中含有病毒,这样的防火墙就不会同意它通过。数据包通过这样的防火墙时,为了分析数据包内容,数据包会被防火墙拆解。
传统的防火墙在部署的时候会放在内网和DMZ之间,这样才干非常好地保护内网。
防火墙还有非常多其它的部署方式,比方AP之间也会有防火墙、操作系统也会自带防火墙。
VPN虚拟私有网络
本节的主要话题是使用VPN在互联网的基础上建立局域网。
VPN使用IPSEC来保护消息。
在互联网中最好的位置就是你可以给全部的计算机发送数据。最差的位置就是全部的计算机都可以给你发送数据。
现实生活中常常有一种需求就是将私有网络和互联网隔开,很多公司就有这样的需求。为了建立私有的网络,可以铺设一条专线,可是成本太昂贵了。第二种办法就是在互联网的基础上铺设虚拟的专线,使得私有网络在逻辑上和互联网是隔开的。
VPN最初的目的是希望私有网络和互联网隔离,最大的隐患在于黑客可能窃听数据包,甚至可能改动数据包。
那么怎样在互联网的基础上建立虚拟连接呢?用隧道技术。私有网络中的各个主机能够正常地相互通信,当网络须要通过虚拟连接时。VPN终端会将数据包进行封装,然后通过IP协议将数据包发送到远端,再进行拆封。封装的时候针对的是IP层,先将IP层进行加密,再将加密后数据通过IP层进行传输。
这种话就相当于在IP层之外再包了一层IP层。封装之后的数据包形式例如以下图。
外层IP用于连接VPN隧道的两端。
内层IP用于连接私有网络中的两台主机。可是单独的隧道技术无法保证安全性。由于黑客能够改动数据包、窃听数据包中的内容,所以须要使用IPSEC协议来保证VPN隧道的安全。
IPSEC是IP层的安全协议。它可以保证通信的私密性、正确性。
IPSEC的操作步骤是先配置连接。通信的过程变成类似TCP的通信机制,最后在IP包的头部和尾部分别添加验证信息。
下图展示了一个典型的IPSEC数据包。
尾部的Authentication其本质是ESP尾。
总结一下,VPN能够在互联网上建立一个私有网络。在私有网络中通信时,须要将数据包进行封装。VPN在传输的过程中须要IPSEC来保证通信安全。
DDOS分布式拒绝服务攻击
本节主要话题是分布式拒绝服务攻击。这样的攻击的目的是让网络服务不可用,到眼下为止还没有找到高效的对付方法。
网络中最好的位置是你可以向全部的计算机发送数据,最差的位置是全部的计算机都能向你发送数据。
当有非常多数据包涌向server时,server就有可能无法正常提供服务。这就是DOS攻击的一种形式之中的一个。
黑客将大量的数据涌向server。超出了server可以处理的能力范围。
现阶段,DDOS攻击是互联网上一个比較验证的问题。AKAMAI 2012Q3报告指出。美国银行的DDOS攻击流量峰值达到65Gbps。每秒65G的流量!这么大的流量是不论什么设备都无法处理。
所以眼下DDOS没有一种完美的解决的方法,仅仅能通过CDN、网络数据包过滤来起到一点帮助。
DOS攻击的目的就是让目标系统无法给正经常使用户提供服务。
通常情况下,黑客占用了全部的系统资源,让正常的用户无法得到服务。在网络中。系统通常指的是server,资源指的是网络带宽、CPU、内存等。
有时候黑客仅仅须要一台机器就能完毕DOS攻击。他能够发送少量奇怪的数据包就能让主机消耗全部资源。比方死亡之Ping、SYN洪水攻击等。为了防止SYN洪水攻击,有人发明了SYN Cookie。
有时候黑客须要通过很多机器来发动攻击。这样的攻击方式称之为DDOS。目的是让网络线路达到饱和状态。造成网络高度堵塞、大量丢包。使得正经常使用户无法訪问server。
通常,黑客会通过僵尸网络发动DDOS攻击。
攻击进行时,攻击目标附近的网络会达到饱和状态。使得正经常使用户无法訪问服务。
身份伪造也是另外一个安全问题。黑客能够改动自己的IP地址。将伪造的IP地址放在数据包的来源地址字段。传统的互联网不会检查来源地址,而是将数据包传递给对方。这样的方式称之为IP地址欺骗。
通过这样的方式能够隐藏黑客的地理位置。黑客还能够通过这样的方式来冒充他人的身份。这样会造成非常大的安全隐患。
解决IP地址欺骗最好的办法就是在数据包通过路由器的时候验证IP地址的正确性。这是一种非常好的解决的方法,可是眼下普及的速度依旧非常缓慢。
防御DOS攻击有多种方法。能够添加server周围的网络带宽,防止丢包发生,能够使用CDN来保持高度的网络容量。能够过滤攻击流量。越早过滤防御效果越好。眼下ISP会统计数据流量,将可疑的攻击流量进行过滤。