网络安全基础

本文共--字 阅读约--分钟 | 浏览: -- Last Updated: 2021-04-18

一、网络安全概述

基本概念

网络安全通信所需要的基本属性:

1、机密性;
2、消息完整性;
3、可访问与可用性;
4、身份认证;

网络安全的基本特征,其中包括相对性、时效性、相关性、不确定性、复杂性以及重要性等。相对性指的是网络永远只有相对的安全,没有绝对的安全,要时刻注意网络安全防护。时效性能够反映出网络的不确定性和复杂性,新的漏洞和攻击方法层出不穷,攻击时间、攻击目标、攻击地点都不确定,需要做到随时随地的保护;

网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连续可靠正常运行,网络服务不中断;

网络安全威胁

1、窃听:指的是在报文传输过程中窃听信息,获取报文信息。

2、插入:指的是攻击者主动在连接中插入信息。

3、假冒:指的是可以伪造分组中的源地址或者其他任意字段。

4、劫持:指的是通过移除/取代发送方或者接受方“接管”连接。

5、拒绝服务DoS和分布式拒绝服务DDoS:拒绝服务是指阻止服务器为其他用户提供服务,例如,通过向接受方恶意泛洪分组,淹没接收方,导致带宽耗尽,资源耗尽等过载资源情况;分布式拒绝服务DDoS是指利用多个源主机协同淹没接收方,DDoS攻击过程如下:首先选择目标,然后入侵网络中主机,构造僵尸网络,然后再控制僵尸主机向目标发送分组;

6、映射:攻击原理是在发起攻击前先“探路”,找出网络上在运行什么服务,然后利用ping命令确定网络上的主机的地址,最后使用端口扫描的方法依次尝试与每个端口建立TCP连接

7、嗅探:通常发生在共享式以太网或者无线网络中,“嗅探”主机通过混杂模式网络接口卡,可以接收或记录所有广播介质上的分组/帧,可以读到所有未加密数据。

8、IP欺骗:它可以直接由应用生成“原始”IP分组,设置分组的源IP地址字段为任意值,接收方无法判断源地址是否被欺骗,可能导致错误数据的接收,或者隐藏网络安全攻击身份;

二、数据加密

传统加密方式

1、替代密码:用密文字母代替明文字母,例如移位密码;

2、换位密码:根据一定的规则重新排列明文,按照字母长度分为n列,再按照字母顺序进行置换;

对称秘钥加密

对称密钥密码:加密秘钥和解密秘钥相同。
非对称密钥密码:加密密钥和解密密钥不同。

对称密钥加密系统可以分为分组密码和流密码

流密码有成序列密码,是通过伪随机数发生器产生性能优良的伪随机序列(密钥流),用该密钥流加密明文消息流,得到密文消息序列;

分组密码,将明文消息分成若干固定长度的消息组,每组消息进行单独加密/解密,常用的有DES、AES、IDEA等

DES:56位密钥,分组64位;

3DES:使用两个密钥(共112位),执行三次DES算法

AES:密钥128位/192位/256位,分组128位。

IDEA:密钥128位,分组64位;

非对称/公开密钥加密

密钥成对使用,其中一个用于加密,另一个用于解密,且加密密钥可以公开,也称公开密钥加密。

典型的公钥算法有Diffie-Hellman算法、RSA算法;

三、消息完整性与数字签名

消息完整性检测方法

为了实现消息完整性检测需要用到密码散列函数;

什么是密码散列函数?

  • 定长输出,不管是多少位的消息通过散列函数的计算都有一个固定长度的输出;
  • 单向性,无法根据散列只逆推报文;
  • 对于任意报文不能预知其散列值;
  • 不同报文不能产生相同的散列值

典型散列函数有MD5(输出定长:128位散列值),SHA-1(输出定长:160位散列值);

报文认证

消息完整性检测的一个重要目的就是要完成报文认证的任务;

报文认证是使消息的接收者能够检验收到的消息是否是真实的认证方法,是否来源真实、未被篡改;有两种方法,报文摘要和报文认证方法;

报文摘要

