第七章:网络及协议安全根本——PGP(Pretty Good Privacy)

[复制链接]
发表于 2025-5-27 19:37:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
PGP的起源

1. 安全的电子邮件需求:
PGP的诞生是为了解决电子邮件中的两个核心安全题目:


  • 身份鉴别:确保消息的发送者身份真实。
  • 保密性:确保消息内容不被第三方偷取或窜改(比如说服务器自身)。

2. 信托模子的挑战:
在无政府状态的互联网上(没有中央权威机构来管理或验证用户的身份和举动。),怎样构建一种信托模子?怎样基于这种模子安全地分享信息?PGP通过去中心化的信托模子解决了这一题目。
PGP的特点

1. 去中心化的信托模子:


  • PGP不依靠中央权威来决定谁是可信托的。
  • 每个用户自主决定信托哪些公钥,而不是依靠于某个机构或组织的认证。例如:用户可以通过直接沟通、验证指纹或其他方式确认公钥的真实性。
2. 灵活性:


  • 用户可以根据本身的需求决定信托的条理和范围。
  • 由于不需要依靠中央权威,PGP可以顺应各种使用场景,例如个人通信、组织内部的安全通信等。
PGP重要成分

1. 公钥、证书、私钥




  • 公钥:用于加密消息或验证签名,可以公开分享。
  • 私钥:用于解密消息或生成签名,必须严酷保密。
  • 证书:

    • 证书是公钥的“包装”,包罗公钥及其所有者的身份信息(如姓名、电子邮件地址等)。
    • 证书还包括对公钥的签名,用于证明公钥的真实性和完备性。

2. 私钥环、公钥环

每个收发关系可以有多个密钥对


  • 公钥环:存储用户网络的公钥及其签名和信托程度(PGP会根据公钥环中每个公钥的签名数量以及每个签名的信托度,主动盘算公钥的信托程度)。
  • 私钥环:存储用户的私钥,以加密的情势存在。

3. 证书的打消

3.1. 打消公钥


  • 定义:公钥打消是指用户宣布某个公钥不再有效,其他用户不应再使用该公钥进行加密或验证签名。
  • 实用场景:

    • 私钥泄露或丢失。
    • 用户不再使用该公钥。

3.2. 打消证书


  • 定义:证书打消是指证书的颁发者宣布某个证书不再有效,其他用户不应再信托该证书。
  • 实用场景:

    • 证书中的公钥被泄露或失效。
    • 证书中的身份信息发生变化(例如用户改名或更换电子邮件地址)。

3.3. 证书或密钥的有效期


  • 定义:证书或密钥的有效期是指其可以被使用的期限,超过有效期后,证书或密钥将主动失效。
3.4. 通过私钥来打消公钥


  • 防止恶意打消:只有公钥的拥有者(即私钥的持有者)才能打消公钥,这可以防止他人恶意打消公钥。
4. 信托程度



  • 信托程度:用户可以为每个公钥设置信托程度,分为三种:

    • None(无信托):不信托该公钥。
    • Partial(部分信托):部分信托该公钥。
    • Complete(完全信托):完全信托该公钥。

  • 信托程度的作用:信托程度决定了该公钥签名的证书的可信度。
信托模子

重要工作流程

1. 生成密钥对

  • 用户生成一对公钥和私钥。
  • 公钥用于加密和验证签名,私钥用于解密和生成签名。
1.5 创建证书

  • 用户将本身的公钥与身份信息打包成证书。
  • 用户可以使用本身的私钥对证书进行签名,证明证书的真实性。
2. 签名他人证书

  • 用户可以为他人证书签名,表示信托该证书中的公钥。
  • 其他用户可以通过验证签名来判断证书的可信度。
3. 信托传递

  • 如果用户 A 信托用户 B,而用户 B 信托用户 C,那么用户 A 也可以间接信托用户 C 的证书。
  • 这种信托传递机制构成了PGP的“信托网络”。
4. 信托度盘算
PGP会根据公钥环中每个公钥的签名数量以及每个签名的信托度,主动盘算公钥的信托程度。 
PGP工作原理

消息发送流程


