0%

计算机网络网络安全协议

安全电子邮件

安全威胁

使用电子邮件可能的安全威胁:

  • 垃圾邮件
    • 增加网络负荷,占用服务器空间
  • 诈骗邮件
    • 能迅速让大量受害者上当
  • 邮件炸弹
    • 短时间内向同一个邮箱发送大量电子邮件,占用了用户邮件空间,让用户无法接收正常的邮件
  • 通过电子邮件/附件传播网络蠕虫/病毒
  • 电子邮件欺骗、钓鱼式攻击

安全需求

电子邮件的安全需求:

  • 机密性
    • 只有真正的接收方才能阅读邮件
  • 完整性
    • 电子邮件在传输过程中不被修改
  • 身份认证性
    • 电子邮件的发送者不被假冒
  • 抗抵赖性
    • 发信人无法否认发过电子邮件

安全电子邮件基本原理

电子邮件的特性

  • 邮件具有单向性非实时性
    • 不能通过建立隧道来保证安全,只能对邮件本身加密

机密性

Alice 期望向 Bob 发送机密邮件 m,可以怎么做呢,用 Bob 的
公开密钥加密,这是一种解决方案,但是公钥加密计算过程复杂太慢了,
可以使用对称密钥和公钥结合的方式。

Alice :

  • 生成随机对称密钥
  • 利用生成的密钥加密报文(为了效率)
  • 同时利用 Bob 的公钥加密对称密钥
  • 将加密后的消息和加密后的对称密钥发送给 Bob

Bob:

  • 利用私有密钥解密对称密钥
  • 利用解密后的对称密钥解密消息邮件

认证、完整性

Alice 期望提供发送者认证与报文完整性认证。

  • Alice 对报文进行数字签名(Alice 私钥签名报文摘要)
  • 发送报文(明文)和数字签名

电子邮件标准

PEM Privacy Enhanced Mail 标准

  • IETF 与 IRTF 研究增强 E-Mail 的保密以及 PEM 的标准化
  • 1993年初,提出四份 RFC 作为建议标准
  • PEM 的运行依赖 PKI 公钥基础设施,如 CA
    • 美国对加密软件的出口限制,没有被广泛配置
  • PEM 提供 4 种安全服务
    • 邮件加密
    • 报文完整性认证
    • 发送方的认证
    • 防发送方否认

PGP Pretty Good Privacy 标准

完美邮件保密系统。

  • Philip Zimmermann 于 1991 年发布 PGP 1.0
    • 事实上的标准,免费软件
  • 可在各种平台免费运行
  • 还可用于普通文件加密及军事目的
  • 所用算法被证实为非常安全
    • 公钥加密算法:RSA、DSS 或 Diffie-Hellman
    • 对称加密算法:CAST、3DES 或 IDEA
    • 散列算法:MD5 或 SHA-1
特点
  • 对邮件内容进行数字签名,保证信件内容不被篡改
  • 使用公钥和对称加密保证邮件内容机密且不可否认
  • 公钥的权威性由收发双方或所信任的第三方签名认证
  • 事先不需要任何保密信道来传递对称的会话密钥
功能框架

Alice 期望 PGP 提供保密、发送者认证与报文完整性。

PGP

PGP 密钥
  • 安装 PGP 时,软件为用户生成一个公开密钥对
    • 公钥放置用户网站或某公钥服务器上
    • 私钥则使用用户口令进行保护
      • 用户为随机生成的 RSA 私钥指定一个口令,只有给出口令才能将私钥释放出来使用
  • PGP 公钥认证机制与传统 CA 差异较大
    • PGP 公钥可以通过可信的 Web 认证
    • 用户可以自己认证任何其信任的公钥/用户名
    • 用户还可以为其他公钥认证提供担保
  • 防止篡改公钥的方法(Alice)
    • 直接从 Bob 手中得到其公钥
    • 通过电话认证密钥
    • 从双方信任的 David 那里获得 Bob 的公钥
    • 通过 CA

S/MIME

Secure/Multipurpose Internet Mail Extensions 标准

  • 提供数据保密、完整性和认证等安全服务
  • 不仅限于邮件使用,可用于任何支持 MIME 数据的传输机制,如 HTTP
  • 增加了新的 MIME 数据类型
    • 应用/pkcs7-MIME application/pkcs7-MIME
    • 复合/已签名 multipart/signed
  • 只保护邮件的邮件主体,对头部信息则不进行加密
  • 认证机制依赖于层次结构的 CA Tree of Trust 信任树
  • 证书格式采用 X.509 规范

Web 安全