报文摘要也称数字指纹,就是应用上面说到的散列函数生成一个固定长度的散列码。称为报文摘要;

报文认证

报文认证方法有两种,一种是简单报文验证,另一种是报文认证码;

简单报文认证:发送方通过散列函数将报文m生成一个散列码h,然后发送(m, h)给接收方,接收方收到消息后,对m进行散列函数计算,看得到的值是否等于h,缺点是散列函数是公开的,攻击者可以通过截取报文计算出报文摘要,然后修改再送发送给接收方,这样接收方也能完成报文认证,就存在无法验证来源是否真实的问题;

报文认证码:发送方和接收方共享一个密钥s,发送方将报文m和认证密钥s进行拼接,在进行散列函数计算,得出h=H(m+s),然后发送(m, h)给接收方,接收方接收到消息后,将报文m拼接认证密钥s之后进行散列函数计算再与h进行对比,同样的也存在缺陷,无法防止接收方篡改,因为接收方可以使用同样的步骤生成一个报文说是发送方发的,发送方就百口莫辩了;

数字签名

特点是:身份认证、数据完整性、不可否认性;

数字签名与消息认证的区别:消息认证使接收方能验证发送方以及所发消息内容是否被篡改过,但是只能防止第三者的破坏,当收发双方有利益冲突时,就无法解决他们之间的纷争,此时就需要借助数字签名技术。

数字签名应该满足以下要求:
1、接收方能够确认或证实发送方的签名,但不能伪造。
2、发送方发出签名的消息给接收方之后,就不能再否认他所签发的消息。
3、接收方对已收到的签名消息不能否认,即有收报认证。
4、第三者可以确认收发双方之间的消息传递,但不能伪造这一过程。

数字签名就是用私钥进行加密,而认证就是利用公钥进行正确的解密;

简单数字签名就是直接对报文签名,还有一种就是签名报文摘要;

简单数字签名的场景:发送方拥有公钥Kp和私钥Ks,在发送报文m时使用私钥Ks进行数字签名得到h=Ks(m),然后发送(m, h)给接收方,接收方接收之后,使用发送者的公钥Kp进行数字签名Kp(h)的解密得到的值与m进行比较是否一致,一致则能确认消息是发送方发来的,这样发送方不能不承认发送过消息,接收方也不能篡改消息。

简单数字签名因为是签名整个报文,所以不常用,而签名报文摘要就是,发送方在发送报文m时,先使用散列函数计算得到一个定长的散列值H(m),然后对这个散列值进行数字签名得到h=Ks(H(m)),再将(m, h)发送出去,接收方接收到之后,使用散列函数计算m,得到H(m),然后使用公钥Kp解密h也得到一个H(m),然后进行比较;

四、身份认证

身份认证又称身份鉴别,是一个实体经过计算机网络向另一个实体证明其身份的过程;

一般有:

加密口令:可能遭受回放(重放)攻击,加密口令是指在报文的基础上添加一条秘密口令,在发送给接收方来进行身份认证,但是攻击者可以窃听发送方的通信,并记录下加密口令(可能并不知道口令内容),并向接收方回放该加密口令,冒充发送者;

加密一次性随机数:可能遭受中间人攻击,加密一次性随机数是指,发送者在发送报文前,先与接收方进行一个“打招呼”的通信,接收方在收到这个通信之后,返回一个随机数R给发送者,发送者拿到随机数之后使用自己的私钥Ks对随机数R进行加密,得到Ks(R)发送给接收方,接收方在收到Ks(R)之后,再通知发送方提供发送方的公钥,然后发送方将公钥Kp发送给接收方,接收方收到公钥后进行解密Kp(Ks(R)),得出的值是否等于自己发送出去的随机数R,来确认身份;

中间人攻击是指攻击者截获到发送者和接收方的通信,将 使用自己的私钥加密后的随机数 和 自己的公钥 发送给接收方冒认是发送者,同时向发送者冒认是接受者;

因为攻击者将自己的公钥发送给接收方,声称是发送者的公钥,冒认发送者的身份, 而接收方无法验证公钥的真实性,于是中间人的攻击就成功了,所以解决这一问题的关键就是要解决“这到底是谁的公钥”这一问题;

