首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
安全
›
主机安全
›
第七章:网络及协议安全根本——PGP(Pretty Good Priva ...
返回列表
发新帖
第七章:网络及协议安全根本——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 盘算消息摘要并和传输
版本
比较认证.
回复
使用道具
举报
返回列表
浏览过的版块
运维.售后
DevOps与敏捷开发
数据仓库与分析
容器及微服务
SAAS
鼠扑
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表