网络安全协议的引入

TCP/IP安全缺陷

信息泄露

概述

网络中投递的报文往往包含账号、口令等敏感信息,若这些信息泄露则是灾难性的后果。其中嗅探是一种常见而隐蔽的网络attack手段。

嗅探

概述
  1. 问题:在共享式网络架构下,所有的数据都是以广播方式进行发送,只需要把网卡的工作模式设置为“混杂”,就可以嗅探网段内所有的通信数据。
  2. 解决方案:解决嗅探广播方式带来的问题,可以使用交换式网络架构,将每个端口与该端口所连物理地址进行绑定,并依据帧首部的“目的地址”把数据直接发送到相应的端口。但会带来另一个问题,ARP欺骗。
ARP欺骗
  1. 问题描述:ARP欺骗是attacker在交换式网络环境下实施嗅探的基础。假设网络中有一台主机A,需要嗅探B和C的通信数据。三台注解的IP地址分别为IPA、IPB、IPC,物理地址分别为MACA、MACB、MACC。
  2. 流程描述: 1)A首先向B发送一个ARP应答报文,其中包含映射关系IPA/MACC。 2)B收到这个应答后,更新自己的缓存,保存映射关系IPA/MACC。 3)A向C发送一个ARP应答报文,其中包含映射关系IPA/MACB。 4)C收到这个应到后,更新自己的缓存,保存映射关系IPA/MACB。 5)此时,B和C之间的所有通信数据都将发送给A,在截获重要通信数据后,A可以把数据转发到正确的目的地,而B和C无法察觉到嗅探行为。ARP缓存虽会定期更新,A只要以小于更新时间间隔的频率发送ARP欺骗报文,就可持续嗅探B和C之间的数据。

信息篡改

概述

  1. 信息篡改可基于实施ARP欺骗的网络嗅探,在转发数据之前对数据进行篡改。
  2. 信息篡改的常用attack手段是在截获的数据中插入一段恶意的代码,实现木马植入和病毒传播。

身份伪装

概述

  1. APR欺骗就是从TCP/IP协议栈的网络接口层实现身份伪装,另外还有IP欺骗和域名服务器欺骗等。

行为否认

概述

  1. 行为否认是指数据发送方否认自己已发送数据,或接收方否认自己已收到数据的行为。
  2. 如IP欺骗,发送方用伪造的IP地址发送信息进而隐藏自己的身份。

网络安全需求

机密性

  1. 防止数据的未授权公开,也就是要让消息对无关的听众保密。
  2. 如嗅探破坏了数据机密性。
  3. 密码学可提供机密性保护。

完整性

  1. 防止数据被篡改,确保接收者收到的信息就是发送者发送的消息。
  2. 如恶意代码注入破坏了数据完整性。
  3. 杀毒软件、密码学可提供完整性保护。

可控性

  1. 限制对网络资源(硬件和软件)和数据(存储和通信)的访问,组织未授权使用资源、未授权公开或修改数据。
  2. 其要素依次包括:标识和鉴别、授权、决策以及执行。
  3. 访问控制的基本思路是赋予每个通信实体唯一的标识及相应的访问权限,实施通信时,首先确认实体的身份,之后执行相应的访问控制策略。
  4. 如ARP欺骗、IP欺骗和DNS欺骗破坏了可控性。
  5. 防火墙、密码学提供可控性保护。

不可否认性

  1. 通信实体需对自己的行为负责,做过的事情不能抵赖。即两方面:一是发送者不能否认自己发送数据的行为,二是接收者不能否认自己接收过数据的行为。
  2. 如IP欺骗破坏了不可否认性。
  3. 密码学可提供不可否认性保护。

可用性

  1. 即合法用户在需要使用网络资源时,能够获取正常的服务。
  2. 如DoS attack即为破坏可用性的例子。
  3. 密码学可提供可用性保护。

加密与解密

概述

  1. 加密是保障数据机密性的基本手段,解密是其逆过程。
  2. 加密算法将数据在密钥的作用下转换为密文,该过程可看作增加数据不规则性的过程。在已知密钥的情况下,将密文解密还原为明文。

密码算法

对称密码算法

概述
  1. 通信双方共享同一密钥。
  2. 加密解密都依赖该密钥。
算法

高级加密标准(Advanced Encryption Standard,AES)、三重数据加密标准(Triple DES,3DES)、RC2、RC4、国际数据加密算法(International Data Encrytion Algorithm, IDEA等)

非对称密码算法

概述
  1. 双方各自拥有一对密钥,即公钥和私钥。
  2. 公钥了可以公开,私钥需要保密。
  3. 通信双方将各自的公钥告知双方,在给对方发送数据时,就可用对方的公钥加密以保障数据机密性。对方收到数据后,可用私钥解密。
算法

RSA、数字签名算法(Digital Signature Algorithm, DSA)、ElGamal、椭圆曲线密码(Elliptic Curves Cryptography,ECC)

消息摘要

概述

  1. 一段数据的摘要digest是表征该数据特征的字符串,获取数据摘要的功能通常由散列hash函数完成。散列函数可以接收任意长度的数据,并产生定长的散列值。
  2. 散列函数公式:h=H(M),其中M是任意长度的明文,H是散列函数,h是M在H的作用下得到的散列值。
  3. 散列函数是一种压缩映射过程,散列值的空间远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一确定输入值。
  4. TCP/IP中IP、ICMP、TCP、UDP等协议的报文包含了“校验和”字段,定长2B,即为一种摘要信息。

消息验证码

概述

  1. 消息验证码是基于密钥和消息摘要所获得的一个值,可用于数据源发认证和完整性校验。

流程

  1. 在发送数据前,发送方首先使用通信双方协商好的散列函数计算其摘要值。在双方共享的会话密钥作用下,由摘要只获得消息验证码。
  2. 将消息验证码和数据一起发送。
  3. 接收方收到报文后,首先利用会话密钥还原摘要值,同时利用散列幻术在本地计算所收到数据的摘要只,并将这两个值比对。若两者相等,则报文通过认证。

数字签名

概述

  1. 数字签名通常用于保证不可否认性,具备认证功能。
  2. 数字签名也需要基于消息摘要,但不同于消息验证码的地方是消息验证码使用通信双方共享的会话密钥处理摘要,数字签名使用发送方的私钥加密摘要。接收方在验证数字签名时,须利用发送方的公钥进行解密。

算法

DSA和RSA