五、密钥分发中心和证书认证机构

密钥分发中心

通信各方建立一个大家都信赖的密钥分发中心(KDC, key Distribution),并且每一方和KDC之间都保持一个长期的共享密钥(用于KDC对通信方进行验证以及双方之间的验证),通信双方借助KDC创建一个临时的会话密钥(Session Key)用于之后的通信;

有两种方式,第一种是通信发起方生成密钥,由KDC进行分发,第二种是有KDC生成一个密钥分发给通信双方;

第一种的过程是:发送者A随机选择一个会话密钥Ks,使用其与KDC之间长期共享的密钥Ka进行加密,加密之后得到h=Ka(Ks),然后将发送消息(h, 接受者B)给KDC,KDC在接收到消息之后,使用共享的Ka进行解密,然后得到Ks,在使用与接收者B共享的密钥Kb进行加密得到h1=Kb(ks),然后发送消息(h1, 发送者A)给接收者B,接受者B收到后,使用Kb进行解密,得到Ks,进行A的身份确认;

第二种的过程就是,发送者A将 请求与B通信的消息 发送给KDC,KDC自己生成一个会话密钥Ks,并分别使用Ka、Kb进行加密然后分别发送刚给A和B,以让双方完成身份确认;

证书认证机构

认证中心(CA, Certification Authority):将公钥和特定的实体绑定起来;

步骤:

1、证实一个实体的真实身份,这就要求CA能够执行严格的身份验证;

2、为实体颁发数字证书(实体身份和公钥绑定),一旦CA验证了某个实体的身份,CA会生成一个把其 身份 和 实体的公钥 绑定起来的证书(Certificate),其中包含该实体的 公钥 和 其全局唯一身份识别信息,并由CA对其进行数字签名(数字签名就是私钥加签,公钥解签的过程 )

3、当A确认某一个公钥是否真正对应B的时候,首先获取B由CA进行过数字签名的公钥证书,再使用CA提供出来的公钥进行解密,从而获得B的真正公钥;

六、防火墙与入侵检测系统

防火墙基本概念

防火墙:能够隔离组织内部网络与公共互联网,允许某些分组通过,而阻止其他分组进入或离开内部网络的软件、硬件或者软件硬件结合的一种设施;

前提是:从外部到内部和从内部到外部的所有流量都经过防火墙,并且仅被授权的流量允许通过,防火墙能够限制对授权流量的访问;

防火墙分类

1、无状态分组过滤器

典型的部署在内部网络和网络边缘路由器上的防火墙,一个机构通常都会有至少一个将其内部网络与外部Internet相连的网关路由器,而分组过滤就是网关路由器的重要功能之一,它会基于特定的规则对分组是通过还是丢弃进行决策,在路由器中通常使用访问控制列表(ACL, Access Control Lists)实现防火墙规则。

通常规则参数有:

  • IP数据报的源IP地址和目的IP地址
  • TCP/UDP报文段的源端口和目的端口
  • ICMP报文类型
  • TCP报文段的SYN和ACK字段,比如设置阻止进入的ACK=0的TCP报文段,意味着阻止外部客户与内部主机主动进行TCP连接,但是允许内部客户与外部主机进行主动连接;

2、有状态分组过滤器

跟踪每个TCP连接建立、拆除,根据状态确定是否允许分组通过;

3、应用网关

鉴别用户身份或针对授权用户开放特定服务;

入侵检测系统IDS

入侵检测系统(IDS, Intrusion Detection System)是当观察到潜在的恶意流量时,能够产生警告的设备或系统,IDS不仅仅对TCP/IP首部进行操作,而且会进行深度包检测,并检测多数据之间的相关性。IDS能够检测多招攻击,例如,网络映射、端口扫描、TCP栈扫描、DoS拒绝服务攻击等;

一个机构可能在它的机构网络中部署一个或者多个IDS传感器,使用IDS不仅进行深度分组检查,同时还要将每个过往的分组与大量特征进行比较,这可能会导致极大的数据处理量;

七、网络安全协议

安全电子邮件