Web 安全威胁

  • 攻击与破坏事件层出不穷,需要安全 Web 服务
    • Web 应用广泛、服务器底层软件复杂,可能隐藏安全漏洞
  • Web 安全威胁的分类
    • 主动攻击:篡改 C/S 之间信息或篡改 Web 站点信息 (难防易检)
    • 被动攻击:监听数据流获得信息或进行信息量分析(难检易防)
  • 机密性
    • 网络监听、窃取数据
  • 完整性
    • 修改用户数据、修改传输的信息
  • 拒绝服务
    • 伪造请求淹没服务器
  • 身份认证
    • 冒充合法用户、伪造数据

Web 服务器的安全威胁

  • Web 服务器越强大,包含安全漏洞概率就越高
  • HTTP 服务可在不同权限下运行

Web 浏览器的安全威胁

  • 动态 Web 页面可能隐藏恶意程序

通信信道的安全威胁

  • 监听程序会威胁通信信道中所传输信息的机密性
  • 伪造、篡改、重放会威胁所传输信息的完整性
  • 缺乏身份认证使得冒充他人身份进行中间人攻击
  • 缺乏数字签名机制使得通信双方能相互攻击
  • 拒绝服务攻击使得通信信道不能保证可用性

基于应用层实现 Web 安全

  • 为特定应用定制特定安全服务,将安全服务直接嵌入在应用程序中

应用层

基于传输层实现 Web 安全

直接改造 TCP 不大可能,引入中间层来解决。

  • SSL 或 TLS 可作为基础协议栈的组成部分,对应用透明
    • 也可直接嵌入到浏览器中使用
  • 使用 SSL 或 TLS 后,传送的应用层数据会被加密
    • 保证通信安全,不仅仅限于 Web 应用,可以用于 TCP 之上的所有应用
      传输层

基于网络层实现 Web 安全

网络层

  • IPSec 提供端到端(主机到主机)的安全机制
    • 通用解决方案,UDP 也可以用
  • 各种应用程序均可利用 IPSec 提供的安全机制
    • 减少了安全漏洞的产生

安全套接字层 Secure Sockets Layer SSL

  • 广泛部署的安全协议
    • 几乎所有浏览器和 Web 服务器都支持
    • https
  • 由 Netscape 开发实现
  • 变体:TLS,虽然和 SSL 相似但也存在差异,不能互操作
  • 提供:
    • 机密性 confidentiality
    • 完整性 integrity
    • 认证 authentication
  • 最初目标:
    • Web 电子商务交易
    • 加密 (卡号)
    • Web 服务器认证
    • 可选的客户认证
    • 方便与新商户的商务活动 minimum hassle
  • 可用于所有基于 TCP 的网络应用
    • 安全 socket 接口

SSL 和 TCP/IP

SSL

  • SSL 为网络应用提供应用编程接口 API

可以像 PGP 那样实现某些安全功能,但是,SSL 需要发送字节流以及交互数据,邮件是单向的,SSL 需要
一组密钥用于整个连接,SSL 需要证书交互作为协议的一部分:握手阶段。

简化的(Toy) SSL:一个简单的安全信道

  • 握手 handshake:Alice 和 Bob 利用他们的证书、私钥认证(鉴别)彼此,以及交换共享密钥
  • 密钥派生 key derivation:Alice 和 Bob 利用共享密钥派生出一组密钥
  • 数据传输 data transfer:待传输的数据分割成一些列记录
  • 连接关闭 connection closure:通过发送特殊消息,安全关闭连接,不能留有漏洞被攻击方利用(提前关闭连接)

一个简单的握手过程

SSL

TCP 握手结束后进入 SSL 握手阶段。

MS:主密钥

EMS:加密的主密钥

密钥派生

  • 不同加密操作使用不同密钥会更加安全
    • 例如:报文认证码 MAC 密钥和数据加密密钥(算法不同对密钥的要求也不同)
  • 4个密钥
    • K(c) 用于加密客户向服务器发送数据的密钥,对称加密,服务器和客户端派生算法要一样
    • M(c) 用于客户向服务器发送数据的 MAC 密钥
    • K(s) 用于加密服务器向客户发送数据的密钥
    • M(s) 用于服务器向客户端发送数据的 MAC 密钥
  • 通过密钥派生函数(KDF)实现密钥派生
    • 提取主密钥和(可能的)一些额外的随机数,生成密钥

数据记录

为什么不直接加密发送给 TCP 的字节流?

MAC 放到哪儿?如果放到最后,则只有全部数据收到才能进行完整性认证。

