安全电子邮件
安全威胁
使用电子邮件可能的安全威胁:
- 垃圾邮件
- 增加网络负荷,占用服务器空间
- 诈骗邮件
- 能迅速让大量受害者上当
- 邮件炸弹
- 短时间内向同一个邮箱发送大量电子邮件,占用了用户邮件空间,让用户无法接收正常的邮件
- 通过电子邮件/附件传播网络蠕虫/病毒
- 电子邮件欺骗、钓鱼式攻击
安全需求
电子邮件的安全需求:
- 机密性
- 只有真正的接收方才能阅读邮件
- 完整性
- 电子邮件在传输过程中不被修改
- 身份认证性
- 电子邮件的发送者不被假冒
- 抗抵赖性
- 发信人无法否认发过电子邮件
安全电子邮件基本原理
电子邮件的特性
- 邮件具有单向性和非实时性
- 不能通过建立隧道来保证安全,只能对邮件本身加密
机密性
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 时,软件为用户生成一个公开密钥对
- 公钥放置用户网站或某公钥服务器上
- 私钥则使用用户口令进行保护
- 用户为随机生成的 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 应用,可以用于 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 为网络应用提供应用编程接口 API
可以像 PGP 那样实现某些安全功能,但是,SSL 需要发送字节流以及交互数据,邮件是单向的,SSL 需要
一组密钥用于整个连接,SSL 需要证书交互作为协议的一部分:握手阶段。
简化的(Toy) SSL:一个简单的安全信道
- 握手 handshake:Alice 和 Bob 利用他们的证书、私钥认证(鉴别)彼此,以及交换共享密钥
- 密钥派生 key derivation:Alice 和 Bob 利用共享密钥派生出一组密钥
- 数据传输 data transfer:待传输的数据分割成一些列记录
- 连接关闭 connection closure:通过发送特殊消息,安全关闭连接,不能留有漏洞被攻击方利用(提前关闭连接)
一个简单的握手过程
TCP 握手结束后进入 SSL 握手阶段。
MS:主密钥
EMS:加密的主密钥
密钥派生
- 不同加密操作使用不同密钥会更加安全
- 例如:报文认证码 MAC 密钥和数据加密密钥(算法不同对密钥的要求也不同)
- 4个密钥
- K(c) 用于加密客户向服务器发送数据的密钥,对称加密,服务器和客户端派生算法要一样
- M(c) 用于客户向服务器发送数据的 MAC 密钥
- K(s) 用于加密服务器向客户发送数据的密钥
- M(s) 用于服务器向客户端发送数据的 MAC 密钥
- 通过密钥派生函数(KDF)实现密钥派生
- 提取主密钥和(可能的)一些额外的随机数,生成密钥
数据记录
为什么不直接加密发送给 TCP 的字节流?
MAC 放到哪儿?如果放到最后,则只有全部数据收到才能进行完整性认证。
比如,对一即时消息应用,在显示一段消息之前,如何针对发送的所有字节进行完整性检验?
方案:将字节流分割为一系列记录。每个记录携带一个 MAC。接收方可以对每个记录进行完整性检验。
问题:对于每个记录,接收方需要从数据中识别出 MAC。需要采用边长记录。
序列号
问题:攻击者可以捕获和重放记录或者重新排序记录。
解决方案:在 MAC 中增加序列号。MAC = MAC(M, sequence||data),记录中没有序列号域。
问题:攻击者可以重放所有记录。
解决方案:使用一次性随机数 nonce
控制信息
问题:截断攻击,攻击者伪造 TCP 连接的断连段,恶意断开连接,一方或双方认为对方已没有数据发送,则断开连接。
解决方案:记录类型,利用一个类型的记录专门用于断连,type 0 用于数据记录,type 1 用于断连。
MAC= MAC(M, sequence||type||data)
简化的 SSL
简化的 SSL 不完整
- 每个域多长?
- 采用哪种加密协议?
- 需要协商吗?
- 允许客户与服务器支持不同加密算法
- 允许客户与服务器在数据传输之前共同选择特定的算法
SSL 协议栈
- 介于 HTTP 与 TCP 之间的一个可选层
- 绝大多数应用层协议可直接建立在 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 握手过程
- 客户端发送其支持的算法列表,以及客户一次性随机数 nonce
- 服务器从算法列表中选择算法,并发回给客户:选择+证书+服务器一次性随机数
- 客户验证证书,提取服务器公钥,生成预主密钥(pre_master_secret),并利用服务器的公钥加密预主密钥,发送给服务器
- 客户与服务器基于预主密钥和一次随机数分别独立计算加密密钥和 MAC 密钥
- 客户端发送一个针对所有握手消息的 MAC
- 服务器发送一个针对所有握手消息的 MAC
最后两步的意义:保护握手过程免遭篡改,在没有完成密钥分发和密钥派生之前所有握手信息都是明文传输,明文传输很容易被篡改。
客户提供的算法,安全性有强、有弱,且明文传输,中间人攻击可以从列表中删除安全性强的算法,导致服务端只能从安全性弱的算法中选择,
为后续攻击埋下伏笔,最后两步可以预发这种情况发生。
为什么使用两个一次性随机数?
假设 Trudy 嗅探 Alice 与 Bob 之间的所有报文,第二天, Trudy 与 Bob 建立 TCP 连接,发送完全相同的记录序列,Bob(如 Amazon)认为 Alice
对同一产品下发两个分离的订单。解决方案:Bob 为每次连接发送完全不同的一次性随机数,确保两天的加密密钥不同。
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基础设施等
虚拟专用网络 VPN
动机:安全+成本控制
虚拟专用网络 VPN Virtual Private Networks:通过建立在公共网络(如Internet)上的安全通道,实现
远程用户、 分支机构、业务伙伴等与机构总部网络的安全连接,从而构建针对特定组织机构的专用网络。
虚拟:安全通道不实际独占公共网络的资源,是一条逻辑的穿过公共网络的安全、稳定的隧道。
通过隧道技术、加密技术、密钥管理、认证和访问控制等,实现与专用网类似的安全性能。
典型 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 提供的服务
- 机密性 confidentiality
- 数据完整性 data integrity
- 源认证/鉴别 origin authentication
- 预防重放攻击 replay attack prevention
- 提供不同服务模型的两个协议
- AH 认证头协议
- ESP 封装载荷协议
IPSec 的传输(transport)模式
- IPSec 部署在端系统上,IPSec 数据报的发送与接收均由端系统完成
- 主机是 IPSec 感知的(IPSec-ware)
IPSec 的隧道(tunneling)模式
- 将 IPSec部署在边缘路由器上,边缘路由器是 IPSec 感知的(IPSec-ware)
- 主机到路由器之间不安全
两个 IPSec 协议
- AH:在 IP 数据报文头中的协议号是 51
- ESP:在 IP 数据报文头中的协议号是 50
认证头协议 AH Authentication Header
- 提供源认证/鉴别和数据完整性检验,但不提供机密性
封装安全协议 ESP Encapsulation Security Protocol
- 提供源认证/鉴别、数据完整性检验以及机密性
- 比 AH 应用更广泛
IPSec 模式与协议的四种组合
- 传输模式 AH
- 传输模式 ESP
- 隧道模式 AH
- 隧道模式 ESP 最普遍、最重要
安全关联 SA
- 发送数据前,从发送实体到接收实体之间需要建立安全关联 SA(Security Association)
- SA 是单工的:单向,可以理解为网络层的单向连接
- 发送实体与接收实体均需要维护 SA 的状态信息
- 回顾:TCP 连接的端点也需要维护状态信息
- IP 是无连接的,IPSec 是面向连接的 (逻辑连接)!
R1 和 R2 都需要维护 SA 逻辑连接。
安全关联的主要参数
- 安全参数索引 SPI 32位 SA 唯一标识 ID
- 加密密钥、认证密钥
- 密码算法标识
- 序列号 32 位
- 抗重放攻击
- 抗重播窗口
- 接收方使用滑动窗口检测恶意主机重放数据报
- 生存周期
- 规定 SA 的有效使用周期
- 运行模式:传输模式或者隧道模式
- IPSec 隧道源、目的地址
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
传输模式 ESP
隧道模式 ESP
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 交换密钥的算法
- ISAKMP 通用框架
IKE 和 IPSec
IKE 为 IPSec 提供服务:
- 密钥交换与管理
- 身份认证:通信对等实体的认证
- IPSec SA 的协商与管理
认证可以通过:
- 预共享密钥 PSK
- 公钥基础设施 PKI
来完成。
IPSec 总结
- IKE 用于交换算法、秘密密钥、SPI
- 采用 AH 协议或者 ESP 协议
- IPSec 对等端可以是
- 两个端系统 传输模式
- 两个路由器/防火墙 隧道模式
- 一个路由器/防火墙与一个端系统