电子邮件安全需求:机密性、完整性、身份认证性、抗抵赖性;

安全电子邮件标准,PGP标准(Pretty Good Privacy),PGP可以免费运行在各种操作系统平台之上,可用于普通文件加密以及军事目的,所使用的算法有RSA(公钥加密算法)、3DES(对称加密算法)、SHA-1(散列算法)。

PGP能够提供诸如邮件加密、报文完整性等安全服务,满足电子邮件对网络安全的需求,会对邮件内容进行数字签名,保证信件内容不被篡改,同时会使用公钥和对称密钥加密,保证邮件内容机密且不可否认,公钥的权威性由收方双方所信任的第三方签名认证,并且事先不需要任何保密信道来传递对称的会话密钥;

PGP在发送阶段的过程:

发送方A先将报文m使用SHA-1散列函数进行散列,得到H(m),在使用发送方A的私钥Ka对H(m)使用RSA进行数字签名,得到h=Ka(H(m)),然后将消息(m, h)进行压缩,压缩之后使用对称密钥Ks进行3DES加密,并加对称密钥Ks使用接收者B的公钥Kb进行RSA签名,得到e=Ks(m, h) + Kb(Ks),然后将e进行base64编码,把非7位的ASCII码内容编码为7位的ASCII码,以便利用SMTP进行传输;

PGP的解密阶段:

将得到的消息使用base64解码,得到e=Ks(m, h) + Kb(Ks),然后使用自己的公钥Kb进行解密得到Ks,再使用Ks进行3DES解密得到压缩之后的(m,h),然后解压缩得到最初的m, h,然后 使用发送者A的公钥Kap对h进行解密得到的H(m) 与 使用散列算法计算m得到的H(m) 进行对比,确认是否一样;

安全套接字SSL(Secure Socket Layer)

SSL简介

SSL安全套接字层是介于应用层和传输层之间的安全协议,可以提供机密性、完整性、身份认证等安全服务,它提供了安全套接字接口,数据处理后再交付给TCP传输;目前,所有基于TCP的网络都可以应用SSL,有较好的通用性。

它可以提供类似PGP的安全功能,但是SSL需要发送字节流以及交互数据,而邮件主要是单向传输;

另外SSL需要一组密钥用于链接,并且需要在握手阶段进行证书交换并作为协议的一部分;

一个简化的SSL主要包含4个部分

  • 发送方和接收方利用各自的证书、私钥认证、鉴别彼此,并交换共享密钥;

  • 密钥派生和密钥导出,发送方和接收方利用共享密钥派生出一组密钥。

  • 数据传输,将传输数据分割成一系列记录,加密后传输。

  • 连接关闭,通过发送特殊消息,安全关闭连接,不能留有漏洞被攻击方利用

SSL协议栈

SSL协议不是单独的协议,而是两层协议,分别为靠近传输层的SSL记录协议 以及 靠近应用层的SSL握手协议、SSL更改密码协议、SSL警告协议,常用的加密算法有:公开密钥加密算法主要使用RSA、对称密钥加密算法主要使用DES和3DES、MAC算法主要使用MD5和SHA-1;(对称密钥就是解密加密使用同一个密钥)

SSL更改密码协议:用于通信过程,通信双方修改密码组,标志着加密策略的改变,运行在SSL记录协议之上,最后的报文会封装到SSL记录协议报文之中;

SSL警告协议:也位于SSL记录协议之上,用于在握手过程或者数据加密等出错或者发生异常时,为对等实体传递SSL警告或者终止当前连接,协议包括两个字节:警告级别和警告代码

SSL握手协议主要是协商密码组和建立密钥,在协商确认后,才能进行派生密钥的到处等操作,协商结构是SSL记录协议的基础,握手协议也会进行服务器以及客户认证与鉴别

SSL记录协议描述了SSL信息交换过程中的消息格式,前面3个协议都需要纪律协议进行封装和传输,SSL将数据进行分块压缩,在进行加密,然后加入SSL的记录头(Recorder Header)构成记录,放入TCP报文中进行传输,SSL的记录头部由3个字段组成:1字节的内容类型ContentType,2字节的SSL版本号,3字节的数据长度。