比如,对一即时消息应用,在显示一段消息之前,如何针对发送的所有字节进行完整性检验?

方案:将字节流分割为一系列记录。每个记录携带一个 MAC。接收方可以对每个记录进行完整性检验。

问题:对于每个记录,接收方需要从数据中识别出 MAC。需要采用边长记录。

SSL数据记录

序列号

问题:攻击者可以捕获和重放记录或者重新排序记录。

解决方案:在 MAC 中增加序列号。MAC = MAC(M, sequence||data),记录中没有序列号域。

问题:攻击者可以重放所有记录。

解决方案:使用一次性随机数 nonce

控制信息

问题:截断攻击,攻击者伪造 TCP 连接的断连段,恶意断开连接,一方或双方认为对方已没有数据发送,则断开连接。

解决方案:记录类型,利用一个类型的记录专门用于断连,type 0 用于数据记录,type 1 用于断连。

MAC= MAC(M, sequence||type||data)

SSL报文

简化的 SSL

简化SSL

简化的 SSL 不完整

  • 每个域多长?
  • 采用哪种加密协议?
  • 需要协商吗?
    • 允许客户与服务器支持不同加密算法
    • 允许客户与服务器在数据传输之前共同选择特定的算法

SSL 协议栈

  • 介于 HTTP 与 TCP 之间的一个可选层
    • 绝大多数应用层协议可直接建立在 SSL 之上
  • SSL 不是一个单独的协议,而是两层协议

SSL协议

SSL 密码组 cipher suite

  • 密码组 cipher suite
    • 公开密钥算法 public key algorithm
    • 对称加密算法 symmetric encryption algorithm
    • MAC 算法
  • SSL 支持多个密码组
  • 协商 negotiation 客户与服务器商定密码组
    • 客户提供选项 choice
    • 服务器挑选其一

SSL 更改密码规格协议

  • 更改密码规格协议 change cipher spec protocol
    • 更新当前连接的密钥组,标志着加密策略的改变
    • 位于 SSL 记录协议之上
    • ContentType = 20
    • 协议只包含一条消息 一个值为 1 的字节

SSL 警告协议 Alert Protocol

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

握手协议 Handshake Protocol

  • 协商结果是 SSL 记录协议的基础
  • ContentType = 22
  • SSL v3.0 的握手过程用到三个协议:握手协议、更改密码规格协议和警告协议
  • 目的是:
    • 服务器认证/鉴别
    • 协商:商定加密算法
    • 建立密钥
    • 客户端认证/鉴别(可选)
SSL 握手过程
  1. 客户端发送其支持的算法列表,以及客户一次性随机数 nonce
  2. 服务器从算法列表中选择算法,并发回给客户:选择+证书+服务器一次性随机数
  3. 客户验证证书,提取服务器公钥,生成预主密钥(pre_master_secret),并利用服务器的公钥加密预主密钥,发送给服务器
  4. 客户与服务器基于预主密钥和一次随机数分别独立计算加密密钥和 MAC 密钥
  5. 客户端发送一个针对所有握手消息的 MAC
  6. 服务器发送一个针对所有握手消息的 MAC

最后两步的意义:保护握手过程免遭篡改,在没有完成密钥分发和密钥派生之前所有握手信息都是明文传输,明文传输很容易被篡改。

客户提供的算法,安全性有强、有弱,且明文传输,中间人攻击可以从列表中删除安全性强的算法,导致服务端只能从安全性弱的算法中选择,
为后续攻击埋下伏笔,最后两步可以预发这种情况发生。

为什么使用两个一次性随机数?

假设 Trudy 嗅探 Alice 与 Bob 之间的所有报文,第二天, Trudy 与 Bob 建立 TCP 连接,发送完全相同的记录序列,Bob(如 Amazon)认为 Alice
对同一产品下发两个分离的订单。解决方案:Bob 为每次连接发送完全不同的一次性随机数,确保两天的加密密钥不同。

SSL参数

握手过程

SSL 记录协议 Record Protocol

  • 描述 SSL 信息交换过程中的记录格式
  • 所有数据(含握手信息)都被封装在记录中
  • 一个记录由两部分组成:记录头和数据
SSL 记录协议的操作步骤
  • 将数据分段成可操作的数据块
  • 对分块数据进行数据压缩
  • 计算 MAC 值
  • 对压缩数据及 MAC 值加密
  • 加入 SSL 记录头 record header:内容类型 ContentType、版本、长度

记录

MAC 包括序列号,MAC密钥,片段 fragment,每个 SSL 片段为 2^14 字节(16KB)