1. 仅认证 (完备性)
目的:确保消息的完备性和真实性,但不加密消息内容。
流程:


  • A 发送方:

    • 对明文 M 进行 哈希 盘算,生成哈希值 H(M)。
    • 使用 A 的私钥 对哈希值 H(M) 进行 签名,生成签名 S。
    • 将签名 S 与原始明文 M 归并。
    • 对归并后的数据进行 ZIP 压缩,生成最终发送的数据包。

  • B 接收方:

    • 解压缩接收到的数据包,分离出签名 S 和明文 M。
    • 使用 A 的公钥 对签名 S 进行解密,得到哈希值 H(M)。
    • 对明文 M 重新盘算哈希值 H'(M)。
    • 比较 H(M) 和 H'(M):

      • 如果一致,阐明消息完备且来自 A。
      • 如果不一致,阐明消息被窜改或非 A 发送。


2. 仅加密(数字信封:机密性)
目的:确保消息的机密性,但不验证发送方身份。
流程:


  • A 发送方:

    • 生成一个临时的 会话密钥 KS(通常是对称密钥)。
    • 使用 KS 对明文 M 进行 加密,生成密文 C。
    • 使用 B 的公钥 对会话密钥 KS 进行加密,生成加密后的 KS'。
    • 将密文 C 和 KS' 归并,生成最终发送的数据包。

  • B 接收方:

    • 使用 B 的私钥 解密 KS',得到会话密钥 KS。
    • 使用 KS 解密密文 C,得到明文 M。

3. 认证+机密性
目的:同时确保消息的完备性、真实性和机密性。
流程:


  • A 发送方:

    • 对明文 M 进行 哈希 盘算,生成哈希值 H(M)。
    • 使用 A 的私钥 对哈希值 H(M) 进行 签名,生成签名 S。
    • 将签名 S 与原始明文 M 归并。
    • 对归并后的数据进行 ZIP 压缩。
    • 生成一个临时的 会话密钥 KS。
    • 使用 KS 对压缩后的数据进行 加密,生成密文 C。
    • 使用 B 的公钥 对会话密钥 KS 进行加密,生成加密后的 KS'。
    • 将密文 C 和 KS' 归并,生成最终发送的数据包。

  • B 接收方:

    • 使用 B 的私钥 解密 KS',得到会话密钥 KS。
    • 使用 KS 解密密文 C,得到解压缩后的数据。
    • 分离出签名 S 和明文 M。
    • 使用 A 的公钥 对签名 S 进行解密,得到哈希值 H(M)。
    • 对明文 M 重新盘算哈希值 H'(M)。
    • 比较 H(M) 和 H'(M):

      • 如果一致,阐明消息完备且来自 A。
      • 如果不一致,阐明消息被窜改或非 A 发送。


详细的消息格式如下:

信托度盘算

PGP 采用 web of trust信托模子. 无集中授权机构 个体签名他人公钥,存入公钥环. PGP 盘算公钥环内每个公钥的信托度. 用户解释信托程度.

算法:
第一部分:签名扫描与信托分类

  • 对每个签名进行扫描验证
  • 如果签名完全有效:

    • 3-4行:如果密钥信托度是undefined/unknown/untrusted(未定义/未知/不信托),则忽略该签名
    • 5-6行:如果密钥信托度是marginal(边际信托),则增加marginal计数器
    • 7-8行:如果密钥信托度是complete(完全信托),则增加complete计数器
    • 9-10行:其他情况忽略签名

第二部分:信托决策

  • 如果marginal计数器或complete计数器大于0:

    • 12-14行:如果marginal计数器达到MARGINALS_NEEDED阈值,或complete计数器达到COMPLETES_NEEDED阈值,则标志密钥有效性为'complete'
    • 15-16行:否则标志密钥有效性为'marginal'


最后通过这张图练习一下PGP的流程
 PGP发送方 :
1. PGP 使用用户的id作为索引获取发送者的私钥.
2. PGP 提示用户输入口令来解密私钥。
3.(创建签名) ①私钥ID②对M做hash,之后用私钥加密③M④签名信息
4.(加密消息【数字信封】)PGP 生成会话密钥,加密签名消息. PGP 使用用户ID作为索引获取担当方的公钥. PGP 创建会话消息 ①公钥id ②加密密钥(公钥加密的Ks) ③加密的签名消息

PGP 担当方:
解密消息 : PGP 使用消息内密钥ID字段作为索引,获取私钥. PGP 提示用户输入密钥解密私钥. PGP 恢复会话密钥,解密消息.
认证消息: PGP 使用签名密钥的密钥id作为索引,获取公钥。. PGP 恢复消息摘要. PGP 盘算消息摘要并和传输版本比较认证.
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表