SSL在密钥派生阶段,通过密钥派生函数(KDF, Key Derivation Function)实现密钥派生,提取主密钥和一些额外随机数生成密钥,在派生过程中,会派生出4个密钥,客户端MAC密钥、服务端MAC密钥、客户加密密钥、服务器加密密钥,

SSL为了进行完整性认证将字节流分割为一系列的记录,每一个记录都携带一个MAC报文认证码,SSL会在MAC中增加序列号以及使用一次性随机数nonce,在SSL记录前增加序列号,使用MAC密钥进行散列得到MAC,但在SSL记录中没有序列号字段,系列号信息由接收方和发送方按着一定的规律自己生成。

为了防止截断攻击,即攻击者伪造TCP的断连过程,使得通信的一方或者双方认为对方没有数据发送,连接被恶意断开,SSL会使用一个类型的记录专门用于断连,例如type=0的记录用于发送数据,type=1的记录用于断连,只有接收到type=1,SSL才进行断连;

SSL握手过程

1、客户发送其支持的算法列表,以及客户一次随机数nonce,服务器从算法列表中选择算法,并发给客户自己选的算法、公钥证书和服务器端一次随机数nonce

2、客户验证证书,提取服务器公钥;自己生成预主密钥(per_master_secret),并利用服务器的公钥加密预主密钥,发送给服务器;

3、客户与服务器基于预主密钥和一次随机数分别独立计算加密密钥和MAC密钥,包括前面提到的4个密钥

4、客户发送一个针对所有握手消息的MAC,并将此MAC发送给服务器;

5、服务器发送一个针对所有握手消息的MAC,并将此MAC发送给客户

最后两步是为了保护握手过程免遭篡改,因为在密钥分发和派生之前,所有的握手过程都是明文,明文传输中可能会被中间人攻击截获,为后期的攻击埋下伏笔,而针对所有消息的MAC能够预防这类攻击事件的发送;

客户端和服务器各自都选择了一个一次性随机数,是为了确保在一定时间内加密密钥的不同,避免被重放攻击;

SSL密钥派生时,客户端的一次性随机数、服务端的一次性随机数、预主密钥作为随机数发生器的输入,产生主密钥MS,主密钥MS和新一次的随机数输入到另一个随机数发生器,就会按照密钥派生函数,生成密钥块,之后的4个基本密钥由密钥块进行切片后得到,同时密钥块切分后也会得到客户端初始向量和服务端初始向量,用于各自的MAC生成;

虚拟专用网VPN和IP安全协议IPSec

虚拟专用网VPN

VPN(Virtual Private Networks)建立在公共网络上的安全通道,实现远程用户、分支机构、业务伙伴等与机构总部网络的安全连接,从而构建针对特定组织机构的专用网络

关键技术有隧道技术、身份认证、密钥管理、访问控制和网络管理;

相对核心的就是隧道技术,隧道即通过Internet提供的点对点的数据传输安全通道,实际是逻辑连接。通过数据加密保证安全,数据分组进入隧道时由VPN封装成IP数据报,通过隧道在Internet上传输,离开隧道后,进行解封装,数据便不受VPN保护;

隧道协议包括三种:

  • 乘客协议:确定封装的对象属于哪个协议
  • 封装协议:确定遵循哪一种协议进行封装,需要加什么字段等
  • 承载协议:确定最后的对象会放入哪类公共网络,如Internet网络;

常见的隧道协议有两层,首先是第二层链路层协议,如PPTP、L2TP,主要用于远程客户机访问局域网方案;其次是第三层网络层协议,如IPSec,主要用于网关到网关,或者网关到主机的方案;

IPSec

IPSec是网络层使用最广泛的安全协议,不是一个单一的协议,而是一个安全体系,主要包括封装安全载荷协议ESP(Encapsulation Security Protocol)、认证头协议AH(Authentication Header)、安全关联SA(Security Association)、密钥交换与管理IKE(Internet Key Exchange)

IPSec提供安全服务包括机密性、数据完整性、源认证和防重放攻击等;

体系结构:包括封装安全载荷协议ESP、认证头协议AH两种协议