记录格式

数据和 MAC 是加密的(对称密钥加密算法)

密钥派生

客户 nonce、服务器 nonce 和 预主密钥输入伪随机数发生器,产生主密钥 MS,主密钥和新一次随机数输入另一个
随机数发生器,生成密钥块 key block,密钥块切片得到四个密钥和客户初始向量、服务器初始向量(用于加密)。

VPN

专用网 PN

用软件思想替代昂贵的硬件成本,构建安全网络。

  • 动机:安全
  • 专用网络PN(Private Networks):基于专属的网络设备、链路或协议等建设的专门服务于特定组织机构的网络
    • 民航网络、铁路网络、银行网络
    • 成本问题:路由器、链路、DNS基础设施等

PN

虚拟专用网络 VPN

动机:安全+成本控制
虚拟专用网络 VPN Virtual Private Networks:通过建立在公共网络(如Internet)上的安全通道,实现
远程用户、 分支机构、业务伙伴等与机构总部网络的安全连接,从而构建针对特定组织机构的专用网络。

虚拟:安全通道不实际独占公共网络的资源,是一条逻辑的穿过公共网络的安全、稳定的隧道。

通过隧道技术、加密技术、密钥管理、认证和访问控制等,实现与专用网类似的安全性能。

VPN

典型 VPN 应用

典型VPN

VPN 的功能

在公共网络上必须要:

  • 数据机密性保护
  • 数据完整性认证
  • 数据源身份认证
  • 防重放攻击
  • 访问控制

VPN 关键技术

  • 隧道技术
  • 数据加密
  • 身份认证
  • 密钥管理
  • 访问控制
  • 网络管理

隧道技术

  • 构建 VPN 的核心技术
  • 隧道:通过 Internet 提供安全的点到点(或端到端)的数据传输安全通道
    • 实质上是一种封装
  • VPN 隧道利用隧道协议对通过隧道传输的数据进行封装
    • 使数据安全穿越公共网络(通常是 Internet)
    • 通过加密和认证以确保安全
    • 数据包进入隧道时,由 VPN 封装成 IP 数据报
    • 通过隧道在 Internet 上安全传输
    • 离开隧道后,进行解封装,数据便不在被保护

隧道协议

隧道协议内包括以下三种协议:

  • 乘客协议 Passenger Protocol
  • 封装协议 Encapsulating Protocol
  • 承载协议 Carrier Protocol

常见 VPN 隧道协议:

  • 第二层隧道:PPTP、L2TP
    • 主要用于远程客户机访问局域网方案
  • 第三层隧道 IPSec
    • 主要用于网关到网关、或网关到主机方案
    • 不支持远程拨号访问

典型 VPN 实现技术

  • IPSec 最安全、适用面最广
  • SSL 具有高层完全协议的优势,基于 Web,可以不用安装客户端软件
  • L2TP 最好的实现远程接入 VPN 技术
  • 典型 VPN 技术结合使用:IPSec 与 SSL、IPSec 与 L2TP

IPSec

体系结构

IPSec

IPSec 提供的服务

  • 机密性 confidentiality
  • 数据完整性 data integrity
  • 源认证/鉴别 origin authentication
  • 预防重放攻击 replay attack prevention
  • 提供不同服务模型的两个协议
    • AH 认证头协议
    • ESP 封装载荷协议

IPSec 的传输(transport)模式

IPSec传输

  • IPSec 部署在端系统上,IPSec 数据报的发送与接收均由端系统完成
  • 主机是 IPSec 感知的(IPSec-ware)

IPSec 的隧道(tunneling)模式

IPSec隧道

  • 将 IPSec部署在边缘路由器上,边缘路由器是 IPSec 感知的(IPSec-ware)
  • 主机到路由器之间不安全

两个 IPSec 协议

  • AH:在 IP 数据报文头中的协议号是 51
  • ESP:在 IP 数据报文头中的协议号是 50
认证头协议 AH Authentication Header
  • 提供源认证/鉴别和数据完整性检验,但不提供机密性
封装安全协议 ESP Encapsulation Security Protocol
  • 提供源认证/鉴别、数据完整性检验以及机密性
  • 比 AH 应用更广泛

IPSec 模式与协议的四种组合

  1. 传输模式 AH
  2. 传输模式 ESP
  3. 隧道模式 AH
  4. 隧道模式 ESP 最普遍、最重要

安全关联 SA

  • 发送数据前,从发送实体到接收实体之间需要建立安全关联 SA(Security Association)
    • SA 是单工的:单向,可以理解为网络层的单向连接
  • 发送实体与接收实体均需要维护 SA 的状态信息
    • 回顾:TCP 连接的端点也需要维护状态信息
    • IP 是无连接的,IPSec 是面向连接的 (逻辑连接)!

