第 5 第 第第第第第第
Jan 10, 2016
第 5 章 电子邮件安全
2
主要内容 Pretty good privacy ( PGP ) S/MIME
3
PGP (良好隐私) Philip R. Zimmerman 是 PGP 的创造者。 PGP 提供了机密性和身份鉴别服务,可用于电子邮件
和文件存储应用中。
Philip R. Zimmerman 进行的工作:1. 选择最好的可用加密算法来创建数据块2. 将这些算法集成到独立于操作系统和处理器的通用应
用程序 3. PGP 数据包和文档(包含源码),可免费获得4. 与公司( Network Associates )约定,提供 PGP
商业版本
4
PGP 广泛应用的原因 可获得不同平台的免费版本 基于被认可的算法 应用范围广泛 不由政府和标准化组织控制和开发
5
5.1.1 符号使用的符号:
Ks= 对称加密算法中使用的会话密钥 KRa= 用户 A 的私钥,用于公钥加密方案 KUa= 用户 A 的公钥,用于公钥加密方案 EP= 公钥加密 DP= 公钥解密 EC= 对称加密 DC= 对称解密 H=hash 函数 ||= 连接 Z= 使用 ZIP 算法进行压缩 R64= 转换为 radix 64 的 ASCII 格式
6
5.1.2 操作描述 包含 5 种服务 :
认证 机密性 压缩 E-mail 兼容性 分段
7
1. 认证
PGP 提供数字签名服务,步骤如下:1. 发送者创建消息2. 发送者使用 SHA-1 算法产生消息 160 位 hash 代码3. 发送者私钥加密 hash 代码( RSA ),将结果附在消息上4. 接收者使用 RSA 算法和发送者公钥解密和恢复 hash 代码5. 接收者生成新的 hash 代码,并与解密后的 hash 代码比较
Sha-1 和 RSA 的结合能提供有效的数字签名方案
8
仅进行身份鉴别
9
2. 机密性 机密性用于传送加密消息或在本地存储加密文件
PGP提供机密性服务,步骤如下:1. 发送者产生一条消息及适合该消息的随机 128 位数字作为会话密钥2. 使用会话密钥和 CAST-128( 或 IDEA 或 3DES) 算法加密消息3. 使用接收者的公钥和 RSA 算法加密会话密钥,并附在消息上4. 接收者使用自己的私钥和 RSA 算法解密和恢复会话密钥5. 使用会话密钥解密消息
10
2. 机密性 (2)
特点: 使用对称和公钥加密的结合,减少加密时间 使用公钥加密解决了会话密钥分配问题。 一次性会话密钥加强了常规加密算法的强度
11
3. 机密性与认证
同时提供机密性和身份认证两种服务的方法: 生成明文消息的签名并附在消息上 对处理后的消息进行压缩 用常规加密算法,利用会话密钥对压缩消息进行加密 利用对方的公钥加密会话密钥
12
4. 压缩默认情况下, PGP 在应用签名之后但在加密之前压缩消息压缩前生成签名的原因:
1. 能保存未压缩的消息和签名,从而实现将来的验证
2. 压缩算法的不确定性,难以验证压缩的消息压缩后加密消息能提高密码的安全性
13
5.E-mail 兼容性 电子邮件消息使用 ASCII 文本构成的块。 PGP 用 radix-64 进行转换,将 8 位二进制流转换为可打印的
ASCII 字符流 3 个字节 4 个 ASCII 字符(还符加 CRC 校验)
使用 radix-64 使消息扩展 33% ,使用 ZIP 平均压缩比为 2.0 ,总体压缩 1/3
14
6. 分段与重组 通常受限于最大消息长度 (50000 字节 ) 更长的消息将被细分成足够小的段 PGP 自动将过大的消息细分为几个足够小
的段 接收者剥去所有 email头,并进行块的重组
15
PGP 消息的发送与接收
16
PGP 服务总结 功能 应用的算法 数字签名 DSS/SHA 或
RSA/SHA 消息加密
采用 Diffie-Hellman 或者 RSA 方案的 CAST 、 IDEA 或者 3DES
压缩 ZIP E-mail 兼容性
Radix-64 转换
分段 -
17
5.1.3 密钥和密钥环PGP 使用 4 种类型的密钥: 一次性会话密钥 公钥 私钥 基于口令短语的对称密钥
对密钥的要求: 能够生成不可预测会话密钥的方法 允许 用户拥有多个公钥 /私钥对 PGP必须维护自己的公钥 /私钥对文件,以及由相应
通信者的公钥组成的文件
18
1. 会话密钥的生成会话密钥的特点 --- 与单一的消息相联系
CAST-128 产生随机密钥 --- 使会话密钥不可预测
PGPPGP 随机数的产生方法:随机数的产生方法: 根据文本和用户击键的时间产生随机数 基于 ANSI X9.17 算法产生伪随机数
真实随机数的目的:真实随机数的目的: 用于产生 RSA 密钥对 提供伪随机数发生器的初始值 提供伪随机数产生阶段的附加输入伪随机数的目的:伪随机数的目的: 用于生成会话密钥 用于 CFB模式的加密中的初始向量
19
2. 密钥标识符每个用户都会有多个公钥 /私钥对,接收方需要确定使用的公钥:
将公钥与消息一同发送 将标识符与每个公钥关联在一起
PGP 采用的方法: 为每一个公钥分配密钥 ID KUa mod 264
传送消息的格式:传送消息的格式: 消息构件 签名构件 会话密钥构件
20
PGP 消息格式
21
3. 密钥环任一 PGP 消息中都包括两个提供机密性和身份验证的密钥 ID
在每个节点上采用数据结构对在每个节点上采用数据结构对: 私钥环私钥环 : 一个用于存储此节点的公钥私
钥对 公钥环公钥环 : 一个用于存储此节点知道的其他用户的公钥
22
密钥环—私钥环
私钥环能用 UserID 或 KeyID 进行索引 私钥需要加密存储私钥需要加密存储
由系统生成 RSA 的公钥 / 私钥对 用户选择一个口令,产生口令的 hash 值 利用生成的 hash 值加密私钥,并进行存储
23
密钥环—公钥环
24
25
26
5.1.4 公钥管理1. 公钥管理的方法公钥加密技术最致命的弱点公钥加密技术最致命的弱点——公钥篡改公钥篡改
假设:A 的公钥环包含 B的公钥信息,但该公钥的真正拥有者是 C
AA 获得可靠的获得可靠的 BB 的公钥,使用的方法如下:的公钥,使用的方法如下: 通过物理手段获得 B的公钥(安全,但有明显局限) 通过电话验证密钥(可验证密钥的“指纹”) 从相互信任的个体 D 那里得到 B的公钥 从可信的证书权威机构那里得到 B的公钥
27
2. 信任的使用 PGP没有包括建立认证权威机构或建立信任的任何规范,但提供了便捷的方式来使用信任、使用密钥来关联信任度、采用可信的信息等 公钥环的每个实体是一个公钥证书,相应的是
密钥合法性 (KeyLegit) 字段——表示 PGP信任这个用户的该密钥的程度
签名信任 (SigTrust) 字段—— PGP 用户信任公钥证书签名的程度,密钥合法性源于该项
所有者信任 (OwnerTrust) 字段——每个实体将公钥与一特定拥有者相联系,这个字段指出该公钥签名其他公钥证书的信任程度
28
信任关系处理过程1 、当 A 向公钥环中插入一个新公钥时, PGP必须向信任标志( trust flag )赋值,该标志与该公钥的所有者相关——所有者信任字段。 如果其所有者是 A ,则该值为最高信任
(ultimate trust) 。 否则, PGP询问用户,让用户给出信任级别。 用户可选:该公钥的所有者是不认识 (unknown)、不信任 (untrusted)、 接近信任 (marginally trusted) 或完全信任 (complete trusted)
29
2 、当输入一个新的公钥时,可能有一个或多个签名跟随其后。更多的签名可以以后再加入。
当一个签名插入到一个条目中时, PGP查找公钥环中确定签名的创建者是否属于认识的公钥所有者。
如果是,则这个公钥的 SIGTRUST 字段的值被赋予OWNERTRUST 的值。
否则,赋予 unknown user 值。
信任关系处理过程( 2 )
30
3 、密钥合法性字段的值基于该条目中签名合法性 来计算。 如果至少有一个签名信任字段值为最高信任
( ultimate ),则密钥合法性字段的值设为complete 。
否则, PGP计算一个信任值的加权和。
信任关系处理过程( 3 )
31所有者信任域 签名合法性 密钥合法性
32
3.废弃公钥用户因怀疑密钥已被泄露等安全问题,可以废弃现
有的公钥废弃公钥的做法:废弃公钥的做法:所有者发出由他签名的密钥废弃
证书,然后在尽可能大的范围内迅速传播该证书,以使潜在的通信者更新他们的公钥环
密钥废弃证书与标准签名证书的格式相同,但需要指明证书的目的是撤消公钥,并使用私钥进行签署
获得私钥的攻击者也可以发出这样的证书,但其可能的威胁较小
33
5.2 S/MIME
Secure/Multipurpose Internet Mail Extension 安全 /多用途 Internet 邮件扩展
S/MIME 将会成为商业和机构使用的工业标准 .
PGP 主要为个人 email 提供安全性
34
RFC822
RFC822:关于邮件消息格式的协议标头行,如: To: From: Subject:
主体: 消息的正文,必须是 ASCII 文本
基于 Internet 的文本邮件消息的标准
35
一个典型的消息头部
36
多用途 Internet 邮件扩展 MIME是对 RFC822框架的扩展 ,可以解决
smtp 或其他邮件传输协议存在的一些问题和限制。
37
简单邮件传输协议 ( SMTP, RFC 822) SMTP/822 方案的限制 :
可执行文件和其他二进制目标码 (jpeg image)
包含各国语言字符的文本数据 (non-ASCII) 超过一定长度的邮件消息 ASCII 到 EBCDIC 翻译问题 X.400 消息中的非文本制数据 没有遵守 RFC821 定义的 smtp 标准
38
MIME 标头字段 MIME-Version: 必须为 “ 1.0” -> RFC 2045,
RFC 2046 Content-Type (内容类型) : 详细描述主体中
的数据 Content-Transfer-Encoding (内容向编码的
转换) : 表示转换的类型 (radix-64) Content-ID (内容 ID ) : 唯一标识MIME 实体 Content Description: 对目标文件体的文本描
述,尤其是目标文件不可读时 ( 如:声音数据 )
39
MIME 内容类型类型 子类型 说明
textplain 无格式文本richtext 带有简单格式命令的文本
imagegif GIF 格式的静图像jpeg JPEG 格式的静图像
audio basic 音频video mpeg MPEG 格式的动图像
application
octet-stream 字节流
postscript PostScript 文档
message
rfc822 RFC 822报文partial 信体是某大报文的一个片段external-body 信体内容需从其他地方获取
multipart
mixed 信体中包含了若干内容不同的部分alternative 报文中包含了若干内容相同的部分(但数据类型不同)
parallel 信体中各部分内容必须同时显示digest 信体中各部分都是完整的 RFC 822报文
40
41
MIME 传输编码 传输编码的目的:提供在最大范围提供可靠的邮件
传输
MIME 传输编码:见 P125 表 5-4‐ 7 位‐ 8 位‐ 二进制‐ Quoted-printable‐ Base64‐ X-token
42
43
5.2.3 S/MIME 的功能 封装的数据 : 包含加密内容和接收者用于加密内容
的密钥 . 签名的数据 : 用签名者的私钥对消息摘要进行加密,形成数字签名。内容与签名被转换成 base64编码,一个签名的数据消息只能被具有 S/MIME 能力的接收者查看
透明的签名数据 : 只有签名部分用 base64编码,结果是,即使接收者没有 S/MIME 能力,他也能查看消息内容,只是他不能验证该签名
签名和封装的数据 : 签名和加密的结合,加密数据被签名或者签名数据被加密
44
S/MIME 使用的算法 消息摘要 : SHA-1 和 MD5 数字签名 : DSS ,应当支持 RSA 公钥算法 : ELGamal ( Diffie-
Hellman ) ,应当支持 RSA 加密消息: 3DES 和 RC2/40
45
5.2.4 S/MIME 消息 确保 MIME 实体的安全
S/MIME 内容类型
46
S/MIME Message Encryption
47
envelopedData例子
48
signedData
49
S/MIME signed-data
50
S/MIME Clear Signing
签名部分
正文部分