IPSec有两种典型的运行模式:

传输模式:AH传输模式、ESP传输模式 隧道模式:AH隧道模式、ESP隧道模式

所以会有四种方式来实现;

作为IPSec的通信实体,可以主机或者路由器,在发送数据之前,需要在发送实体和接收实体之间进行安全关联SA,SA是单工的,双工的需要两个SA,发送实体和接收实体都需要维护SA的状态信息,因此传统的IP是无连接的,但是IPSec是面向连接的。

在SA建立时需要维护很多参数,主要有:

1、安全参数索引(Security Parameter Index, SPI),是32位SA的唯一标识
2、序列号,用于抗重放攻击
3、抗重放窗口,接收方利用滑动窗口检测恶意主机重放数据报
4、生存周期,每个SA都有使用周期
5、运行模式:传输模式和隧道模式
6、IPSec隧道源和目的地址,只有隧道模式下才有这两个参数

结点在创建SA时,首先需要存储32位SA标识的ID、安全参数索引SPI、在隧道模式下还需要记录隧道源和目的地址,此外需要维护各种加密参数信息,如加密类型、加密密钥、完整性检验类型、认证/鉴别密钥等;

主要简历IPSec通信就需要建立SA,随着双方IPSec数量的不同,SA信息需要存储的信息就会很多,一般来说,IPSec端点会将SA状态保存在安全关联数据库SAD(Security Association Database)中,在处理IPSec数据报时,会定位这些信息。

当发送方发送IPSec时,会访问SAD,确定如何处理数据报,当接收到IPSec数据报时,会检验数据报中的SPI参数,在利用SPI检索SAD,对数据宝进行处理。

并不是所有数据都需要经过IPSec,安全策略数据库SPD(Security Policy Database),定义了针对数据流实施怎样的安全处理,主要分为3类:应用IPSec、普通IP数据报绕过IPSec、丢弃违背安全策略的数据报。安全策略组成了SPD,每个记录就是一条SP,在接收到新的数据报后,端点会提取关键信息填充到一个称为“选择符”的结构中,其中包括源和目的IP地址、传输层协议、源和目的端口号等,利用“选择符”区域搜索SPD,检索匹配SP,如果匹配不成功则按照默认方式处理,如果匹配成功就会进行安全处理,安全处理需要的参数则存储在SP指向的SA结构中。

IPSec密钥交换IKE:IPSec进行自动协商建立安全关联和交换密钥的方式就是互联网密钥交换协议IKE;

IKE自动管理SA的建立、协商、修改和删除,是IPSec唯一的密钥管理协议,IKE包括3个主要部分:

  • 互联网安全关联与密钥管理协议ISAKMP(Internet Security Association and Key Management Protocol),定义了协商、建立、修改和删除SA过程的通用框架
  • 密钥交换协议OAKELY,允许认证过的双方通过不安全网络交换密钥草书
  • 共享和密钥更新技术SKEME,提供了IKE交换密钥的算法。

IKE是IPSec运行必不可少的基础,IKE为IPSec提供了密钥交换管理、身份认证以及SA的协商与管理,IKE在支持通信实体认证的过程中,有两种方式可供选择:预共享密钥PSK和公钥基础设施PKI;

PSK是基于共享的密钥,运行IKE彼此认证,并建立一个IPSec SAs(每个方向一个),包括数据加密和数据认证的密钥。

PKI基于公开/私有密钥对、公钥证书,运行IKE认证彼此,建立IPSec SAs,类似于SSL的握手过程。

IKE进行密钥交换和SA协商建立是个比较复杂的过程,首相,建立双向IKE SA,也称为ISAKMP安全关联,保证双方进一步的IKE通信的机密性、数据完整性以及提供数据源认证服务,后期的IPSec SA建立就可以通过这个通道建立,

IKE提供两种模式:野蛮模式或称积极主动模式,只需要交换3个消息,使用较少消息; 主模式,需要6个消息的交互,更加灵活,并且提供身份保护,注意,这里的IKE SA不同于IPSec,之后基于ISAKMP协议,进行IPSec协商。