网络安全协议学习(一)——OpenPGP
字数 1637 2025-08-15 21:32:28
OpenPGP 网络安全协议详解
1. OpenPGP 概述
Pretty Good Privacy (PGP) 是一个提供加密和认证的计算机程序,主要用于:
- 签名、加密和解密电子邮件
- 增加电子邮件通信的安全性
1.1 提供的安全功能
- 保密性:使用对称加密信息,非对称加密会话密钥
- 完整性:对消息摘要进行数字签名
- 身份认证:通过数字签名实现
1.2 PGP 主要模块
- 加解密模块
- 数字签名模块
- 压缩模块(支持 ZIP、ZLIB、BZIP2 等格式)
- 电子邮件兼容性处理(Radix-64 编码)
2. 加密与解密流程
2.1 加密过程
- 压缩消息:减少需要计算的数据量
- 生成会话密钥:创建随机会话密钥用于加密消息
- 对称加密消息:使用会话密钥加密消息(为了高效性)
- 加密会话密钥:使用接收者的公钥加密会话密钥(非对称加密)
- 数据拼接:将加密后的会话密钥和消息拼接
- 编码转换(可选):转换为 Radix-64 编码以适应电子邮件传输
2.2 解密过程
- 数据分解:按长度分解接收到的数据(如果是电子邮件先解码为二进制)
- 解密会话密钥:使用接收者的私钥解密会话密钥
- 解密消息:使用会话密钥解密消息
- 解压消息:得到原始明文消息
2.3 私钥管理
问题:
- 直接输入复杂私钥可用性低
- 明文存储私钥不安全
解决方案:使用 PBE (Password Based Encryption)
2.3.1 基本 PBE
口令 → hash函数 → 私钥的"密文"
缺点:易受口令字典暴力破解攻击
2.3.2 加盐 PBE
口令 + 随机盐值 → hash函数 → 私钥的"密文"
优点:增加熵值,使暴力破解更困难
2.3.3 PGP 私钥管理流程
- 接收者输入口令,与随机盐值拼接
- 将拼接结果输入 hash 函数,得到私钥的"密文"
- 使用这个"密文"解密加密的私钥,得到真正的私钥
3. 数字签名生成与验证
3.1 签名生成
- 计算消息摘要:将消息输入 hash 函数
- 获取发送者私钥:按照 PGP 私钥管理规则
- 生成签名:使用发送者私钥对摘要签名
- 数据拼接:拼接原始消息和签名
- 压缩数据(可选)
- 编码转换(可选):转换为 Radix-64 编码
3.2 签名验证
- 数据解压(如适用)
- 数据分解:分为消息和签名两部分
- 验证签名:用发送者公钥验证签名,得到哈希值A
- 计算哈希值B:直接计算消息的哈希值
- 对比验证:若哈希值A == 哈希值B,则签名有效
4. 加解密与数字签名结合
为了同时保证:
- 保密性(加密)
- 身份认证(签名)
可将加解密流程与数字签名流程结合使用。
5. 信任网模型
PGP 不依赖传统 PKI,而是采用"信任网"模式管理公钥合法性。
5.1 基本原则
通过用户签名和信任级别决定公钥有效性。
5.2 信任级别
-
自己签名确认:
- 用户自己签名的公钥视为有效
- 例:A和B交换公钥并互相签名
-
完全信任的用户签名确认:
- 被完全信任用户签名的公钥视为有效
- 例:A完全信任C,C签名了B的公钥
-
多个有限信任用户签名确认:
- 被多个有限信任用户签名的公钥视为有效
- 单个有限信任用户签名则视为无效
- 例:A的两位同事D和E同时签名了B的公钥
6. PGP 算法选择
6.1 数字签名算法
- 签名算法:DSS、RSA
- 哈希算法:SHA 系列
6.2 消息加密算法
- 对称加密:CAST-128、IDEA、3DES(用于加密消息)
- 非对称加密:RSA(用于加密会话密钥)
7. 关键技术总结
- 混合加密系统:结合对称加密(高效)和非对称加密(安全)优势
- 密钥管理:通过PBE和加盐技术安全存储私钥
- 信任模型:去中心化的信任网替代传统PKI
- 兼容性处理:Radix-64编码确保二进制数据可通过电子邮件传输
- 完整性保证:数字签名和哈希验证机制
8. 应用场景
- 安全电子邮件通信
- 文件加密存储
- 软件签名验证
- 敏感数据传输
9. 安全注意事项
- 定期更新密钥对
- 谨慎管理信任关系
- 使用强口令保护私钥
- 注意密钥吊销机制
- 保持软件版本更新以使用最新加密算法