SA

R1 和 R2 都需要维护 SA 逻辑连接。

安全关联的主要参数
  • 安全参数索引 SPI 32位 SA 唯一标识 ID
  • 加密密钥、认证密钥
  • 密码算法标识
  • 序列号 32 位
    • 抗重放攻击
  • 抗重播窗口
    • 接收方使用滑动窗口检测恶意主机重放数据报
  • 生存周期
    • 规定 SA 的有效使用周期
  • 运行模式:传输模式或者隧道模式
  • IPSec 隧道源、目的地址
SA 举例

SA举例

R1 为 SA 存储:

  • 32 位 SA 标识 ID:安全参数索引 SPI Security Parameter Index
  • 起点 origin SA 接口 (200.168.1.100)
  • 终点 destination SA 接口 (193.68.2.23)
  • 加密类型(如 3DES with CBC)
  • 加密密钥
  • 完整性检验类型(如 HMAC with MD5)
  • 认证/鉴别密钥
安全关联数据库 SAD
  • IPSec 端点将 SA 状态保存在安全关联数据库 SAD(security association database)中
    • 在处理 IPSec 数据报时,定位这些信息
  • 对于 n 个销售人员,1 个分支机构的 VPN,总部的路由器 R1 的 SAD 中存储 2 + 2n 条 SAs
  • 当发送 IPSec 数据报时,R1 访问 SAD,确定如何处理数据报
  • 当 IPSec 数据报到达 R2
    • R2 检验 IPSec 数据报中的 SPI
    • 利用 SPI 检索 SAD
    • 处理数据报
安全策略数据库 SPD
  • Security Policy Database
  • 安全策略:定义了对什么样的数据流实施什么样的安全处理
    • 应用IPSec、绕过、丢弃等操作
  • 安全策略组成了 SPD,每个记录就是一条 SP
    • 路由器提取关键信息填充到一个称为选择符的结构
      • 包括目标 IP、源 IP、传输层协议、源和目标端口等
    • 利用选择符去搜索 SPD,检索匹配的 SP
  • 安全处理需要的参数存储在 SP 指向的 SA 结构
IPSec 数据报
传输模式 AH

传输模式AH

隧道模式 AH

隧道模式AH

传输模式 ESP

传输模式ESP

隧道模式 ESP

隧道模式ESP

IPSec 传输模式

IPSec传输模式图

IPSec 隧道模式

IPSec隧道模式图

SA 的建立和密钥管理

IPSec 支持两种方式的 SA 建立和密钥管理:

  • 手工方式
    • 所有的信息需要手工配置
    • 静态 SA 永远存在
    • 适用于结构简单的网络
  • 自动方式
    • SA 可以通过协商方式产生
    • SA 过期后重新协商,提高了安全性
    • 适用于较复杂拓扑和较高安全性的网络

密钥交换 IKE

手工建立 IPSec SA

example SA

  • SPI:12345
  • Source IP:200.168.1.100
  • Dest IP: 193.68.2.23
  • Protocol: ESP
  • Encryption algorithm: 3DES-cbc
  • HMAC algorithm: MD5
  • Encryption key: 0x7aaaa
  • HMAC key:0x11111

对于几百个端点规模的 VPN,手工设置密钥是不可行的

替代方案:IPSec IKE

  • IKE 协议可以自动管理 SA 的建立、协商、修改和删除,是 IPSec 唯一的密钥管理协议
  • IKE 包括
    • ISAKMP 通用框架
      • 定义了协商、建立、修改和删除 SA过程的通用框架
    • OAKLEY 密钥交换模式
      • 一个密钥交换协议,允许认证过的双方通过不安全的网络交换密钥参数
    • SKEME 的共享和密钥更新技术
      • 提供了 IKE 交换密钥的算法

IKE 和 IPSec

IKE 为 IPSec 提供服务:

  • 密钥交换与管理
  • 身份认证:通信对等实体的认证
  • IPSec SA 的协商与管理

IKE

认证可以通过:

  • 预共享密钥 PSK
  • 公钥基础设施 PKI
    来完成。

IPSec 总结

  • IKE 用于交换算法、秘密密钥、SPI
  • 采用 AH 协议或者 ESP 协议
  • IPSec 对等端可以是
    • 两个端系统 传输模式
    • 两个路由器/防火墙 隧道模式
    • 一个路由器/防火墙与一个端系统